const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["static/main-Da4duY4Y.js","static/vendor-monaco-kUzn8ZZg.js","static/vendor-monaco-Cdw5dZYH.css","static/UserAppMain-C6qQslSa.js","static/vendor-ui-DZJzNhfO.js","static/vendor-react-RA0MeLRT.js","static/vendor-data-DipQAKt7.js","static/button-BamSYHGn.js","static/vendor-utils-DxBcq7o1.js","static/button-CP00zwgT.css","static/webviewDetection-BGkn8C8u.js","static/progress-fp-nWkMh.js","static/index-ZHXqJ0xM.js","static/AppLogsAPI-DB6wC6Bb.js","static/domainValidation-C2COoIZ_.js","static/UserAppMain-Dgihpmma.css","static/WebApp-VzhvG0oC.js","static/FiverrChatContext-_Ugn1zgY.js","static/GenericContentSkeleton-BbEg6AJe.js","static/purify.es-CxTuOytG.js","static/GenericContentSkeleton-CrtU-Edf.css","static/SettingsPageSkeleton-DATzMD8v.js","static/NativeMobileApp-D4mAmUkY.js","static/MixPanelTracker-Uv7QiLq2.js"])))=>i.map(i=>d[i]);
import{cK as RP,cl as Go,r as M,l as sy,j as J,cL as zP,P as xr,u as MP,cM as NP,k as qa,cN as zl,m as FP,cO as ly,bx as LP,cP as jP,q as OP,cQ as BP,cR as UP,cS as qP,X as VP,i as W,cT as Lu,cU as cy,cV as $P,cW as WP,cX as GP}from"./vendor-ui-DZJzNhfO.js";import{_ as Pc}from"./vendor-monaco-kUzn8ZZg.js";import{c as dy,t as HP,r as YP}from"./vendor-utils-DxBcq7o1.js";import{g as uy}from"./vendor-data-DipQAKt7.js";function _c(e,a){for(var n=0;n<a.length;n++){const t=a[n];if(typeof t!="string"&&!Array.isArray(t)){for(const i in t)if(i!=="default"&&!(i in e)){const r=Object.getOwnPropertyDescriptor(t,i);r&&Object.defineProperty(e,i,r.get?r:{enumerable:!0,get:()=>t[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))t(i);new MutationObserver(i=>{for(const r of i)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&t(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const r={};return i.integrity&&(r.integrity=i.integrity),i.referrerPolicy&&(r.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?r.credentials="include":i.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function t(i){if(i.ep)return;i.ep=!0;const r=n(i);fetch(i.href,r)}})();var vs={},bf;function KP(){if(bf)return vs;bf=1;var e=RP();return vs.createRoot=e.createRoot,vs.hydrateRoot=e.hydrateRoot,vs}var py=KP();const my=Go(py),Wge=_c({__proto__:null,default:my},[py]),ZP={sectionTitle:"Kontoeinstellungen",sectionDescription:"Verwalten Sie Ihre persönlichen Kontoeinstellungen und Präferenzen.",heading:"Konto",email:{label:"E-Mail",placeholder:"Keine E-Mail angegeben"},fullName:{label:"Vollständiger Name",placeholder:"Vollständigen Namen eingeben",profileHint:"So erscheinen Sie auf Ihrem öffentlichen Base44-<profileLink>Profil</profileLink>."},phoneNumber:{label:"Telefonnummer",placeholder:"Telefonnummer eingeben",smsConsent:"Durch die Eingabe Ihrer Telefonnummer stimmen Sie zu, SMS-Benachrichtigungen von uns zu erhalten."},defaultAgents:{label:"Standard-Agents",toggleLabel:"Agents standardmäßig für neue Apps aktivieren",description:"Wenn aktiviert, werden Agents für neue Apps automatisch aktiviert, sodass sie autonome Aufgaben ausführen und Tools verwenden können."},defaultTestData:{label:"Standard-Testdaten",toggleLabel:"Testdaten standardmäßig für neue Apps aktivieren",description:"Wenn aktiviert, starten neue Apps mit eingeschalteten Testdaten, damit Sie Änderungen sicher testen können, ohne Live-Daten zu beeinflussen.",upgradeRequired:"Diese Funktion erfordert den Builder-Plan oder höher.",seePlans:"Pläne ansehen"},apiKey:{label:"API-Schlüssel",copyTitle:"API-Schlüssel kopieren",copied:"Kopiert!",regenerate:"Neu generieren",regenerating:"Wird neu generiert...",regenShort:"Neu gen.",regenShortLoading:"Neu gen...",description:"Ihr API-Schlüssel ermöglicht den Zugriff auf Ihren Arbeitsbereich. Teilen Sie ihn nicht mit anderen.",notGenerated:"Noch nicht generiert — klicken Sie auf Regenerieren"},backofficeApiKey:{title:"Backoffice-API-Schlüssel",description:"Verwenden Sie diesen Schlüssel für programmatische Anfragen an den Backoffice-Dienst. Er funktioniert nicht auf dem Plattform-Dienst. Bewahren Sie ihn geheim auf.",yourKey:"Ihr Backoffice-API-Schlüssel",copySuccess:"Backoffice-API-Schlüssel kopiert",copyError:"Backoffice-API-Schlüssel konnte nicht kopiert werden",regenSuccess:"Backoffice-API-Schlüssel neu generiert",regenError:"Fehler beim Neugenerieren: {{error}}",warning:"Durch das Neugenerieren wird der vorherige Schlüssel sofort ungültig. Alle Clients, die ihn verwenden, müssen aktualisiert werden.",existsPlaceholder:"•••••••••••••••••• (Schlüssel vorhanden — nur der Hash wird gespeichert; neu generieren, um einen neuen Schlüssel zu sehen)",showOnceWarning:"Kopieren Sie diesen Schlüssel jetzt. Er wird nur einmal angezeigt und kann später nicht wiederhergestellt werden."},unsavedChanges:"Nicht gespeicherte Änderungen",discard:"Verwerfen",save:"Speichern",saving:"Wird gespeichert...",saveSuccess:"Kontoeinstellungen erfolgreich aktualisiert!",saveError:"Kontoeinstellungen konnten nicht aktualisiert werden: {{error}}",unknownError:"Unbekannter Fehler",apiKeyCopySuccess:"API-Schlüssel in die Zwischenablage kopiert!",apiKeyCopyError:"API-Schlüssel konnte nicht kopiert werden",apiKeyRegenSuccess:"API-Schlüssel erfolgreich neu generiert!",apiKeyRegenError:"API-Schlüssel konnte nicht neu generiert werden: {{error}}"},JP={title:"Zwei-Faktor-Authentifizierung",description:"Fügen Sie beim Anmelden eine zusätzliche Schutzebene hinzu. Bei jeder Anmeldung wird ein Code abgefragt.",twoFactorEnabled:"Zwei-Faktor-Authentifizierung ist aktiviert.",statsLine:"{{used}}/{{total}} Wiederherstellungscodes verwendet · {{devices}} vertrauenswürdige Geräte",totp:{name:"Authentifizierungs-App",description:"Verwenden Sie eine App wie Google Authenticator oder Duo, um sichere Anmeldecodes zu generieren.",setupTitle:"Authentifizierungs-App einrichten",scanQr:"Scannen Sie den QR-Code mit Ihrer Authentifizierungs-App",cantScan:"Code kann nicht gescannt werden? Manuell eingeben:",enterCodeTitle:"Code aus Ihrer Authentifizierungs-App eingeben",enterDigitCode:"6-stelligen Code eingeben",codesRefresh:"Codes werden alle 30 Sekunden aktualisiert.",qrCodeAlt:"QR-Code zur Einrichtung der Authentifizierungs-App",enabled:"Authentifizierungs-App aktiviert",disabled:"Authentifizierungs-App deaktiviert"},sms:{name:"Textnachrichten",description:"Erhalten Sie Anmeldecodes per Textnachricht auf Ihr Telefon.",enterPhone:"Telefonnummer eingeben",phoneLabel:"Telefonnummer",phonePlaceholder:"(555) 000-0000",verificationWillBeSent:"Ein Bestätigungscode wird an diese Nummer gesendet.",verifyPhone:"Telefonnummer bestätigen",codeSentTo:"Ein 6-stelliger Code wurde an {{phone}} gesendet",standardRates:"Es können Standard-Nachrichten- und Datengebühren anfallen.",invalidPhone:"Ungültige Telefonnummer. Bitte überprüfen Sie die Nummer und versuchen Sie es erneut.",enabled:"SMS-MFA aktiviert",disabled:"Textnachrichten deaktiviert"},recovery:{saveTitle:"Wiederherstellungscodes speichern",saveDescription:"Speichern Sie diese Wiederherstellungscodes an einem sicheren Ort. Sie benötigen sie, wenn Sie den Zugriff auf Ihr Telefon oder Ihre Authentifizierungs-App verlieren.",eachCodeOnce:"Jeder Wiederherstellungscode kann nur einmal verwendet werden. Bewahren Sie sie sicher und zugänglich auf.",eachCodeOnceShort:"Jeder Wiederherstellungscode kann nur einmal verwendet werden.",copyAll:"Alle kopieren",download:"Herunterladen",copied:"Kopiert",enterRecoveryCode:"Wiederherstellungscode eingeben"},disable:{title:"Zwei-Faktor-Authentifizierung deaktivieren",turnOff:"Zwei-Faktor-Authentifizierung ausschalten?",turnOffDescription:"Um fortzufahren, müssen Sie sich mit einem an Ihr Telefon gesendeten Code oder einem Wiederherstellungscode verifizieren.",verifyWithPhone:"Mit einem an Ihr Telefon gesendeten Code verifizieren",verifyWithApp:"Code aus Ihrer Authentifizierungs-App eingeben",enterRecoveryToDisable:"Geben Sie einen Ihrer Wiederherstellungscodes ein, um die Zwei-Faktor-Authentifizierung zu deaktivieren.",useRecoveryCode:"Wiederherstellungscode verwenden",verifyViaApp:"Über App verifizieren",verifyAndDisable:"Verifizieren & Deaktivieren"},regenerate:{title:"Wiederherstellungscodes neu generieren",trustedDevicesCount_one:"{{count}} vertrauenswürdiges Gerät",trustedDevicesCount_other:"{{count}} vertrauenswürdige Geräte",codesUsed:"{{used}}/{{total}} Wiederherstellungscodes verwendet",descriptionChoose:"Wählen Sie eine Verifizierungsmethode, um Ihre Wiederherstellungscodes neu zu generieren. Alle bestehenden Codes werden ungültig.",descriptionSms:"Wir senden zur Bestätigung einen Verifizierungscode an Ihr Telefon.",descriptionSmsVerify:"Geben Sie einen Verifizierungscode ein, um Ihre Wiederherstellungscodes neu zu generieren. Alle bestehenden Codes werden ungültig.",descriptionTotpVerify:"Geben Sie einen Verifizierungscode ein, um Ihre Wiederherstellungscodes neu zu generieren. Alle bestehenden Codes werden ungültig.",verifyWithApp:"Code aus Ihrer Authentifizierungs-App eingeben",verifyWithSms:"Mit einem an Ihr Telefon gesendeten Code verifizieren",smsMethodLabel:"SMS-Nachricht",enterCodeLabel:"6-stelligen Code eingeben",helperTotp:"Öffnen Sie Ihre Authentifizierungs-App, um den Code zu erhalten",helperSms:"Geben Sie den an Ihr Telefon gesendeten Code ein",verifyAndRegenerate:"Verifizieren & Neu generieren",enterCode:"Code eingeben"},reauth:{title:"Identität bestätigen",description:"Bestätigen Sie aus Sicherheitsgründen Ihre Identität, bevor Sie {{method}} als Anmeldemethode hinzufügen.",actionTotp:"Geben Sie den 6-stelligen Code aus Ihrer Authentifizierungs-App ein.",actionSms:"Geben Sie den an {{phone}} gesendeten Code ein."},common:{enable:"Aktivieren",enabled:"Aktiviert",cancel:"Abbrechen",close:"Schließen",back:"Zurück",done:"Fertig",verify:"Verifizieren",sendCode:"Code senden",regenerate:"Neu generieren",regenerateRecoveryCodes:"Wiederherstellungscodes neu generieren",disable:"Deaktivieren",continue:"Weiter",fullCodeError:"Geben Sie den vollständigen 6-stelligen Code ein",fullRecoveryError:"Geben Sie den vollständigen Wiederherstellungscode ein",enterVerificationCode:"Bestätigungscode eingeben",didntReceive:"Keinen Code erhalten?",resendIn:"Erneut senden in {{seconds}}s",resend:"Erneut senden",verificationSent:"Bestätigungscode gesendet",failedToSetup:"Einrichtung der Authentifizierungs-App fehlgeschlagen",failedToSendCode:"Code konnte nicht gesendet werden",failedToResend:"Erneutes Senden fehlgeschlagen",invalidCode:"Ungültiger Code",lockedOut:"Zu viele Fehlversuche. Versuchen Sie es in {{minutes}} Min. erneut.",lockedOutShort:"Vorübergehend gesperrt ({{minutes}} Min.)"}},QP={section:{title:"Konto löschen",description:"Löschen Sie Ihr Konto zusammen mit allen zugehörigen Daten, Einstellungen und Aktivitäten.",accessNote:"Nach dem Einreichen der Löschanfrage haben Sie noch 1 Woche Zugriff auf Ihr Konto.",deleteButton:"Konto löschen",enterpriseTooltip:"Das Löschen von Konten ist für Enterprise-Benutzer nicht möglich. Bitte wenden Sie sich an den Administrator Ihrer Organisation."},pendingRequest:{willBeDeleted:"Ihr Konto, Abonnement, eigene Apps und Arbeitsbereiche werden in <bold>{{daysRemaining}} Tagen</bold> ({{formattedEnd}}) gelöscht. Ab diesem Datum ist die Löschung endgültig. Bis dahin können Sie die Löschung abbrechen.",processing:"Löschung wird verarbeitet...",cancelButton:"Anfrage abbrechen",renewalWarning:"Wenn Ihr Abonnement in diesen {{daysRemaining}} Tagen erneuert werden soll, erfolgt die Erneuerung trotzdem, es sei denn, Sie kündigen das Abonnement manuell vor dem Erneuerungsdatum."},toast:{submitSuccess:"Löschanfrage eingereicht. Wir prüfen und bearbeiten sie nach der 7-tägigen Karenzzeit.",submitError:"Löschantrag konnte nicht eingereicht werden. Bitte versuchen Sie es erneut.",cancelSuccess:"Löschanfrage wurde erfolgreich abgebrochen.",cancelError:"Anfrage konnte nicht abgebrochen werden. Bitte versuchen Sie es erneut.",preflightError:"Kontostatus konnte nicht überprüft werden. Bitte versuchen Sie es erneut."},dialog:{title:"Ihr Konto löschen",description:"Dadurch wird Ihr Konto und alle zugehörigen Daten zur dauerhaften Löschung vorgemerkt.",whatWillBeDeleted:"Was wird gelöscht:",itemAccountProfile:"Ihr Konto und Profil",itemAllApps:"Alle von Ihnen erstellten Apps",itemAllData:"Alle in Ihren Apps gespeicherten Daten",itemUploadedFiles:"Hochgeladene Dateien und Medien",gracePeriodNote:"Sie haben 7 Tage, um diese Anfrage zu stornieren. Danach wird unser Team die Löschung prüfen und bearbeiten.",subscriptionNote:"Die Kündigung eines Abonnements ist endgültig und es werden keine Erstattungen gewährt",cancelButton:"Abbrechen",deleteButton:"Konto löschen"},subscriptions:{dialogTitle:"Abonnements kündigen, bevor Sie Ihr Konto löschen",warning:"Sie haben noch aktive Abonnements. Bitte kündigen Sie diese zuerst.",listLabel:"Aktive Abonnements:",personalPlan:"Persönlicher Plan",planAndBilling:"Plan & Abrechnung",yearly:"jährlich",monthly:"monatlich",cancelFirst:"Kündigen Sie alle oben genannten Abonnements und kommen Sie dann zurück, um Ihr Konto zu löschen.",closeButton:"Schließen",manageButton:"Abonnements verwalten"},workspaceOwner:{titleStep1:"Sie besitzen Arbeitsbereiche",titleStep2:"Löschung des Arbeitsbereichs bestätigen",memberCount_one:"{{count}} Mitglied",memberCount_other:"{{count}} Mitglieder",warningOwner_one:"Sie besitzen den folgenden Arbeitsbereich. Wenn Sie fortfahren, werden alle Apps in diesem Arbeitsbereich dauerhaft gelöscht und alle Mitglieder verlieren den Zugriff.",warningOwner_other:"Sie besitzen die folgenden Arbeitsbereiche. Wenn Sie fortfahren, werden alle Apps in diesen Arbeitsbereichen dauerhaft gelöscht und alle Mitglieder verlieren den Zugriff.",leaveWorkspaces_one:"Sie werden auch diesen Arbeitsbereich verlassen und den Zugriff verlieren:",leaveWorkspaces_other:"Sie werden auch diese Arbeitsbereiche verlassen und den Zugriff verlieren:",confirmInstructions:"Geben Sie unten jeden Arbeitsbereichsnamen ein, um die Löschung zu bestätigen. Diese Aktion ist unwiderruflich.",typeToConfirm:'Geben Sie <bold>"{{name}}"</bold> zur Bestätigung ein',deleteAnyway:"Trotzdem löschen",deleteAccount:"Konto löschen",cancel:"Abbrechen"},memberInfo:{title_one:"Sie werden diesen Arbeitsbereich verlassen",title_other:"Sie werden diese Arbeitsbereiche verlassen",description_one:"Wenn Sie Ihr Konto löschen, werden Sie aus dem folgenden Arbeitsbereich entfernt. Sie verlieren den Zugriff auf alle Apps und Daten des Arbeitsbereichs.",description_other:"Wenn Sie Ihr Konto löschen, werden Sie aus den folgenden Arbeitsbereichen entfernt. Sie verlieren den Zugriff auf alle Apps und Daten der Arbeitsbereiche.",cancel:"Abbrechen",continueWithDeletion:"Mit Löschung fortfahren"}},XP={title:"GitHub-Konto",addAccount:"GitHub-Konto hinzufügen",unlockWithBuilder:"Schalten Sie diese Funktion mit dem Builder-Plan frei.",loading:"Laden...",connecting:"Verbinden...",reconnect:"Erneut verbinden",connectionLost:"Die Verbindung zu GitHub wurde unterbrochen. Bitte verbinden Sie Ihr GitHub-Konto erneut, um fortzufahren.",connected:"Verbunden",connectedDescription:"Ihr GitHub-Konto ist verbunden",disconnect:"Trennen",tryAgain:"Erneut versuchen",connectGitHub:"GitHub verbinden",disconnectDialog:{title:"Von GitHub trennen?",accountDescription:"Das Trennen Ihres GitHub-Kontos hat keine Auswirkungen auf verbundene Apps.<br/>Sie müssen Ihr Konto nur erneut verbinden, wenn Sie ein Repository verbinden oder neu verbinden möchten.",repoDescription:"Dies trennt die App vom {{repoName}}-Repository.",repoDescriptionNoName:"Dies trennt die App vom GitHub-Repository.",repoDetail1:"Ihr GitHub-Repository bleibt unverändert — es wird nicht gelöscht oder entfernt.",repoDetail2:"Sie können weiterhin wie gewohnt an Ihrer App arbeiten, aber GitHub ist nicht mehr die Quelle der Wahrheit für Ihren Code, und die bidirektionale Synchronisierung wird deaktiviert.",disconnectingProgress:"Trennen… Das kann einige Minuten dauern.",cancel:"Abbrechen",disconnect:"Trennen",disconnecting:"Trennen…"}},e_={title:"Google Drive",connected:"Verbunden",connectedDescription:"Ihr Google Drive ist verbunden",disconnectedDescription:"Verbinden Sie Ihr Google Drive, um Dateien zu importieren",connect:"Verbinden",connecting:"Verbindung wird hergestellt...",disconnect:"Trennen",disconnecting:"Wird getrennt...",loading:"Laden...",connectTitle:"Mit Google Drive verbinden",connectDescription:"Gewähren Sie Zugriff, um Dateien aus Google Drive als KI-Chat-Kontext zu verwenden.",benefitImport:"Importieren Sie Docs, Sheets und Slides aus Ihrem Google Drive",benefitChoose:"Wählen Sie jedes Mal, welche Dateien verwendet werden sollen",benefitSecure:"Ausgewählte Inhalte werden sicher für Ihre Anwendung gespeichert",connectButton:"Google Drive verbinden",cancel:"Abbrechen",privacyNote:"Es wird nur auf Dateien zugegriffen, die Sie auswählen.",disconnectAnytime:"Sie können die Verbindung jederzeit in den Kontoeinstellungen trennen."},t_={title:"Chat-Einstellungen",sendMessageShortcut:"Tastenkürzel zum Senden",insertNewLineShortcut:"Tastenkürzel für neue Zeile",soundPreferences:"Toneinstellungen",browserNotifications:"Browser-Benachrichtigungen",notificationsHelpText:"Benachrichtigungen aktiviert, aber keine erhalten? <docLink>Dokumentation aufrufen</docLink>",notificationOptions:{onFirstPromptOnly:"Nur bei erstem Prompt",onEveryPromptCompletion:"Bei jedem Prompt-Abschluss",disableNotificationSounds:"Benachrichtigungstöne deaktivieren",disableBrowserNotifications:"Browser-Benachrichtigungen deaktivieren"}},a_={account:ZP,mfa:JP,deleteAccount:QP,github:XP,googleDrive:e_,chatSettings:t_},n_={title:"Zugriff anfordern für {{appName}}",subtitleDefault:"Fordern Sie Zugriff an oder wechseln Sie zu einem Konto, das bereits berechtigt ist.",subtitleRequested:"Sie erhalten eine E-Mail, wenn Ihre Anfrage genehmigt wird.",requestAccess:"Zugriff anfordern",requestSubmitted:"Anfrage gesendet",loggedInAs:"Sie sind angemeldet als {{email}}",switchAccount:"Konto wechseln",errorMessage:"Etwas ist schiefgelaufen. Bitte versuchen Sie es erneut oder wechseln Sie das Konto.",tooManyAttempts:"Zu viele Versuche. Bitte versuchen Sie es später erneut.",backToLogin:"Zurück zur Anmeldung"},i_={title:"Zugriff eingeschränkt",subtitle:"Sie müssen Mitglied dieses Arbeitsbereichs sein, um auf die App zuzugreifen."},r_={accessRequired:n_,workspaceRestricted:i_},o_={title:"Willkommen bei Base44",loginWithGoogle:"Mit Google anmelden",loginWithGithub:"Mit GitHub anmelden",loggingIn:"Anmeldung läuft...",or:"Oder",emailLabel:"E-Mail",emailPlaceholder:"E-Mail-Adresse eingeben",edit:"Bearbeiten",lastUsed:"Zuletzt verwendet",ssoEnabled:"SSO ist für <strong>{{workspace}}</strong> aktiviert",ssoClickBelow:"Klicke unten, um mit der Anmeldung deiner Organisation fortzufahren",passwordLabel:"Passwort",forgotPassword:"Passwort vergessen?",passwordPlaceholder:"Passwort eingeben",checkingAuth:"Authentifizierungsmethode wird überprüft...",checking:"Überprüfung...",continue:"Weiter",continueWithSSO:"Weiter mit {{provider}}",logIn:"Anmelden",noAccount:"Noch kein Konto?",signUp:"Registrieren",verifyEmailFirst:"Bitte bestätige deine E-Mail-Adresse vor der Anmeldung. Prüfe dein Postfach für den Bestätigungscode.",resendVerificationCode:"Bestätigungscode erneut senden",enterEmailFirst:"Bitte gib zuerst deine E-Mail-Adresse ein",invalidEmail:"Bitte gib eine gültige E-Mail-Adresse ein",ssoError:"SSO-Konfigurationsfehler. Bitte versuche es erneut.",invalidCredentials:"Ungültige E-Mail oder Passwort",loginFailed:"Anmeldung fehlgeschlagen. Bitte versuche es erneut.",failedResendVerification:"Bestätigungscode konnte nicht erneut gesendet werden. Bitte versuche es erneut.",passwordResetRequired:"Aus Sicherheitsgründen musst du dein Passwort zurücksetzen, bevor du dich anmelden kannst. Prüfe dein Postfach für einen Zurücksetzungslink.",resetLinkSent:"Ein Link zum Zurücksetzen des Passworts wurde an deine E-Mail gesendet.",resendResetLink:"Zurücksetzungslink erneut senden",failedResendResetLink:"Zurücksetzungslink konnte nicht gesendet werden. Bitte versuche es erneut.",termsAndPrivacy:"<terms>Nutzungsbedingungen</terms> und <privacy>Datenschutzerklärung</privacy>."},s_={title:"Erstelle dein Konto",agreeToTerms:'Mit Klick auf "Registrieren" stimmst du unseren <terms>Nutzungsbedingungen</terms> und der <privacy>Datenschutzerklärung</privacy> zu.',signUpWithGoogle:"Mit Google registrieren",signUpWithGithub:"Mit GitHub registrieren",signingUp:"Registrierung...",creatingAccount:"Konto wird erstellt...",signUpButton:"Registrieren",alreadyHaveAccount:"Bereits ein Base44-Konto?",logIn:"Anmelden",validatingReferral:"Empfehlungscode wird überprüft...",invalidReferral:"Ungültiger Empfehlungscode",youveBeenInvited:"Du wurdest eingeladen!",invitedToJoin:"<strong>{{name}}</strong> hat dich zu Base44 eingeladen",signUpFreeCredits:"Registriere dich und erhalte 10 Gratis-Credits!",signUpBaseDayCredits:"Registriere dich und erhalte 44 kostenlose Credits!",letsBuild:"Lass uns gemeinsam etwas Großartiges bauen!",registrationFailed:"Registrierung fehlgeschlagen. Bitte versuche es erneut.",failedValidateReferral:"Empfehlungscode konnte nicht überprüft werden",completeVerification:"Bitte schließe die Verifizierung ab",weakPassword:"Schwaches Passwort"},l_={title:"Passwort zurücksetzen",subtitle:"Gib die E-Mail-Adresse ein, mit der du dich registriert hast. Wir senden dir einen Link zum Zurücksetzen deines Passworts.",backToLogin:"Zurück zur Anmeldung",loginEmail:"Anmelde-E-Mail",emailPlaceholder:"z.B. name@email.com",sending:"Wird gesendet...",verifyEmail:"E-Mail verifizieren",invalidEmail:"Ungültige E-Mail-Adresse",failedSendReset:"Reset-Link konnte nicht gesendet werden. Bitte versuche es erneut."},c_={title:"Prüfe dein Postfach",subtitle:"Wir haben Anweisungen zum Zurücksetzen des Passworts an <strong>{{email}}</strong> gesendet.",backToReset:"Zurück zum Passwort zurücksetzen",checkInfo:"Bitte prüfe dein Postfach für den Link zum Zurücksetzen des Passworts.",mayTakeMinutes:"Es kann einige Minuten dauern, bis die E-Mail ankommt.",goToSignIn:"Zur Anmeldung",didntGetEmail:"E-Mail nicht erhalten?",resending:"Wird erneut gesendet...",resendEmail:"E-Mail erneut senden",emailNotFound:"E-Mail-Adresse nicht gefunden. Bitte geh zurück und versuche es erneut.",newResetSent:"Neue E-Mail zum Zurücksetzen des Passworts gesendet. Bitte prüfe dein Postfach.",failedResendEmail:"E-Mail konnte nicht erneut gesendet werden. Bitte versuche es erneut."},d_={title:"Neues Passwort festlegen",subtitle:"Gib dein neues Passwort für Base44 ein",newPasswordLabel:"Neues Passwort",newPasswordPlaceholder:"Neues Passwort eingeben",confirmPasswordLabel:"Neues Passwort bestätigen",confirmPasswordPlaceholder:"Neues Passwort erneut eingeben",resetting:"Wird zurückgesetzt...",resetButton:"Passwort zurücksetzen",backToLogIn:"Zurück zur Anmeldung",invalidToken:"Ungültiger oder fehlender Reset-Token. Bitte fordere ein neues Passwort-Reset an.",passwordsMismatch:"Passwörter stimmen nicht überein. Bitte versuche es erneut.",weakPassword:"Bitte erstelle mindestens ein mittelstarkes Passwort.",resetSuccess:"Passwort erfolgreich zurückgesetzt! Weiterleitung zur Anmeldung...",resetSuccessLogin:"Passwort erfolgreich zurückgesetzt! Bitte melde dich mit deinem neuen Passwort an.",failedReset:"Passwort konnte nicht zurückgesetzt werden. Bitte versuche es erneut.",invalidOrExpiredToken:"Ungültiger oder abgelaufener Reset-Token"},u_={verifyTitle:"Identität bestätigen",verification:{chooseMethod:"Authentifizierungsmethode wählen",authenticatorApp:"Authenticator-App",smsMessage:"SMS-Nachricht",recoveryCode:"Wiederherstellungscode",continue:"Weiter",backToLogin:"Zurück zur Anmeldung",chooseAnotherMethod:"Andere Methode wählen",verifyViaText:"Per SMS bestätigen",verifyViaApp:"Per Authenticator-App bestätigen",enterRecoveryCode:"Wiederherstellungscode eingeben",rememberDevice:"Dieses Gerät 30 Tage merken",verifying:"Wird überprüft...",verify:"Bestätigen",useRecoveryCode:"Wiederherstellungscode verwenden",sendingCodeTo:"Code wird an {{phone}} gesendet…",enterCodeSentTo:"Gib den an {{phone}} gesendeten Code ein",enterCodeFromApp:"Gib den Code aus deiner Authenticator-App ein",yourPhone:"dein Telefon",didntReceiveCode:"Keinen Code erhalten?",resendIn:"Erneut senden in {{seconds}}s",resend:"Erneut senden",enterCompleteRecoveryCode:"Bitte gib den vollständigen Wiederherstellungscode ein",enterCompleteCode:"Bitte gib den vollständigen 6-stelligen Code ein",verificationFailed:"Bestätigung fehlgeschlagen. Bitte versuche es erneut.",failedSendCode:"Code konnte nicht gesendet werden. Bitte erneut versuchen."}},p_={buildingApp:"Deine App wird erstellt",verifyEmailSubtitle:"Bestätige deine E-Mail, um fortzufahren",signUpSubtitle:"Registriere dich und sieh zu, wie sie zum Leben erwacht",loginSubtitle:"Melde dich an und sieh zu, wie sie zum Leben erwacht"},m_={completeVerification:"Bitte schließe die Sicherheitsverifizierung ab"},g_={title:"E-Mail bestätigen",subtitle:"Wir haben einen Bestätigungscode an {{email}} gesendet",verificationCode:"Bestätigungscode",fillAllFields:"Bitte fülle alle Felder aus.",enterCodeSent:"Gib den Bestätigungscode ein, der an deine E-Mail gesendet wurde",verifying:"Wird überprüft...",verifyEmail:"E-Mail bestätigen",wrongEmail:"Falsche E-Mail? Ändern",didntReceiveCode:"Code nicht erhalten?",resendEmail:"E-Mail erneut senden",emailVerifiedLogin:"E-Mail erfolgreich bestätigt! Du kannst dich jetzt anmelden.",emailVerifiedContinue:"E-Mail erfolgreich bestätigt! Bitte melde dich an, um fortzufahren.",invalidCode:"Ungültiger Bestätigungscode. Bitte versuche es erneut.",verificationFailed:"Bestätigung fehlgeschlagen. Bitte versuche es erneut.",newCodeSent:"Neuer Bestätigungscode an deine E-Mail gesendet.",failedResendCode:"Bestätigungscode konnte nicht erneut gesendet werden. Bitte versuche es erneut."},h_={login:o_,register:s_,forgotPassword:l_,checkEmail:c_,resetPassword:d_,mfa:u_,authModal:p_,turnstile:m_,otp:g_},f_={notFound:"Profil nicht gefunden",notFoundDescription:"Das Builder-Profil @{{username}} existiert nicht."},v_={edit:"Bearbeiten",done:"Fertig",cancel:"Abbrechen",appCount_one:"{{count}} App",appCount_other:"{{count}} Apps",joined:"Beigetreten {{date}}",namePlaceholder:"Dein Name",displayNameLabel:"Anzeigename",usernameLabel:"Benutzername",changeUsername:"Benutzername ändern",saveChanges:"Änderungen speichern",partnerBadge:"Base44 Partner"},b_={label:"Bio",placeholder:"Schreibe eine kurze Bio über dich...",emptyPlaceholder:"Erzähl Besuchern von dir — füge eine kurze Bio hinzu.",hint:"Max. 220 Zeichen",maxChars:"Max. {{max}} Zeichen"},y_={viewTitle:"Apps",appsHeader:"Apps ({{count}})",appsHeaderEmpty:"Apps",featuredCounter_one:"{{count}} hervorgehoben",featuredCounter_other:"{{count}} hervorgehoben",editHint:"Wähle aus, welche Apps auf deinem öffentlichen Profil erscheinen.",noPublishedApps:"Keine veröffentlichten Apps gefunden. Veröffentliche zuerst eine App!",noPublishedAppsTitle:"Keine veröffentlichten Apps",noPublishedAppsDescription:"Du hast noch keine Apps veröffentlicht. Gehe zu deinem Workspace, um einen Entwurf fertigzustellen und zu veröffentlichen, damit du ihn in deinem Profil präsentieren kannst.",viewMyApps:"Meine Apps anzeigen",untitled:"Ohne Titel",updated:"Angepinnte Apps aktualisiert!",updateFailed:"Angepinnte Apps konnten nicht aktualisiert werden",manageApps:"Apps verwalten",chooseTitle:"Apps zur Anzeige auswählen",chooseDescription:"Wähle bis zu {{max}} veröffentlichte Apps aus, die auf deinem öffentlichen Profil angezeigt werden",selectAll:"Alle auswählen",deselectAll:"Alle abwählen",saveChanges:"Speichern",searchApps:"Apps suchen...",publicBadge:"Öffentlich",privateBadge:"Privat",showMore:"Mehr anzeigen",showLess:"Weniger anzeigen",maxReached:"Maximal {{max}} Apps erlaubt",close:"Schließen",noSearchResults:"Keine Apps entsprechen deiner Suche",updatedRecently:"kürzlich aktualisiert",selectAllCount:"Alle auswählen ({{count}})",deselectAllCount:"Alle abwählen ({{count}})"},k_={editTooltip:"Social-Links bearbeiten",addLinks:"Social-Links hinzufügen",addLink:"Link hinzufügen",cancelTooltip:"Abbrechen",removeTooltip:"Entfernen",label:"Soziale Netzwerke",hint:"Bis zu 6 Social-Links hinzufügen",linkLabel:"Link",addCustomLink:"Eigenen Link hinzufügen",pastePlaceholder:"URL hier einfügen",enterUsernameOrUrl:"Benutzername oder vollständige Profil-URL eingeben",movedTo:"Zu {{platform}} verschoben",addedAsCustom:"Als benutzerdefinierter Link hinzugefügt",fieldOccupied:"Sieht aus wie ein {{platform}}-Link — das Feld hat bereits eine URL",customSlotsFull:"Sieht aus wie ein {{platform}}-Link. Entferne einen benutzerdefinierten Link, um ihn hinzuzufügen."},w_={profileUpdated:"Profil aktualisiert!",profileUpdateFailed:"Profil konnte nicht aktualisiert werden",usernameClaimed:"Benutzername beansprucht!",usernameClaimFailed:"Benutzername konnte nicht beansprucht werden",loadFailed:"Profil konnte nicht geladen werden",invalidImageType:"Bitte lade ein gültiges Bild hoch (JPG, PNG, GIF oder WebP)",imageTooLarge:"Das Bild muss kleiner als 5 MB sein",avatarUpdated:"Profilbild aktualisiert!",avatarUploadFailed:"Bild konnte nicht hochgeladen werden",avatarRemoveFailed:"Bild konnte nicht entfernt werden"},A_={title:"Änderungen verwerfen?",description:"Du hast ungespeicherte Änderungen, die verloren gehen.",confirm:"Verwerfen"},S_={title:"Benutzername ändern",placeholder:"benutzername",checking:"Wird geprüft...",available:"Verfügbar!",notAvailable:"Nicht verfügbar",urlWarning:"Deine Profil-URL wird zu /@{{username}} geändert. Alte Links funktionieren nicht mehr.",cancel:"Abbrechen",claim:"Benutzername beanspruchen",tryInstead:"Versuche:"},C_={locationLabel:"Standort",locationPlaceholder:"z. B. Berlin, Deutschland",showEmailLabel:"Konto-E-Mail anzeigen"},D_={title:"Titelbild aktualisieren",description:"Wähle einen unserer Farbverläufe oder lade dein eigenes Bild hoch",uploadFile:"Eigenes Bild hochladen",orUseTemplate:"Oder eine Vorlage verwenden",cancel:"Abbrechen",saveChanges:"Änderungen speichern",updated:"Titelbild aktualisiert!",updateFailed:"Titelbild konnte nicht aktualisiert werden",uploadFailed:"Bild konnte nicht hochgeladen werden",dragToReposition:"Ziehen zum Neupositionieren",replaceImage:"Bild ersetzen",reposition:"Neu positionieren"},T_={title:"Aktivität",mon:"Mo",wed:"Mi",fri:"Fr",less:"Weniger",more:"Mehr",messages_one:"{{count}} Prompt",messages_other:"{{count}} Prompts",founderMode:"Founder mode",noActivity:"Keine Aktivität",onDate:"am {{date}}",showOnProfile:"Im Profil anzeigen"},E_={customize:"Profil anpassen",title:"Noch keine öffentlichen Apps",description:"Dein Profil ist der beste Ort, um deine Arbeit mit der Base44-Community zu teilen. Wähle aus deinen veröffentlichten Apps aus, um sie hier anzuzeigen, oder starte ein neues Projekt, um deine Aktivität zu steigern.",anonDescription:"Dieser Builder hat noch keine seiner Apps öffentlich gemacht. Schau später vorbei, um die neuesten Aktivitäten zu sehen, oder entdecke, was andere erstellen.",startCreating:"Jetzt erstellen",chooseFromApps:"Aus meinen Apps wählen"},P_={page:f_,header:v_,bio:b_,pinnedApps:y_,social:k_,toast:w_,discardDialog:A_,usernameDialog:S_,details:C_,coverImage:D_,activity:T_,emptyState:E_},__=JSON.parse(`{"title":"KI-Agenten","beta":"Beta","subtitle":"Baue KI-Agenten in deine App mit der KI-Agenten-Infrastruktur von Base44","disabled":"Deaktiviert","setupAgents":"Agenten einrichten","enableAgents":"Agenten aktivieren","turnOnToggle":"Schalte den Schalter ein, um die Erstellung von Agenten zu ermöglichen","addFirstAgent":"Füge deinen ersten Agenten hinzu","creditsUsed":"{{credits}} Credits verwendet","creditsUsedTooltip":"Monatlich verwendete Integrations-Credits","askChatToCreate":"Bitte den Chat, einen Agenten für dich zu erstellen. Beschreibe, welche Rolle der Agent haben soll und welche Aufgaben er ausführen soll.","defineInConfig":"Definiere deine Agenten in lokalen Konfigurationsdateien und synchronisiere sie mit deiner App über die Base44 CLI.","viewDocumentation":"Dokumentation anzeigen","noAgentsYet":"Noch keine Agenten","promptChatToCreate":"Fordere den Chat auf, deinen ersten KI-Agenten zu erstellen","agentsTab":"Agenten","conversationsTab":"Konversationen","searchConversations":"Konversationen durchsuchen...","filterAll":"Alle","filterMine":"Meine","filterUsers":"Benutzer","noConversationsYet":"Noch keine Konversationen","noConversationsMatchSearch":"Keine Konversationen entsprechen Ihrer Suche","tryDifferentSearch":"Versuchen Sie einen anderen Suchbegriff","goToAgentsTab":"Gehe zum Agenten-Tab, um eine Konversation zu starten","conversationStarted":"Konversation gestartet","agentConfiguration":"Agenten-Konfiguration","guidelines":"Richtlinien","tools":"Werkzeuge","whatsapp":"WhatsApp","toolsAndCapabilities":"Werkzeuge und Fähigkeiten","descriptionLabel":"Beschreibung","systemPromptDesc":"Dies ist der System-Prompt, der das Verhalten des Agenten definiert","briefDescription":"Kurze Beschreibung, was dieser Agent tut...","instructions":"Anweisungen","instructionsDesc":"Spezifische Richtlinien und Regeln, denen der Agent folgen soll","detailedInstructions":"Detaillierte Anweisungen für den Agenten...","availableTools":"Verfügbare Werkzeuge","configureTools":"Konfiguriere, auf welche Werkzeuge und Daten dieser Agent zugreifen kann","add":"Hinzufügen","allEntitySlotsUsed":"Alle Entitäts-Slots belegt","addEntityTool":"Entitäts-Werkzeug hinzufügen","entityToolDesc":"Datenbankoperationen und CRUD-Zugriff","allFunctionSlotsUsed":"Alle Funktions-Slots belegt","addBackendFunction":"Backend-Funktion hinzufügen","backendFunctionDesc":"Benutzerdefinierte Backend-Logik und Integrationen","noToolsConfigured":"Keine Werkzeuge konfiguriert","addToolsDesc":"Füge Entitäts-Werkzeuge oder Backend-Funktionen hinzu, um dem Agenten Fähigkeiten zu verleihen","entityTool":"Entitäts-Werkzeug","selectEntity":"Entität auswählen","allowedOperations":"Erlaubte Operationen","deleteWarning":"Vorsicht, vom Agenten gelöschte Daten können nicht wiederhergestellt werden","backendFunction":"Backend-Funktion","selectBackendFunction":"Backend-Funktion auswählen","functionDescription":"Funktionsbeschreibung","describeFunction":"Beschreibe, wann und wie diese Funktion verwendet werden soll...","whatsappIntegration":"WhatsApp-Integration","whatsappDesc":"Verbinde deinen Agenten mit WhatsApp für nahtlose Kommunikation","testChat":"Test-Chat","addWhatsapp":"WhatsApp zu deiner App hinzufügen","whatsappEnableDesc":"Aktiviere WhatsApp-Zugang für deine Benutzer mit einem einzigen Befehl","addWhatsappButton":"Einen WhatsApp-Button für den {{agent}} hinzufügen","sendToChat":"An Chat senden","fullChatCapabilities":"Volle Chat-Funktionalität","fullChatDesc":"Alle Web-Chat-Funktionen funktionieren nahtlos in WhatsApp, einschließlich Werkzeuge und Datenzugriff","voiceMediaSupport":"Sprach- und Medienunterstützung","voiceMediaDesc":"Benutzer können Sprachnachrichten und Bilder für eine natürliche Interaktion senden","customNumbers":"Eigene Nummern","customNumbersDesc":"Verbinde deine eigenen WhatsApp Business-Nummern","easyUiIntegration":"Einfache UI-Integration","easyUiDesc":"Füge einen WhatsApp-Button mit einem einfachen Chat-Befehl zu deiner App hinzu","welcomeMessage":"Willkommensnachricht","welcomeMessageDesc":"Erstelle eine herzliche Begrüßung, die deinen Agenten vorstellt und Erwartungen setzt","charCount":"{{count}}/500","editAgent":"Agent bearbeiten","edit":"Bearbeiten","startChat":"Chat starten","chat":"Chat","functionCount":"{{count}} Funktion(en)","noDescriptionProvided":"Keine Beschreibung vorhanden","entities":"Entitäten:","activeConversation":"Aktive Konversation","readOnlyConversation":"Schreibgeschützte Konversation","startConversation":"Starte deine Konversation","typeMessageBelow":"Gib unten eine Nachricht ein, um zu beginnen","typeYourMessage":"Schreibe deine Nachricht...","cancel":"Abbrechen","saving":"Wird gespeichert...","save":"Speichern","commandAddedToChat":"Befehl zum Chat hinzugefügt. Drücke Enter zum Senden.","failedToSaveAgentConfiguration":"Agenten-Konfiguration konnte nicht gespeichert werden","promptAddedToChat":"Prompt zum Chat hinzugefügt","unableToLoadSuggestions":"Vorschläge konnten nicht geladen werden. Bitte versuche es später erneut.","createAgent":"Agent erstellen","createAgentTitle":"Agent erstellen","createAgentDescription":"Bitte den Chat, einen Agenten für dich zu erstellen. Beschreibe, welche Rolle der Agent haben soll und welche Aufgaben er übernehmen soll.","manageAgentsAndConversations":"Agenten und Konversationen verwalten","skills":"Fähigkeiten","skillsEnabledLimit":"Du kannst bis zu {{count}} Fähigkeiten pro Agent aktivieren.","appSkillsTitle":"App-Fähigkeiten","appSkillsDescription":"Wiederverwendbare Anweisungs-Fähigkeiten für Agenten in dieser App.","addSkill":"Fähigkeit hinzufügen","noAppSkillsYet":"Noch keine App-Fähigkeiten. Erstelle eine, um sie in verschiedenen Agenten dieser App zu verwenden.","workspaceSkillsTitle":"Arbeitsbereich-Fähigkeiten","workspaceSkillsDescription":"Geteilte Fähigkeiten aus diesem Arbeitsbereich. Schalte sie ein, um sie für diesen Agenten zu aktivieren.","loadingWorkspaceSkills":"Arbeitsbereich-Fähigkeiten werden geladen...","noWorkspaceSkillsAvailable":"Derzeit sind keine geteilten Arbeitsbereich-Fähigkeiten verfügbar.","manageWorkspaceSkills":"Arbeitsbereich-Fähigkeiten verwalten","workspaceSkillSource":"Arbeitsbereich","appSkillSource":"App","unavailable":"nicht verfügbar","addAppSkill":"App-Fähigkeit hinzufügen","editAppSkill":"{{name}} bearbeiten","skillName":"Fähigkeitsname","skillNameHint":"Verwende kleine Buchstaben, Zahlen und Bindestriche.","skillNameInvalid":"Der Name muss aus kleinen Buchstaben, Zahlen und Bindestrichen bestehen, ohne führende/nachfolgende Bindestriche (z.B. 'code-review', 'sql-expert').","skillDescription":"Beschreibung","skillInstructions":"Anweisungen","enableForCurrentAgent":"Für aktuellen Agenten aktivieren","enableForCurrentAgentDescription":"Dies ändert den aktuellen Editor-Zustand und wird mit dem Agenten gespeichert.","createSkill":"Fähigkeit erstellen","saveChanges":"Änderungen speichern","workspaceSkillUnavailableDescription":"Diese Arbeitsbereich-Fähigkeit ist nicht mehr aktiviert oder verfügbar.","appSkillUnavailableDescription":"Diese App-Fähigkeit existiert nicht mehr in der App-Fähigkeiten-Bibliothek.","skillValidationRequired":"Name, Beschreibung und Anweisungen sind erforderlich","skillCreated":"Fähigkeit erstellt","skillUpdated":"Fähigkeit aktualisiert","failedToSaveSkill":"Fähigkeit konnte nicht gespeichert werden","skillSavedButAssignmentsFailed":"Die Fähigkeit wurde gespeichert, aber das Anhängen an den Agenten ist fehlgeschlagen","skillSavedButAssignmentsRefreshDelayed":"Der Editor konnte nicht automatisch aktualisiert werden. Bitte lade neu, um den aktuellen Stand zu prüfen.","skillSavedButSyncFailed":"Die Fähigkeit wurde gespeichert, aber die Synchronisierung des Agentenzustands ist fehlgeschlagen","skillSavedButSyncRefreshDelayed":"Die Fähigkeit wurde gespeichert, aber der Editor konnte nicht automatisch aktualisiert werden. Bitte lade neu, um den aktuellen Stand zu prüfen.","skillSavedStateRefreshed":"Fähigkeit gespeichert. Der Editor wurde aktualisiert, damit er dem neuesten gespeicherten Stand entspricht.","skillSavedRefreshDelayed":"Fähigkeit gespeichert, aber der Editor konnte nicht automatisch aktualisiert werden. Bitte lade neu, um den aktuellen Stand zu prüfen.","skillDeleted":"Fähigkeit gelöscht","skillDeletedRefreshDelayed":"Die Fähigkeit wurde gelöscht, aber der Editor konnte nicht automatisch aktualisiert werden. Bitte lade neu, um den aktuellen Stand zu prüfen.","failedToDeleteSkill":"Fähigkeit konnte nicht gelöscht werden","skillLimitReached":"Dieser Agent hat bereits die maximale Anzahl aktivierter Fähigkeiten erreicht.","skillTemplatePickerTitle":"Starter-Fähigkeit auswählen","startFromScratch":"Von Grund auf starten","startFromScratchDescription":"Erstelle eine eigene Fähigkeit mit deinen eigenen Anweisungen.","useTemplate":"Vorlage verwenden","skillTemplates":{"refundPolicy":{"description":"Vorlage für Rückerstattungsregeln, Berechtigung und welche Details der Agent vor einer Eskalation sammeln soll."},"supportEscalation":{"description":"Vorlage dafür, wann an den menschlichen Support übergeben werden soll und welche Zusammenfassung der Agent vorbereiten muss."},"pricingAndPlans":{"description":"Vorlage zum Erklären von Tarifen, Abrechnungsintervallen, Upgrades und wann Enterprise-Anfragen weitergeleitet werden sollen."},"brandVoice":{"description":"Vorlage für Tonfall, Schreibstil und Kommunikationsregeln, damit der Agent zur Marke passt."}},"memory":"Gedächtnis","memoryTitle":"Agenten-Gedächtnis","memorySubtitle":"Aktiviere das Langzeitgedächtnis, damit dein Agent sich Informationen über Konversationen hinweg merken kann","enableMemory":"Gedächtnis aktivieren","enableMemoryDesc":"Wenn aktiviert, kann der Agent Informationen über Konversationen hinweg speichern und abrufen","memoryScope":"Gedächtnis-Umfang","memoryScopeDesc":"Wähle, welche Arten von Erinnerungen der Agent erstellen kann","memoryScopeGlobalAndUser":"Global & Pro Benutzer","memoryScopeGlobalAndUserDesc":"Agent kann gemeinsame und persönliche Erinnerungen speichern","memoryScopeGlobal":"Nur Global","memoryScopeGlobalDesc":"Erinnerungen, die mit allen Benutzern geteilt werden","memoryScopeUser":"Nur Pro Benutzer","memoryScopeUserDesc":"Erinnerungen, die für jeden Benutzer spezifisch sind","memoryInstructions":"Gedächtnis-Anweisungen","memoryInstructionsDesc":"Leite den Agenten an, wann er Erinnerungen speichern und was er einbeziehen soll","memoryInstructionsPlaceholder":"Z.B. Speichere globale Erinnerungen für Produktupdates, Unternehmensankündigungen und geteiltes Wissen. Speichere Benutzer-Erinnerungen für persönliche Vorlieben wie Kommunikationsstil, Tonfall und spezifische Interessen.","savedMemories":"Gespeicherte Erinnerungen","refresh":"Aktualisieren","noMemoriesYet":"Noch keine Erinnerungen gespeichert","noMemoriesDesc":"Erinnerungen erscheinen hier, wenn der Agent sie während Konversationen speichert","memoryItemDeleted":"Erinnerungseintrag gelöscht","memoryDeleteFailed":"Fehler beim Löschen des Erinnerungseintrags","defaultDescription":"Standard: {{description}}"}`),x_={writing:"Schreiben",wrote:"Geschrieben",reading:"Lesen",read:"Gelesen",deleting:"Löschen",deleted:"Gelöscht",editing:"Bearbeiten",edited:"Bearbeitet",creating:"Erstellen",created:"Erstellt",updating:"Aktualisieren",updated:"Aktualisiert",update:"Aktualisieren",delete:"Löschen",importing:"Importieren",imported:"Importiert",import:"Importieren",searching:"Suchen",searched:"Gesucht",searchingForBugs:"Suche nach Fehlern...",searchedBugs:"Fehlersuche abgeschlossen",install:"Installieren",installing:"Installieren",installed:"Installiert",analyzing:"Analysieren",running:"Ausführen",failed:"Fehlgeschlagen",run:"Ausführen",settingSecrets:"Geheimnisse setzen",setSecret:"Geheimnis gesetzt",setSecrets:"Geheimnisse setzen",testing:"Testen",checking:"Prüfen",tested:"Getestet",checked:"Geprüft",fetching:"Abrufen",fetched:"Abgerufen",waitingForApproval:"Warte auf Genehmigung...",searchedDocsFor:"Dokumentation durchsucht für",searchingDocsFor:"Dokumentation durchsuchen für",searchedFor:"Gesucht nach",searchingFor:"Suche nach",foundResult_one:"{{count}} Ergebnis gefunden",foundResult_other:"{{count}} Ergebnisse gefunden",toggling:"Umschalten",toggled:"Umgeschaltet",listing:"Auflisten",listed:"Aufgelistet",approvalRequired:"Genehmigung erforderlich",approve:"Genehmigen",approving:"Genehmigung...",reject:"Ablehnen",rejected:"abgelehnt",previousApproval:"Diese Genehmigungsanfrage stammt aus einer früheren Nachricht",query:"Abfrage:",updateWith:"Aktualisieren mit:",importComplete:"Import abgeschlossen",importingData:"Daten werden importiert...",percentComplete:"{{percent}}% abgeschlossen",recordsProgress:"{{current}} / {{total}} Datensätze",preparing:"Vorbereitung...",otherToolsAfterApproval:"Andere Tools werden nach der Genehmigung ausgeführt",countPackages:"{{num}} Pakete:",updateAllEntityRecords:"Alle Datensätze von <entity>{{entityName}}</entity> aktualisieren",updateEntityRecordsMatching:"Datensätze von <entity>{{entityName}}</entity> mit Übereinstimmung aktualisieren:",deleteAllEntityRecords:"Alle Datensätze von <entity>{{entityName}}</entity> löschen",deleteEntityRecordsMatching:"Datensätze von <entity>{{entityName}}</entity> mit Übereinstimmung löschen:",importDataFromInto:"Daten von <file>{{fileName}}</file> in <entity>{{entityName}}</entity> importieren",importDataFromSheetInto:"Daten von <file>{{fileName}}</file> (Blatt: <sheet>{{sheetName}}</sheet>) in <entity>{{entityName}}</entity> importieren",countRecordsIntoEntity:"{{num}} Datensätze in <entity>{{entityName}}</entity>",dataIntoEntity:"Daten in <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} Datensätze <entity>{{entityName}}</entity>",allEntityRecords:"alle Datensätze von <entity>{{entityName}}</entity>",entityRecords:"Datensätze von <entity>{{entityName}}</entity>",grepSearching:'Suche nach "{{pattern}}"...',grepSearchComplete:"Suche abgeschlossen",grepFoundResults_one:"{{count}} Ergebnis gefunden",grepFoundResults_other:"{{count}} Ergebnisse gefunden",grepInFiles_one:"in {{count}} Datei",grepInFiles_other:"in {{count}} Dateien"},I_={agents:__,tools:x_},R_={title:"Automatisierungen",subtitle:"Erstelle und verwalte Automatisierungen in deiner App.",newAutomation:"Neue Automatisierung",chooseAutomation:"Wähle eine Automatisierung",selectHowStarts:"Wähle, wie diese Automatisierung gestartet wird.",scheduled:"Geplant",scheduledDescription:"Führe diese Automatisierung nach einem wiederkehrenden Zeitplan oder zu einem bestimmten Zeitpunkt aus.",dataEvent:"Datenereignis",dataEventDescription:"Führe diese Automatisierung aus, wenn ein Datensatz erstellt, aktualisiert oder gelöscht wird.",connector:"Konnektor",connectorDescription:"Führe diese Automatisierung aus, wenn eine verbundene Integration ein Ereignis sendet.",connectorBetaTooltip:"Dieser Connector ist während der Beta kostenlos.",beta:"Beta",connectorNewAutomation:"Neue Konnektor-Automatisierung",connectorIntegrationType:"Integration",connectorSelectIntegration:"Integration auswählen",connectorNoIntegrations:"Keine Integrationen verbunden",connectorNoIntegrationsHint:"Um die Automatisierung zu aktivieren, musst du zuerst eine Integration erstellen.",connectorCreateIntegration:"Integration erstellen",connectorCreateNewIntegration:"Neue Integration erstellen",connectorEvents:"Ereignisse",connectorSelectEvents:"Ereignisse zum Empfangen auswählen",connectorSelectEvent:"Ein Ereignis auswählen",connectorAvailableEvents:"Verfügbare Ereignisse ({{count}})",connectorType:"Konnektor",allEvents:"alle Ereignisse",deleteAutomation:"Automatisierung löschen?",deleteAutomationDesc:'Dies löscht "{{name}}" und den gesamten Ausführungsverlauf dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden.',delete:"Löschen",deleting:"Wird gelöscht...",cancel:"Abbrechen",copyOutput:"Ausgabe kopieren",scheduledType:"Geplant",dataEventType:"Datenereignis",someRunsFailed:"Einige Ausführungen fehlgeschlagen",reviewLogsOrFix:"Überprüfe die Protokolle oder lass die Fehler von der KI beheben.",fixing:"Wird behoben...",fixWithAI:"Mit KI beheben",failedToGetErrorContext:"Fehler beim Abrufen des Fehler-Kontexts",logsTab:"Protokolle",noLogsYet:"Noch keine Protokolle",back:"Zurück",close:"Schließen",saving:"Wird gespeichert...",save:"Speichern",active:"Aktiv",archived:"Archiviert",archivedAutomations:"Archivierte Automatisierungen",nameAndDescription:"Name und Beschreibung",typeColumn:"Typ",lastRun:"Letzte Ausführung",failed:"Fehlgeschlagen",loading:"Laden...",editAutomation:"Automatisierung bearbeiten",runNow:"Jetzt ausführen",archive:"Archivieren",duplicate:"Duplizieren",unlockAutomations:"Automatisierungen freischalten",unlockAutomationsDesc:"Um Automatisierungen in deiner App auszuführen, benötigst du Backend-Funktionen. Upgrade, um Backend-Funktionen zu aktivieren und Automatisierungen zu nutzen.",enableBackendFunctions:"Aktiviere Backend-Funktionen, um zu beginnen",enableBackendFunctionsDesc:"Automatisierungen führen Backend-Funktionen nach einem Zeitplan oder bei Datenänderungen aus. Aktiviere Backend-Funktionen in den Einstellungen, um Automatisierungen zu nutzen.",openSettings:"Einstellungen öffnen",createBackendFunction:"Erstelle eine Backend-Funktion, um Automatisierungen hinzuzufügen",createBackendFunctionDesc:"Um eine Automatisierung zu erstellen, benötigst du zuerst eine Backend-Funktion in deinem Code. Schreibe eine Backend-Funktion in deinem Code oder frage den Chat um Hilfe.",noAutomationsYet:"Noch keine Automatisierungen",noAutomationsDesc:"Erstelle eine Automatisierung, um Aufgaben in deiner App automatisch auszuführen.",noArchivedAutomations:"Keine archivierten Automatisierungen",noArchivedDesc:"Automatisierungen, die du archivierst oder deren Enddatum erreicht ist, erscheinen hier.",runAutomation:"Automatisierung ausführen",selectRecord:"Wähle einen <entity>{{entity}}</entity>-Datensatz, mit dem die Automatisierung ausgeführt werden soll.",searchRecords:"{{entity}}-Datensätze suchen...",noRecordsFound:"Keine {{entity}}-Datensätze gefunden.",noRecordsMatch:'Keine Datensätze entsprechen "{{query}}"',recordsCount:"{{filtered}} von {{total}} Datensätzen",totalRecords:"{{total}} Datensätze",running:"Wird ausgeführt...",automationName:"Automatisierungsname",describeAutomation:"Beschreibe, was diese Automatisierung tut.",functionToRun:"Auszuführende Funktion",selectFunction:"Wähle eine Backend-Funktion aus deinem Code. Die Funktion erhält die Entitätsdaten, wenn die Automatisierung ausgelöst wird.",noBackendFunctions:"Keine Backend-Funktionen verfügbar",selectAFunction:"Funktion auswählen",runsWhen:"Wird ausgeführt wenn",noItems:"Keine Elemente",selectItem:"Element auswählen",is:"Ist",selectEvent:"Ereignis auswählen",automationNameRequired:"Automatisierungsname ist erforderlich.",selectEntity:"Bitte wähle eine Entität aus.",selectEventType:"Bitte wähle mindestens einen Ereignistyp aus.",selectFunctionRequired:"Bitte wähle eine auszuführende Funktion.",newDataAutomation:"Neue Daten-Automatisierung",details:"Details",logsWillAppearAfterFire:"Protokolle erscheinen hier, nachdem diese Automatisierung ausgelöst wurde.",selectFunctionFromCode:"Wähle eine Backend-Funktion aus deinem Code. Um eine Funktion hinzuzufügen oder zu bearbeiten, aktualisiere sie in deinem Code oder frage den Chat um Hilfe.",recurring:"Wiederkehrend",oneTime:"Einmalig",repeatsEvery:"Wiederholt sich alle",minute:"Minute",hour:"Stunde",day:"Tag",week:"Woche",month:"Monat",startAt:"Beginnt um",at:"Um",repeatsOn:"Wiederholt sich am",repeatsOnDay:"Wiederholt sich am Tag",ends:"Endet",never:"Nie",on:"Am",after:"Nach",occurrences:"Wiederholungen",runOn:"Ausführen am",atTime:"Zur Uhrzeit",oneTimeDateRequired:"Einmalige Zeitpläne erfordern die Angabe eines Datums.",oneTimeTimeRequired:"Einmalige Zeitpläne erfordern die Angabe einer Uhrzeit.",oneTimePastError:"Datum und Uhrzeit für einmalige Zeitpläne dürfen nicht in der Vergangenheit liegen.",minMinutesInterval:"Das Mindestintervall für minutenbasierte Zeitpläne beträgt {{min}} Minuten.",selectDayForWeekly:"Bitte wähle mindestens einen Tag für den wöchentlichen Zeitplan.",monthlyDayRequired:"Monatliche Zeitpläne erfordern die Auswahl eines Tages im Monat.",endDateRequired:"Ein Enddatum ist erforderlich, wenn 'Endet' auf 'Am' gesetzt ist.",endDatePast:"Das Enddatum darf nicht in der Vergangenheit liegen.",occurrenceCountMin:"Die Anzahl der Wiederholungen muss mindestens 1 betragen.",newScheduledAutomation:"Neue geplante Automatisierung",logsWillAppearAfterRun:"Protokolle erscheinen hier, nachdem diese Automatisierung ausgeführt wurde.",description:"Beschreibung",nameField:"Name",typeField:"Typ",automationUpdated:"Automatisierung erfolgreich aktualisiert",automationCreated:"Automatisierung erfolgreich erstellt",failedToSave:"Automatisierung konnte nicht gespeichert werden",functionArgs:"Argumente (JSON)",functionArgsPlaceholder:'{"key": "value"}',functionArgsTooltip:"Optionales JSON-Objekt, das als zusätzliche Argumente an die Funktion übergeben wird.",functionArgsInvalidJson:"Argumente müssen gültiges JSON sein.",advanced:"Erweitert",triggerConditions:"Auslösebedingungen",conditionsSetByAI:"Bedingungen werden vom KI-Builder konfiguriert und können nicht manuell bearbeitet werden.",conditionsSummaryError:"Bedingungszusammenfassung konnte nicht geladen werden.",connectorNoManualIntegrations:"Keine Integrationen für manuelle Erstellung verfügbar",connectorNoManualIntegrationsHint:"Einige Integrationen erfordern Auslösebedingungen und können nur über den KI-Builder erstellt werden.",suggestedForYou:"Empfehlungen für dich",basedOnYourContext:"Basierend auf dem Kontext deiner App",createFromScratch:"Von Grund auf erstellen"},z_={automations:R_},M_={title:"Integrationen",myIntegrations:"Meine Integrationen",browse:"Durchsuchen",payments:"Zahlungen",failedToLoad:"App-Verbindungen konnten nicht geladen werden",successfullySwitched:"Konto erfolgreich gewechselt zu {{name}}",cancelled:"Abgebrochen",connectionCancelled:"App-Verbindung wurde abgebrochen",disconnected:"{{name}} wurde getrennt",failedToDisconnect:"App-Verbindung konnte nicht getrennt werden",stripeRemoved:"Stripe-Integration wurde entfernt",wixPaymentsDisconnected:"Wix Payments wurde getrennt",integrationRemoved:"{{name}} wurde entfernt",failedToRemove:"Integration konnte nicht entfernt werden",connectedAccountsWarning:"Verbundene Konten können sensible Daten für jeden mit Zugriff offenlegen.",unlockFeature:"Diese Funktion freischalten",unlockFeatureDesc:"Diese Funktion ist nur im Builder-Plan oder höher verfügbar. Upgrade, um ohne Einschränkungen weiterzuarbeiten",upgradeToUseConnector:"Upgraden, um die Funktion zu nutzen",access:"{{name}}-Zugriff",disconnectAccount:"Konto trennen?",disconnectDesc:"Der Zugriff für <bold>{{email}}</bold> auf <bold>{{name}}</bold> wird widerrufen.<br/>Der Integrationseintrag wird für eine zukünftige Wiederverbindung beibehalten.",disconnecting:"Wird getrennt...",disconnect:"Trennen",removeIntegration:"Integration entfernen?",removeDesc:"<bold>{{name}}</bold> wird dauerhaft aus dieser App entfernt.<br/>Um die Verbindung erneut herzustellen, musst du sie von Grund auf neu einrichten.",removing:"Wird entfernt...",remove:"Entfernen",cancel:"Abbrechen",reject:"Ablehnen",new:"Neu",done:"Fertig",success:"Erfolg",error:"Fehler",setupIntegrations:"Integrationen einrichten",setupIntegrationsDesc:"Verknüpfe deine App ganz einfach mit Konnektoren wie Google Calendar, Google Drive, Slack, Notion, Salesforce, HubSpot und mehr.",setupIntegrationsChat:"Beschreibe einfach im Chat, was du verbinden möchtest, und es wird für dich eingerichtet.",viewAccess:"Zugriff anzeigen",connecting:"Wird verbunden...",switchAccount:"Konto wechseln",reconnect:"Erneut verbinden",disconnectAccount2:"Konto trennen",use:"Verwenden",examplePrompts:"Beispiel-Prompts",clickPromptToAdd:"Klicke auf einen Prompt, um ihn zu deinem Chat hinzuzufügen.",unableToLoadSuggestions:"Vorschläge konnten nicht geladen werden. Bitte versuche es später erneut.",requiresBackendFunctions:"Diese Integration erfordert Backend-Funktionen, eine Funktion, die nur im Builder-Plan und höher verfügbar ist. ",seePlans:"Pläne ansehen",promptAddedToChat:"Prompt zum Chat hinzugefügt. Drücke Enter zum Senden.",connectors:"Konnektoren",connectorsDesc:"Verbinde deine App mit beliebten Diensten über schnelle OAuth-Verbindungen.",searchConnectors:"Konnektoren suchen",noSearchResults:"Keine Ergebnisse für deine Suche",noSearchResultsDesc:"Versuche andere Suchbegriffe oder überprüfe die Schreibweise. Du kannst auch nach Name oder kürzlich hinzugefügt sortieren.",sort:{title:"Sortieren",mostUsed:"Meistgenutzt",recentlyAdded:"Kürzlich hinzugefügt",az:"A-Z",za:"Z-A"},revoked:"Widerrufen",connectionLost:"Verbindung verloren — bitte erneut verbinden",configModal:{connectTo:"Verbinden mit {{name}}",configureConnection:"Konfiguriere deine {{name}}-Verbindung",loadingConfig:"Konfiguration wird geladen...",retryHint:"Du kannst es erneut versuchen.",connect:"Verbinden",connecting:"Verbindung wird hergestellt...",validationRequired:"{{name}} ist erforderlich",validationInvalid:"{{name}} ist ungültig",fetchError:"Konfiguration konnte nicht geladen werden.",retry:"Erneut versuchen"},wixPayments:{title:"Wix Payments",live:"Live",disconnected:"Getrennt",acceptingPayments:"Zahlungen werden akzeptiert",integrationDisconnected:"Integration getrennt",openingWixPayments:"Wix Payments wird geöffnet...",popupBlocked:"Wix Payments wurde von deinem Browser blockiert. Verwende den untenstehenden Link, um das Payments-Dashboard manuell zu öffnen.",errors:{noUrl:"Die Wix-Payments-URL konnte nicht abgerufen werden. Bitte versuche es erneut.",fetchFailed:"Wix Payments konnte nicht geöffnet werden. Bitte versuche es erneut.",invalidRedirect:"Wix Payments konnte nicht geöffnet werden. Bitte versuche es erneut."},openDashboard:"Dashboard öffnen",managePayments:"Zahlungen verwalten",disconnect:"Trennen",disconnectIntegration:"Integration trennen?",disconnectDesc:"<bold>Wix Payments</bold> wird von dieser App getrennt.<br/>Du kannst es später über den Chat erneut verbinden.",disconnecting:"Wird getrennt...",disconnectButton:"Trennen",enterNamePrompt:"Bitte geben Sie Ihren Namen ein, um fortzufahren:",firstNamePlaceholder:"Vorname",lastNamePlaceholder:"Nachname"},stripe:{unableToClaimSandbox:"Sandbox konnte nicht beansprucht werden",sandboxExpired:"Die Sandbox ist möglicherweise abgelaufen oder wurde bereits beansprucht. Bitte lade die Seite neu.",failedGetClaimUrl:"Claim-URL konnte nicht abgerufen werden",pleaseTryAgain:"Bitte versuche es erneut oder lade die Seite neu.",pendingSetup:"Einrichtung ausstehend",completeSetupGuide:"Schließe die Einrichtungsanleitung ab, um echte Zahlungen zu empfangen",live:"Live",stripe:"Stripe",loadingStripe:"Laden...",acceptingPayments:"Echte Zahlungen werden akzeptiert",accountDetails:"Stripe-Kontodetails",hideGuide:"Anleitung ausblenden",showGuide:"Anleitung anzeigen",goToStripe:"Zu Stripe wechseln",aboutIntegration:"Über die Integration",aboutStripeIntegration:"Über die Stripe-Integration",stripeDesc:"Mit Stripe kannst du Zahlungen annehmen, Auszahlungen senden und dein Geschäft online verwalten. Diese Integration ermöglicht dir:",acceptCards:"Kreditkarten und andere Zahlungsmethoden akzeptieren",createProducts:"Produkte und Abonnements erstellen",manageCustomers:"Kunden und Abrechnung verwalten",close:"Schließen",tryTestPayment:"Testzahlung durchführen",claimSandbox:"Deine Stripe-Sandbox beanspruchen",addLiveKeys:"Füge deine Live-API-Schlüssel von Stripe hinzu",copiedCard:"Kopiert!",testCardCopied:"Testkartennummer in die Zwischenablage kopiert.",failedToCopy:"Kopieren fehlgeschlagen",copyManually:"Bitte manuell kopieren: 4242 4242 4242 4242",keysSaved:"API-Schlüssel erfolgreich gespeichert.",failedSaveKeys:"API-Schlüssel konnten nicht gespeichert werden. Bitte versuche es erneut.",movedOutOfTestMode:"Du hast den Testmodus verlassen.",noNeedTestPayments:"Testzahlungen sind nicht mehr nötig.",useTestCard:"Verwende diese Testkarte, um einen Kauf zu simulieren:",testCardNumber:"4242 4242 4242 4242",anyFutureExpiry:", beliebiges zukünftiges Ablaufdatum, beliebige 3-stellige CVC.",publishAndOpen:"Veröffentliche deine App und öffne sie in einem neuen Tab, um das Bezahlerlebnis zu testen",copyCardNumber:"Kartennummer kopieren",connectStripeDesc:"Verbinde dich mit deinem bestehenden Stripe-Konto oder erstelle ein neues, um echte Zahlungen zu empfangen.",claimAndGoLive:"Beanspruchen & Live gehen",copyLiveKeys:"Kopiere deine Live-Publishable- und Secret-Schlüssel aus deinem <link>Stripe-Dashboard</link>, um die Einrichtung abzuschließen und echte Zahlungen in deiner App zu aktivieren.",publishableKey:"Publishable Key",secretKey:"Secret Key",enterValue:"Wert eingeben",savingKeys:"Wird gespeichert...",saveApiKeys:"API-Schlüssel speichern",completeStepInStripe:"Um diesen Schritt abzuschließen, beanspruche die Sandbox und schließe die Einrichtung in Stripe ab"}},N_={title:"App-Integrationen",subtitle:"Verbinde deine App mit Drittanbieter-Diensten und erweitere ihre Funktionalität.",integrationCatalog:"Integrationskatalog",payments:"Zahlungen",zapier:"Zapier",couldNotLoad:"Integrationsdetails konnten nicht geladen werden. Bitte versuche es erneut.",loadingDetails:"Details werden geladen...",backToCatalog:"Zurück zum Katalog",integrationAdded:"Integration hinzugefügt (Platzhalter)",wouldBeAdded:"{{name}} würde zu deiner App hinzugefügt werden. Geheime Werte protokolliert.",requiresConfiguration:"Konfiguration erforderlich",requiresSecrets:"Diese Integration erfordert {{count}} geheime(n) Wert(e) zur Konfiguration.",addToApp:"Zur App hinzufügen",paymentProcessing:"Zahlungsabwicklung",paymentProcessingDesc:"Akzeptiere Zahlungen in deiner App mit beliebten Zahlungsanbietern. Demnächst verfügbar!",leadingPaymentPlatform:"Führende Zahlungsplattform",globallyRecognized:"Weltweit anerkannte Zahlungen",configurePayment:"Konfiguriere Zahlungsanbieter, um Abonnements, Einmalkäufe und mehr in deiner App zu ermöglichen.",zapierIntegration:"Zapier-Integration",zapierDesc:"Verbinde deine App mit tausenden anderen Diensten über Zapier.",automateWithZapier:"Automatisiere mit Zapier",linkBase44:"Verknüpfe Base44 mit deinen Lieblings-Apps wie Slack, Google Sheets, Mailchimp und mehr.",exploreOnZapier:"Base44 auf Zapier erkunden",configureIntegration:"{{name}} konfigurieren",configureDesc:"Diese Integration erfordert einige geheime Werte. Diese werden sicher und verschlüsselt gespeichert.",saveAndAdd:"Speichern und Integration hinzufügen"},F_={title:"Fähigkeiten",description:"Füge Fähigkeiten hinzu, um zu gestalten, wie die KI deine Apps erstellt.",manage:"Verwalten"},L_=JSON.parse('{"title":"Konnektoren","connectorsForAppUsers":"Konnektoren für App-Nutzer","connectorsForAppUsersDesc":"Richten Sie Konnektoren ein, damit App-Nutzer ihre persönlichen Konten mit Apps in diesem Workspace verknüpfen können.","connectorsForAppUsersDialogDesc":"Lassen Sie App-Nutzer ihre persönlichen Konten mit Apps in diesem Workspace verknüpfen.","addConnector":"Konnektor hinzufügen","browseConnectors":"Konnektoren durchsuchen","noConnectorsYet":"Noch keine Konnektoren","noConnectorsYetDesc":"Fügen Sie Konnektoren hinzu, damit App-Nutzer ihre persönlichen Konten verknüpfen können.","view":"Anzeigen","edit":"Bearbeiten","connections":"Verbindungen","addConnection":"Verbindung hinzufügen","viewConnector":"Konnektor anzeigen","connectorName":"Konnektor-Name","connector":"{{name}}-Konnektor","examplePrompts":"Beispiel-Prompts","back":"Zurück","configureConnection":"Verbindung konfigurieren","configureConnectionDesc":"Geben Sie Ihre Client-ID, Ihr Geheimnis und Berechtigungen an.","connectorNameDesc":"Geben Sie einen kurzen Namen ein, um diesen Konnektor zu identifizieren","clientId":"Client-ID","clientSecret":"Client-Geheimnis","clientSecrets":"Client-Geheimnisse","scopes":"Bereiche","scopesDesc":"Geben Sie die Bereiche ein, die Ihre App benötigt. Schreiben Sie jeden Bereich in eine separate Zeile.","scopesPlaceholder":"Bereiche eingeben, einen pro Zeile","scopesPlaceholderExample":"z.B.\\nhttps://www.googleapis.com/auth/calendar.readonly\\nemail","connectionConfig":"Verbindungskonfiguration","cancel":"Abbrechen","close":"Schließen","addingConnector":"Wird hinzugefügt...","savingConnector":"Wird gespeichert...","saveChanges":"Änderungen speichern","deleteConnector":"Konnektor löschen","deleteConfirm":"{{name}} löschen? Diese Aktion kann nicht rückgängig gemacht werden.","deleting":"Wird gelöscht...","addConnectionTitle":"{{name}}-Verbindung hinzufügen","editConnectionTitle":"{{name}}-Verbindung bearbeiten","connectorReadOnly":"{{name}}-Konnektor","readOnlyDesc":"Schreibgeschützte Ansicht der Konnektor-Details","builtInConnectors":"Integrierte Konnektoren","promptExamples":"Prompt-Beispiele für den Einstieg","adminOnlyTooltip":"Nur Workspace-Administratoren oder -Besitzer können Integrationen für App-Nutzer verbinden","settingUp":"Konnektor wird eingerichtet...","configured":"Konnektor konfiguriert","setUp":"{{type}} App-Nutzer-Konnektor einrichten","setUpGeneric":"App-Nutzer-Konnektor einrichten","connecting":"Wird verbunden...","connect":"Verbinden","reject":"Ablehnen","workspaceLevelNote":"Diese Integration wird auf Workspace-Ebene zugänglich sein und auf alle in diesem Workspace erstellten Anwendungen angewendet.","previousMessage":"Diese Konnektor-Einrichtung stammt aus einer vorherigen Nachricht","toastErrorTitle":"Fehler","toastCreated":"Konnektor erstellt","toastCreateFailed":"Konnektor konnte nicht erstellt werden","toastDuplicateName":"Ein Konnektor mit diesem Namen existiert bereits in diesem Workspace","toastUpdated":"Konnektor aktualisiert","toastUpdateFailed":"Konnektor konnte nicht aktualisiert werden","toastDeleted":"Konnektor gelöscht","toastDeleteFailed":"Konnektor konnte nicht gelöscht werden","configFetchFailed":"Verbindungskonfiguration konnte nicht geladen werden. Erforderliche Felder fehlen möglicherweise.","retry":"Erneut versuchen","toastLoadFailed":"OAuth-Konnektoren konnten nicht geladen werden","namePlaceholder":"z.B. Marketing {{label}}","clientIdPlaceholder":"OAuth-Client-ID eingeben","clientSecretPlaceholderNew":"Neues Client-Geheimnis eingeben","clientSecretPlaceholder":"OAuth-Client-Geheimnis eingeben","extraDetails":{"googlecalendar":{"longDescription":"Verbinde dich mit Google Kalender, damit deine App-Nutzer Kalendereinträge anzeigen, erstellen und verwalten können. Synchronisiere Termine, automatisiere die Erstellung von Besprechungen aus Formulareingaben und erstelle Planungs-Workflows.","examplePrompt0":"Synchronisiere anstehende Besprechungen mit einem In-App-Dashboard.","examplePrompt1":"Erstelle Kalendereinträge aus Formulareingaben.","examplePrompt2":"Zeige eine Tagesübersicht für den angemeldeten Nutzer an.","examplePrompt3":"Sende Erinnerungen vor anstehenden Terminen."},"slack":{"longDescription":"Verbinde dich mit Slack, um Nachrichten zu teilen und Canvases direkt zu erstellen, damit die Zusammenarbeit vereinfacht und die Produktivität gesteigert wird. Suche und rufe Nachrichten, Kanäle, Threads, Dateien und Nutzer ab, um Claude den Kontext für eine effizientere Arbeit zu geben.","examplePrompt0":"Synchronisiere neue App-Nutzer mit einem Slack-Kanal.","examplePrompt1":"Sende Build-Statusupdates an #devops.","examplePrompt2":"Poste App-Fehler im #alerts-Kanal.","examplePrompt3":"Benachrichtige das Team bei neuem Kundenfeedback."},"salesforce":{"longDescription":"Verbinde dich mit Salesforce, um auf Kontakte, Leads, Opportunities und benutzerdefinierte Objekte zuzugreifen. Ermögliche deinen App-Nutzern, ihre CRM-Daten einzusehen und zu aktualisieren, Deals zu verfolgen und Vertriebsworkflows zu automatisieren.","examplePrompt0":"Zeige ein Dashboard mit offenen Opportunities an.","examplePrompt1":"Erstelle einen neuen Lead aus einer Formulareingabe.","examplePrompt2":"Synchronisiere Kontaktaktualisierungen zurück zu Salesforce.","examplePrompt3":"Benachrichtige das Team, wenn ein Deal abgeschlossen wird."},"hubspot":{"longDescription":"Verbinde dich mit HubSpot, um Kontakte, Unternehmen, Deals und Marketingkampagnen zu verwalten. Ermögliche deinen App-Nutzern, ihre CRM-Daten zu synchronisieren, Interaktionen zu verfolgen und Marketingworkflows zu automatisieren.","examplePrompt0":"Zeige eine Liste der neuesten Deals in der App an.","examplePrompt1":"Füge neue Kontakte aus Anmeldeformularen hinzu.","examplePrompt2":"Synchronisiere E-Mail-Kampagnenergebnisse mit einem Dashboard.","examplePrompt3":"Aktualisiere Deal-Phasen aus der App."},"notion":{"longDescription":"Verbinde dich mit Notion, um auf Seiten, Datenbanken und Workspace-Inhalte zuzugreifen. Ermögliche deinen App-Nutzern, ihren Notion-Workspace zu lesen und zu aktualisieren, strukturierte Daten zu synchronisieren und Content-Workflows zu automatisieren.","examplePrompt0":"Ziehe Aufgabenlisten aus einer Notion-Datenbank.","examplePrompt1":"Erstelle neue Seiten aus Formulareingaben.","examplePrompt2":"Synchronisiere Projektstatusaktualisierungen mit Notion.","examplePrompt3":"Zeige Notion-Inhalte innerhalb der App an."},"slackbot":{"longDescription":"Verbinde einen Slack-Bot, um Nachrichten als gebrandeten Bot mit benutzerdefiniertem Namen und Symbol zu posten. Reagiere auf App-Erwähnungen, verwende Slash-Befehle und automatisiere Bot-basierte Workflows in deinem Slack-Workspace.","examplePrompt0":"Poste tägliche Standup-Zusammenfassungen in #general.","examplePrompt1":"Reagiere auf Slash-Befehle mit App-Daten.","examplePrompt2":"Sende automatisierte Warnungen, wenn Aufgaben überfällig sind.","examplePrompt3":"Benachrichtige Kanäle, wenn neue Bestellungen eingehen."},"googledrive":{"longDescription":"Verbinde dich mit Google Drive, um Dateien hochzuladen, zu organisieren und zu verwalten. Ermögliche deinen App-Nutzern, generierte Dokumente zu speichern, Daten zu sichern und direkt aus deiner App auf ihre Drive-Dateien zuzugreifen.","examplePrompt0":"Speichere generierte Berichte in einem gemeinsamen Drive-Ordner.","examplePrompt1":"Lade vom Nutzer eingereichte Dateien auf Google Drive hoch.","examplePrompt2":"Liste aktuelle Dateien aus einem bestimmten Ordner auf.","examplePrompt3":"Sichere App-Datenexporte automatisch auf Drive."},"gmail":{"longDescription":"Verbinde dich mit Gmail, um E-Mails programmatisch zu senden, zu lesen und zu verwalten. Ermögliche deinen App-Nutzern, E-Mail-Workflows zu automatisieren, Posteingangsnachrichten zu lesen und personalisierte E-Mails von ihrem eigenen Konto zu senden.","examplePrompt0":"Sende eine Bestätigungs-E-Mail nach einer Formulareingabe.","examplePrompt1":"Zeige die neuesten Posteingangsnachrichten des Nutzers an.","examplePrompt2":"Antworte automatisch auf E-Mails, die bestimmte Kriterien erfüllen.","examplePrompt3":"Verfasse und sende personalisierte Outreach-E-Mails."},"googlesheets":{"longDescription":"Verbinde dich mit Google Sheets, um Tabellendaten zu lesen, zu schreiben und zu aktualisieren. Ermögliche deinen App-Nutzern, Datensätze zu synchronisieren, Daten aus Tabellen zu importieren und App-Daten in ihre Tabellen zu exportieren.","examplePrompt0":"Importiere Produktdaten aus einer Google-Tabelle.","examplePrompt1":"Exportiere tägliche Verkaufsberichte in eine Tabelle.","examplePrompt2":"Synchronisiere Formulareingaben mit einer Tracking-Tabelle.","examplePrompt3":"Lies Preisdaten aus einer gemeinsamen Tabelle."},"googleslides":{"longDescription":"Verbinde dich mit Google Slides, um Präsentationen zu erstellen und zu bearbeiten. Ermögliche deinen App-Nutzern, Foliensätze aus Vorlagen zu generieren, dynamische Inhalte hinzuzufügen und die Präsentationserstellung zu automatisieren.","examplePrompt0":"Generiere ein Pitch-Deck aus Formulareingaben.","examplePrompt1":"Füge eine neue Folie mit wöchentlichen Kennzahlen hinzu.","examplePrompt2":"Erstelle Präsentationen aus Berichtsvorlagen.","examplePrompt3":"Aktualisiere Folieninhalte mit den neuesten Daten."},"googledocs":{"longDescription":"Verbinde dich mit Google Docs, um Dokumente zu erstellen, zu lesen und zu bearbeiten. Ermögliche deinen App-Nutzern, Verträge zu generieren, Vorlagen auszufüllen und Dokumente direkt aus deiner App zu verwalten.","examplePrompt0":"Generiere einen Vertrag aus einer Vorlage.","examplePrompt1":"Erstelle Besprechungsnotizen aus Formulardaten.","examplePrompt2":"Fülle eine Dokumentvorlage mit Nutzerdaten aus.","examplePrompt3":"Füge neue Inhalte zu einem bestehenden Dokument hinzu."},"googlebigquery":{"longDescription":"Verbinde dich mit Google BigQuery, um SQL-Abfragen auszuführen und große Datensätze zu analysieren. Ermögliche deinen App-Nutzern, ihr Data Warehouse abzufragen, Dashboards zu erstellen und Analysen in deine App zu übertragen.","examplePrompt0":"Frage Verkaufsdaten ab und zeige sie in einem Diagramm an.","examplePrompt1":"Ziehe Nutzeranalysen aus BigQuery-Tabellen.","examplePrompt2":"Führe einen geplanten Bericht aus Warehouse-Daten aus.","examplePrompt3":"Zeige die meistverkauften Produkte aus Abfrageergebnissen an."},"linkedin":{"longDescription":"Verbinde dich mit LinkedIn, um auf Profildaten zuzugreifen und Beiträge zu teilen. Ermögliche deinen App-Nutzern, Updates zu veröffentlichen, berufliche Profile abzurufen und Social-Media-Workflows auf LinkedIn zu automatisieren.","examplePrompt0":"Poste Unternehmensupdates automatisch auf LinkedIn.","examplePrompt1":"Rufe Profildetails für den angemeldeten Nutzer ab.","examplePrompt2":"Teile Blogbeiträge aus der App auf LinkedIn.","examplePrompt3":"Zeige LinkedIn-Profilinfos auf einem Dashboard an."},"tiktok":{"longDescription":"Verbinde dich mit TikTok, um auf Profilinfos, Follower-Statistiken und Videodaten zuzugreifen. Ermögliche deinen App-Nutzern, ihre TikTok-Performance zu verfolgen und ihre veröffentlichten Videos zu durchsuchen.","examplePrompt0":"Zeige Follower-Anzahl und Profilstatistiken an.","examplePrompt1":"Liste die neuesten TikTok-Videos des Nutzers auf.","examplePrompt2":"Zeige Video-Performance-Kennzahlen auf einem Dashboard an.","examplePrompt3":"Verfolge das Follower-Wachstum über die Zeit."},"discord":{"longDescription":"Verbinde dich mit Discord, um Nachrichten zu senden, Server zu verwalten und mit Gilden und Kanälen zu interagieren. Ermögliche deinen App-Nutzern, Benachrichtigungen zu automatisieren, Updates zu posten und sich mit ihrer Discord-Community zu integrieren.","examplePrompt0":"Sende Bestellbenachrichtigungen an einen Discord-Kanal.","examplePrompt1":"Poste App-Warnungen in einem #benachrichtigungen-Kanal.","examplePrompt2":"Liste verfügbare Kanäle in einem Discord-Server auf.","examplePrompt3":"Benachrichtige das Team, wenn sich ein neuer Nutzer anmeldet."},"wix":{"longDescription":"Verbinde dich mit Wix, um auf Website-Daten zuzugreifen, Inhalte zu verwalten und mit Wix-Geschäftslösungen wie Stores, Bookings und CRM zu interagieren. Ermögliche deinen App-Nutzern, Produkte, Bestellungen und Kundendaten zu synchronisieren.","examplePrompt0":"Synchronisiere Wix-Store-Produkte mit der App.","examplePrompt1":"Ziehe aktuelle Bestellungen aus Wix Stores.","examplePrompt2":"Zeige Buchungsverfügbarkeit von Wix Bookings an.","examplePrompt3":"Verwalte Wix-CRM-Kontakte aus deiner App."},"github":{"longDescription":"Verbinde dich mit GitHub, um auf Repositories zuzugreifen, Issues und Pull Requests zu verwalten und Entwicklungsworkflows zu automatisieren. Ermögliche deinen App-Nutzern, Codeänderungen zu verfolgen, Issues zu erstellen und ihren Entwicklungsprozess zu optimieren.","examplePrompt0":"Liste offene Issues aus einem Repository auf.","examplePrompt1":"Erstelle ein neues Issue aus einem Fehlerbericht-Formular.","examplePrompt2":"Zeige aktuelle Pull Requests auf einem Dashboard an.","examplePrompt3":"Verfolge Commit-Aktivitäten über Repositories hinweg."},"wrike":{"longDescription":"Verbinde dich mit Wrike, um Projekte, Aufgaben und Teamzusammenarbeit zu verwalten. Ermögliche deinen App-Nutzern, Aufgaben zu erstellen und zu aktualisieren, den Projektfortschritt zu verfolgen und die Arbeit teamübergreifend zu koordinieren.","examplePrompt0":"Erstelle Aufgaben aus Formulareingaben.","examplePrompt1":"Zeige Projektzeitpläne auf einem Dashboard an.","examplePrompt2":"Aktualisiere den Aufgabenstatus aus der App heraus.","examplePrompt3":"Zeige Teamauslastung und Aufgabenzuweisungen an."},"box":{"longDescription":"Verbinde dich mit Box, um Dateien und Ordner hochzuladen, zu verwalten und zu teilen. Ermögliche deinen App-Nutzern, Dokumente sicher zu speichern, Dateien zu organisieren und in Box an Inhalten zusammenzuarbeiten.","examplePrompt0":"Lade generierte Dokumente in einen Box-Ordner hoch.","examplePrompt1":"Liste Dateien in einem gemeinsamen Box-Verzeichnis auf.","examplePrompt2":"Lade Dateien aus Box in die App herunter.","examplePrompt3":"Teile einen Box-Dateilink mit Teammitgliedern."},"clickup":{"longDescription":"Verbinde dich mit ClickUp, um Aufgaben, Projekte und Team-Workflows zu verwalten. Ermögliche deinen App-Nutzern, Aufgaben zu erstellen, Status zu aktualisieren und den Projektfortschritt direkt aus deiner App zu verfolgen.","examplePrompt0":"Erstelle ClickUp-Aufgaben aus Formulareingaben.","examplePrompt1":"Zeige den Aufgabenboard-Status auf einem Dashboard an.","examplePrompt2":"Aktualisiere Aufgabenprioritäten aus der App.","examplePrompt3":"Liste überfällige Aufgaben für den aktuellen Sprint auf."},"google_analytics":{"longDescription":"Verbinde dich mit Google Analytics, um auf Website-Traffic, Nutzerverhalten und Marketing-Performance-Daten zuzugreifen. Ermögliche deinen App-Nutzern, Analyseberichte einzusehen und wichtige Kennzahlen innerhalb deiner App zu verfolgen.","examplePrompt0":"Zeige Seitenaufrufe und Sitzungen auf einem Dashboard an.","examplePrompt1":"Zeige die Top-Traffic-Quellen der letzten Woche an.","examplePrompt2":"Verfolge Konversionsraten über Kampagnen hinweg.","examplePrompt3":"Ziehe Nutzerdemografie- und Verhaltensdaten."},"outlook":{"longDescription":"Verbinde dich mit Outlook, um E-Mails zu senden und zu lesen, Kalendereinträge zu verwalten und auf Microsoft-365-Mail und -Kalender zuzugreifen. Ermögliche deinen App-Nutzern, E-Mail-Workflows zu automatisieren und ihren Zeitplan zu synchronisieren.","examplePrompt0":"Sende Follow-up-E-Mails aus der App.","examplePrompt1":"Zeige anstehende Kalendereinträge an.","examplePrompt2":"Erstelle Kalendereinträge aus Formulareingaben.","examplePrompt3":"Zeige aktuelle E-Mails auf einem Dashboard an."},"linear":{"longDescription":"Verbinde dich mit Linear, um Issues, Projekte und Zyklen zu erstellen und zu verwalten. Ermögliche deinen App-Nutzern, Team-Workflows zu verfolgen, Sprints zu organisieren und den Engineering-Fortschritt im Blick zu behalten.","examplePrompt0":"Erstelle Linear-Issues aus Fehlerbericht-Formularen.","examplePrompt1":"Zeige aktive Sprint-Issues auf einem Dashboard an.","examplePrompt2":"Aktualisiere den Issue-Status aus der App heraus.","examplePrompt3":"Verfolge Zyklusfortschritt und Team-Velocity."},"dropbox":{"longDescription":"Verbinde dich mit Dropbox, um Dateien und Ordner hochzuladen, herunterzuladen und zu verwalten. Ermögliche deinen App-Nutzern, Dateien in der Cloud zu speichern, Daten zu synchronisieren und auf ihre Dropbox-Inhalte aus deiner App zuzugreifen.","examplePrompt0":"Lade exportierte Berichte auf Dropbox hoch.","examplePrompt1":"Liste Dateien in einem bestimmten Dropbox-Ordner auf.","examplePrompt2":"Lade gemeinsame Dateien in die App herunter.","examplePrompt3":"Synchronisiere App-Datensicherungen mit Dropbox."}},"builtIn":{"sendEmail":{"name":"E-Mails senden","rowDescription":"Sende E-Mails an Personen in deiner Base44-App mit anpassbaren Absendernamen und HTML-Inhalten.","subtitle":"Sende automatisierte E-Mails direkt aus deiner App an deine Nutzer.","longDescription":"Sende E-Mails automatisch aus deiner App als Teil von Workflows oder Automatisierungen. Diese Integration kann aus Flows, Backend-Funktionen oder Agenten ausgelöst werden, um Benachrichtigungen wie Bestätigungen, Warnungen, Zusammenfassungen oder Zugriffslinks an Nutzer zu senden.","examplePrompt0":"Wenn ein Support-Ticket auf \\"gelöst\\" aktualisiert wird, verwende SendEmail, um den Anfragenden mit einer Zusammenfassung der Lösung zu benachrichtigen.","examplePrompt1":"Erstelle eine wöchentliche Automatisierung, die SendEmail verwendet, um Admins eine Übersicht neuer Bestellungen und wichtiger Kennzahlen zu senden.","examplePrompt2":"Füge einen täglichen Flow hinzu, der SendEmail verwendet, um Admins eine Zusammenfassung neuer Anmeldungen in dieser App zu senden.","examplePrompt3":"Erstelle eine Automatisierung, die SendEmail verwendet, um Nutzer 24 Stunden vor ihrem gebuchten Termin zu erinnern."},"uploadFile":{"name":"Datei hochladen","rowDescription":"Lasse Nutzer Dateien in deine App hochladen. Verwende die zurückgegebene Datei-URL in anderen Integrationen oder Workflows.","subtitle":"Lasse Nutzer Dateien in deine App hochladen. Verwende die zurückgegebene Datei-URL in anderen Integrationen oder Workflows.","longDescription":"Ermögliche Nutzern, Dateien in deine App hochzuladen und an Datensätze anzuhängen. Diese Integration betreibt Upload-Komponenten, mit denen du Dokumente, Bilder, Quittungen, Verträge, Screenshots, Profilbilder, CSV-Dateien oder Tabellen sammeln und nur die sichere Datei-URL in deinen Daten speichern kannst.","examplePrompt0":"Füge ein Datei-Upload-Feld zu diesem Formular hinzu, verwende Datei hochladen und speichere die Datei-URL im zugehörigen Datensatz.","examplePrompt1":"Erstelle eine Seite, auf der Nutzer mit Datei hochladen Profilbilder hochladen und die Bild-URL in ihrer Nutzer-Entität speichern können.","examplePrompt2":"Richte einen Upload-Bereich für CSV-Dateien mit Datei hochladen ein, damit ich diese Dateien später in meine Datentabellen importieren kann."},"invokeLlm":{"name":"LLM aufrufen","rowDescription":"Generiere KI-Antworten mit integrierten Sprachmodellen, Prompts, Dateien und strukturierten Ausgaben.","subtitle":"Generiere KI-Antworten mit integrierten Sprachmodellen, Prompts, Dateien und strukturierten Ausgaben.","longDescription":"Verwende ein Sprachmodell, um Antworten aus Prompts zu generieren. Diese Integration kann strukturierte JSON-Ausgaben zurückgeben, Bilder analysieren, Dateianhänge als Kontext verwenden und bei Bedarf eine Websuche durchführen. Sie kann für Agenten, Workflows und andere KI-gesteuerte Funktionen in deiner App verwendet werden.","examplePrompt0":"Generiere KI-Antworten aus Nutzereingaben mit LLM aufrufen und zeige die Antwort auf dieser Seite an.","examplePrompt1":"Verwende LLM aufrufen, um lange Feedback-Nachrichten in drei Stichpunkte zusammenzufassen, die auf jedem Feedback-Datensatz gespeichert werden.","examplePrompt2":"Füge eine \\"Text umschreiben\\"-Funktion hinzu, die Nutzertext an LLM aufrufen sendet und eine klarere, freundlichere Version zurückgibt.","examplePrompt3":"Verwende LLM aufrufen, um jedes Support-Ticket als \\"Bug\\", \\"Feature-Anfrage\\" oder \\"Frage\\" zu klassifizieren und das Label am Ticket-Datensatz zu speichern."},"generateImage":{"name":"Bild generieren","rowDescription":"Erstelle Bilder aus detaillierten Textbeschreibungen. Gibt eine URL zum generierten Bild zurück.","subtitle":"Gib einfach eine Textbeschreibung des gewünschten Bildes ein, und es wird eine URL zum generierten Bild zurückgegeben.","longDescription":"Generiere Bilder mit KI aus Textbeschreibungen oder Flows in deiner App. Diese Integration ermöglicht es deiner App, Cover-Bilder, Thumbnails, Avatare, Produkt-Platzhalter oder einfache Marketing-Grafiken auf Abruf zu erstellen, ohne einen externen Bildanbieter zu verbinden.","examplePrompt0":"Verwende Bild generieren, um ein Standard-Produktbild zu erstellen, wenn ein neues Produkt ohne Fotos hinzugefügt wird.","examplePrompt1":"Füge eine Funktion hinzu, bei der Nutzer eine kurze Beschreibung eingeben können und Bild generieren eine Cover-Bild-URL zurückgibt, die auf ihrem Beitrag gespeichert wird.","examplePrompt2":"Erstelle einen Flow, der Bild generieren verwendet, um Avatar-Bilder für neue Nutzer basierend auf ihrer Lieblingsfarbe oder ihrem Thema zu generieren."},"extractData":{"name":"Daten aus hochgeladenen Dateien extrahieren","rowDescription":"Ziehe strukturierte Daten aus hochgeladenen Dateien (CSV, PNG, JPG, JPEG, PDF) mit JSON-Schemas. Nützlich für den Massenimport von Daten.","subtitle":"Ziehe strukturierte Daten aus hochgeladenen Dateien (CSV, PNG, JPG, JPEG, PDF) mit JSON-Schemas. Nützlich für den Massenimport von Daten.","longDescription":"Extrahiere automatisch strukturierte Daten aus Dateien, die in deine App hochgeladen werden, und speichere sie in deinen Entitäten. Diese Integration liest Dokumente und Tabellen und wandelt deren Inhalte in strukturierte Felder um, die du in Datensätzen, Berichten oder Automatisierungen verwenden kannst.","examplePrompt0":"Wenn jemand eine PDF-Rechnung hochlädt, verwende Daten extrahieren, um Lieferant, Gesamtbetrag und Fälligkeitsdatum in eine Rechnungs-Entität zu übertragen.","examplePrompt1":"Verwende Daten extrahieren, um eine CSV-Datei mit Kontakten zu lesen und einen Kontaktdatensatz pro Zeile zu erstellen.","examplePrompt2":"Nachdem ein Nutzer ein Quittungsbild hochgeladen hat, verwende Daten extrahieren, um Händler, Datum und Einzelposten in einen strukturierten Ausgaben-Datensatz zu extrahieren."},"whatsapp":{"name":"WhatsApp","rowDescription":"Verbinde deinen Agenten mit WhatsApp, damit Nutzer den Agenten deiner App direkt vom Handy aus kontaktieren können, ohne die App zu öffnen.","subtitle":"Verbinde deinen Agenten mit WhatsApp, damit Nutzer den Agenten deiner App direkt vom Handy aus kontaktieren können, ohne die App zu öffnen.","longDescription":"Verbinde deinen Agenten mit WhatsApp, damit Nutzer den Agenten deiner App direkt vom Handy aus kontaktieren können. Verwende diese Integration, um Support zu bearbeiten, Daten zu sammeln oder Updates über WhatsApp zu senden, während der Agent im Hintergrund auf die Daten und Workflows deiner App zugreift.","examplePrompt0":"Verbinde meinen Support-Agenten mit WhatsApp, damit Kunden dort Fragen stellen können und der Agent mit dem Wissen meiner App antwortet.","examplePrompt1":"Richte einen WhatsApp-Flow ein, bei dem neue Nachrichten Datensätze in meiner Kontakte-Entität erstellen oder aktualisieren und der Agent die Details bestätigt.","examplePrompt2":"Wenn sich ein Bestellstatus auf \\"versendet\\" ändert, soll der Agent eine WhatsApp-Nachricht mit dem Tracking-Link und wichtigen Bestellinformationen senden."}}}'),j_={title:"Konnektoren für App-Nutzer",description:"Richte Konnektoren ein, damit App-Nutzer ihre persönlichen Konten verknüpfen können.",manage:"Verwalten"},O_={connections:M_,integrations:N_,skillsBanner:F_,oauthConnectors:L_,oauthConnectorsBanner:j_},B_={importSuccessful:"Import erfolgreich",importSuccessfulMsg:"{{count}} {{name}}-Datensätze erfolgreich importiert",importFailed:"Import fehlgeschlagen",exportSuccessful:"Export erfolgreich",exportSuccessfulMsg:"Entitäten erfolgreich als CSV exportiert",exportFailed:"Export fehlgeschlagen",moveAllToTrash:"Alle Datensätze in den Papierkorb verschieben",moveAllToTrashConfirm:"Bist du sicher, dass du alle Datensätze in den Papierkorb verschieben möchtest? Du kannst sie später aus dem Papierkorb wiederherstellen.",moveToTrash:"In den Papierkorb",success:"Erfolg",allMovedToTrash:"Alle Datensätze erfolgreich in den Papierkorb verschoben",error:"Fehler",add:"Hinzufügen",addItem:"Element hinzufügen",import:"Importieren",export:"Exportieren",schema:"Schema",recentlyDeleted:"Kürzlich gelöscht",deleteAll:"Alle löschen",permissions:"Berechtigungen",permissionsDesc:"Erstelle Regeln, um zu steuern, wer Datensätze lesen und schreiben kann. Mehrere Regeln werden mit ODER-Logik verknüpft.",saveRules:"Regeln speichern",permissionsIssueDetected:"Berechtigungsproblem erkannt",learnMoreAboutPermissions:"<a>Mehr erfahren <icon/></a> über Berechtigungen und Sicherheitsregeln",customize:"Anpassen",apply:"Anwenden",checkingPermissions:"Berechtigungssicherheit wird geprüft",failedCheckPermissions:"Berechtigungsprüfung fehlgeschlagen",permissionsCheckPassed:"Berechtigungsprüfung bestanden",recommendedRules:"Empfohlene Regeln",editRecord:"{{entity}} bearbeiten",addNewRecord:"Neue(n) {{entity}} hinzufügen",test:"Test",production:"Produktion",filters:"Filter",schemaEditor:"Schema-Editor",noRecordsFound:"Keine Datensätze gefunden",getStartedAdding:"Beginne, indem du deinen ersten Datensatz hinzufügst.",loadingEntity:"{{entity}} wird geladen..."},U_={production:"Produktion",test:"Test"},q_={back:"Zurück",trashTitle:"{{entity}}: Papierkorb",test:"(Test)",production:"(Produktion)",trashDescription:`Anzeigen, wiederherstellen oder dauerhaft löschen.
Elemente werden nach 30 Tagen endgültig gelöscht.`,permanentlyDelete:"Datensatz dauerhaft löschen",permanentlyDeleteConfirm:"Bist du sicher, dass du diesen Datensatz dauerhaft löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.",deletePermanently:"Dauerhaft löschen",restoreSelected:"Ausgewählte Datensätze wiederherstellen",restoreSelectedConfirm:"Bist du sicher, dass du {{count}} ausgewählte(n) Datensatz/Datensätze wiederherstellen möchtest?",restore:"Wiederherstellen",restoreAll:"Alle Datensätze wiederherstellen",restoreAllConfirm:"Bist du sicher, dass du alle Datensätze im Papierkorb wiederherstellen möchtest?",restoreAllBtn:"Alle wiederherstellen",deletedDate:"Gelöscht am",actions:"Aktionen",failedToLoad:"Gelöschte Datensätze konnten nicht geladen werden",tryAgain:"Erneut versuchen",loadingDeleted:"Gelöschte Datensätze werden geladen...",noDeletedRecords:"Keine gelöschten Datensätze gefunden",restoreCount:"{{count}} ausgewählte wiederherstellen",restoring:"Wird wiederhergestellt..."},V_={data:B_,toolbar:U_,trash:q_},$_=JSON.parse(`{"title":"Domains","subtitle":"Kaufe, verbinde und verwalte deine Domains.","learnMore":"Mehr erfahren","expired":"Vor {{days}} Tagen abgelaufen","expiresIn":"Läuft in {{days}} Tagen ab","lastChecked":"Zuletzt geprüft: {{time}}","domainLinked":"Domain verknüpft","domainLinkedMsg":"Domain wurde mit deinem Projekt verknüpft","errorLinkingDomain":"Fehler beim Verknüpfen der Domain","linking":"Wird verknüpft...","linkDomain":"Domain verknüpfen","checkStatus":"Status prüfen","checking":"Wird geprüft...","verifyDomain":"Verifizieren","verifying":"Wird verifiziert...","unlinkDomain":"Domain trennen","unlinking":"Wird getrennt...","unlinked":"Getrennt","domainActive":"Domain aktiv","waitingDns":"Warte auf DNS-Propagierung","verified":"Verifiziert","error":"Fehler","pending":"Ausstehend","domainUnlinked":"Domain getrennt","domainUnlinkedMsg":"Domain wurde von deinem Projekt getrennt","errorUnlinkingDomain":"Fehler beim Trennen der Domain","domainDeleted":"Domain gelöscht","errorDeletingDomain":"Fehler beim Löschen der Domain","errorCheckingStatus":"Fehler beim Prüfen des Status","verificationInitiated":"Verifizierung eingeleitet","checkBackMinutes":"Bitte prüfe in wenigen Minuten erneut","errorVerifyingDomain":"Fehler beim Verifizieren der Domain","deleteDomain":"Domain löschen","deleteConfirm":"Bist du sicher, dass du löschen möchtest?","deleting":"Wird gelöscht...","unlinkDialogDescription":"Diese Domain wurde über Base44 erworben.\\n\\nSie bleibt unter deinen Domains aufgelistet, ist aber nicht mehr mit deinem Projekt verbunden.","wantToUseDomain":"Möchtest du deine Domain verwenden?","customDomainsAvailable":"Eigene Domains sind ab dem Builder-Plan verfügbar.<br/>Upgrade, um deine Domain mit dieser App zu verbinden.","viewPlans":"Pläne anzeigen","getNewDomain":"Neue Domain erhalten","getNewDomainDescription":"Verleihe deiner App mit einer eigenen Domain einen professionellen Auftritt.","suggestedForApp":"Vorschlag für deine App: <bold>{{domain}}</bold>","suggestedForApp_prefix":"Vorschlag für deine App:","buyNewDomain":"Neue Domain kaufen","buyAnother":"Weitere kaufen","buyThisDomain":"Diese Domain kaufen","orConnectExisting":"Oder eine bestehende Domain verbinden, die du bereits besitzt","connectExistingDomain":"Bestehende Domain verbinden","getYourCustomDomain":"Hole dir deine eigene Domain","upgradeDescription":"Eigene Domains sind ab dem Builder-Plan verfügbar.","upgradeYourPlan":"Plan upgraden","processing":"Wird verarbeitet...","loading":"Laden...","domainLimitReached":"Domain-Limit erreicht","domainLimitMsg":"Du hast das Maximum von {{max}} Domains für diese App erreicht ({{current}}/{{max}}).\\nBitte entferne einige Domains, bevor du neue hinzufügst.","noCustomDomainYet":"Du hast noch keine eigene Domain verbunden","connectDescription":"Verbinde deine Base44-App mit deiner eigenen Domain, um deine Marke in den Vordergrund zu stellen und deine App leicht auffindbar und teilbar zu machen.","buyDomain":"Domain kaufen","neverExpires":"Läuft nie ab","editUrl":"URL bearbeiten","domainPurchased":"Domain gekauft!","domainPurchasedMsg":"Deine Domain {{domain}} wurde erfolgreich gekauft. Warte, bis sie in deinen Domains erscheint...","domainPurchaseFailed":"Domain-Kauf fehlgeschlagen","purchaseFailedMsg":"Kauf für {{domain}} fehlgeschlagen.","domainLimitReachedToast":"Domain-Limit erreicht","domainLimitToastMsg":"Du kannst nur bis zu {{max}} Domains pro App haben. Bitte entferne zuerst einige Domains.","domainAddedSuccessfully":"Domain erfolgreich hinzugefügt.","verifyToComplete":"Bitte verifiziere deine Domain, um die Einrichtung abzuschließen.","failedToConnect":"Domain konnte nicht verbunden werden","connectYourDomain":"Verbinden","builtInDomain":"Integrierte URL","customDomains":"Eigene Domains","adminCanAdd":"Admin: kann beliebige Domains hinzufügen","domainDisabled":"Domain deaktiviert","domainEnabled":"Domain aktiviert","domainDisabledMsg":"Domain wurde deaktiviert und leitet keinen Traffic mehr weiter.","domainEnabledMsg":"Domain wurde wieder aktiviert und leitet Traffic weiter.","errorTogglingDomain":"Fehler beim Umschalten der Domain","disabledBadge":"Deaktiviert","enableDomain":"Aktivieren","disableDomain":"Deaktivieren","enableDomainTitle":"Domain aktivieren (Admin)","disableDomainTitle":"Domain deaktivieren (Admin)","errorFetchingDomains":"Fehler beim Abrufen der Domains","cancel":"Abbrechen","cannotPurchase":"Domain kann nicht gekauft werden","domainPurchaseDisabled":"Domain-Kauf ist derzeit deaktiviert","entriNotReady":"Entri ist noch nicht bereit. Bitte versuche es in einem Moment erneut.","errorPurchasingDomain":"Fehler beim Kauf der Domain","loadingEntri":"Entri wird geladen...","addNewDomain":"Neue Domain hinzufügen","enterDomainFormat":"Gib deinen Domainnamen unten ein. Stelle sicher, dass er dem Format entspricht: app.beispiel.com","enterDomainPlaceholder":"Domain eingeben (z.B. app.beispiel.com)","invalidDomain":"Das sieht nicht nach einer gültigen Domain aus.\\nGib eine gültige Domain ein, z.B. beispiel.com oder app.beispiel.com.","domainAlreadyConnected":"Diese Domain ist bereits mit deiner App verbunden.","configureDnsAtRegister":"DNS beim Registrar konfigurieren","addDomain":"Domain hinzufügen","adding":"Wird hinzugefügt...","domainConnectionNeeded":"Domain-Verbindung erforderlich","retryFromEmailSettings":"Bitte versuche es erneut über die E-Mail-Domain-Einstellungen.","emailDomainSubmitted":"E-Mail-Domain eingereicht.","addDnsRecords":"Bitte füge DNS-Einträge bei deinem Domain-Anbieter hinzu.","verificationMayTake48h":"Die Verifizierung kann bis zu 48 Stunden dauern.","senderDetailsUpdated":"Absenderdetails aktualisiert.","editSenderDetails":"Absenderdetails bearbeiten","setSenderDetails":"Absenderdetails festlegen","saveChanges":"Änderungen speichern","connectDomain":"Domain verbinden","saving":"Wird gespeichert...","connecting":"Wird verbunden...","usersWillGetEmails":"Deine Benutzer erhalten E-Mails von diesen Absenderdetails.","senderName":"Absendername","customAddress":"Benutzerdefinierte Adresse","noReply":"no-reply","noReplyEmailAddress":"no-reply@base44-apps.com","domain":"Domain","copyToClipboard":"In die Zwischenablage kopieren","addCnameRecord":"CNAME-Eintrag hinzufügen: ","wwwToDomain":"www → base44.onrender.com","addAnameRecord":"ANAME/ALIAS-Eintrag hinzufügen: ","emptyOrAtDomain":"leer oder @ → base44.onrender.com","ifNoAnameSupport":"Falls dein DNS-Anbieter ANAME/ALIAS nicht unterstützt, verwende einen A-Eintrag:","aRecordIp":"@ → 216.24.57.1","removeAaaaRecords":"Entferne alle AAAA-Einträge von deiner Domain während der DNS-Konfiguration. AAAA-Einträge verweisen auf eine IPv6-Adresse, und Base44 verwendet IPv4. Diese Einträge können unerwartetes Verhalten bei deiner benutzerdefinierten Domain verursachen.","dnsChangesNote":"Bitte beachte, dass es nach dem Hinzufügen von DNS-Einträgen einige Zeit dauern kann, bis die Änderungen vollständig über das Internet verbreitet sind. Während dieser Zeit funktioniert die Domain möglicherweise nicht richtig.","addDnsRecordsFor":"1. Füge diese DNS-Einträge bei deinem Domain-Anbieter hinzu für ","type":"Typ","nameColumn":"Name","hostColumn":"Host","tabAnameAlias":"ANAME/ALIAS","tabARecord":"A-Record","addRecordsStepIntro":"Füge diese Einträge im Dashboard deines Anbieters hinzu, um die Einrichtung abzuschließen:","removeAaaaShort":"Entferne alle AAAA-(IPv6-)Einträge, da sie Verbindungen blockieren können.","customDomainStep2Verify":"Sobald du alle Einträge im Dashboard deines Anbieters aktualisiert hast, klicke auf „<bold>Domain verifizieren</bold>“. DNS-Änderungen können bis zu 48–78 Stunden brauchen, um sich zu verbreiten.","closeModal":"Schließen","verifyDomainButton":"Domain verifizieren","dnsTargetFallback":"base44.onrender.com","value":"Wert","onceConfiguredVerify":"2. Klicke nach der Konfiguration auf '<bold>Verifizieren</bold>' auf der E-Mail-Domain-Karte, um die Einrichtung zu überprüfen. DNS-Änderungen können bis zu 48-78 Stunden dauern.","emailDnsChangesNote":"Bitte beachte, dass DNS-Änderungen nach dem Hinzufügen bis zu 48 Stunden dauern können. Während dieser Zeit werden E-Mails von der aktuellen E-Mail-Adresse gesendet.","configureDnsForEmail":"DNS für E-Mail-Domain konfigurieren","connectDomainDns":"Verbinde deine Domain über deinen DNS-Anbieter","followInstructions":"Folge den Anweisungen unten, um DNS-Einträge zu konfigurieren.","addRecordsInProvider":"Füge diese Einträge im Dashboard deines Anbieters hinzu, um die Einrichtung abzuschließen.","done":"Fertig","needHelp":"Brauchst du Hilfe? Erstelle ein Ticket im ","supportSystem":"Support-System","urlUpdated":"URL aktualisiert","customUrlRemoved":"Benutzerdefinierte URL entfernt. Deine App ist jetzt erreichbar unter {{url}}","appAvailableAt":"Deine App ist jetzt erreichbar unter {{url}}","urlAlreadyTaken":"Diese URL ist bereits vergeben. Probiere einen der Vorschläge unten oder gib eine andere URL ein.","urlAlreadyTakenNoSuggestions":"Diese URL ist bereits vergeben. Bitte versuche eine andere URL.","suggestedAlternatives":"Verfügbare Alternativen:","urlReserved":"Diese URL ist reserviert. Bitte versuche eine andere.","urlInvalid":"Diese URL ist ungültig. Bitte versuche eine andere.","slugInvalidClient":"Diese URL ist ungültig. Verwende nur Kleinbuchstaben, Zahlen und Bindestriche.","slugResetToDefault":"Slug auf Standard zurückgesetzt","errorResettingSlug":"Fehler beim Zurücksetzen des Slugs","failedResetSlug":"Zurücksetzen auf Standard-Slug fehlgeschlagen","editUrlTitle":"URL bearbeiten","builtInDomainLabel":"Base44 integrierte URL","resetToDefault":"Auf Standard zurücksetzen","urlEditingRequiresPlan":"URL-Bearbeitung erfordert einen Starter-Plan. ","upgradeToPremium":"Auf Premium upgraden","changing":"Wird geändert...","change":"Ändern","emailDomain":"E-Mail-Domain","sendingFromDefault":"Das Senden von der Standard-Domain kostet 1 Integrations-Credit pro E-Mail. Die Verwendung einer eigenen Domain kostet 2 Integrations-Credits.","useCustomDomain":"Eigene Domain verwenden","sendingFrom":"Absendername: {{name}}","connectDomainForCustom":"Verbinde eine Domain, um eine benutzerdefinierte Absenderadresse zu verwenden.","buyADomain":"Eine Domain kaufen","dnsConfiguration":"DNS-Konfiguration","pleaseWaitTryAgain":"Bitte warte einen Moment und versuche es erneut.","dnsConfigFailed":"DNS-Konfiguration fehlgeschlagen","dnsPleaseTryLater":"Bitte versuche es später erneut.","verificationFailed":"Verifizierung fehlgeschlagen","dnsNotVerified":"DNS-Einträge noch nicht verifiziert. Bitte überprüfe deine DNS-Konfiguration und versuche es erneut.","domainVerificationFailed":"Domain-Verifizierung fehlgeschlagen","couldntVerifyDns":"Wir konnten deine DNS-Einträge nicht verifizieren. Bitte überprüfe sie und versuche es erneut.","completeSetup":"Einrichtung abschließen","opening":"Wird geöffnet...","cancelling":"Wird abgebrochen...","connectionFailed":"Verbindung fehlgeschlagen","retry":"Erneut versuchen","retrying":"Wird erneut versucht...","couldntCompleteDns":"DNS-Einrichtung konnte nicht abgeschlossen werden. Bitte versuche es erneut.","couldntConnectEmail":"Die Domain konnte nicht mit dem E-Mail-Anbieter verbunden werden. Bitte versuche es erneut.","pendingVerification":"Verifizierung ausstehend","emailBeingVerified":"Deine E-Mail-Adresse wird verifiziert.","makeSureDnsCorrect":"Stelle sicher, dass die DNS-Einträge korrekt bei deinem Domain-Anbieter hinzugefügt wurden.","verify":"Verifizieren","notConfigured":"Nicht konfiguriert","active":"Aktiv","editSenderDetailsAction":"Absenderdetails bearbeiten","detachCustomDomain":"Benutzerdefinierte Domain trennen","suspended":"Gesperrt","disabled":"Deaktiviert","blocked":"Blockiert","propagationBlocked":"Propagierung blockiert","propagationBlockedTooltip":"DNS-Propagierung kann eine Weile dauern. Vergleiche deine DNS-Einträge mit unseren Anweisungen, wenn etwas noch nicht stimmt.","pendingConnection":"Verbindung ausstehend","completeSetupToSend":"Schließe die Einrichtung ab, um E-Mails von deiner Domain zu senden. E-Mails werden derzeit gesendet von ","emailCurrentlySentFrom":"Deine E-Mail-Adresse wird verifiziert. E-Mails werden derzeit gesendet von ","dnsNotVerifiedYet":"DNS-Einträge wurden noch nicht verifiziert. Stelle sicher, dass sie korrekt gesetzt sind, und klicke dann auf 'Verifizieren'.","couldntConnectMakeSure":"Die Domain konnte nicht mit dem E-Mail-Anbieter verbunden werden. Stelle sicher, dass die DNS-Einträge korrekt bei deinem Domain-Anbieter hinzugefügt wurden, und versuche es erneut.","base44Domain":"Base44 Domain","maxDomainsReached":"Maximum von {{max}} Domains für diese App erreicht","viewDnsRecords":"DNS-Einträge anzeigen","upgradeBannerText":"Benutzerdefinierte Domains erfordern einen Builder-Plan oder höher. Upgrade durchführen, um sie zu aktivieren.","upgradeToUseDomain":"Upgrade deinen Plan, um diese Domain zu nutzen.","emailDomainPurchasedOnly":"Die E-Mail-Domain-Einrichtung ist derzeit nur für über Base44 erworbene Domains verfügbar.","save":"Speichern","urlHint":"Nur Kleinbuchstaben, Zahlen und Bindestriche","copyUrl":"URL kopieren","builtInUrlTooltip":"Deine App ist immer unter dieser URL verfügbar.","builderPlanRequired":"Diese Funktion ist im Builder-Plan und höher verfügbar.","somethingWentWrong":"Etwas ist schief gelaufen","failedToGetPurchaseConfig":"Fehler beim Abrufen der Kaufkonfiguration","errorEnablingEmail":"Fehler beim Aktivieren von E-Mail","failedToEnableEmail":"E-Mail konnte nicht aktiviert werden","errorUpdatingSenderDetails":"Fehler beim Aktualisieren der Absenderdetails","failedToUpdateSenderDetails":"Absenderdetails konnten nicht aktualisiert werden","errorReplacingDomain":"Fehler beim Ersetzen der Domain","failedToReplaceDomain":"Domain konnte nicht ersetzt werden","failedToAddDomain":"Domain konnte nicht hinzugefügt werden","processingPurchase":"Kauf wird verarbeitet...","subscriptionRequired":"Abonnement erforderlich"}`),W_={domains:$_},G_={title:"Protokoll-Explorer",subtitle:"Überwache Systemprotokolle deiner App.",refresh:"Aktualisieren",loadingLogs:"Protokolle werden geladen...",pleaseWait:"Bitte warte, während wir deine Protokolle abrufen",failedToLoad:"Protokolle konnten nicht geladen werden",errorFetching:"Beim Abrufen der Protokolle ist ein Fehler aufgetreten. Bitte versuche es erneut.",noLogsMatchFilters:"Keine Protokolle entsprechen deinen Filtern",tryAdjusting:"Versuche deine Filter anzupassen",noLogsFound:"Keine Protokolle gefunden",logsWillAppear:"Protokolle erscheinen hier, wenn Aktivität auftritt",tryAgain:"Erneut versuchen",resetFilters:"Filter zurücksetzen",details:"Details",outputs:"Ausgaben",errorTab:"Fehler",noAdditionalDetails:"Keine weiteren Details verfügbar.",clearFilters:"Filter löschen",filterByEmail:"Nach E-Mail filtern...",errorsOnly:"Nur Fehler",allEvents:"Alle Ereignisse",typeColumn:"Typ",userColumn:"Benutzer",timestamp:"Zeitstempel"},H_={title:"Analysen",publishToCollect:"Veröffentliche deine App, um mit der Datenerfassung zu beginnen."},Y_={title:"API-Dokumentation",subtitle:"Vollständige API-Referenz für deine App. Verwende die OpenAPI-Spezifikation mit jedem API-Client oder Dokumentationstool.",downloadSpec:"OpenAPI-Spezifikation herunterladen",copyForLLM:"Für KI kopieren",copyForLLMTooltip:"KI-freundliche Markdown-Dokumentation in die Zwischenablage kopieren",copied:"Kopiert!",codeExamplesIn:"Codebeispiele in:",authTitle:"Authentifizierung",authDescription:"Alle API-Anfragen erfordern einen api_key-Header. Du findest deinen API-Schlüssel in deinem Benutzerprofil oder kannst ihn programmatisch über User.me() im App-SDK abrufen.",sdkAuthDescription:"Installiere das Base44 SDK und initialisiere den Client mit deiner App-ID. Das SDK übernimmt die Authentifizierung und bietet typisierte Methoden für alle Entitätsoperationen und Backend-Funktionen.",entitiesTitle:"Entitäts-Endpunkte",schema:"Schema",endpoints:"Endpunkte",copyAll:"Alles kopieren",copyEntity:"Entität kopieren",functionsTitle:"Backend-Funktionen",functionsDescription:"Rufe deine bereitgestellten Backend-Funktionen über HTTP auf. Jede Funktion akzeptiert beliebige JSON-Daten und gibt die Antwort der Funktion zurück.",agentTitle:"App-Agent",agentDescription:"Interagiere mit dem KI-Agenten deiner App über Konversationen. Erstelle eine Konversation, sende Nachrichten und erhalte Antworten vom Agenten.",copy:"Kopieren",parameters:"Parameter",loading:"API-Dokumentation wird geladen...",error:"API-Dokumentation konnte nicht geladen werden. Bitte versuche es erneut."},K_={logs:G_,analytics:H_,api:Y_},Z_={error:"Fehler",appStillLoading:"App wird noch geladen... Name nicht aktualisiert",appNameEmpty:"App-Name darf nicht leer sein",removedFromFavorites:"Von Favoriten entfernt",addedToFavorites:"Zu Favoriten hinzugefügt",removedDescription:"App aus deiner Sternchenliste entfernt",addedDescription:"App zu deiner Sternchenliste hinzugefügt",descriptionUpdated:"Beschreibung aktualisiert",descriptionUpdatedMsg:"Deine App-Beschreibung wurde erfolgreich aktualisiert",failedUpdateDescription:"Beschreibung konnte nicht aktualisiert werden",openApp:"App öffnen",shareApp:"App teilen",winFreeCredits:"Gratis-Credits gewinnen!",appVisibility:"App-Sichtbarkeit",controlAccess:"Steuere, wer auf deine App zugreifen kann",inviteUsers:"Benutzer einladen",growUserBase:"Vergrößere deine Nutzerbasis, indem du andere einlädst",copyLink:"Link kopieren",copied:"Kopiert!",sendInvites:"Einladungen senden",paymentsViaStripe:"Zahlungen via Stripe",pendingSetup:"Einrichtung ausstehend",completeSetupGuide:"Schließe die Einrichtungsanleitung ab, um echte Zahlungen zu empfangen",live:"Live",testModeMessage:"Du bist noch im Testmodus. Schließe die Einrichtung ab, um Zahlungen zu empfangen.",readyForPayments:"Deine App ist bereit, Zahlungen via Stripe zu empfangen.",continueSetup:"Einrichtung fortsetzen",payments:"Zahlungen",poweredByWix:"Bereitgestellt von Wix",manage:"Verwalten",openingWixPayments:"Wix Payments wird geöffnet...",wixPaymentsErrors:{noUrl:"Die Wix-Payments-URL konnte nicht abgerufen werden. Bitte versuche es erneut.",fetchFailed:"Wix Payments konnte nicht geöffnet werden. Bitte versuche es erneut.",invalidRedirect:"Wix Payments konnte nicht geöffnet werden. Bitte versuche es erneut."},disconnected:"Getrennt",wixPaymentsDashboardError:"Wix Payments-Dashboard konnte nicht geöffnet werden",platformBadge:"Plattform-Badge",badgeVisible:'Das "Mit Base44 bearbeiten"-Badge ist derzeit auf deiner App sichtbar.',hideBadge:"Badge ausblenden",editAppNameAccessibilityLabel:"Titel bearbeiten",editAppDescription:"App-Beschreibung bearbeiten",descriptionPrompt:"Gib eine kurze Beschreibung des Zwecks und der Funktionalität deiner App an.",describeYourApp:"Beschreibe deine App...",cancel:"Abbrechen",save:"Speichern",created:"Erstellt {{time}}"},J_={overview:Z_},Q_={title:"App-Sicherheit",subtitle:"Konfiguriere Sicherheitsrichtlinien auf Zeilenebene, um zu steuern, wer auf die Daten deiner App zugreifen kann",scanIssues:"Probleme scannen",scanTime:"Der Scan dauert in der Regel wenige Minuten",scanning:"Wird gescannt",startSecurityCheck:"Sicherheitscheck starten",scanResults:"Scan-Ergebnisse",rlsRecommendations:"RLS-Empfehlungen",rlsRecommendationsFound:"{{count}} RLS-Empfehlung(en) gefunden,",viewRecommendations:"Empfehlungen anzeigen",noRlsRecommendations:"Keine RLS-Empfehlungen gefunden",secrets:"Geheimnisse",exposedSecretsFound:"{{count}} offengelegte Geheimnisse gefunden",noExposedSecrets:"Keine offengelegten Geheimnisse gefunden",backendFunctions:"Backend-Funktionen",unauthenticatedFunctions:"{{count}} nicht authentifizierte Backend-Funktionen gefunden",noUnauthenticatedFunctions:"Keine nicht authentifizierten Backend-Funktionen gefunden",dataEntities:"Datenentitäten",entitiesCount:"{{count}} Entitäten",scanComplete:"Sicherheitsscan abgeschlossen",reviewFindings:"Überprüfe die folgenden Ergebnisse.",scanFailed:"Sicherheitsscan fehlgeschlagen",ruleSaved:"Regel für {{entity}} gespeichert",ruleSavedMsg:"Die empfohlene Regel wurde gespeichert.",failedToSaveRule:"Regel konnte nicht gespeichert werden",createAccess:"Erstellungszugriff",readAccess:"Lesezugriff",updateAccess:"Aktualisierungszugriff",deleteAccess:"Löschzugriff",removeAllRules:"Alle Sicherheitsregeln entfernen",removeAllRulesConfirm:"Dadurch werden alle Sicherheitsregeln für diese Entität entfernt, sodass alle Benutzer auf alle Datensätze zugreifen können. Bist du sicher, dass du fortfahren möchtest?",removeAllRulesBtn:"Alle Regeln entfernen",securityRules:"Sicherheitsregeln: {{entity}}",securityRulesTitle:"Sicherheitsregeln",securityRulesDesc:"Erstelle Regeln, um zu steuern, wer Datensätze lesen und schreiben kann. Mehrere Regeln werden mit ODER-Logik verknüpft.",publicAccess:"Öffentlicher Zugriff",publicAccessDesc:"Derzeit können alle Benutzer auf alle Datensätze in dieser Entität zugreifen. Es gibt keine Zugriffsbeschränkungen.",createAccessRules:"Zugriffsregeln erstellen",create:"Erstellen",read:"Lesen",update:"Aktualisieren",deleteAction:"Löschen",crudRules:"{{crud}}-Regeln",addRule:"Regel hinzufügen",generatedRules:"Generierte {{crud}}-Regeln (JSON)",saveSecurityRules:"Sicherheitsregeln speichern",crudAccessRules:"{{crud}}-Zugriffsregeln",configurePermissions:"Berechtigungen für jede Aktion konfigurieren",generatedJsonPreview:"Generiertes JSON (Vorschau)",saveRules:"Regeln speichern",rlsRecommendation:"RLS-Empfehlung",dismiss:"Verwerfen",applyFixes:"Korrekturen anwenden",restricted:"Eingeschränkt",public:"Öffentlich",fullAccess:"Alle Benutzer haben vollen Zugriff",createLabel:"Erstellen:",readLabel:"Lesen:",updateLabel:"Aktualisieren:",deleteLabel:"Löschen:",noRestrictions:"Keine Einschränkungen",allUsersCanAccess:"Alle Benutzer können auf Datensätze zugreifen",creatorOnly:"Nur Ersteller",creatorOnlyDesc:"Benutzer können nur auf Datensätze zugreifen, die sie erstellt haben",entityUserComparison:"Entitäts-Benutzer-Feldvergleich",entityUserComparisonDesc:"Vergleiche ein Feld in dieser Entität mit einer Benutzereigenschaft",entityField:"Entitätsfeld",fieldInEntity:"Feld in der Entität zum Vergleichen",userField:"Benutzerfeld",fieldFromUser:"Feld vom Benutzer zum Vergleichen",userPropertyCheck:"Benutzereigenschaftsprüfung",userPropertyCheckDesc:"Prüfe, ob eine Benutzereigenschaft einem bestimmten Wert entspricht",userProperty:"Benutzereigenschaft",selectUserProperty:"Benutzereigenschaft auswählen",userRole:"Benutzerrolle",userEmail:"Benutzer-E-Mail",fullName:"Vollständiger Name",requiredValue:"Erforderlicher Wert",selectRole:"Rolle auswählen",adminRole:"Admin",userRoleOption:"Benutzer",noRestrictionsLabel:"Keine Einschränkungen",creatorOnlyLabel:"Nur Ersteller",adminOnlyLabel:"Nur Admin",filePath:"Datei: {{path}}",severityCritical:"Kritisch",severityHigh:"Hoch",securityScanLabel:"Sicherheitsscan",upToDate:"Aktuell",upToDateTooltip:"Seit der letzten Prüfung wurden keine sicherheitsrelevanten Änderungen vorgenommen",outOfDate:"Veraltet",outOfDateTooltip:"Seit der letzten Prüfung wurden sicherheitsrelevante Änderungen gemacht. Führe bitte einen neuen Sicherheitsscan durch.",runSecurityScan:"Sicherheitsscan starten",securityPageTitle:"Sicherheit",securityPageSubtitle:"Verwalte deine Berechtigungen und Sicherheitsregeln. <a>Mehr erfahren <icon/></a>",issuesDetails:"Details zu Problemen",rlsIssuesTitle_one:"{{count}} RLS-Problem",rlsIssuesTitle_other:"{{count}} RLS-Probleme",rlsIssuesSubtitle:"Aktiviere Sicherheit auf Zeilenebene, um deine Daten zu schützen",exposedSecretsTitle_one:"{{count}} Offengelegtes Geheimnis",exposedSecretsTitle_other:"{{count}} Offengelegte Geheimnisse",exposedSecretsSubtitle:"Sichere und rotiere alle offengelegten Geheimnisse, um deine Anwendung und Daten zu schützen.",unauthBackendTitle_one:"{{count}} Nicht authentifizierte Backend-Funktion",unauthBackendTitle_other:"{{count}} Nicht authentifizierte Backend-Funktionen",unauthBackendSubtitle:"Schütze Backend-Task-Endpunkte mit Authentifizierung.",noIssuesFound:"Keine Probleme gefunden. Die Sicherheit deiner App sieht gut aus, aber überprüfe sie regelmäßig, um geschützt zu bleiben.",recommendedRulesLabel:"Empfohlene Regeln:",fix:"Beheben",fixAll:"Alle beheben",missingRlsRules:"{{entity}} hat keine RLS-Regeln",customizeSuggestion:"Vorschlag anpassen",goToEntityPage:"Zur Entitätsseite gehen",ruleColumnHeader:"Regel",allUsers:"Alle Benutzer",fieldComparison:"Feldvergleich",noScanTitle:"Überprüfe die Sicherheit deiner App",noScanDescription:"Überprüfe deine Konfiguration, erkenne potenzielle Risiken und erfahre, wie du den Schutz deiner App stärken kannst",checkSecurity:"Sicherheit prüfen",back:"Zurück",cancel:"Abbrechen"},X_={title:"App-Geheimnisse",secretDeleted:"Geheimnis gelöscht",errorDeletingSecret:"Fehler beim Löschen des Geheimnisses",secretUpdated:"Geheimnis aktualisiert",errorUpdatingSecret:"Fehler beim Aktualisieren des Geheimnisses",newSecretValue:"Neuer Geheimniswert",save:"Speichern",cancel:"Abbrechen",addSecret:"Geheimnis hinzufügen",addNewSecret:"Neues Geheimnis hinzufügen",addNewSecretDescription:"Gib den Namen und Wert deines Geheimnisses ein. Geheimnisse werden verschlüsselt und sicher gespeichert.",secretName:"Geheimnisname",secretNamePlaceholder:"Geheimnisname eingeben (z.B. API_KEY)",secretNameNoSpaces:"Geheimnisname darf keine Leerzeichen enthalten. Verwende Unterstriche (z.B. API_KEY).",secretValue:"Geheimniswert",secretValuePlaceholder:"Geheimniswert eingeben",adding:"Wird hinzugefügt...",aboutSecretsManagement:"Über die Geheimnisverwaltung",secretsDescription:"Geheimnisse sind Umgebungsvariablen, die sensible Informationen wie API-Schlüssel, Tokens und Passwörter enthalten. Sie werden verschlüsselt gespeichert und zur Laufzeit sicher in deine App eingefügt.",secretsBullet1:"Geheimnisse werden von deinen Backend-Funktionen verwendet, um auf externe Dienste zuzugreifen",secretsBullet2:"Alle Geheimnisse werden verschlüsselt und sicher gespeichert",secretsBullet3:"Du kannst Geheimnisse nach Bedarf hinzufügen, aktualisieren oder löschen",needHelp:"Brauchst du Hilfe?",supportSystem:"Öffne ein Support-Ticket",configuredSecrets:"Konfigurierte Geheimnisse",noSecretsYet:"Noch keine Geheimnisse konfiguriert. Füge dein erstes Geheimnis hinzu, um zu beginnen.",secretAddedSuccessfully:"Geheimnis erfolgreich hinzugefügt",errorCreatingSecret:"Fehler beim Erstellen des Geheimnisses",errorFetchingSecrets:"Fehler beim Abrufen der Geheimnisse"},ex={security:Q_,secrets:X_},tx={mainPage:"Hauptseite",mainPageDesc:"Lege die Standard-Startseite für deine App fest",selectMainPage:"Hauptseite auswählen",appVisibility:"App-Sichtbarkeit",controlAccess:"Steuere, wer auf deine App zugreifen kann",platformBadge:"Plattform-Badge",platformBadgeDesc:'Zeige oder verberge das "Mit Base44 bearbeiten"-Badge auf deiner App.',onlyForPaying:"Nur für zahlende Benutzer verfügbar.",upgradeNow:"Jetzt upgraden",visible:"Sichtbar",hidden:"Verborgen",hideEntityCreator:"Entitäts-Ersteller verbergen",hideEntityCreatorDesc:'Verberge, wer jeden Datensatz in den Datentabellen deiner App erstellt hat. Wenn aktiviert, wird das Feld "Erstellt von" den Benutzern nicht angezeigt.',aiAgents:"KI-Agenten",aiAgentsDesc:"Baue KI-Agenten in deine App mit der KI-Agenten-Infrastruktur von Base44",aiAgentsEnabled:"KI-Agenten aktiviert",aiAgentsEnabledDesc:"Deine App hat jetzt Zugriff auf die KI-Agenten-Infrastruktur von Base44. Du kannst intelligente Agenten erstellen, die Benutzern bei verschiedenen Aufgaben helfen, Fragen beantworten und mit den Daten deiner App interagieren. Nutze den Chat, um deine Agenten zu erstellen und zu konfigurieren.",testData:"Testdaten",testDataDesc:"Verwende Testdaten, um Änderungen sicher zu testen, ohne Live-Daten zu beeinträchtigen.",onlyForBuilder:"Nur für den Builder-Plan und höher verfügbar.",testDataVersionNote:"Um dies zu nutzen, benötigst du eine neuere Version deiner App. Mache einfach eine Änderung — sende eine Nachricht an die KI, ändere etwas Code oder nutze den visuellen Editor — und schon bist du bereit.",cloneApp:"App klonen",cloneAppDesc:"Erstelle eine Kopie dieser App",githubConnectionIssue:"GitHub-Verbindungsproblem. Bitte stelle die Verbindung wieder her, um diese App zu klonen.",cantCloneOldInfra:`Du kannst keine App auf der alten Infrastruktur klonen.
Aktualisiere die Infrastruktur, um deine App zu klonen.`,createCopy:"Kopie erstellen",backendFunctions:"Backend-Funktionen",backendFunctionsDesc:"Serverseitige Funktionalität aktivieren • Empfohlen für Entwickler",activating:"Wird aktiviert...",activated:"Aktiviert",activate:"Aktivieren",upgradePlan:"Plan upgraden",dangerZone:"Gefahrenzone",dangerZoneDesc:"Unumkehrbare Aktionen, die deine App betreffen",deleteApp:"App löschen",deleteAppDesc:"Entferne diese App und alle ihre Daten dauerhaft",adminControls:"Admin-Steuerung",adminControlsDesc:"App-Verfügbarkeit verwalten",unblockApp:"App entsperren",blockApp:"App blockieren",appLogo:"App-Logo",editLogo:"Logo bearbeiten",appDescription:"App-Beschreibung",saveDescription:"Beschreibung speichern",describeYourApp:"Beschreibe deine App..."},ax={editAppLogo:"App-Logo bearbeiten",uploadLogo:"Logo hochladen",generateLogo:"Logo generieren",dragAndDrop:"Ziehe per Drag & Drop oder klicke zum Hochladen",clickToUpload:"Klicke zum Hochladen oder ziehe per Drag & Drop",pngJpgLimit:"PNG, JPG bis zu 5MB",upload:"Hochladen",whatShouldLook:"Wie soll dein Logo aussehen?",generating:"Wird generiert...",generateNew:"Neues Logo generieren",cancel:"Abbrechen",save:"Speichern",logoPrompt:"Logo-Generierungsprompt",describeLogo:"Beschreibe, wie dein Logo aussehen soll",uploading:"Wird hochgeladen...",selectImage:"Bild auswählen"},nx={removeListingConfirm:"Bist du sicher, dass du diesen Eintrag entfernen möchtest? Diese Aktion entfernt ihn aus den App-Vorlagen.",listingRemoved:"Eintrag erfolgreich aus dem Katalog entfernt",appTemplates:"App-Vorlagen",listedFor:"Gelistet für ${{price}} • {{sales}} Verkäufe • {{status}}",manageTemplate:"Verwalte deinen Vorlageneintrag",shareTemplate:"Teile deine Vorlage mit der Community, damit andere sie entdecken und verwenden können.",manageListing:"Eintrag verwalten",publishToTemplates:"In App-Vorlagen veröffentlichen",seeOnTemplates:"In App-Vorlagen ansehen",removingListing:"Wird entfernt...",removeFromTemplates:"Aus App-Vorlagen entfernen",salesRevenue:"{{sales}} Verkäufe • ${{revenue}} Umsatz",publishedToTemplates:"In App-Vorlagen veröffentlicht",rejectedReason:"Ablehnungsgrund: {{reason}}"},ix={public:"Öffentlich",private:"Privat",workspace:"Arbeitsbereich",requireLogin:"Anmeldung für den Zugriff erforderlich"},rx={notAvailableOnMobile:"Die Verwaltung von {{feature}} ist auf Mobilgeräten nicht verfügbar",loginFromDesktop:"Bitte melde dich über einen Desktop-Browser an",okay:"Okay",domains:"Domains",security:"Sicherheit",code:"Code",apiFeature:"API",templates:"Vorlagen"},ox={settings:tx,logo:ax,catalog:nx,visibility:ix,desktop:rx},sx={title:"Benutzer",subtitle:"Verwalte die Benutzer und ihre Rollen der App",inviteUser:"Benutzer einladen",schema:"Schema",searchByEmailOrName:"Nach E-Mail oder Name suchen",pendingRequests:"Ausstehende Anfragen",userSchemaEditor:"Benutzer-Schema-Editor",editUser:"Benutzer bearbeiten",loadingUsers:"Benutzer werden geladen...",noUsersFound:"Keine Benutzer gefunden",noPendingRequests:"Keine ausstehenden Anfragen",noPendingRequestsDesc:"Es gibt derzeit keine Zugriffsanfragen, die auf Genehmigung warten",inviteYourFirstUser:"Lade deinen ersten Benutzer ein",getStartedByInviting:"Beginne, indem du deinen ersten Benutzer zur App einlädst.",tryAdjustingSearch:"Versuche deine Suche oder Filter anzupassen, um das Gewünschte zu finden.",moreActions:"Weitere Aktionen",resendInvitation:"Einladung erneut senden",cancelInvite:"Einladung abbrechen",editUserAction:"Benutzer bearbeiten",changeOwner:"Eigentümer ändern",makeAppOwner:"Zum App-Eigentümer machen",resendOwnershipRequest:"Eigentümeranfrage erneut senden",cancelOwnershipRequest:"Eigentümeranfrage abbrechen",changeRole:"Rolle ändern",selectNewRole:"Wähle eine neue Rolle für {{name}}:",back:"Zurück",manageInvitation:"Einladung verwalten",approve:"Genehmigen",reject:"Ablehnen",unknown:"Unbekannt",admin:"Admin",user:"Benutzer",allRoles:"Alle Rollen",name:"Name",owner:"Eigentümer",pendingOwnership:"Eigentümerschaft ausstehend",role:"Rolle",email:"E-Mail",hasntLoggedIn:"{{role}} hat sich noch nicht in der App angemeldet.",userRemovedSuccess:"Benutzer erfolgreich entfernt",failedCancelInvitation:"Einladung konnte nicht abgebrochen werden",userLoggedInSinceRefresh:"Dieser Benutzer hat sich seit deiner letzten Aktualisierung angemeldet. Lade die Seite neu, um den aktualisierten Status zu sehen, bevor du es erneut versuchst.",failedRemoveUser:"Benutzer konnte nicht entfernt werden",subscriptionRequired:"Abonnement erforderlich",onlyPayingCanAdmin:"Nur zahlende Benutzer können andere Benutzer zu Admins machen.",upgradeSubscription:"Upgrade dein Abonnement",toContinue:"um fortzufahren.",userUpdatedSuccess:"Benutzer erfolgreich aktualisiert",userApprovedSuccess:"Benutzer erfolgreich genehmigt",failedApproveRequest:"Zugriffsanfrage konnte nicht genehmigt werden",invitationRejected:"Einladung abgelehnt",failedDenyRequest:"Zugriffsanfrage konnte nicht abgelehnt werden",invitationResentSuccess:"Einladung erfolgreich erneut gesendet",failedResendInvitation:"Einladung konnte nicht erneut gesendet werden",emailSent:"E-Mail gesendet",ownershipTransferResent:"Die Eigentümerübertragungseinladung wurde erneut gesendet.",transferCancelled:"Übertragung abgebrochen",ownershipTransferCancelled:"Die Eigentümerübertragung wurde abgebrochen.",failedCancelTransfer:"Übertragung konnte nicht abgebrochen werden",cancelInviteAction:"Einladung abbrechen",removeUser:"Benutzer entfernen",failedApproveUser:"Benutzer konnte nicht genehmigt werden",success:"Erfolg",error:"Fehler",save:"Speichern",deleteConfirm:"Bist du sicher, dass du diesen Datensatz löschen möchtest?",deleteFailed:"Löschen fehlgeschlagen"},lx={users:sx},cx="Soziale Inhalte",dx="Erstelle einen Social-Media-Werbeplan mit postfertigen Inhalten.",ux="Soziale Inhalte werden geladen",px={title:"Etwas ist schiefgelaufen",description:"Ein unerwarteter Fehler ist aufgetreten. Bitte aktualisiere die Seite.",tryAgain:"Erneut versuchen"},mx={emptyTitle:"Bewirb deine App in den sozialen Medien",emptyDescription:"Wir analysieren deine App und schlagen dir die besten Posts und Plattformen vor.",getStarted:"Meinen Content-Plan erstellen",learnMore:"Mehr erfahren",emptyCheck1:"Definiere, was du erreichen möchtest",emptyCheck2:"Finde die besten Kanäle für deine App",emptyCheck3:"Erhalte maßgeschneiderte Post-Ideen, die du sofort teilen kannst",analyzingBase:"Analyse deiner App",analyzingDescription:"Wir lernen deine App kennen – was sie macht, für wen sie ist und wie man sie am besten bewirbt.",combiningBase:"Deine Content-Strategie erstellen",combiningDescription:"Wir formen deine Botschaft und wählen die richtigen Kanäle für deinen Launch.",planStep1:"Deine Strategie anwenden",planStep2:"Content für jede Plattform anpassen",planStep3:"Post-Texte schreiben",planStep4:"Visuals für deine Posts erstellen",stepOf:"Schritt {{current}} von {{total}}"},gx={letsGo:"Los geht's",next:"Weiter",back:"Zurück",creatingPlan:"Deine Inhalte werden erstellt...",creatingPlanBase:"Deine Inhalte werden erstellt",strategyReady:"Vorgeschlagene Strategie"},hx={emptyTitle:"Bereit, deine App zu bewerben?",emptyDescription:"Beantworte die Fragen, um deinen Content zu personalisieren.",generateNewPlan:"Neuen Plan erstellen",downloadContent:"Inhalte herunterladen",downloading:"Wird heruntergeladen...",startFresh:"Neu starten"},fx={copy:"Kopieren",copied:"Kopiert",copiedToClipboard:"In die Zwischenablage kopiert",failedToCopy:"Kopieren fehlgeschlagen",cancel:"Abbrechen",save:"Speichern",imageGenerationFailed:"Bildgenerierung fehlgeschlagen",retryImage:"Erneut versuchen",download:"Bild herunterladen",expandImage:"In voller Größe anzeigen",close:"Schließen",regenerateImage:"Bild regenerieren",imageRefinePlaceholder:"Was möchtest du ändern?",imageAlt:"Beitragsvisual",share:"Teilen",editPostTitle:"Beitrag bearbeiten",descriptionLabel:"Beschreibung",imageLabel:"Bild",improveWithAI:"Mit KI verbessern",refineInputPlaceholder:"Was möchtest du ändern?",saveChanges:"Änderungen speichern"},vx={handle:"deinprofil",displayName:"Dein Name"},bx={reviewTitle:"Überprüfe deine vorgeschlagene Strategie",goalLabel:"Dein Ziel",approachLabel:"Vorgeschlagener Ansatz",strategyLabel:"Die Strategie",showMore:"Mehr anzeigen",showLess:"Weniger anzeigen",platformsLabel:"Zielplattformen",platformsDescription:"Wir haben die besten Plattformen für dein Business vorausgewählt.",editSelection:"Auswahl bearbeiten",selectPlatforms:"Wähle deine Plattformen",maxPlatforms:"Bis zu 3 Plattformen",toneLabel:"Deinen Ton anpassen (optional)",toneDescription:"Füge einen Link zu deinem Social-Media-Profil ein und wir passen die Posts an deinen Ton an.",generatePosts:"Posts erstellen"},yx={resetTitle:"Neuen Plan erstellen?",resetDescription:"Wir erstellen einen komplett neuen Plan für dich. Deine aktuellen Posts und Änderungen werden ersetzt und können nicht wiederhergestellt werden.",cancel:"Abbrechen",resetConfirm:"Neuen Plan erstellen",upgradeTitle:"Nicht genügend Integrations-Credits",upgradeDescription:"Du hast nicht genügend Integrations-Credits für diese Aktion. Upgrade deinen Plan, um mehr zu erhalten.",upgradeAction:"Plan upgraden"},kx={sendFailed:"Etwas ist schiefgelaufen",sendFailedDescription:"Die KI konnte nicht erreicht werden. Bitte versuche es erneut.",postUpdated:"Beitrag aktualisiert",postUpdateFailed:"Beitrag konnte nicht aktualisiert werden",postRefined:"Beitrag verfeinert",refineFailed:"Verfeinerung nicht möglich",refineFailedDescription:"Die KI konnte die Änderungen diesmal nicht anwenden. Bitte versuche es erneut.",imageGenerated:"Bild generiert!",imageGenerateFailed:"Bild konnte nicht generiert werden",imageGenerateFailedDescription:"Bei der Bildgenerierung ist etwas schiefgelaufen. Bitte versuche es erneut.",planReset:"Inhalte zurückgesetzt – bereit für einen Neustart",planResetFailed:"Zurücksetzen fehlgeschlagen",insufficientCredits:"Nicht genügend Integrations-Credits",insufficientCreditsDescription:"Deine Integrations-Credits sind aufgebraucht. Upgrade deinen Plan für mehr Credits.",downloadPartial:"Inhalte konnten nicht vollständig heruntergeladen werden",downloadPartialDescription:"Einige Bilder konnten nicht heruntergeladen werden. Bitte versuche es erneut."},wx={pageTitle:cx,pageSubtitle:dx,loadingBase:ux,errorBoundary:px,wizard:mx,steps:gx,toolbox:hx,post:fx,mock:vx,strategy:bx,dialog:yx,toast:kx},Ax={overview:"Übersicht",users:"Benutzer",data:"Daten",analytics:"Analysen",domains:"Domains",integrations:"Integrationen",security:"Sicherheit",code:"Code",agents:"Agenten",automations:"Automatisierungen",logs:"Protokolle",api:"API",settings:"Einstellungen",appSettings:"App-Einstellungen",authentication:"Authentifizierung",appTemplate:"App-Vorlage",secrets:"Geheimnisse",backToEditor:"Zurück zum Editor",codeFiles:"Code-Dateien",search:"Suchen...",clearSearch:"Suche löschen",virality:"Soziale Inhalte"},Sx="App-Daten werden geladen...",Cx="Papierkorb: {{entityName}}",Dx={issuesFound:"Probleme gefunden",inComponent:"In der Komponente {{componentName}}:",resolving:"Wird behoben...",resolveWithAI:"Mit KI beheben",noCreditDeduction:"Diese Aktion wird keine Credits von deinem Konto abziehen."},Tx={loadingCheckpoint:"Checkpoint-Code wird geladen...",errorFetchingFiles:"Fehler beim Abrufen der Dateien",backToPreview:"Zurück zur Vorschau"},Ex={letsBuild:"Lass uns deine App bauen",tellMeCreate:"Sag mir im Chat, was du erstellen möchtest",loadingApp:"Deine App wird geladen",buildingPreview:"Vorschau wird erstellt",previewPreparing:"Deine App-Vorschau wird vorbereitet.",mayTakeMoment:"Dies kann einen Moment dauern.",previewUnavailable:"Vorschau nicht verfügbar",previewCouldntLoad:"Die Vorschau für diese Version konnte nicht geladen werden.",retryBuild:"Build wiederholen",buildingIdea:"Deine Idee wird umgesetzt",didYouKnow:"Wusstest du schon?",packagePending:"Paketinstallation ausstehend",approvePackage:"Bitte genehmige die npm-Paketinstallation im Chat, um fortzufahren",loadingPreview:"Vorschau wird geladen…",refreshPreview:"Vorschau aktualisieren",capture:{verbDiscovering:"Entdecken",verbDesigning:"Gestalten",verbBuilding:"Erstellen",verbPolishing:"Verfeinern",verbUnveiling:"Enthüllen",verbStudying:"Analysieren",verbExtracting:"Extrahieren",verbReimagining:"Neugestalten",verbRefining:"Verfeinern",stageAnalyzingDesign:"Design wird analysiert",stageExtractingColorsAndFonts:"Farben & Schriften werden extrahiert",stageBuildingPages:"Seiten werden erstellt",stageCreatingComponents:"Komponenten werden erstellt",stageRefiningDetails:"Details werden verfeinert",stageAlmostThere:"Fast fertig",stageStudyingDesignLanguage:"Designsprache wird studiert",stageExtractingColorsAndTypography:"Farben & Typografie werden extrahiert",stageCraftingYourPages:"Deine einzigartigen Seiten werden erstellt",stageApplyingDesignInspiration:"Design-Inspiration wird angewendet",stageRefiningLookAndFeel:"Look & Feel wird verfeinert",yourSite:"deine Seite",aSiteInspiredBy:"eine Seite inspiriert von <site>{{siteName}}</site>",progress:"Fortschritt"},figma:{verbFetching:"Abrufen",verbExtracting:"Extrahieren",verbProcessing:"Verarbeiten",verbTransforming:"Transformieren",verbBuilding:"Erstellen",stageReadingDesign:"Figma-Design wird gelesen",stageProcessingStructure:"Designstruktur wird verarbeitet",stageHandlingAssets:"Assets werden verarbeitet & Code wird generiert",stageApplyingAI:"KI-Layout-Transformation wird angewendet",stageCompiling:"App wird kompiliert & finalisiert",yourFigmaDesign:"dein Figma-Design",defaultName:"Figma Import"}},Px={canvas:"Canvas",dashboard:"Dashboard",preview:"Vorschau",exitSplitScreen:"Geteilten Bildschirm beenden, um Vorschau zu sehen",versionHistory:"Versionshistorie",moreOptions:"Mehr Optionen",filesUsedInPage:"Auf dieser Seite verwendete Dateien",seeAllFiles:"Alle Dateien anzeigen",activityMonitor:"Aktivitätsmonitor",exportAsZip:"Projekt als ZIP exportieren",helpCenter:"Hilfecenter",actAsUser:"Als Benutzer:in agieren",viewAppNewTab:"Aktuelle Version ansehen",refreshPreview:"Vorschau aktualisieren",refresh:"Aktualisieren",switchToDesktop:"Zur Desktop-Ansicht wechseln",switchToMobile:"Zur mobilen Ansicht wechseln",showChatPanel:"Chat-Panel anzeigen",hideChatPanel:"Chat-Panel ausblenden",turnOffTestData:"Testdaten deaktivieren",turnOnTestData:"Testdaten aktivieren",shareApp:"App teilen",shareInviteUsers:"Teilen und Benutzer einladen",moreActions:"Weitere Aktionen",inviteCollaborators:"Mitarbeiter einladen",viewOnly:"Nur Ansicht",viewOnlyAccess:"Du hast nur Lesezugriff auf diese App",upgradeInfraTooltip:"Deine App ist bereit für ein schnelles Upgrade<br/>auf die neue Infrastruktur.",appOverview:"App-Übersicht",myApp:"Meine App",production:"Produktion",test:"Test",gitHub:"GitHub",gitHubConnection:"GitHub-Verbindung",collaborators:"Mitarbeiter",collaboratorDisplayYou:"{{name}} (Du)",collaboratorUnknown:"Unbekannt",addCollaborator:"Mitarbeiter hinzufügen",saving:"Speichern...",savedAgo:"Vor {{time}} gespeichert",unsavedChanges_one:"{{count}} ungespeicherte Änderung",unsavedChanges_other:"{{count}} ungespeicherte Änderungen",theme:"Thema",themeTitle:"Thema",themeDescription:"Diese Farben und Schriftarten bilden dein Thema. Alle Änderungen gelten überall.",themeColors:"Farben",themeFonts:"Schriftarten",noThemeColors:"Keine Themenfarben gefunden",themeSaveChanges:"Speichern und Anwenden",themeCancel:"Abbrechen",colorPickerCustom:"Benutzerdefiniert",colorPickerPalette:"Palette",fontPickerSearch:"Schriftarten suchen...",fontPickerBrandFonts:"Markenschriftarten",fontPickerAllFonts:"Alle Schriftarten",fontPickerNoResults:"Keine Schriftarten gefunden",fontPickerSelectFont:"Schriftart auswählen"},_x={desktop:"Desktop",tablet:"Tablet",mobile:"Mobil",isAvailable:"ist verfügbar",getDomain:"Domain erhalten",connectDomain:"Benutzerdefinierte Domain verbinden",undo:"Rückgängig",redo:"Wiederholen",fullscreen:"Vollbild",breakpoints:"Haltepunkte",splitView:"Geteilte Ansicht",exitSplitView:"Geteilte Ansicht beenden",exitPreview:"Vorschau beenden"},xx={upgrade:"Upgraden",upgradePlan:"Plan upgraden",percentOff:"{{percent}}% Rabatt",limitedTimeOffer:"Zeitlich begrenztes Willkommensangebot",getDiscountOff:"{{discount}} Rabatt auf ausgewählte Jahrespläne"},Ix={viewingVersionHistory:"Versionshistorie anzeigen",buildInProgress:"Build läuft...",retryBuildToEnable:"Build wiederholen, um diese Ansicht zu aktivieren",viewApp:"App anzeigen",viewCode:"Code anzeigen",restoring:"Wird wiederhergestellt...",restoreThisVersion:"Diese Version wiederherstellen",publishing:"Wird veröffentlicht...",publishThisVersion:"Diese Version veröffentlichen",exit:"Beenden",back:"Zurück",publish:"Veröffentlichen",restore:"Wiederherstellen",latest:"Neueste"},Rx={actAs:"Agieren als",actingAs:"Du agierst als",searchUser:"Nach einem bestimmten Benutzer suchen",anonymousGuest:"Anonymer Gast",you:"Du",warningChanges:"Jede Änderung wird in den Benutzerdaten widergespiegelt.",carefulChanges:"- sei vorsichtig, Änderungen hier betreffen diesen Benutzer",exitMode:"Modus beenden",noUsersYet:"Du hast noch keine Benutzer",addOrInvite:"Füge Benutzer hinzu oder lade sie ein, um zu sehen, wie deine App für sie funktioniert",invite:"Einladen",usersCount:"Benutzer ({{count}})",noMatchingUsers:"Keine passenden Benutzer gefunden",trySearching:"Versuche nach Name oder Rolle zu suchen"},zx={pressEnterNavigate:"Drücke Enter zum Navigieren"},Mx={publishApp:"App veröffentlichen",publish:"Veröffentlichen",publishing:"Wird veröffentlicht...",disabledUntilUpdate:"Veröffentlichung ist deaktiviert, bis du das Infrastruktur-Update abgeschlossen hast.",currentlyDisabled:"Veröffentlichung ist derzeit deaktiviert",codeNotGenerated:"Die Veröffentlichung wird aktiviert, sobald deine App bereit ist",visualEditsSaveWarning:"Einige visuelle Änderungen konnten vor der Veröffentlichung nicht gespeichert werden",republishApp:"App erneut veröffentlichen",lastPublished:"Zuletzt veröffentlicht {{time}}"},Nx={whatToChange:"Was möchtest du ändern?",whatToDiscuss:"Was möchtest du besprechen?",saveChangesBeforeTyping:"Änderungen speichern, bevor du tippst",exitEditModeToContinue:"Bearbeitungsmodus verlassen, bevor du tippst",fetchingFromGitHub:"Wird von GitHub abgerufen...",viewOnlyAccess:"Du hast nur Lesezugriff",zeroCreditsRemaining:"0 Credits übrig",visualEdit:"Bearbeiten",visualEditDisabledAgentRunning:"Visuelle Bearbeitung nicht verfügbar, während der Agent läuft",edit:"Bearbeiten",discuss:"Besprechen",ask:"Element bearbeiten",editData:"Daten bearbeiten",discussMode:"Besprechungsmodus",discussModeDescription:"Chatte mit der KI über alles, ohne Code-Änderungen vorzunehmen. Verbraucht 0,3 Credits pro Anfrage.",thought:"Nachgedacht",thoughtWithDuration:"Nachgedacht <duration>für {{duration}}</duration>",planningNextSteps:"Nächste Schritte werden geplant...",signUpToStartBuilding:"Registriere dich, um mit dem Bauen zu beginnen...",suggestions:"Vorschläge",latestMessages:"Neueste Nachrichten",aiModel:"KI-Modell",aiControls:"KI-Steuerung",uploadFile:"Vom Computer hochladen",uploadFileMobile:"Vom Gerät hochladen",addFromGoogleDrive:"Von Google Drive hochladen",connectorRequestFailed:"Konnektor-Anfrage konnte nicht gesendet werden. Bitte versuche es erneut.",designingYourWebsite:"deine Website wird gestaltet...",speechToText:"Spracherkennung",processingAudio:"Audio wird verarbeitet...",clickToStopRecording:"Aufnahme stoppen"},Fx={dialogTitle:"Befehlspalette des Builders",dialogDescription:"Im Builder nach Seiten, Dateien, Entitäten, Ansichten und Schnellaktionen suchen.",searchPlaceholder:"Seiten, Dateien, Entitäten, Ansichten und Schnellaktionen durchsuchen...",emptyTitle:"Kein passender Befehl",emptyDescription:"Nach einem Seitennamen, Dateipfad, Entitätsnamen, einer Editor-Ansicht oder einer Schnellaktion wie Testdaten suchen.",homeSubtitle:"Startseite",navigationSubtitle:"Dashboard",viewSubtitle:"Editor-Ansicht",entityDataSubtitle:"Daten",entityCodeSubtitle:"Code",integrationsSubtitle:"Integrationen",domainSubtitle:"Eigene Domain",collaboratorsSubtitle:"Mitwirkende",helpSubtitle:"Hilfe-Center",publishSubtitle:"Bereitstellen und teilen",publishNowSubtitle:"Neueste Änderungen veröffentlichen",versionHistorySubtitle:"Versionsverlauf",securitySubtitle:"Sicherheit",testDataSubtitle:"Zu Testdaten wechseln",productionDataSubtitle:"Zu Produktionsdaten wechseln",backToWorkspace:"Zurück zum Workspace",switchToPreview:"Zur Vorschau wechseln",switchToDashboard:"Zum Dashboard wechseln",switchToCode:"Zum Code wechseln",switchToCanvas:"Zur Canvas wechseln",openEntityData:"{{entityName}}-Daten öffnen",openEntityCode:"{{entityName}}-Code öffnen",addIntegration:"Integration hinzufügen",addDomain:"Domain hinzufügen",inviteCollaborator:"Mitwirkenden einladen",getHelp:"Hilfe erhalten",publishMyApp:"Meine App veröffentlichen",publishNow:"Jetzt veröffentlichen",versionHistory:"Versionsverlauf anzeigen",startSecurityCheck:"Sicherheitsprüfung starten",turnOnTestData:"Testdaten einschalten",turnOffTestData:"Testdaten ausschalten",groups:{navigate:"Navigieren",views:"Ansichten",files:"Dateien",entities:"Entitäten",actions:"Aktionen"}},Lx="Unbekannte Ansicht",jx="App-Editor",Ox="Beta",Bx={title:"Mitarbeiter einladen",subtitle:"Gib anderen Zugang zur Bearbeitung dieser App.",emailPlaceholder:"E-Mails eingeben, durch Kommas getrennt",removeIneligible:"Nicht berechtigte Benutzer entfernen",appCollaborators:"App-Mitarbeiter",you:"(Du)",owner:"Eigentümer",moreActions:"Weitere Aktionen",makeAppOwner:"Zum App-Eigentümer machen",removeCollaborator:"Mitarbeiter entfernen",resendOwnershipRequest:"Eigentumsanfrage erneut senden",getOwnershipLink:"Eigentumslink abrufen",cancelOwnershipRequest:"Eigentumsanfrage abbrechen",ownershipTooltip:"Der neue Eigentümer muss die Übertragung per E-Mail-Einladung akzeptieren. Die Einladung läuft in 7 Tagen ab. Du erhältst eine E-Mail, wenn die Übertragung abgeschlossen ist.",removeTitle:"Diesen Mitarbeiter aus deiner App entfernen?",removeDescription:"Durch das Entfernen dieses Mitarbeiters wird sein Zugang zum Editor sofort widerrufen und er kann keine Änderungen mehr an der App vornehmen.",removeAccessOnly:"Nur Mitarbeiterzugang entfernen",removeAccessOnlyDesc:"Der Benutzer wird weiterhin in der Benutzerliste angezeigt",removeEntirely:"Vollständig aus der App entfernen",removeEntirelyDesc:"Der Benutzer wird auch aus der Benutzerliste entfernt",cancel:"Abbrechen",enterEmail:"Bitte eine E-Mail-Adresse eingeben",invalidEmail:"Ungültige E-Mail",invalidEmails:"Eine oder mehrere E-Mail-Adressen sind ungültig. Bitte überprüfe sie und versuche es erneut.",cannotInviteOwner:"Du kannst den Eigentümer dieser App nicht einladen",alreadyExists:"Mitarbeiter existiert bereits.",alreadyExist:"Mitarbeiter existieren bereits.",invitationSent:"Mitarbeitereinladung erfolgreich gesendet",invitationsSent:"{{count}} Mitarbeitereinladungen erfolgreich gesendet",removedFromApp:"Mitarbeiter aus der App entfernt",accessRemoved:"Mitarbeiterzugang entfernt",ownershipResent:"Eigentumsanfrage erfolgreich erneut gesendet",ownershipLinkCopied:"Eigentumslink in die Zwischenablage kopiert",ownershipCancelled:"Eigentumsanfrage abgebrochen",failedToSendInvitation:"Einladung konnte nicht gesendet werden",failedToRemoveCollaborator:"Mitarbeiter konnte nicht entfernt werden",failedToResendOwnership:"Eigentumsanfrage konnte nicht erneut gesendet werden",failedToGetOwnershipLink:"Eigentumslink konnte nicht abgerufen werden",failedToCancelOwnership:"Eigentumsanfrage konnte nicht abgebrochen werden",creditsWarning:"Alle Mitarbeiter verbrauchen Credits aus dem Arbeitsbereich.",notWorkspaceMember:"Kein Arbeitsbereich-Mitglied",notMemberDescription_one:"<bold>{{emails}}</bold> ist kein Mitglied dieses Arbeitsbereichs.",notMemberDescription_other:"<bold>{{emails}}</bold> sind keine Mitglieder dieses Arbeitsbereichs.",addAsGuest:"Als Gast hinzufügen",addAsGuestDescription:"Der Benutzer wird als Gast mit Zugang nur zu dieser App hinzugefügt.",addToWorkspace:"Zum Arbeitsbereich hinzufügen",addToWorkspaceDescription:"Gehe zu den Arbeitsbereich-Einstellungen, um als vollständiges Mitglied hinzuzufügen.",guestBadge:"Gast",emailListOverflow:"{{first}} und {{count}} weitere",pendingInvitationWarning_one:"Dieser Benutzer hat bereits eine ausstehende Einladung als Mitglied des Arbeitsbereichs. Das Hinzufügen als Gast wird diese ersetzen.",pendingInvitationWarning_other:"{{count}} dieser Benutzer haben bereits ausstehende Einladungen als Mitglieder des Arbeitsbereichs. Das Hinzufügen als Gäste wird diese ersetzen."},Ux={title:"Ihre Integrations-Credits sind aufgebraucht",description:"Dies kann dazu führen, dass Benutzer in Ihrer App bestimmte Aktionen nicht ausführen können.",upgradeLink:"Plan upgraden, um mehr Credits zu erhalten",dismiss:"Banner schließen"},qx={gathering:"Wird gesammelt",gathered:"Gesammelt",connectorsInformation:"Connector-Informationen",write:"Schreiben",writing:"Schreiben",wrote:"Geschrieben",generatingImage:"Bild generieren",generatedImage:"Bild generiert",reading:"Lesen",read:"Gelesen",deleting:"Löschen",deleted:"Gelöscht",editing:"Bearbeiten",edited:"Bearbeitet",edit:"Bearbeiten",creating:"Erstellen",created:"Erstellt",updating:"Aktualisieren",updated:"Aktualisiert",update:"Aktualisieren",delete:"Löschen",importing:"Importieren",imported:"Importiert",import:"Importieren",searching:"Suchen",searched:"Gesucht",searchingForBugs:"Suche nach Fehlern...",searchedBugs:"Fehlersuche abgeschlossen",install:"Installieren",installing:"Installieren",installed:"Installiert",analyzing:"Analysieren",running:"Ausführen",failed:"Fehlgeschlagen",run:"Ausführen",settingSecrets:"Geheimnisse setzen",setSecret:"Geheimnis gesetzt",setSecrets:"Geheimnisse setzen",testing:"Testen",checking:"Prüfen",tested:"Getestet",checked:"Geprüft",fetching:"Abrufen",fetched:"Abgerufen",waitingForApproval:"Warte auf Genehmigung...",searchedDocsFor:"Dokumentation durchsucht für",searchingDocsFor:"Dokumentation durchsuchen für",searchedFor:"Gesucht nach",searchingFor:"Suche nach",foundResult_one:"{{count}} Ergebnis gefunden",foundResult_other:"{{count}} Ergebnisse gefunden",toggling:"Umschalten",toggled:"Umgeschaltet",listing:"Auflisten",listed:"Aufgelistet",approvalRequired:"Genehmigung erforderlich",changesPending_one:"{{count}} ausstehende Änderung",changesPending_other:"{{count}} ausstehende Änderungen",approve:"Genehmigen",approving:"Genehmigung...",reject:"Ablehnen",rejected:"abgelehnt",rejecting:"Ablehnung...",approveCount:"Genehmigen ({{count}})",rejectAll:"Alle ablehnen",previousApproval:"Diese Genehmigungsanfrage stammt aus einer früheren Nachricht",query:"Abfrage:",updateFallback:"{{entityName}} aktualisieren",updateFallbackSingle:"{{fieldName}} auf {{fieldValue}} setzen bei {{entityName}}",updateFallbackMultiple:"{{fieldName}} auf {{fieldValue}} setzen (+{{extraFields}} weitere) bei {{entityName}}",deleteFallback:"{{entityName}}-Einträge löschen",updateWith:"Aktualisieren mit:",importComplete:"Import abgeschlossen",importingData:"Daten werden importiert...",percentComplete:"{{percent}}% abgeschlossen",recordsProgress:"{{current}} / {{total}} Datensätze",preparing:"Vorbereitung...",otherToolsAfterApproval:"Andere Tools werden nach der Genehmigung ausgeführt",loadingConfig:"Konfiguration wird geladen...",fetchConfigError:"Konfiguration konnte nicht geladen werden.",retry:"Erneut versuchen",countPackages:"{{num}} Pakete:",updateAllEntityRecords:"Alle Datensätze von <entity>{{entityName}}</entity> aktualisieren",updateEntityRecordsMatching:"Datensätze von <entity>{{entityName}}</entity> mit Übereinstimmung aktualisieren:",deleteAllEntityRecords:"Alle Datensätze von <entity>{{entityName}}</entity> löschen",deleteEntityRecordsMatching:"Datensätze von <entity>{{entityName}}</entity> mit Übereinstimmung löschen:",importDataFromInto:"Daten von <file>{{fileName}}</file> in <entity>{{entityName}}</entity> importieren",importDataFromSheetInto:"Daten von <file>{{fileName}}</file> (Blatt: <sheet>{{sheetName}}</sheet>) in <entity>{{entityName}}</entity> importieren",countRecordsIntoEntity:"{{num}} Datensätze in <entity>{{entityName}}</entity>",dataIntoEntity:"Daten in <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} Datensätze <entity>{{entityName}}</entity>",allEntityRecords:"alle Datensätze von <entity>{{entityName}}</entity>",entityRecords:"Datensätze von <entity>{{entityName}}</entity>",grepSearching:'Suche nach "{{pattern}}"...',grepSearchComplete:"Suche abgeschlossen",grepFoundResults_one:"{{count}} Ergebnis gefunden",grepFoundResults_other:"{{count}} Ergebnisse gefunden",grepInFiles_one:"in {{count}} Datei",grepInFiles_other:"in {{count}} Dateien"},Vx={chatOnlyDescription:"Diese Einstellung ist jetzt nur über den Chat zugänglich.",description:"Legen Sie die Standard-Startseite für Ihre App fest",chatHint:"Um dies zu ändern, schreiben Sie im Chat:",prompt:"Ändere die Hauptseite zu {PageName}",placeholder:"Hauptseite",copiedToast:"In die Zwischenablage kopiert"},$x={confirmMessage:"Bist du sicher, dass du diese App offline nehmen möchtest? Sie wird für Benutzer nicht mehr zugänglich sein, bis du sie wieder veröffentlichst.",successTitle:"Erfolg",successDescription:"App erfolgreich offline genommen",errorTitle:"Fehler",errorDescription:"App konnte nicht offline genommen werden",description:"Nimm deine App offline. Du kannst sie jederzeit wieder veröffentlichen.",unpublishing:"Wird offline genommen...",button:"Offline nehmen"},Wx={title:"App löschen",description:"Diese Aktion kann <strong>nicht</strong> rückgängig gemacht werden. Die App <strong>{{appSlug}}</strong> und alle zugehörigen Daten werden dauerhaft gelöscht.",descriptionSimple:"<strong>{{displayName}}</strong> wird dauerhaft gelöscht.<br/>Alle App-Daten, der Verlauf, Benutzer, Domains und Integrationen werden unwiderruflich entfernt. <danger>Diese Aktion kann nicht rückgängig gemacht werden.</danger>",confirmLabel:"Zur Bestätigung geben Sie <strong>{{appSlug}}</strong> unten ein:",cancel:"Abbrechen",deleteButton:"Diese App löschen",deleting:"Wird gelöscht...",successTitle:"Erfolg",successDescription:"App erfolgreich gelöscht",errorTitle:"Fehler",errorDescription:"App konnte nicht gelöscht werden"},Gx={using:"Fähigkeit {{name}} wird verwendet",failed:"Fähigkeit {{name}} konnte nicht verwendet werden",used:"Fähigkeit {{name}} wurde verwendet"},Hx={thinkingIdeas:"{{agentName}} denkt über Ideen nach...",ideasFrom:"Ideen von {{agentName}}"},Yx="Automatisierung wird erstellt...",Kx="Automatisierung konnte nicht erstellt werden",Zx="Automatisierung",Jx=JSON.parse(`{"sidebar":{"chat":"Chat","continueOnWhatsApp":"Auf WhatsApp fortsetzen","continueOnTelegram":"Auf Telegram fortsetzen","continueOnLine":"Auf LINE fortsetzen","continueOnIMessage":"Auf iMessage fortsetzen","imessage":"iMessage","brain":"Gehirn","integrations":"Integrationen","knowledge":"Wissen","memory":"Gedächtnis","payments":"Zahlungen","tasks":"Aufgaben","artifacts":"Artefakte","settings":"Einstellungen","secretsAndKeys":"Geheimnisse & Schlüssel","security":"Sicherheit","credits":"Credits","whatsapp":"WhatsApp","telegram":"Telegram","line":"LINE","files":"Dateien","uploadFile":"Datei hochladen","refreshFiles":"Dateien aktualisieren","searchFiles":"Dateien suchen...","filesFolders":"{{fileCount}} Dateien · {{folderCount}} Ordner","toolsPermission":"Werkzeugberechtigungen","apiDocs":"API","channels":"Kanäle","feedback":"Feedback geben","agentSettings":"Agenteneinstellungen","dangerZone":"Gefahrenzone"},"filePanel":{"source":"Quelle","preview":"Vorschau","save":"Speichern","saveAndRedeploy":"Speichern & neu bereitstellen","fileSaved":"Datei gespeichert","functionRedeployed":"Funktion gespeichert und neu bereitgestellt","failedToSaveFile":"Datei konnte nicht gespeichert werden","failedToRedeploy":"Funktion konnte nicht neu bereitgestellt werden","failedToReadFile":"Datei konnte nicht gelesen werden"},"modelPicker":{"automatic":"Automatisch","automaticDescription":"Automatisch das beste KI-Modell für jede Anfrage","manual":"Manuell","manualDescription":"Ein bestimmtes KI-Modell auswählen.","manualCreditNote":"Der Credit-Verbrauch kann je nach Modell variieren","manualDisabledDescription":"Ein bestimmtes KI-Modell auswählen ({{models}}). Verfügbar ab dem Builder-Plan.","builderPlus":"Builder+","upgradeToSelect":"Upgrade, um ein KI-Modell auszuwählen"},"chat":{"loadingAgent":"Agent wird geladen...","agentNotFound":"Agent nicht gefunden","waitingForAuth":"Warte auf Authentifizierungstoken...","anErrorOccurred":"Ein Fehler ist aufgetreten","aiModelUpdated":"KI-Modell aktualisiert","failedToUpdateModel":"KI-Modell konnte nicht aktualisiert werden","hideSidebar":"Seitenleiste ausblenden","showSidebar":"Seitenleiste anzeigen","darkMode":"Zu dunklem Modus wechseln","lightMode":"Zu hellem Modus wechseln","dropFileHere":"Datei hier ablegen","imagesDocsAndMore":"Bilder, Dokumente und mehr","loadPreviousMessages":"Vorherige Nachrichten laden","somethingWentWrong":"Etwas ist schiefgelaufen","retry":"Erneut versuchen","chatFromApp":"Chatte mit mir über eine App, die du bereits nutzt","attachFile":"Dateien anhängen","typeMessage":"Nachricht eingeben...","toggleLiveBrowser":"Live-Browser umschalten","noActiveBrowser":"Keine aktive Browser-Sitzung","stopGenerating":"Generierung stoppen","suggestions":"Vorschläge","liveBrowser":"Live-Browser","fullScreen":"Vollbild","exitFullScreen":"Vollbild beenden","closeBrowser":"Browser schließen","live":"Live","expandBrowser":"Browser erweitern","failedToStartConversation":"Konversation konnte nicht gestartet werden – versuche, manuell eine Nachricht zu senden.","failedToLoadConversation":"Konversation konnte nicht geladen werden","failedToUploadFile":"Datei konnte nicht hochgeladen werden","tooManyFiles":"Sie können bis zu {{max}} Dateien pro Nachricht anhängen","failedToSendMessage":"Nachricht konnte nicht gesendet werden","failedToStopAgent":"Agent konnte nicht gestoppt werden","queued":"In der Warteschlange ({{count}})","queueFull":"Die Warteschlange ist voll. Bitte warten Sie, bis der Agent fertig ist.","failedToEditQueued":"Nachricht in der Warteschlange konnte nicht bearbeitet werden","failedToDeleteQueued":"Nachricht aus der Warteschlange konnte nicht entfernt werden","deleteMessage":"Nachricht löschen","failedToDeleteMessage":"Nachricht konnte nicht gelöscht werden","today":"Heute","yesterday":"Gestern","thinking":"Denke nach...","you":"Du","failedToSubmitToolInput":"Tool-Eingabe konnte nicht übermittelt werden","whatsInImage":"Was ist auf diesem Bild?","heresAFile":"Hier ist eine Datei: {{fileName}}","heresAFileAndMore":"Hier ist eine Datei: {{fileName}} (+{{count}} weitere)","heresFiles":"Hier sind {{count}} Dateien","whatsInTheseImages":"Was ist auf diesen {{count}} Bildern?","creditsRunningLow":"Ihre Credits gehen zur Neige.","purchaseMoreCredits":"Weitere Credits kaufen →","saleDiscount":"Erhalten Sie {{discount}} Rabatt auf ausgewählte Jahrespläne","limitedTimeOffer":"Zeitlich begrenztes Angebot","upgradePlan":"Plan aktualisieren","reply":"Antworten","copyMessage":"Kopieren","copied":"Kopiert"},"files":{"uploaded":"{{fileName}} hochgeladen","failedToUpload":"{{fileName}} konnte nicht hochgeladen werden","failedToRead":"{{fileName}} konnte nicht gelesen werden"},"dashboard":{"title":"Dashboard","subtitle":"Übersicht deines Agenten.","created":"Erstellt am {{date}}","memories":"Erinnerungen","filesLabel":"Dateien","folders":"Ordner","agentMemory":"Agent-Speicher","noMemoriesYet":"Noch keine Erinnerungen","noMemoriesDescription":"Dein Agent speichert gelernte Informationen hier, während du chattest."},"creditsTab":{"title":"Credits","description":"Credit-Verbrauch und Abrechnungsdetails werden hier angezeigt."},"settingsTab":{"settings":"Einstellungen","secrets":"Geheimnisse","security":"Sicherheit","creditCard":"Kreditkarte"},"agentSettingsTab":{"title":"Agenteneinstellungen","subtitle":"Konfigurieren Sie, wie Ihr Agent arbeitet.","cloneTitle":"Agent klonen","cloneDescription":"Erstellen Sie eine Kopie dieses Agenten mit allen Konfigurationen, Entitäten und Backend-Funktionen.","cloneButton":"Agent klonen"},"clonePage":{"back":"Zurück","title":"Agent klonen","subtitle":"Wählen Sie aus, was in den geklonten Agenten übernommen werden soll.","optionChat":"Chatverlauf","optionChatDesc":"Den Builder-Chatverlauf in den neuen Agenten kopieren.","optionSkills":"Fähigkeiten","optionSkillsDesc":"Backend-Funktionen, Integrationen und Tool-Konfigurationen kopieren.","optionTasks":"Aufgaben","optionTasksDesc":"Automatisierungen kopieren (geplant, entitätsbasiert und Connector-basiert).","optionSecrets":"API-Schlüssel","optionSecretsDesc":"Gespeicherte Geheimnisse und API-Schlüssel in den neuen Agenten kopieren.","cloneButton":"Agent klonen","cloning":"Wird geklont...","cloneError":"Fehler beim Klonen des Agenten"},"securityTab":{"title":"Sicherheit","subtitle":"Führe einen Sicherheitsscan durch, um potenzielle Schwachstellen zu erkennen.","scanning":"Wird gescannt...","runScan":"Sicherheitsscan starten","noIssues":"Keine Probleme gefunden","agentSecure":"Dein Agent sieht sicher aus.","severityCount":"{{severity}} Schweregrad","idleMessage":"Klicke auf „Sicherheitsscan starten“, um deinen Agenten auf Schwachstellen zu prüfen.","scanFailed":"Sicherheitsscan fehlgeschlagen"},"secretsTab":{"title":"Geheimnisse","subtitle":"Umgebungsvariablen, die den Backend-Funktionen deines Agenten zur Verfügung stehen.","noSecrets":"Noch keine Geheimnisse","addSecret":"Geheimnis hinzufügen","secretNamePlaceholder":"SECRET_NAME","valuePlaceholder":"Wert","add":"Hinzufügen","secretSaved":"Geheimnis {{name}} gespeichert","failedToSave":"Geheimnis konnte nicht gespeichert werden","secretDeleted":"Geheimnis {{name}} gelöscht","failedToDelete":"Geheimnis konnte nicht gelöscht werden","failedToLoad":"Geheimnisse konnten nicht geladen werden"},"billingTab":{"title":"Agent-Kreditkarte","subtitle":"Verbrauch und Abrechnung für deinen Agenten.","monthlyUsage":"Monatlicher Verbrauch","extraCredits":"+{{count}} zusätzliche Credits verfügbar","pastDue":"Zahlung überfällig","pastDueDescription":"Bitte aktualisiere deine Zahlungsmethode, um eine Dienstunterbrechung zu vermeiden.","goodStanding":"Konto in gutem Zustand","currentPeriod":"Aktueller Zeitraum:","nextPeriod":"Nächster Zeitraum beginnt:","manageBilling":"Abrechnung verwalten","failedToLoad":"Verbrauchsdaten konnten nicht geladen werden","unableToLoad":"Abrechnungsdaten konnten nicht geladen werden"},"apiDocsTab":{"title":"API-Referenz","subtitle":"Nutze die REST-API, um programmgesteuert mit deinem Agenten zu interagieren. Erstelle Konversationen, sende Nachrichten und verwalte Erinnerungen aus jeder Anwendung heraus.","baseUrl":"Basis-URL","authentication":"Authentifizierung","authDescription":"Füge deinen API-Schlüssel im Request-Header hinzu:","authAlternative":"Alternativ kannst du ihn als Query-Parameter übergeben:","quickStart":"Schnellstart","quickStartDescription":"Folge diesen Schritten, um über die API mit deinem Agenten zu chatten:","step1CreateConversation":"1. Erstelle eine Konversation","step2SendMessage":"2. Sende eine Nachricht","step3ListConversations":"3. Liste Konversationen auf","endpoints":"API-Endpunkte","requestBody":"Request-Body","listConversationsDesc":"Alle Konversationen für den authentifizierten Benutzer auflisten","listConversationsNote":"Gibt Konversationen nach Erstellungsdatum sortiert zurück. Unterstützt Paginierung über Query-Parameter.","getConversationDesc":"Eine bestimmte Konversation mit allen Nachrichten abrufen","createConversationDesc":"Eine neue Konversation mit dem Agenten erstellen","sendMessageDesc":"Eine Nachricht senden und die Antwort des Agenten erhalten","sendMessageNote":"Der Agent verarbeitet die Nachricht und gibt seine Antwort zurück. Die maximale Nachrichtenlänge beträgt 8000 Zeichen.","deleteMessageDesc":"Eine bestimmte Nachricht aus einer Konversation löschen","listMemoryDesc":"Die Erinnerungseinträge des Agenten auflisten","deleteMemoryDesc":"Einen bestimmten Erinnerungseintrag löschen","responseFormat":"Antwortformat","responseFormatDescription":"Konversationen werden als JSON-Objekte mit einem Nachrichten-Array zurückgegeben:","rateLimits":"Ratenlimits","rateLimitsDescription":"API-Anfragen sind pro Benutzer ratenbegrenzt. Wenn du das Limit überschreitest, erhältst du den Statuscode 429. Warte kurz und versuche es erneut.","errorCodes":"Fehlercodes","error401":"Nicht autorisiert - ungültiger oder fehlender API-Schlüssel","error403":"Verboten - du hast keinen Zugriff auf diese Ressource","error400":"Ungültige Anfrage - fehlerhafte Eingabe (z. B. Nachricht zu lang)","error404":"Nicht gefunden - Konversation oder Ressource existiert nicht","copy":"Kopieren"},"toolsPermissionTab":{"title":"Werkzeugberechtigungen","subtitle":"Bestimmte Aktionen ohne Ihre Bestätigung ausführen lassen.","warning":"Wenn aktiviert, führt der Agent diese Aktionen eigenständig aus. Ihre Datensicherheitsregeln gelten weiterhin.","updateData":"Daten aktualisieren","updateDataDescription":"Den Agenten Datensätze ohne Nachfrage aktualisieren lassen.","deleteData":"Daten löschen","deleteDataDescription":"Den Agenten Datensätze ohne Nachfrage löschen lassen.","failedToSave":"Einstellungen konnten nicht gespeichert werden","effectNote":"Einstellungen werden sofort wirksam. KI-Antworten folgen den Regeln möglicherweise nicht immer perfekt.","connectorRulesTitle":"Konnektor-Regeln","connectorRulesSubtitle":"Legen Sie fest, was der Agent mit jedem Dienst tun darf und was nicht.","connectorRulePlaceholder":"z. B. Nur E-Mails lesen, niemals senden oder löschen","loadingConnectors":"Konnektoren werden geladen...","saveRules":"Speichern","rulesSaved":"Konnektor-Regeln gespeichert"},"knowledgeTab":{"noFiles":"Noch keine Wissensdateien","noFilesDescription":"Beginne einen Chat mit deinem Agenten, um seine Identität und sein Wissen aufzubauen","identity":"Identität"},"memoryTab":{"title":"Gedächtnis","subtitle":"Was dein Agent über dich und deine Gespräche weiß.","emptyTitle":"Noch nichts vorhanden","emptyDescription":"Während du chattest, baut dein Agent automatisch Gedächtnis auf – Kontext aus letzten Nachrichten, Sitzungszusammenfassungen und wichtige Fakten.","addEntry":"Hinzufügen","saveEntry":"Speichern","cancelEdit":"Abbrechen","titlePlaceholder":"Was soll sich der Agent merken?","contentPlaceholder":"Weitere Details hinzufügen (optional)","saved":"Gedächtnis aktualisiert","failedToSave":"Aktualisierung fehlgeschlagen","factsHeading":"Gespeicherte Fakten","factsDescription":"Wichtige Fakten, die über alle Gespräche hinweg bestehen bleiben.","noMemories":"Keine gespeicherten Fakten","noMemoriesDescription":"Wichtige Fakten werden automatisch aus Gesprächen extrahiert, oder du kannst sie manuell hinzufügen.","shortTermHeading":"Kurzzeitgedächtnis","shortTermDescription":"Kontext aus dem aktuellen Gespräch, alle ~10 Nachrichten aktualisiert.","shortTermUpdated":"Aktualisiert","shortTermDeleted":"Gelöscht","deleteShortTermConfirm":"Diesen Kontext entfernen? Der Agent verliert diesen Teil des Gesprächsverlaufs.","longTermHeading":"Tägliche Sitzungen","longTermDescription":"Eine Zusammenfassung der Gespräche jedes Tages.","longTermDeleted":"Gelöscht","deleteLongTermConfirm":"Diese Tages-Sitzung löschen? Der Agent verliert den Zugang zu diesem Gesprächsverlauf.","messages":"{{count}} Nachr.","emptyTranscript":"Leeres Transkript","noText":"(kein Text)","usedTools":"Verwendet: {{tools}}"},"telegramTab":{"title":"Telegram","connected":"Dein Telegram-Bot ist verbunden und aktiv.","notConnected":"Verbinde einen Telegram-Bot, damit Nutzer mit deinem Agenten chatten können.","connectedBot":"Verbundener Bot","botName":"Bot-Name","username":"Benutzername","status":"Status","active":"Aktiv","verifyBanner":"Klicken Sie auf die Schaltfläche unten, um Ihre Identität auf Telegram zu bestätigen. So wird sichergestellt, dass nur Sie diesen Bot verwenden können.","verifyOnTelegram":"Auf Telegram verifizieren","openTelegram":"In Telegram öffnen","scanQr":"Scanne den QR-Code mit deinem Handy, um den Bot in Telegram zu öffnen.","disconnect":"Trennen","disconnectConfirm":"Diesen Telegram-Bot trennen? Nutzer erhalten keine Antworten mehr.","disconnected":"Telegram-Bot getrennt","failedToDisconnect":"Trennung fehlgeschlagen","howItWorks":"So funktioniert es","step1":"Nutzer öffnen deinen Bot in Telegram und senden /start.","step2":"Jede Textnachricht wird von deinem Agenten verarbeitet.","step3":"Die Antwort des Agenten wird im Telegram-Chat zurückgesendet."},"telegramSetup":{"connectTitle":"Telegram verbinden","connectDescription":"Erstellen Sie mit einem Klick einen Telegram-Bot für Ihren Agenten. Er wird automatisch eingerichtet und ist sofort chatbereit.","autoCreateButton":"Telegram-Bot verbinden","autoWaitingTitle":"Bot-Erstellung läuft...","autoWaitingDescription":"Bestätige den Bot in Telegram, dann richten wir alles automatisch ein.","autoTimeoutError":"Zeitüberschreitung bei der Bot-Erstellung. Bitte versuchen Sie es erneut oder nutzen Sie die manuelle Einrichtung.","autoExpiredError":"Bot-Erstellung fehlgeschlagen. Bitte versuchen Sie es erneut.","cancel":"Abbrechen","alreadyHaveBot":"Ich habe schon einen Bot-Token","pasteTokenTitle":"Mit Token verbinden","manualInstructions":"Erstellen Sie einen Bot über @BotFather in Telegram und fügen Sie den Token hier ein.","tokenPlaceholder":"Bot-Token einfügen...","tokenExtracted":"Token extrahiert","tokenNotFound":"Kein gültiger Token gefunden","connectBot":"Verbinden","connecting":"Verbindung wird hergestellt...","successTitle":"Bot verbunden!","openTelegram":"In Telegram öffnen","failedToConnect":"Bot konnte nicht verbunden werden"},"whatsappTab":{"title":"WhatsApp","subtitle":"Ermögliche Nutzern, über WhatsApp mit deinem Agenten zu chatten.","connectTitle":"WhatsApp verbinden","connectDescription":"Klicke auf die Schaltfläche unten, um WhatsApp zu öffnen und die Verbindung zu aktivieren. Du erhältst einen Aktivierungscode, den du an die WhatsApp-Nummer des Agenten senden kannst.","openWhatsApp":"WhatsApp öffnen","scanQr":"Scanne den QR-Code mit deinem Handy, um die Konversation in WhatsApp zu öffnen.","howItWorks":"So funktioniert es","step1":"Klicke auf „WhatsApp öffnen“ – dies öffnet WhatsApp mit einem vorausgefüllten Aktivierungscode.","step2":"Sende den Aktivierungscode, um die Verbindung zu starten.","step3":"Nach der Verbindung wird jede Nachricht, die du auf WhatsApp sendest, von deinem Agenten bearbeitet."},"lineTab":{"title":"LINE","subtitle":"Chatte mit deinem Agenten auf LINE.","connectTitle":"Über LINE verbinden","connectDescription":"Erstelle einen Aktivierungscode, scanne den QR-Code auf deinem Handy und sende den Code.","generateCode":"Aktivierungscode erstellen","generating":"Wird erstellt...","regenerate":"Neuen Code erstellen","codeCopied":"Code kopiert!","codeExpiry":"Läuft in 30 Minuten ab","failedToGenerate":"Verbindung zu LINE fehlgeschlagen","howItWorks":"So funktioniert es","step1":"Klicke auf „Aktivierungscode erstellen“, um Code und QR zu erhalten.","step2":"Scanne den QR-Code mit LINE auf deinem Handy, um den Bot als Freund hinzuzufügen.","step3":"Sende den Aktivierungscode als Nachricht an den Bot, um die Verbindung herzustellen.","scanQrLabel":"Mit LINE scannen","scanQrHint":"Öffne LINE auf deinem Handy und scanne diesen QR-Code, um den Bot hinzuzufügen.","activationCodeLabel":"Aktivierungscode","sendCodeHint":"Sende diesen Code nach dem Hinzufügen als Nachricht an den Bot."},"imessageTab":{"title":"iMessage","subtitle":"Chat with your agent via iMessage.","connectTitle":"Connect via iMessage","connectDescription":"Click the button below and iMessage will open with the activation code ready to send.","connectButton":"Connect via iMessage","manualFallback":"Didn't open automatically? Send the code manually:","phoneNumberLabel":"Text this number","activationCodeLabel":"Activation code","codeCopied":"Code copied!","codeExpiry":"Expires in 30 minutes","failedToGenerate":"Failed to generate iMessage code","capacityTitle":"iMessage temporarily unavailable","capacityMessage":"iMessage is experiencing unusually high demand right now. Please check back in a few hours — we're working on expanding capacity.","howItWorks":"How it works","step1":"Click \\"Connect via iMessage\\" — your Messages app will open with the activation code pre-filled.","step2":"Send the message and your agent is connected. That's it!"},"pluginsTab":{"builtInServices":"Integrierte Dienste","builtInSubtitle":"Plattformfunktionen, die deinem Agenten standardmäßig zur Verfügung stehen.","base44Backend":"Base44 Backend","alwaysActive":"Immer aktiv","base44Description":"Datenbank, Funktionen, Dateispeicher und Automatisierungen","dataEntities":"Daten & Entitäten","dataEntitiesTool1":"Entitätsdatensätze erstellen, lesen, aktualisieren, löschen und filtern","dataEntitiesTool2":"Sicherheit auf Zeilenebene","backendFunctions":"Backend-Funktionen","backendFunctionsTool1":"Serverlose Deno-Funktionen bereitstellen und aufrufen","backendFunctionsTool2":"Umgebungsgeheimnisse verwalten","fileStorage":"Dateispeicher","fileStorageTool1":"Öffentliche und private Dateien hochladen","fileStorageTool2":"Signierte Download-URLs erstellen","automationsLabel":"Automatisierungen","automationsTool1":"CRON-Jobs planen","automationsTool2":"Entitätsänderungs-Trigger","connectors":"Konnektoren","connectorsSubtitle":"Verbinde deinen Agenten mit den Apps und Diensten, die du bereits nutzt.","addConnector":"Konnektor hinzufügen","close":"Schließen","noConnectors":"Keine Konnektoren. Füge einen hinzu, um deinem Agenten Zugang zu externen Diensten zu geben.","connected":"Verbunden","available":"Verfügbar ({{count}})","allConnected":"Alle Konnektoren sind bereits verbunden.","revoked":"Widerrufen","disconnectedStatus":"Getrennt","active":"Aktiv","switchAccount":"Konto wechseln","reconnect":"Erneut verbinden","disconnect":"Trennen","remove":"Entfernen","connect":"Verbinden","connectorConnected":"Konnektor verbunden","connectionCancelled":"Verbindung abgebrochen","connectorDisconnected":"Konnektor getrennt","failedToDisconnect":"Trennung fehlgeschlagen","connectorRemoved":"Konnektor entfernt","failedToRemove":"Entfernen fehlgeschlagen","openAuthLinkManually":"Autorisierungslink manuell öffnen","connecting":"Wird verbunden...","mcpPlugins":"MCP-Plugins","mcpSubtitle":"MCP-Verbindungen, die die Fähigkeiten deines Agenten erweitern.","cancel":"Abbrechen","addPlugin":"Plugin hinzufügen","noPlugins":"Keine Plugins verbunden","noPluginsDescription":"Füge einen MCP-Server hinzu, um deinem Agenten neue Tools zu geben.","failedToLoad":"Plugins konnten nicht geladen werden","failedToToggle":"Plugin konnte nicht umgeschaltet werden","pluginDeleted":"Plugin gelöscht","failedToDelete":"Plugin konnte nicht gelöscht werden","pluginAdded":"Plugin hinzugefügt","pluginNamePlaceholder":"Plugin-Name","mcpUrlPlaceholder":"MCP-Server-URL (https://...)","foundTools":"{{count}} Tools gefunden","connectionTestFailed":"Verbindungstest fehlgeschlagen","connectedTools":"Verbunden – {{count}} Tools verfügbar","connectionFailed":"Verbindung fehlgeschlagen","test":"Testen","save":"Speichern","failedToCreate":"Plugin konnte nicht erstellt werden","enabled":"Aktiviert","disabled":"Deaktiviert","toolsCount":"Tools ({{count}})","noTools":"Keine Tools verfügbar","toolsFound":"{{count}} Tools gefunden","testFailed":"Test fehlgeschlagen","connectedChatMessage":"Ich habe {{name}} über das Integrations-Panel verbunden. Was kann ich damit machen?","connectedReadOnlyChatMessage":"Ich habe {{name}} im Nur-Lesen-Modus über das Integrations-Panel verbunden. Es kann nur Daten lesen, nichts erstellen oder ändern. Was kann ich damit machen?","accessModeChangedMessage":"Ich habe {{name}} auf den Modus {{mode}} umgestellt. Bitte beachte das bei zukünftigen Aktionen.","disconnectedChatMessage":"Ich habe {{name}} über das Integrations-Panel getrennt.","readOnly":"Nur lesen","fullAccess":"Kann verwalten","switchToReadOnly":"Auf Nur-Lesen umschalten","switchToFullAccess":"Auf Verwalten umschalten","searchConnectors":"Konnektoren durchsuchen...","noSearchResults":"Keine Konnektoren gefunden","noSearchResultsDesc":"Versuche andere Suchbegriffe oder lösche die Suche.","noConnectorsYet":"Noch keine Konnektoren verbunden.","base44Official":"Base44 Official","setUp":"Einrichten","loadMore":"{{count}} weitere laden","showAll":"Alle anzeigen ({{count}})","moreIcons":"+{{count}} weitere","sort":{"title":"Sortieren","mostUsed":"Meistverwendet","recentlyAdded":"Kürzlich hinzugefügt","az":"A-Z","za":"Z-A"}},"paymentsTab":{"title":"Zahlungen","stripeName":"Stripe","description":"Akzeptiere Zahlungen von deinen Kunden über Stripe.","notConnected":"Stripe ist nicht verbunden","connectedDescription":"Zahlungslinks, Produkte und Checkout sind verfügbar.","setupPrompt":"Bitte deinen Agenten im Chat, Stripe-Zahlungen einzurichten. Er führt dich durch den Prozess.","askInChat":"Im Chat fragen","sandboxMode":"Sandbox","liveMode":"Live","testCard":"Testkartennummer","claimAndGoLive":"Übernehmen & Live schalten","remove":"Integration entfernen","removeConfirm":"Bist du sicher?","confirmRemove":"Ja, entfernen","cancel":"Abbrechen","removed":"Stripe-Integration entfernt","removeFailed":"Stripe-Integration konnte nicht entfernt werden","loadFailed":"Zahlungsstatus konnte nicht geladen werden","setupMessage":"Richte Stripe-Zahlungen für meinen Agenten ein"},"integrationsTab":{"tabSkills":"Skills","tabConnectors":"Connectors","skillsTitle":"Skills","skillsSubtitle":"Reusable instructions that give your agent specialized abilities.","addSkill":"Add Skill","noSkills":"No skills yet","noSkillsHint":"Add a skill to teach your agent new capabilities.","installed":"Installiert"},"automationsTab":{"title":"Automatisierungen","subtitle":"Geplante Aufgaben und Webhooks.","noAutomations":"Noch keine Automatisierungen","trySuggestions":"Probiere eine der obigen Ideen aus oder frage im Chat.","askAgent":"Frage deinen Agenten im Chat, eine einzurichten.","scheduled":"Geplant","entityTriggered":"Entitätsgesteuert","webhooks":"Webhooks","active":"Aktiv","paused":"Pausiert","details":"Details","runNow":"Jetzt ausführen","pause":"Pausieren","activate":"Aktivieren","delete":"Löschen","trigger":"Auslöser","instructions":"Anweisungen","taskId":"Aufgaben-ID","parameters":"Parameter","runHistory":"Ausführungsverlauf","totalRuns":"{{count}} insgesamt","succeeded":"{{count}} erfolgreich","failedRuns":"{{count}} fehlgeschlagen","lastRun":"Letzte Ausführung:","created":"Erstellt am {{date}}","runsStats":"{{total}} Ausführungen · {{succeeded}} erfolgreich · {{failed}} fehlgeschlagen","failedToToggle":"Automatisierung konnte nicht umgeschaltet werden","archive":"Archivieren","automationArchived":"Automatisierung archiviert","failedToArchive":"Automatisierung konnte nicht archiviert werden","automationDeleted":"Automatisierung gelöscht","failedToDelete":"Automatisierung konnte nicht gelöscht werden","automationTriggered":"Automatisierung ausgelöst","failedToRun":"Automatisierung konnte nicht ausgeführt werden","failedToLoad":"Automatisierungen konnten nicht geladen werden","consumesCredits":"Verbraucht Nachrichten-Credits","agentRunsWhenTriggered":"Agent antwortet bei Auslösung","agentNameRunsWhenTriggered":"{{name}} antwortet bei Auslösung","creditsUsed":"{{credits}} Credits verwendet","totalCredits":"Credits insgesamt: {{credits}}","trackingSince":"seit {{date}}","executionLogs":"Ausführungsprotokolle","noLogs":"Noch keine Protokolle","status":{"success":"Erfolg","running":"Läuft","failed":"Fehlgeschlagen"},"archived":"Archiviert","noArchivedAutomations":"Keine archivierten Automatisierungen","archivedDescription":"Automatisierungen, die Sie archivieren, werden hier angezeigt.","restore":"Wiederherstellen","automationRestored":"Automatisierung wiederhergestellt","failedToRestore":"Automatisierung konnte nicht wiederhergestellt werden"},"identity":{"updated":"Identität aktualisiert","failedToSave":"Identität konnte nicht gespeichert werden","avatar":"Avatar","emoji":"Emoji","setEmoji":"Setzen","uploadImage":"Bild hochladen","changeImage":"Ändern","removeImage":"Bild entfernen","useEmoji":"Emoji verwenden","name":"Agent-Name","agentNamePlaceholder":"Agent-Name","userName":"Dein Name","userNameDisplay":"Dein Name: {{name}}","userNamePlaceholder":"Dein Name","userNameHint":"So spricht dich der Agent an","description":"Beschreibung","descriptionPlaceholder":"Was macht dieser Agent?","unnamedAgent":"Unbenannter Agent","cancel":"Abbrechen","save":"Speichern","edit":"Bearbeiten","rawIdentity":"IDENTITY.md (Rohtext)","editInEditor":"Im Editor bearbeiten","entry":"{{count}} Eintrag","entries":"{{count}} Einträge"},"knowledgeEditor":{"fileUpdated":"Datei wurde extern aktualisiert","fileModified":"{{name}} wurde geändert. Neu laden, um Änderungen zu sehen.","reload":"Neu laden","saved":"{{label}} gespeichert","failedToSave":"Speichern fehlgeschlagen","unsavedChanges":"Du hast ungespeicherte Änderungen. Verwerfen?","rawText":"Rohtext","readOnly":"Schreibgeschützt","editAnyway":"Trotzdem bearbeiten","edit":"Bearbeiten","save":"Speichern","startWriting":"Beginne zu schreiben..."},"knowledgeFiles":{"title":"Wissensdateien","uploading":"{{count}} Datei(en) werden hochgeladen...","new":"Neu","fileNamePlaceholder":"dateiname","mdExtension":".md","enterFileName":"Bitte gib einen Dateinamen ein","fileExists":"Eine Datei mit diesem Namen existiert bereits","failedToCreate":"Datei konnte nicht erstellt werden","unsupportedType":"Nicht unterstützter Dateityp","failedToUpload":"{{name}} konnte nicht hochgeladen werden","renamedTo":"Umbenannt in {{name}}","failedToRename":"Datei konnte nicht umbenannt werden","failedToLoadFile":"Datei konnte nicht geladen werden","deleteConfirm":"\\"{{name}}\\" löschen? Dies kann nicht rückgängig gemacht werden.","failedToDelete":"Datei konnte nicht gelöscht werden","dropOrUpload":"Dateien hier ablegen oder klicken zum Hochladen","supportedTypes":"Dokumente, Bilder, CSVs, Code-Dateien und mehr","dropOrBrowse":"Dateien ablegen oder","browse":"durchsuchen"},"artifacts":{"description":"Kleine Mini-Apps für den Einstieg. Für vollständige Apps, erstelle auf Base44.","buildFullApp":"Vollständige App erstellen","title":"Artefakte","pageCount_one":"{{count}} Seite","pageCount_other":"{{count}} Seiten","empty":"Noch keine Artefakte","emptyDescription":"Bitte deinen Agenten, eine Mini-App zu erstellen, und sie erscheint hier."},"feedbackModal":{"thankYou":"Vielen Dank!","thankYouSubtitle":"Ihr Feedback hilft uns, uns zu verbessern.","title":"Wie ist Ihre Erfahrung?","subtitle":"Ihr Feedback bestimmt, was wir als Nächstes entwickeln.","submitError":"Feedback konnte nicht gesendet werden. Bitte versuchen Sie es erneut.","placeholder":"Teilen Sie uns Ihre Gedanken mit...","sending":"Wird gesendet...","sendFeedback":"Feedback senden","ratingBad":"Schlecht","ratingPoor":"Mangelhaft","ratingOkay":"Okay","ratingGood":"Gut","ratingAmazing":"Liebe es","openSupportTicket":"Support-Ticket öffnen"},"dangerZoneTab":{"title":"Gefahrenzone","subtitle":"Unwiderrufliche Aktionen für diesen Agenten.","deleteTitle":"Diesen Agenten löschen","deleteDescription":"Entfernt diesen Agenten und alle seine Daten, Unterhaltungen, Dateien und Integrationen dauerhaft. Diese Aktion kann nicht rückgängig gemacht werden.","deleteButton":"Diesen Agenten löschen","deleteSuccess":"Agent erfolgreich gelöscht","deleteFailed":"Fehler beim Löschen des Agenten"}}`),Qx={live:"Live",offScreen:"Außerhalb des Bildschirms",waiting:"Warten...",loading:"Lädt...",previewTitle:"Vorschau: {{pageName}}"},Xx={main:"Haupt"},eI={title:"Agent löschen",description:"Dies wird <strong>{{displayName}}</strong> dauerhaft löschen.<br/>Alle Agentendaten, Unterhaltungen, Dateien und Integrationen werden unwiderruflich gelöscht. <danger>Diese Aktion kann nicht rückgängig gemacht werden.</danger>",cancel:"Abbrechen",deleteButton:"Diesen Agenten löschen",deleting:"Wird gelöscht..."},tI={title:"Deine App teilen",subtitle:"Link per E-Mail oder in sozialen Netzwerken teilen",sendInviteLabel:"Einladung senden",sendInvitation_one:"Einladung senden",sendInvitation_other:"Einladungen senden",invalidEmailsError:"Eine oder mehrere E-Mail-Adressen sind ungültig. Bitte überprüfe sie und versuche es erneut.",workspaceIneligibleError:"Versuche stattdessen, Benutzer aus deinem Arbeitsbereich einzuladen.",nonWorkspaceIneligibleError:"Einige E-Mail-Adressen sind nicht zur Einladung berechtigt.",removeIneligibleUsers:"Nicht berechtigte Benutzer entfernen",inviteSuccessToast:"Benutzereinladung erfolgreich gesendet",inviteErrorToast:"Einladungen konnten nicht gesendet werden",copyLink:"Link kopieren",sendInvitationSection:"Einladung senden",inviteEmailPlaceholder:"E-Mail-Adresse eingeben",inviteButton:"Einladen",shareLiveAppLink:"Live-App-Link teilen",shareLiveAppLinkDesc:"Jeder mit dem Link kann deine App live ansehen, basierend auf deinen App-Sichtbarkeitseinstellungen.",linkCopied:"Link kopiert",enterEmailError:"Bitte gib eine E-Mail-Adresse ein",cannotInviteOwner:"Du kannst den Eigentümer dieser App nicht einladen",inviteSuccess_one:"Einladung erfolgreich gesendet",inviteSuccess_other:"{{count}} Einladungen erfolgreich gesendet",inviteFailedToSend:"Einladung konnte nicht gesendet werden",role_admin:"Admin",role_user:"Benutzer"},aI={sidebar:Ax,loading:Sx,trash:Cx,errors:Dx,codeView:Tx,loader:Ex,toolbar:Px,header:_x,upgrade:xx,checkpoints:Ix,viewAs:Rx,pages:zx,publish:Mx,chat:Nx,builderCommandPalette:Fx,unknownView:Lx,appEditor:jx,beta:Ox,collaborators:Bx,integrationsBanner:Ux,tools:qx,mainPage:Vx,unpublishApp:$x,deleteApp:Wx,skillTool:Gx,automations:Hx,create_automation:Yx,create_automation_error:Kx,automation_fallback_name:Zx,agentEditor:Jx,canvasPage:Qx,canvasToolbar:Xx,deleteAgent:eI,new:"Neu",shareModal:tI},nI={title:"Was willst du als Nächstes erstellen?",titleMobile:`Hi, was willst du
als Nächstes erstellen?`,subtitle:"Beschreibe deine App-Idee unten oder lass dich inspirieren von unseren",subtitleTemplatesLink:"Vorlagen"},iI={title:"Zuletzt erstellte Apps"},rI={title:"Letzte Superagenten"},oI={placeholder:"Beschreibe die App, die du erstellen möchtest...",placeholderPlanMode:"Sag Base, was du möchtest",placeholderViewer:"Betrachter können keine Apps erstellen",placeholderWithUrl:"Beschreibung hinzufügen (optional)...",captureFullMode:"Eine Seite wie diese erstellen",captureDesignMode:"Eine neue Seite inspiriert von diesem Design erstellen für...",uploadFile:"Vom Computer hochladen",uploadFileMobile:"Vom Gerät hochladen",captureFromUrlDescription:"Einen 1:1-Ausgangspunkt erstellen",createFromUrl:"Von URL starten",aiModel:"KI-Modell",selectAiModel:"KI-Modell auswählen",addFromGoogleDrive:"Von Google Drive hochladen",modelPicker:{automatic:"Automatisch",automaticDescription:"Das beste KI-Modell wird für jede Anfrage ausgewählt",new:"Neu",manual:"Manuell",builderPlus:"Builder+",manualDescription:"Ein bestimmtes KI-Modell auswählen ({{models}}). Verfügbar ab dem Builder-Plan.",upgradeToSelect:"Upgrade, um ein KI-Modell auszuwählen"},speechToText:"Spracherkennung",processingAudio:"Audio wird verarbeitet...",clickToStopRecording:"Aufnahme stoppen"},sI={exploreTemplates:"Vorlagen aus der Community entdecken",discoverDescription:"Entdecke eine kuratierte Sammlung von Apps, die von unserer Community erstellt wurden.",failedToLoadCatalog:"Katalog konnte nicht geladen werden",showingItems:"{{displayed}} von {{total}} Einträgen angezeigt",searchApps:"Apps suchen",viewAllTemplates:"Alle Vorlagen ansehen",allCategories:"Alle",priceAll:"Alle Vorlagen",priceFree:"Nur kostenlose",pricePaid:"Nur kostenpflichtige",pageTitle:"App-Vorlagen",pageSubtitle:"Entdecke eine kuratierte Sammlung von Apps, die von unserer Community erstellt wurden.",tabs:{community:"Community",workspace:"Arbeitsbereich",myTemplates:"Meine Vorlagen"},categories:{marketingAndSales:"Marketing & Vertrieb",operations:"Operationen",dataAndAnalytics:"Daten & Analyse",contentGeneration:"Inhaltserstellung",hrAndLegal:"Personal & Recht",finance:"Finanzen",education:"Bildung",community:"Community",lifestyleAndHobbies:"Lifestyle & Hobbys",gamesAndEntertainment:"Spiele & Unterhaltung","Marketing & Sales":"Marketing & Vertrieb",Operations:"Betrieb","Data & Analytics":"Daten & Analysen","Content Generation":"Inhaltserstellung","HR & Legal":"Personal & Recht",Finance:"Finanzen",Education:"Bildung",Community:"Community","Lifestyle & Hobbies":"Lifestyle & Hobbys","Games & Entertainment":"Spiele & Unterhaltung"},sort:{popular:"Beliebt",newest:"Neueste zuerst",oldest:"Älteste zuerst"},languagePlaceholder:"Sprache",pricePlaceholder:"Preis",noAppsFound:"Keine Apps gefunden",adjustSearchOrFilters:"Suche oder Filter anpassen",templateNotFound:"Vorlage nicht gefunden oder nicht verfügbar.",viewAllCommunityTemplates:"Alle Community-Vorlagen anzeigen",loadingMore:"Weitere Einträge werden geladen...",viewDetails:"Details anzeigen",workspaceBadge:"Arbeitsbereich",purchasedBadge:"Gekauft",free:"Kostenlos",unknownUser:"Unbekannter Benutzer",private:"Privat",howTo:{title:"So teilst du deine App mit der Community",intro:"Folge diesen einfachen Schritten:",step1Title:"Öffne den Builder deiner App",step1Desc:"Navigiere zu einer App, die du erstellt hast oder auf die du Admin-Zugriff hast",step2Title:"Gehe zu den Katalogeinstellungen",step2Path:"Arbeitsbereich → Einstellungen → App-Vorlagen → Eintrag verwalten",step3Title:"Veröffentliche deinen Eintrag",step3Desc:"Füge eine Beschreibung und Screenshots hinzu und konfiguriere die Sichtbarkeit deines Eintrags",tipFull:"<bold>Tipp:</bold> Stelle sicher, dass deine App bereitgestellt ist und eine ansprechende Beschreibung hat, um mehr Nutzer anzuziehen!"},modal:{close:"Schließen",prevScreenshot:"Vorheriger Screenshot",nextScreenshot:"Nächster Screenshot",screenshotAlt:"Screenshot {{index}}",goToScreenshot:"Zu Screenshot {{index}}",createdBy:"von {{creatorName}}",unknownCreator:"Unbekannt",usages_one:"{{count}} Nutzung",usages_other:"{{count}} Nutzungen",private:"Privat",workspaceTemplate:"Workspace-Vorlage",clonePurchase:"Kauf klonen",processing:"Verarbeitung...",purchaseFor:"Kaufen für {{price}} $",useTemplate:"Vorlage verwenden",viewApp:"App aufrufen",paymentInfo:"Die Zahlung geht vollständig an den Ersteller",backendFunctionsEnabled:"Backend-Funktionen aktiviert",usesIntegrations:"Verwendet Integrationen",aboutThisApp:"Über diese App",noDescription:"Keine Beschreibung verfügbar",termsOfUse:"Nutzungsbedingungen",success:"Erfolg",error:"Fehler",purchaseFailed:"Kauf fehlgeschlagen",failedToPurchase:"Kauf konnte nicht gestartet werden",listingApproved:"App-Eintrag erfolgreich genehmigt",approveListingFailed:"Eintrag konnte nicht genehmigt werden",listingDeclined:"App-Eintrag erfolgreich abgelehnt",declineListingFailed:"Eintrag konnte nicht abgelehnt werden",pendingUpdate:"Ausstehende Aktualisierung zur Überprüfung",codeChangesPending:"App-Code-Änderungen ausstehend",metadataChanges:"Metadatenänderungen des Eintrags:",manageListing:"Eintrag verwalten",approveUpdate:"Aktualisierung genehmigen",declineUpdate:"Aktualisierung ablehnen",approveListing:"Eintrag genehmigen",declineListing:"Eintrag ablehnen",approving:"Wird genehmigt...",declining:"Wird abgelehnt...",cloneAsAdmin:"Als Admin klonen"}},lI={subscriptionOverdue:"Abonnementzahlung überfällig",overdueMessage:"Deine Abonnementzahlung ist überfällig. Der Zugang zu einigen Funktionen ist derzeit eingeschränkt. Bitte aktualisiere deine Zahlungsmethode, um wieder vollen Zugang zu erhalten.",goToBilling:"Zur Abrechnung",creditLimitReached:"Du hast das Limit dieses Monats erreicht. Um weiterhin Apps zu erstellen",upgradePlan:"Plan upgraden"},cI={viewerAccess:"Du hast Betrachter-Zugang und kannst keine Apps erstellen. Kontaktiere deinen Workspace-Admin, um zum Editor aufzusteigen."},dI={fillApiKeys:"Bitte fülle alle erforderlichen API-Schlüssel aus, bevor du absendest.",createAppFailed:"App konnte nicht erstellt werden. Bitte versuche es erneut."},uI={title:"Von URL starten",description:"Verwende eine beliebige Website als Ausgangspunkt für deine neue Seite.",urlLabel:"Website-URL",urlPlaceholder:"z.B. www.beispiel.de",errorEmpty:"Bitte gib eine URL ein",errorInvalid:"Gib eine gültige Website-URL ein, z.B. www.beispiel.de",errorTooLong:"Die URL ist zu lang. Bitte verwende eine kürzere URL.",modeFull:"Inhalt & Design",modeFullDescription:"Eine ähnliche Seite erstellen.",modeDesign:"Nur Design",modeDesignDescription:"Eine neue Seite im gleichen Stil erstellen.",modeContent:"Nur Inhalt",legalNotice:"Verwende nur URLs, bei denen du Rechte am Inhalt hast.",cancel:"Abbrechen",add:"Hinzufügen",learnMore:"Mehr über das Erstellen aus einer URL erfahren",capturedUrl:"URL erfasst",appReady:"Deine App ist fertig! Du kannst sie jetzt anpassen oder neue Funktionen hinzufügen.",banner:{headline:"Deine App wird erstellt",headlineDesign:"Deine App wird erstellt",subtitle:"Das kann ein paar Minuten dauern — wir sorgen dafür, dass sich das Warten lohnt.",activity:{msg1:"Die Seite wird erkundet...",msg2:"Das Design wird analysiert...",msg3:"Die Teile werden zusammengefügt...",msg4:"Etwas Besonderes wird geschaffen...",msg5:"Wir arbeiten daran...",msg6:"Es wird perfektioniert...",msg7:"Einen Moment noch, es wird großartig..."}}},pI={count:"Integrationen: {{count}}",loading:"Integration wird geladen...",selectedIntegrations:"Ausgewählte Integrationen:"},mI={menuItem:"Konnektoren",dialogTitle:"Konnektoren",dialogDescription:"Verbinde Tools und Datenquellen, um deine App zu stärken.",search:"Suchen",add:"Hinzufügen",added:"Hinzugefügt",remove:"Entfernen",noResults:"Keine Konnektoren gefunden",suggestionCardTitle:"Hilf mir bei deiner Integrationsanfrage für:",choosePrompt:"Wähle einen Prompt um fortzufahren.",somethingElse:"Etwas anderes",cancel:"Abbrechen",send:"Senden",connectTo:"Verbinden mit <name>{{name}}</name>",upgradeToConnect:"Erweitere deinen Plan, um {{name}} mit deiner App zu verbinden.",connecting:"Verbinde {{names}}…",cancelled:"abgebrochen",subtitles:{stripe:"Produkte oder Abos verkaufen und Zahlungen empfangen.",salesforce:"CRM-Datensätze automatisieren und synchronisieren.",slack:"Nachrichten senden und Slack als Nutzer verwalten.",slackbot:"Als Marken-Bot in deinem Slack-Workspace posten.",notion:"Wissen und Projektdaten organisieren und synchronisieren.",googlecalendar:"Termine und Kalendereinträge verwalten.",googledrive:"App-generierte Dateien exportieren und sichern.",gmail:"E-Mail-Versand und Posteingang automatisieren.",googlesheets:"Tabellendaten synchronisieren und verwalten.",googleslides:"Präsentationen erstellen und verwalten.",googledocs:"Dokumente erstellen und automatisieren.",googlebigquery:"Analysedaten abfragen und synchronisieren.",hubspot:"CRM-Daten synchronisieren und Marketing automatisieren.",linkedin:"Updates teilen und auf Berufsprofile zugreifen.",tiktok:"Profilstatistiken verfolgen und Videos durchsuchen.",discord:"In Kanälen posten und deine Discord-Community integrieren.",wix:"Auf Wix-Websitedaten und Business-Tools zugreifen.",github:"Repos, Issues und Pull Requests verwalten.",gitlab:"Projekte, MRs und CI/CD-Pipelines verwalten.",bamboohr:"Mitarbeiterverzeichnis und HR-Verwaltung.",wrike:"Projektplanung und Teamkoordination.",box:"Sicheres Cloud-Content-Management.",clickup:"Projekte organisieren und Teamarbeit verfolgen.",google_analytics:"Website-Traffic und Nutzereinblicke verfolgen.",outlook:"E-Mail und Kalender.",linear:"Issue-Tracking und Projektmanagement.",dropbox:"Dateien in der Cloud speichern und synchronisieren.",google_search_console:"SEO und Suchanalysen.",google_classroom:"Bildung und Kursverwaltung.",airtable:"Flexible Datenbanken und Tabellen.",splitwise:"Ausgaben aufteilen und Gruppenrechnungen verwalten.",microsoft_teams:"Team-Chat, Kanäle und Meetings.",share_point:"Dokumentenverwaltung und Zusammenarbeit.",one_drive:"Cloud-Dateispeicher.",typeform:"Formulare, Umfragen und Datenerfassung."}},gI={label:"Plan",tooltip:"Aktiviere den Plan-Modus, damit die KI einen detaillierten Plan erstellt, bevor sie deine App baut."},hI="Alle anzeigen",fI="Fehler",vI={menuLabel:"Aus Figma importieren",title:"Aus einem Figma-Frame generieren",description:"Füge den Link zu deinem Frame ein, um eine App basierend auf deinem Design zu generieren.",labelUrl:"Figma-Frame-Link",placeholderUrl:"z.B., https://www.figma.com/frame-link",urlHelp:"Verwende einen Link zu einem Frame, nicht zu einer Datei oder Seite.",learnPrepare:"Erfahre, wie du deinen Figma-Frame vorbereitest",connectTitle:"Mit Figma verbinden",connectDescription:"Erlaube Zugriff auf dein Figma-Konto, um dein Design zu importieren.",connectButton:"Mit Figma verbinden",connectedToFigma:"Mit Figma verbunden",errorMissingUrl:"Gib eine URL zu einem Figma-Frame ein",errorNotFigmaUrl:"Gib eine URL zu einem Figma-Frame ein",errorNotFrameUrl:"Gib eine URL zu einem Frame ein, nicht zu einer Datei oder Seite.",errorRateLimit:"Die Figma-API ist vorübergehend ausgelastet. Bitte versuche es in einigen Minuten erneut.",errorForbidden:"Ungültige oder abgelaufene Figma-Verbindung. Bitte verbinde dein Figma-Konto erneut.",errorNotFound:"Figma-Datei nicht gefunden. Bitte überprüfe die URL und stelle sicher, dass du Zugriff hast.",errorGeneric:"Zugriff auf dieses Figma-Design nicht möglich. Bitte überprüfe die URL und versuche es erneut.",validating:"Wird überprüft...",switchAccount:"Figma-Konto wechseln",cancel:"Abbrechen",generate:"Generieren",viewerCannotGenerate:"Du hast Betrachter-Zugriff und kannst keine Apps erstellen. Wende dich an deinen Workspace-Administrator, um zum Editor hochgestuft zu werden.",figmaFile:"Figma-Datei",justNow:"Gerade eben",importingMessage:"Generiere eine App basierend auf deinem Design aus diesem Figma-Frame."},bI={connectFailed:"Verbindung mit Figma fehlgeschlagen. Bitte versuche es erneut.",popupBlocked:"Popup blockiert. Bitte erlaube Popups und versuche es erneut.",disconnected:"Figma getrennt",disconnectFailed:"Trennung von Figma fehlgeschlagen. Bitte versuche es erneut."},yI={capturing:"Erfassung läuft...",figmaDescription:"Analyse des Figma-Designsystems. Layout, Typografie und Farb-Tokens werden extrahiert, um deine App zu erstellen."},kI={webApp:"Apps",aiAgent:"Superagents",recentApps:"Letzte Apps",templates:"Vorlagen",favoritesComingSoon:"Favoriten kommen bald"},wI={new:"Neu",message:"Sag Hallo zu deinem echten persönlichen Agenten",cta:"Jetzt ausprobieren"},AI={greeting:"Hallo {{name}},",greetingGeneric:"Hallo,",title:"Erstelle deinen eigenen persönlichen KI-Agent",createTitle:"Erstelle deinen eigenen Superagent",newBadge:"Neu",subtitle:"Dein KI-Agent, der Aufgaben erledigt, sich mit deinen Tools verbindet und rund um die Uhr für dich arbeitet",cta:"Erstelle deinen Superagent",creating:"Wird erstellt...",continueHero:{heading:"Mach weiter, wo du aufgehört hast",continueBtn:"Weiter mit {{name}}",or:"Oder",createNew:"Neuen Superagent erstellen",activeAgo:"Aktiv {{time}}",you:"Du"},features:{hassleFree:{title:"Problemlos",desc:"Kein Docker, keine Server, keine Einrichtung. Starte einfach deinen Superagent."},alwaysOn:{title:"Immer aktiv",desc:"Führt Aufgaben und Automatisierungen für dich aus, rund um die Uhr."},actions:{title:"Führt echte Aktionen aus",desc:"Erledigt Aufgaben, sendet Updates und reagiert automatisch."},remembers:{title:"Erinnert sich an alles",desc:"Behält deine Ziele, Präferenzen und den Kontext im Blick."},everywhere:{title:"Lebt dort, wo du bist",desc:"Funktioniert in WhatsApp, Telegram, Slack und in deinem Browser."},secure:{title:"Standardmäßig sicher",desc:"Zugriff nur auf das, was du erlaubst."}},untitled:"Unbenannter Agent",active:"Aktiv",noDescription:"Keine Beschreibung verfügbar",edited:"Bearbeitet {{time}}",updated:"Aktualisiert {{time}}",failedToCreate:"Agent konnte nicht erstellt werden. Bitte versuche es erneut.",errorPage:{title:"Hoppla, etwas ist schiefgelaufen",descriptionLine1:"Auf unserer Seite gab es ein technisches Problem.",descriptionLine2:"Gehe zurück zur Agenten-Erstellungsseite und versuche es erneut",goToAgents:"Zu Agenten →"}},SI={edited:"Bearbeitet {{time}}",updated:"Aktualisiert {{time}}",updatedRecently:"Kürzlich aktualisiert"},CI={emptyTitle:"Du hast noch keine Apps erstellt.",emptySubtitle:"Erstelle deine erste App mit dem Formular oben!"},DI={dialogTitle:"Schnellnavigation",dialogDescription:"Schneller Zugriff auf Apps, Vorlagen, Abrechnung und Workspace-Einstellungen direkt von der Startseite aus.",searchPlaceholder:"Apps, Einstellungen, Vorlagen, Abrechnung suchen...",searching:"Workspace-Apps werden durchsucht...",emptyTitle:"Kein passendes Ziel",emptyDescription:"Suche nach einem App-Namen, einem Einstellungsbereich oder einer Seite wie Abrechnung oder Vorlagen.",allApps:"Alle Apps",backToWorkspace:"Zurück zum Workspace",templates:"Vorlagen",billing:"Abrechnung",groups:{apps:"Apps",navigate:"Seiten",workspace:"Arbeitsbereich",account:"Konto"},subtitles:{favoriteApp:"Favorisierte App",recentApp:"Kürzlich verwendete App",page:"Seite"}},TI={label:"Was möchtest du erstellen?",more:"Mehr",moreIdeas:"Mehr Ideen",categories:{CRM:"CRM","Dev productivity":"Entwickler-Produktivität",Educational:"Bildung","Content Generation and Editing":"Inhaltserstellung und -bearbeitung","Personal Finance":"Persönliche Finanzen","Health and Wellness":"Gesundheit und Wohlbefinden",Productivity:"Produktivität","Travel Planning":"Reiseplanung",Entertainment:"Unterhaltung",Environmental:"Umwelt","Home Management":"Hausverwaltung","Creative Tools":"Kreative Werkzeuge",Tasks:"Aufgaben","CRM & Sales":"CRM & Vertrieb",Portfolio:"Portfolio",Finance:"Finanzen","Scheduling & Booking":"Planung & Buchung",eCommerce:"E-Commerce","Construction & Trade":"Bau & Handwerk","Events & Community":"Veranstaltungen & Gemeinschaft",Wellness:"Wellness","Operations & Logistics":"Betrieb & Logistik","Tasks & Workflows":"Aufgaben & Workflows","Content & Sites":"Inhalte & Seiten",Booking:"Buchung","E-commerce":"E-Commerce",Projects:"Projekte",Operations:"Betrieb"}},EI={hero:nI,recentApps:iI,recentAgents:rI,chat:oI,catalog:sI,billing:lI,permissions:cI,validation:dI,urlCapture:uI,integrations:pI,connectors:mI,planMode:gI,viewAll:hI,error:fI,figmaDialog:vI,figmaOAuth:bI,statusBanner:yI,tabs:kI,tryAgentBanner:wI,agent:AI,appCard:SI,appsList:CI,commandPalette:DI,ideas:TI},PI={title:"Integrationen",subtitle:"Entdecke vorgefertigte Integrationen, mit denen du dich mit APIs, Diensten und Tools verbinden kannst, um die Möglichkeiten deiner App zu erweitern."},_I={placeholder:"Integrationen suchen..."},xI={title:"Keine passenden Integrationen gefunden",description:"Passe deine Such- oder Filtereinstellungen an."},II={title:"Konnektoren",subtitle:"Schnelle OAuth-Verbindungen zu beliebten Diensten, unterstützt von Base44."},RI={howToUse:"Anleitung",dialog:{getStarted:"Erste Schritte",navigateInstruction:"Gehe zum Reiter Integrationen in deiner App, um {{name}} zu verbinden und personalisierte Prompts zu erhalten.",upgradeNotice:"Diese Integration erfordert Backend-Funktionen, die nur im Builder-Tarif und höher verfügbar sind. <seePlansLink>Pläne anzeigen</seePlansLink>"}},zI={stripe:"Produkte oder Abonnements verkaufen und online bezahlt werden.",salesforce:"CRM-Datensätze automatisieren und synchronisieren.",slack:"Nachrichten senden und Slack als Benutzer verwalten.",slackbot:"Als gebrandeter Bot in deinem Slack-Workspace posten.",notion:"Wissen und Projektdaten organisieren und synchronisieren.",googlecalendar:"Deinen Kalender und Termine verwalten.",googledrive:"App-generierte Dateien exportieren und sichern.",gmail:"E-Mail-Versand und Posteingang automatisieren.",googlesheets:"Tabellendaten synchronisieren und verwalten.",googleslides:"Präsentationen erstellen und verwalten.",googledocs:"Dokumente verwalten und die Erstellung automatisieren.",googlebigquery:"Analysedaten abfragen und synchronisieren.",googletasks:"Aufgabenlisten und To-dos verwalten.",googlemeet:"Videokonferenzen und Meetings.",hubspot:"CRM-Daten synchronisieren und Marketing automatisieren.",linkedin:"Updates teilen und auf Berufsprofile zugreifen.",tiktok:"Profilstatistiken verfolgen und Videos durchsuchen.",discord:"Channels benachrichtigen und Discord-Community integrieren.",wix:"Auf Wix-Website-Daten und Business-Tools zugreifen.",github:"Repos, Issues und Pull Requests verwalten.",gitlab:"Projekte, MRs und CI/CD-Pipelines verwalten.",bamboohr:"Mitarbeiterverzeichnis und HR-Verwaltung.",wrike:"Projektplanung und Teamkoordination.",box:"Sichere Cloud-Inhaltsverwaltung.",clickup:"Projekte organisieren und Teamarbeit verfolgen.",google_analytics:"Website-Traffic und Nutzereinblicke verfolgen.",outlook:"E-Mail und Kalender.",linear:"Issue-Tracking und Projektmanagement.",dropbox:"Dateien in der Cloud speichern und synchronisieren.",google_search_console:"SEO und Suchanalysen.",google_classroom:"Bildung und Kursverwaltung.",airtable:"Flexible Datenbanken und Tabellen.",splitwise:"Ausgaben aufteilen und Gruppenrechnungen verwalten.",microsoft_teams:"Team-Chat, Channels und Meetings.",share_point:"Dokumentenverwaltung und Zusammenarbeit.",one_drive:"Cloud-Dateispeicher.",typeform:"Formulare, Umfragen und Datenerfassung.",hugging_face:"KI-Inferenz und Modell-Repositories.",calendly:"Automatisierte Terminplanung.",contentful:"Headless CMS und Content-Verwaltung.",supabase:"Schemas durchsuchen, Daten lesen und Projektstatus anzeigen (nur lesend)."},MI={page:PI,search:_I,emptyState:xI,connectors:II,connector:RI,catalog:zI},NI={title:"Launchpad",subtitle:"Entdecke und erkunde Apps, die von der Community erstellt wurden",shareApp:"Deine App teilen",allApps:"Alle Apps",noAppsFound:"Keine Apps gefunden",noAppsHint:"Versuche, deine Filter zu löschen oder nach etwas anderem zu suchen.",noAppsEmpty:"Sei der Erste, der eine App auf Launchpad veröffentlicht!",clearFilters:"Filter löschen",goToFirstPage:"Zur ersten Seite",retry:"Erneut versuchen",publishedToast:"Deine App ist jetzt auf Launchpad live!"},FI={placeholder:"Apps auf Launchpad suchen..."},LI={all:"Alle"},jI={title:"Gerade im Trend"},OI={title:"Top-Apps",empty:"Noch keine Top-Apps für diesen Zeitraum.",thisWeek:"Diese Woche",thisMonth:"Diesen Monat",allTime:"Gesamte Zeit"},BI={live:"Live",someone:"Jemand",sentences:{vote:"{{user}} hat gerade für {{app}} gestimmt",like:"{{user}} hat gerade {{app}} gefällt",publish:"{{user}} hat gerade {{app}} veröffentlicht",default:"{{user}} hat gerade mit {{app}} interagiert"}},UI={signInPrompt:"Bitte melde dich an, um deine App auf Launchpad zu veröffentlichen.",signIn:"Anmelden",back:"Zurück",next:"Weiter",publish:"Veröffentlichen",publishing:"Wird veröffentlicht...",stepOf:"Schritt {{current}} von {{total}}",successToast:"Deine App ist jetzt auf Launchpad live!",failedDefault:"Veröffentlichung fehlgeschlagen. Bitte versuche es erneut.",categoriesLoadFailed:"Kategorien konnten nicht geladen werden. Bitte schließe das Fenster und versuche es erneut.",categoriesRetry:"Erneut versuchen",steps:{selectApp:"App auswählen",details:"Details",preview:"Vorschau"},appPicker:{chooseApp:"Wähle die App aus, die du auf Launchpad veröffentlichen möchtest.",searchPlaceholder:"Deine Apps durchsuchen...",loadFailed:"Deine Apps konnten nicht geladen werden.",tryAgain:"Erneut versuchen",noApps:"Du hast noch keine Apps.",noAppsForQuery:"Keine Apps gefunden für „{{query}}“",loadMore:"Mehr laden"},preview:{caption:"So erscheint deine App im Launchpad-Raster:",creatorFallback:"Du"},categoryPicker:{count:"{{current}}/{{max}} Kategorien ausgewählt"},validation:{nameRequired:"App-Name ist erforderlich",descriptionRequired:"Kurzbeschreibung ist erforderlich",descriptionTooLong:"Maximal {{max}} Zeichen",categoriesRequired:"Wähle mindestens 1 Kategorie",screenshotsRequired:"Lade mindestens 1 Screenshot hoch"}},qI={uploadFailed:"Einige Screenshots konnten nicht hochgeladen werden. Bitte versuche es erneut.",uploading:"Wird hochgeladen...",addImage:"Bild hinzufügen",count:"{{current}}/{{max}} Screenshots. Zum Sortieren ziehen."},VI={previous:"Zurück",next:"Weiter",pageOf:"Seite {{page}} von {{totalPages}}"},$I={justNow:"gerade eben",minutesAgo:"vor {{count}} Min.",hoursAgo:"vor {{count}} Std.",daysAgo:"vor {{count}} T."},WI={appName:"App-Name",shortDescription:"Kurzbeschreibung",shortDescriptionPlaceholder:"Eine kurze Beschreibung, was deine App macht",longDescription:"Ausführliche Beschreibung",longDescriptionPlaceholder:"Erzähle mehr über deine App...",optional:"Optional",categories:"Kategorien",screenshots:"Screenshots",generateWithAi:"Mit KI generieren",aiComingSoon:"KI-Generierung kommt bald"},GI={tryApp:"App testen",share:"Teilen",shareToast:"Link in die Zwischenablage kopiert!",shareError:"Fehler beim Teilen",about:"Über",moreByCreator:"Mehr von {{name}}",backToLaunchpad:"Zurück zu Launchpad",notFound:"App nicht gefunden",notFoundHint:"Diese App wurde möglicherweise entfernt oder zurückgezogen.",loadFailed:"Fehler beim Laden der App-Details.",unknownCreator:"diesem Ersteller"},HI={title:"Kommentare",placeholder:"Kommentar schreiben...",submit:"Posten",submitting:"Wird gepostet...",empty:"Noch keine Kommentare. Sei der Erste!",loadMore:"Mehr Kommentare laden",deleteFailed:"Fehler beim Löschen des Kommentars.",postFailed:"Fehler beim Posten des Kommentars.",signInToComment:"Melde dich an, um einen Kommentar zu hinterlassen",anonymous:"Anonym"},YI={likeFailed:"Fehler beim Aktualisieren des Likes.",voteFailed:"Fehler beim Aktualisieren der Stimme.",selfVoteError:"Du kannst nicht für deine eigene App stimmen."},KI={loadFailed:"Launchpad-Daten konnten nicht geladen werden. Bitte versuche es erneut.",browseFailed:"Apps konnten nicht geladen werden. Bitte versuche es erneut.",topAppsFailed:"Top-Apps konnten nicht geladen werden. Bitte versuche es erneut.",categoriesFailed:"Kategorien konnten nicht geladen werden.",refreshFailed:"Aktualisierung fehlgeschlagen — bitte lade die Seite neu."},ZI={page:NI,search:FI,categories:LI,trending:jI,topApps:OI,liveActivity:BI,publish:UI,screenshots:qI,pagination:VI,relativeTime:$I,fillDetails:WI,detail:GI,comments:HI,engagement:YI,errors:KI},JI={title:"Apps",allAgentsTitle:"Alle Agenten",createNewApp:"Neue App erstellen",createNewAgent:"Neuen Agenten erstellen",tabRecents:"Zuletzt verwendet",tabFavorites:"Favoriten",tabAllApps:"Alle Apps",tabAllAgents:"Alle Agenten",searchPlaceholder:"Apps suchen",gridView:"Rasteransicht",listView:"Listenansicht",appTypeLabel:"App-Typ",appTypeApps:"Apps",appTypeAgents:"Agenten",tableHeaderName:"Name",tableHeaderDescription:"Beschreibung",tableHeaderActions:"Aktionen",folderActionAddApps:"Apps hinzufügen",folderActionRename:"Umbenennen",folderActionDelete:"Löschen",filterOwnedByMe:"In meinem Besitz",filterMyAppsPersonal:"Meine Apps (persönlicher Arbeitsbereich)",filterAllPlatform:"Alle Apps (plattformweit)",filterMyAppsWorkspace:"Meine Apps im Arbeitsbereich {{workspaceName}}",filterAllAppsWorkspace:"Alle Apps im Arbeitsbereich {{workspaceName}}",addNewFolder:"Neuen Ordner hinzufügen",sortLastUpdated:"Zuletzt aktualisiert",sortLastCreated:"Zuletzt erstellt",sortNameAsc:"Name (A-Z)",sortNameDesc:"Name (Z-A)",filterCreatedByMe:"Von mir erstellt",filterCreatedByAnyone:"Von allen erstellt",filterAllPlatformApps:"Alle Plattform-Apps",filterMyApps:"Meine Apps in {{workspaceName}}",planModeDescription:"Diese Anwendung befindet sich derzeit im Planungsmodus und wurde noch nicht erstellt.",noDescription:"Keine Beschreibung",byCreator:"Von {{name}}",createdAgo:"Erstellt {{timeAgo}}",untitledPlan:"Unbenannter Plan",tableHeaderApp:"App",tableHeaderLastUpdated:"Zuletzt aktualisiert",tableHeaderCreatedBy:"Erstellt von",emptyFolderTitle:"Noch keine Apps hinzugefügt",emptyFolderMessage:"Apps erscheinen hier, sobald Sie sie hinzufügen",addExistingApps:"Vorhandene Apps hinzufügen",emptyFavoritesTitle:"Noch keine Lieblings-Apps",emptyFavoritesMessage:"Markieren Sie eine App mit einem Stern, um sie hier hinzuzufügen.",emptyRecentsTitle:"Keine letzten Aktivitäten",emptyRecentsMessage:"Apps, die Sie öffnen, erscheinen hier.",emptySearchTitle:"Keine Apps gefunden",emptySearchMessage:"Keine Apps gefunden, die Ihren Kriterien entsprechen.",clearFilters:"Filter zurücksetzen",previous:"Zurück",next:"Weiter",failedToUpdateStar:"Stern konnte nicht aktualisiert werden",failedToUpdateFavorite:"Favorit konnte nicht aktualisiert werden",pleaseRetry:"Bitte versuchen Sie es erneut",folderCreated:"Ordner erstellt",folderRenamed:"Ordner umbenannt",folderDeleted:"Ordner gelöscht",folderUpdated:"Ordner aktualisiert",filter:"Filter"},QI={showAll:"Alle anzeigen",appCount_one:"{{count}} App",appCount_other:"{{count}} Apps",addApps:"Apps hinzufügen",rename:"Umbenennen",delete:"Löschen",cancel:"Abbrechen",save:"Speichern",saving:"Wird gespeichert...",create:"Erstellen",deleting:"Wird gelöscht...",createFirstFolder:"Ersten Ordner erstellen",createNewFolder:"Neuen Ordner erstellen",renameFolder:"Ordner umbenennen",folderVisibilityDescription:"Die Ordnerorganisation ist für Ihren Arbeitsbereich sichtbar.",folderNamePlaceholder:"Ordnername",visibility:"Sichtbarkeit",scopeWorkspace:"Arbeitsbereich",scopePersonal:"Persönlich",personalScopeHint:"Nur für Sie sichtbar",deleteFolder:"Ordner löschen",deleteFolderDescription:'Sie sind dabei, "{{name}}" zu löschen? Apps in diesem Ordner werden nicht gelöscht, nur der Ordner.',manageFolders:"Ordner verwalten",manageFoldersDescription:"Diese App zu Ordnern hinzufügen oder daraus entfernen.",searchFoldersPlaceholder:"Ordner suchen...",createNewFolderButton:"Neuen Ordner erstellen",noFoldersMatchSearch:"Keine Ordner entsprechen Ihrer Suche",noFoldersYet:"Noch keine Ordner",allFolders:"Alle Ordner",searchFolders:"Ordner suchen",scopeFilterAll:"Alle",sortNameAsc:"Name A–Z",sortNameDesc:"Name Z–A",sortMostApps:"Meiste Apps",sortFewestApps:"Wenigste Apps",noFoldersFound:"Keine Ordner gefunden",noFoldersMatchCriteria:"Keine Ordner entsprechen Ihren Suchkriterien.",clearSearch:"Suche zurücksetzen",manageAppsInFolder:"Apps im Ordner verwalten",manageAppsDescription:'Apps in "{{name}}" hinzufügen oder entfernen.',searchAppsPlaceholder:"Apps suchen...",noAppsMatchSearch:"Keine Apps entsprechen Ihrer Suche",noAppsFound:"Keine Apps gefunden",loadMore:"Mehr laden",appUpdatedAgo:"Aktualisiert {{timeAgo}}",saveWithCount:"{{label}} ({{count}})",operationFailed:"Vorgang fehlgeschlagen. Bitte versuchen Sie es erneut."},XI={viewLiveApp:"Live-App ansehen",share:"Teilen",rename:"Umbenennen",cloneApp:"App klonen",appSettings:"App-Einstellungen",delete:"Löschen",appDeleted:"App gelöscht",appDeletedDescription:'"{{name}}" wurde gelöscht',failedToDelete:"App konnte nicht gelöscht werden",failedToDeleteDescription:"Beim Löschen der App ist ein Fehler aufgetreten",manageFolders:"Ordner verwalten",removeFromFolder:"Aus Ordner entfernen",goToAppSettings:"Zu App-Einstellungen",deleteApp:"App löschen",deleteAppTitle:'"{{name}}" löschen?',deleteAppDescription:"Dadurch wird diese App und alle ihre Daten dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",appRemovedFromFolder:"App aus Ordner entfernt",failedToRemoveFromFolder:"App konnte nicht aus dem Ordner entfernt werden",addedToFolders_one:"App zu {{count}} Ordner hinzugefügt",addedToFolders_other:"App zu {{count}} Ordnern hinzugefügt",removedFromFolders_one:"App aus {{count}} Ordner entfernt",removedFromFolders_other:"App aus {{count}} Ordnern entfernt",failedToUpdateFolders:"Ordner konnten nicht aktualisiert werden",foldersUpdated:"{{added}} und {{removed}}",removeFromFavorites:"Aus Favoriten entfernen",addToFavorites:"Zu Favoriten hinzufügen"},eR={title:"App umbenennen",description:"Der App-Name ist für Sie und Ihre Nutzer sichtbar.",inputPlaceholder:"App-Name eingeben",urlUpdateNote:"Das Ändern des App-Namens aktualisiert auch die App-URL.",cancel:"Abbrechen",save:"Speichern",saving:"Wird gespeichert...",nameRequired:"App-Name ist erforderlich",enterDifferentName:"Bitte geben Sie einen anderen Namen ein",successTitle:"App umbenannt",successDescription:'App in "{{name}}" umbenannt',successDescriptionUrlFailed:'App in "{{name}}" umbenannt, aber die URL konnte nicht aktualisiert werden.',failedTitle:"App konnte nicht umbenannt werden",failedDescription:"Beim Umbenennen der App ist ein Fehler aufgetreten"},tR="Laden...",aR="(Kopie)",nR={cloningTitle:"{{appName}} wird geklont",cloningDescription:"Das kann einen Moment dauern. Sie finden es auf der Apps-Seite, sobald es fertig ist",goToApps:"Zu den Apps",confirmingPurchaseTitle:"Kauf wird bestätigt...",confirmingPurchaseSubtitle:"Das dauert normalerweise nur ein paar Sekunden",errorTitle:"Fehler",goBack:"Zurück",cloneNotAllowedTitle:"Klonen nicht erlaubt",cloneNotAllowedDescription:"Diese App erfordert Backend-Funktionen. Sie benötigen den Builder-Tarif oder höher, um sie zu klonen.",configureSecrets:"Secrets konfigurieren",cloneTitle:"{{name}} klonen",cloneButton:"{{name}} klonen",cloningButton:"{{name}} wird geklont...",defaultAppName:"App",preparing:"Wird vorbereitet...",errorCloningApp:"Beim Klonen der App ist ein Fehler aufgetreten",errorFetchingRequirements:"Beim Abrufen der Klon-Anforderungen ist ein Fehler aufgetreten",errorPurchaseTimeout:"Die Bestätigung Ihres Kaufs dauert länger als erwartet. Bitte prüfen Sie Ihre E-Mail oder kontaktieren Sie den Support, falls das Problem weiterhin besteht.",errorVerifyPurchase:"Kauf konnte nicht verifiziert werden. Bitte versuchen Sie es erneut."},iR={userApps:JI,folders:QI,appActions:XI,renameApp:eR,loading:tR,copySuffix:aR,remixPage:nR},rR={title:"Base44 App Templates Marketplace – Nutzungsbedingungen",lastUpdated:"Zuletzt aktualisiert: 18. November 2025"},oR={header:rR},sR={home:"Startseite",allApps:"Alle Apps",apps:"Apps",integrations:"Integrationen",appTemplates:"App-Vorlagen",hirePartner:"Partner engagieren",affiliates:"Affiliates",docsSupport:"Dokumente & Support",admins:"Admins",referFriends:"Freunde empfehlen",language:"Sprache",startBuilding:"Jetzt bauen"},lR={title:"Arbeitsbereich erstellen",subtitle:"Beginnen Sie mit der Zusammenarbeit mit Ihren Arbeitsbereichsmitgliedern",back:"Zurück",formTitle:"Arbeitsbereichsinformationen",nameLabel:"Name des Arbeitsbereichs",namePlaceholder:"Namen des Arbeitsbereichs eingeben",nameHint:"Wählen Sie einen Namen, der Ihren Arbeitsbereich repräsentiert",nameRequiredError:"Der Name des Arbeitsbereichs ist erforderlich",createFailedError:"Arbeitsbereich konnte nicht erstellt werden",limitReachedError:"Arbeitsbereichslimit erreicht. Sie können maximal 3 Arbeitsbereiche erstellen.",cancelButton:"Abbrechen",createButton:"Arbeitsbereich erstellen",creatingButton:"Arbeitsbereich wird erstellt...",whatHappensNext:{title:"Was passiert als nächstes?",ownerPermissions:"Sie werden der Arbeitsbereichsinhaber mit vollständigen Verwaltungsberechtigungen",inviteMembers:"Sie können Arbeitsbereichsmitglieder einladen und Lizenzen verwalten",accessDashboard:"Greifen Sie auf Ihr Arbeitsbereich-Dashboard zu, um loszulegen"}},cR={workspace:"Workspace",backToWorkspace:"Zurück zu {{workspaceName}}",settings:"Einstellungen",inviteMembers:"Mitglieder einladen",myWorkspaces:"Meine Workspaces",createWorkspace:"Workspace erstellen",noWorkspacesFound:"Keine Workspaces gefunden",accountSettings:"Kontoeinstellungen",apiKey:"API-Schlüssel",helpSupport:"Hilfe & Support",becomeAffiliate:"Affiliate werden",defaultUser:"Benutzer",defaultUserInitial:"B",referFriend:"Freund empfehlen",giftCards:"Geschenkkarten",sendGiftCard:"Geschenkkarte senden",notifications:"Benachrichtigungen",logOut:"Abmelden",aboutApp:"Über die App",upgradePlan:"Plan upgraden",winCredits:"Gratis-Credits gewinnen",pricingPlans:"Preispläne",documentation:"Dokumentation",getHelp:"Hilfe erhalten",memberCount_one:"{{count}} Mitglied",memberCount_other:"{{count}} Mitglieder",myProfile:"Mein Profil",viewProfile:"Profil ansehen",failedToLoadProfile:"Profil konnte nicht geladen werden",user:"Benutzer"},dR={ariaLabel:"Agent-Menü",agentFallback:"Agent"},uR={integrationCredits:"Integrations-Credits",monthlyCredits:"Monatliche Credits",messageCredits:"Nachrichtenkredit",dailyCredits:"Tägliche Credits",giftCardCredits:"Geschenk-Credits",renewsAt:"Erneuert sich am {{date}}",giftCardTooltip:"Geschenk-Credits werden vor Ihren Plan-Credits verwendet.",percentUsed:"{{percent}}% verwendet",messagesRemaining_one:"{{count}} Nachricht verbleibend",messagesRemaining_other:"{{count}} Nachrichten verbleibend",upgradeYourPlan:"Plan upgraden",getMoreOutOfYourApps:"Holen Sie mehr aus Ihren Apps heraus",upgradeYourPlanToPro:"Upgraden Sie Ihren Plan auf Pro",redeemDescription:"Nach dem Einlösen werden die Credits deinem Workspace gutgeschrieben.",creditsRemaining_one:"{{count}} Credit verbleibend",creditsRemaining_other:"{{count}} Credits verbleibend"},pR={label:"Community",appTemplates:"App-Vorlagen",appTemplatesDesc:"Starte schneller mit Community-Vorlagen.",hirePartner:"Partner engagieren",hirePartnerDesc:"Finde Partner und starte eine Zusammenarbeit.",spotlight:"Spotlight",spotlightDesc:"Entdecke herausragende Apps.",affiliateProgram:"Affiliate-Programm",affiliateProgramDesc:"Werde ein Base44-Affiliate.",joinUsOn:"Folge uns auf"},mR=JSON.parse(`{"title":"Einstellungen","lockedFeature":{"includedInPlan":"Im {{plan}}-Plan und höher enthalten","includedInPlanExact":"Im {{plan}}-Plan enthalten","viewPlans":"Pläne ansehen","talkToSales":"Mit dem Vertrieb sprechen","authSecurity":{"title":"Workspace-Zugang kontrollieren","body":"Unverzichtbar für regulierte Branchen und sicherheitsbewusste Organisationen","ssoAccess":"Single Sign-On (SSO) nutzen, um Passwortrisiken zu reduzieren","domainVerification":"Mit Domain-Verifizierung kontrollieren, wer beitreten kann","ipWhitelisting":"Zugang nur von vertrauenswürdigen IP-Adressen erlauben"},"integrations":{"title":"Einmal einrichten, im gesamten Workspace nutzen","body":"Für Teams, die APIs und externe Tools über Apps hinweg standardisieren.","configureOnce":"API-Integrationen einmal für alle Apps und Teammitglieder konfigurieren","sharedAccess":"Jeder im Workspace kann verbundene Tools sofort nutzen","consistentConnections":"Externe Verbindungen über alle Apps hinweg konsistent halten"},"appsConfiguration":{"title":"App-Sichtbarkeit und SSO-Regeln festlegen","body":"Für Teams, die interne Tools und sensible Apps verwalten.","publicAppControl":"Bestimmen, wer öffentliche Apps in diesem Workspace erstellen kann","defaultVisibility":"Die anfängliche Sichtbarkeit für neue Apps festlegen","enforceSso":"Workspace-SSO über alle Apps hinweg durchsetzen"},"analytics":{"title":"Sieh, wie dein Team Base44 nutzt","body":"Für Workspace-Inhaber und Admins, die Nutzung und Akzeptanz verfolgen.","creditTracking":"Verfolgen, wie Credits im Team genutzt werden","activeUsers":"Sehen, welche Teammitglieder Base44 aktiv nutzen","licenseUsage":"Verstehen, wie viele Lizenzen derzeit genutzt werden"},"skills":{"title":"Geben Sie Ihrer KI wiederverwendbare Skills","body":"Definieren Sie konsistentes KI-Verhalten, das in all Ihren Apps funktioniert.","reusableInstructions":"Erstellen Sie individuelle Anweisungen (einen Skill), die bestimmen, wie die KI Ihre Apps baut","autoActivation":"Einmal erstellen, in all Ihren Apps wiederverwenden","teamConsistency":"Ton, Formatierung, Logik oder jedes Verhalten steuern, das Sie standardisieren möchten"},"mcpConnections":{"title":"Externe Tools mit MCP verbinden","body":"Bringen Sie Live-Daten aus externen Tools direkt in Ihre Apps.","externalTools":"Geben Sie Ihrem KI-Builder Zugriff auf Echtzeit-Kontext während er arbeitet","customServers":"Verbinden Sie benutzerdefinierte MCP-Server zur Nutzung in all Ihren Apps","extendCapabilities":"Greifen Sie auf Tools wie Amplitude, Linear und mehr beim Bauen zu"}},"membersTitle":"Mitglieder","inviteMembers":"Mitglieder einladen","inviteByEmail":"Per E-Mail einladen","bulkInviteCsv":"Masseneinladung (CSV)","close":"Schließen","createInviteLink":"Einladungslink erstellen","manageInviteLinks":"Einladungslinks verwalten","backToMembers":"Zurück zu Mitglieder","backToMenu":"Zurück zum Einstellungsmenü","inviteLinks":{"title":"Einladungslinks","breadcrumb":"Einladungslinks","description":"Einladungslinks für diesen Workspace erstellen und verwalten.","createInviteLink":"Einladungslink erstellen","noLinksYet":"Noch keine Einladungslinks","noLinksSubtitle":"Erstellen Sie einen Einladungslink, um den Zugang zu diesem Workspace einfach zu teilen.","copyLink":"Link kopieren","copyLinkLower":"Link kopieren","deleteTooltip":"Einladungslink löschen","deleteButton":"Löschen","deleteLinkButton":"Link löschen","deleteConfirmTitle":"Einladungslink löschen?","deleteConfirmActive":"Personen können diesem Workspace über diesen Link nicht mehr beitreten. Diese Aktion kann nicht rückgängig gemacht werden.","deleteConfirmInactive":"Dieser Link und sein Verlauf werden aus diesem Workspace entfernt.","copiedToClipboard":"Einladungslink in die Zwischenablage kopiert.","columnName":"Name","columnStatus":"Status","columnUsage":"Nutzung","columnRole":"Rolle","columnExpiration":"Ablaufdatum","columnDomains":"Erlaubte Domains","statusActive":"Aktiv","statusRevoked":"Widerrufen","statusExpired":"Abgelaufen","statusLimitReached":"Limit erreicht","usageUnlimited":"Unbegrenzt","dialogTitle":"Einladungslink erstellen","dialogMobileTitle":"Link erstellen","linkName":"Linkname (Optional)","linkNamePlaceholder":"z.B. Onboarding neue Mitarbeiter","role":"Rolle","selectRole":"Rolle auswählen","roleViewer":"Betrachter","roleEditor":"Bearbeiter","roleMember":"Mitglied","expiration":"Ablauf","selectExpiration":"Ablauf auswählen","nDays_one":"{{count}} Tag","nDays_other":"{{count}} Tage","never":"Nie","maximumUses":"Maximale Nutzungen","selectLimit":"Limit auswählen","unlimited":"Unbegrenzt","nUses_one":"{{count}} Nutzung","nUses_other":"{{count}} Nutzungen","allowedDomains":"Erlaubte E-Mail-Domains (Optional)","allowedDomainsPlaceholder":"z.B. firma.com, partner.org","domainsHelp":"Mehrere Domains mit Komma trennen.","domainsError":"Ungültige Eingabe. Verwenden Sie kommagetrennte Domains (z.B. firma.com, partner.org)","securityWarning":"Jeder mit diesem Link kann Ihrem Workspace beitreten und auf dessen Daten zugreifen. Teilen Sie ihn nur mit vertrauenswürdigen Personen.","advancedOptions":"Erweiterte Optionen","cancel":"Abbrechen","creating":"Wird erstellt...","create":"Erstellen","linkCreatedAndCopied":"Einladungslink erstellt und kopiert.","manageInvitations":"Einladungen verwalten"},"postPaymentInvite":{"title":"Alles bereit!","description":"Ihr Plan ist aktiv. Laden Sie Ihre Freunde und Kollegen ein, um gemeinsam zu entwickeln.","createInviteLink":"Einladungslink erstellen","inviteByEmail":"Per E-Mail einladen","maybeLater":"Später vielleicht","inviteLinkReady":"Einladungslink bereit","subtitleNoDomain":"Jeder mit diesem Link kann als <bold>{{role}}</bold> beitreten","subtitleWithDomain":"Jeder mit einer {{domains}}-E-Mail kann als <bold>{{role}}</bold> beitreten","copied":"Kopiert","manageInvitationsPrompt":"Du kannst alle deine Einladungslinks auf der Einstellungsseite unter <inviteLink>Einladungslinks</inviteLink> verwalten.","copyLink":"Kopieren","close":"Schließen","expires":"Läuft ab {{time}}","remainingUses_one":"{{count}} Nutzung verbleibend","remainingUses_other":"{{count}} Nutzungen verbleibend"},"sections":{"workspace":"Workspace","integrations":"Integrationen","account":"Konto"},"creditUsage":{"pageDescription":"Überwachen Sie Ihren Credit-Verbrauch und Ihre Nutzungsmuster.","currentPlan":"Sie befinden sich derzeit im {{planName}}-Plan","overLimit":"Limit überschritten","updatePayment":"Zahlung aktualisieren","upgrade":"Upgrade","paymentOverdue":"Zahlung überfällig","pastDueDescription":"Ihre Abonnementzahlung ist überfällig. Die angezeigten Credits und Limits basieren auf Ihrem letzten bezahlten Plan ({{plan}}).","tryAgain":"Erneut versuchen","trying":"Bitte warten...","monthlyMessages":"Monatliche Nachrichten","workspaceTotal":"Workspace-Gesamt","workspaceUsage":"Workspace-Nutzung","dailyMessages":"Tägliche Nachrichten","loadError":"Nutzungsstatistiken konnten nicht geladen werden","portalError":"Zahlungsverwaltung konnte nicht geöffnet werden. Bitte versuchen Sie es erneut.","portalErrorTitle":"Fehler","creditsRenewIn":"Credits werden in {{timeLeft}} erneuert","expired":"Abgelaufen","dailyUsageTitle":"Tägliche Nutzung (Nachrichten)","noUsageData":"Keine Nutzungsdaten verfügbar","messagesLabel":"Nachrichten","timeDaysHours":"{{days}}T : {{hours}}Std","timeHoursMinutes":"{{hours}}Std : {{minutes}}Min","timeMinutes":"{{minutes}}Min"},"basicInformation":{"pageTitle":"Allgemeine Informationen","pageSubtitleEditable":"Verwalten Sie die Details und Einstellungen Ihres Arbeitsbereichs.","pageSubtitleReadOnly":"Arbeitsbereichsdetails anzeigen. Nur Eigentümer und Administratoren können bearbeiten.","loadingMessage":"Arbeitsbereichsinformationen werden geladen...","workspaceNameLabel":"Name des Arbeitsbereichs","workspaceNamePlaceholder":"Namen des Arbeitsbereichs eingeben","workspaceDescriptionLabel":"Beschreibung des Arbeitsbereichs","workspaceDescriptionPlaceholder":"Beschreiben Sie Ihren Arbeitsbereich...","workspaceNameEmptyErrorMessage":"Der Name des Arbeitsbereichs darf nicht leer sein","cancelButton":"Abbrechen","saveButton":"Änderungen speichern","savingButton":"Speichern...","saveSuccessMessage":"Arbeitsbereichseinstellungen erfolgreich aktualisiert!","saveErrorMessage":"Fehler beim Aktualisieren der Arbeitsbereichseinstellungen: {{error}}","unknownError":"Unbekannter Fehler"},"leaveWorkspace":{"title":"Arbeitsbereich verlassen","description":"Wenn Sie diesen Arbeitsbereich verlassen, verlieren Sie den Zugriff auf alle zugehörigen Apps. Das Eigentum an Ihren Apps wird auf den Arbeitsbereichsinhaber übertragen.","button":"Arbeitsbereich verlassen","soleOwnerNote":"Sie können den Arbeitsbereich nicht verlassen, da Sie der einzige Inhaber sind.","successMessage":"Sie haben den Arbeitsbereich verlassen.","workspaceNameFallback":"Arbeitsbereich","dialog":{"title":"{{name}} verlassen?","confirmQuestion":"Sind Sie sicher, dass Sie <bold>{{name}}</bold> verlassen möchten?","transferWarning":"Ihre Apps in diesem Arbeitsbereich werden auf den Arbeitsbereichsinhaber übertragen und Sie verlieren den Zugriff.","cancelButton":"Abbrechen","confirmButton":"Arbeitsbereich verlassen"}},"menu":{"basicInformation":"Allgemeine Informationen","planAndBilling":"Plan und Abrechnung","creditUsage":"Credit-Nutzung","members":"Mitglieder","seatsAndMembers":"Plätze und Mitglieder","authAndSecurity":"Authentifizierung und Sicherheit","integrations":"Integrationen","appsConfiguration":"App-Konfiguration","analytics":"Analysen","accountSettings":"Kontoeinstellungen","mcpConnections":"MCP-Verbindungen","skills":"Fähigkeiten","connectors":"Konnektoren","manageSubscription":"Abonnement verwalten","secrets":"Geheimnisse","dataResidency":"Datenresidenz"},"guests":{"tabMembers":"Mitglieder","tabGuests":"Gäste","title":"Gäste","infoBanner":"Gäste sind externe Benutzer, die zu bestimmten Apps eingeladen wurden. Sie verbrauchen Credits aus dem gemeinsamen Pool des Arbeitsbereichs.","searchPlaceholder":"Nach E-Mail oder App suchen...","columnGuest":"Gäste","columnApp":"App","columnInvitedBy":"Eingeladen von","columnCreditsUsed":"Verbrauchte Credits","pending":"Ausstehend","promoteToEditor":"Zum Editor befördern","promoteToViewer":"Zum Betrachter befördern","removeFromWorkspace":"Aus dem Arbeitsbereich entfernen","emptyTitle":"Noch keine Gäste","emptySubtitle":"Gäste können über den App-Mitarbeiter-Einladungsablauf hinzugefügt werden.","noResults":"Keine Gäste gefunden","noResultsSubtitle":"Keine Gäste entsprechen \\"{{searchTerm}}\\"","promoted":"{{email}} zu {{role}} befördert","promoteFailed":"Rolle konnte nicht aktualisiert werden","setCreditLimit":"Kreditlimit festlegen","upgradeForCreditLimit":"Upgrade auf den Enterprise-Plan für diese Funktion","viewAppAccess":"App-Zugang anzeigen","removeMember":"Mitglied entfernen","guestRole":"Gast","appAccessTitle":"App-Zugang von {{name}}","appAccessDescription":"Sehen Sie die Apps, auf die dieser Gast im Arbeitsbereich zugreifen kann.","appAccessLoading":"Laden...","appAccessEmpty":"Kein App-Zugang gefunden.","appAccessColumnApp":"App","appAccessDone":"Fertig"},"members":{"pageTitle":"Mitglieder","pageDescription":"Mitglieder und Rollen für diesen Arbeitsbereich anzeigen und verwalten.","tableTitle":"Mitglieder ({{count}})","columnMembers":"Mitglieder","columnCreditsUsed":"Verbrauchte Credits","columnCreditsUsedWithLimit":"Verbrauchte Credits (von {{limit}})","columnCreditLimit":"Credit-Limit","columnRole":"Rolle","roleOwner":"Eigentümer","roleAdmin":"Admin","roleEditor":"Editor","roleViewer":"Betrachter","pending":"Ausstehend","expired":"Abgelaufen","searchPlaceholder":"Nach Name oder E-Mail suchen...","searchPlaceholderMobile":"Suchen...","inviteMembers":"Mitglieder einladen","inviteByEmail":"Mitglieder einladen","bulkInvite":"Masseneinladung","setCreditLimit":"Credit-Limit festlegen","removeMember":"Mitglied entfernen","upgradeTooltip":"Upgrade auf den Enterprise-Plan, um diese Funktion freizuschalten","default":"(Standard)","emptyTitle":"Noch keine Mitglieder","emptyTitleNoResults":"Keine Mitglieder gefunden","emptySubtitlePersonal":"Persönliche Arbeitsbereiche enthalten nur Sie","emptySubtitleShared":"Laden Sie Ihr erstes Mitglied ein","emptySubtitleNoResults":"Keine Mitglieder entsprechen \\"{{searchTerm}}\\"","cantChangeOwnRole":"Sie können Ihre eigene Rolle nicht ändern. Bitten Sie einen Arbeitsbereich-Eigentümer, sie zu aktualisieren.","creditLimitTooltip":"Begrenzen Sie, wie viele Credits jedes Mitglied aus dem Workspace-Pool nutzen kann. Legen Sie Limits individuell fest oder verteilen Sie sie gleichmäßig auf alle Mitglieder.","tableTitleFiltered":"Mitglieder ({{filteredCount}} von {{totalCount}})","clearSearch":"Suche löschen"},"seatsAndMembers":{"pageTitle":"Plätze und Mitglieder","pageDescription":"Verwalten Sie Workspace-Plätze und Teammitglieder.","emptyTitle":"Erste Schritte mit Arbeitsbereich-Plätzen","emptyDescription":"Kaufen Sie Plätze, um Mitglieder einzuladen und mit der Zusammenarbeit zu beginnen.","buyFirstSeats":"Erste Plätze kaufen","planSeats":"{{planName}} Plätze","seatsUsage":"Platznutzung","addSeats":"Plätze hinzufügen","removeSeats":"Plätze entfernen","seatsAvailable_one":"{{count}} Platz verfügbar","seatsAvailable_other":"{{count}} Plätze verfügbar","buyMoreSeats":"Weitere Plätze kaufen","expandWorkspace":"Workspace-Größe erweitern","searchPlaceholder":"Nach E-Mail, Rolle, Status oder Platztyp suchen (z.B. Starter, Pro)...","searchTip":"Tipp: Suchen Sie nach Platztypen wie \\"Starter\\", \\"Builder\\", \\"Pro\\", \\"Elite\\" oder \\"kein Platz\\""},"inviteDialog":{"title":"Mitglieder einladen","emailAddress":"E-Mail-Adresse","role":"Rolle","cancel":"Abbrechen","invite":"Einladen","inviting":"Wird eingeladen...","roleViewer":"Betrachter","roleEditor":"Editor","roleAdmin":"Admin","roleMember":"Mitglied","errorNoEmail":"Bitte mindestens eine E-Mail-Adresse eingeben","errorInvalidEmail":"Eine oder mehrere E-Mail-Adressen sind ungültig.","errorFallback":"Benutzer konnten nicht eingeladen werden","toastSingle":"Einladung an {{email}} gesendet","toastMultiple":"{{count}} Einladungen erfolgreich gesendet"},"dataResidency":{"title":"Datenresidenz","tooltip":"Legt die Datenspeicherregion für Apps in diesem Arbeitsbereich fest.","edit":"Bearbeiten","upgradeRequired":"Elite-Plan oder höher erforderlich, um Datenresidenz zu konfigurieren.","appliesToNewApps":"Gilt für neu erstellte Apps. Bestehende Apps behalten ihre aktuelle Region.","editModal":{"title":"Arbeitsbereich-Datenresidenz","description":"Wählen Sie, wo Daten für Apps gespeichert werden sollen, die Sie in diesem Arbeitsbereich erstellen.","label":"Datenresidenz","appliesToNewApps":"Gilt für neu erstellte Apps. Bestehende Apps behalten ihre aktuelle Datenregion.","viewAllApps":"Datenresidenz für alle Arbeitsbereich-Apps anzeigen","cancel":"Abbrechen","save":"Speichern","saving":"Wird gespeichert...","updateSuccess":"Datenresidenz erfolgreich aktualisiert","updateError":"Fehler beim Aktualisieren der Datenresidenz: {{detail}}","unknownError":"Unbekannter Fehler"},"appsModal":{"title":"App-Datenresidenz","description":"Sehen Sie, wo Daten für jede App in diesem Arbeitsbereich gespeichert sind.","appName":"App-Name","dataRegion":"Datenregion","loading":"Lädt...","noApps":"Keine Apps in diesem Arbeitsbereich.","migrationInfo":"Müssen Sie eine App in eine andere Region verschieben? <a>Migration anfragen.</a>","supportTitle":"Anfrage zur Datenregionsmigration — {{name}}","supportContent":"Ich möchte App-Daten in eine andere Region migrieren.\\n\\nArbeitsbereich: {{name}} ({{id}})\\nAktuelle Standardregion: {{region}}\\nZielregion: \\nZu migrierende Apps: "}},"mcp":{"title":"MCP-Verbindungen","addMcp":"MCP hinzufügen","limitReached":"Du hast das Limit von {{max}} MCP-Servern erreicht. Entferne einen, um eine neue Verbindung hinzuzufügen.","description":"Verbinde benutzerdefinierte MCP-Server, um die Baufähigkeiten von Base44 mit externen Tools und Daten zu erweitern.","descriptionWithLink":"Verbinde benutzerdefinierte MCP-Server, um die Baufähigkeiten von Base44 mit externen Tools und Daten zu erweitern. <a>Mehr über MCP erfahren<icon/></a>","learnMore":"Mehr über MCP erfahren","emptyTitle":"Noch kein MCP-Server verbunden","addCustomMcp":"Benutzerdefinierten MCP hinzufügen","aria":{"enableConnection":"{{name}} aktivieren","disableConnection":"{{name}} deaktivieren","actionsFor":"Aktionen für {{name}}"},"actions":{"editDetails":"Details bearbeiten","removeMcp":"MCP entfernen"},"deleteConfirm":{"title":"MCP-Verbindung entfernen","description":"Bist du sicher, dass du \\"{{name}}\\" entfernen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.","confirm":"Entfernen","cancel":"Abbrechen"},"tools":{"availableTools_one":"{{count}} verfügbares Tool","availableTools_other":"{{count}} verfügbare Tools","more":"+{{count}} weitere","showLess":"Weniger anzeigen","loadingTools":"Tools werden geladen..."},"addDialog":{"title":"Benutzerdefinierten MCP-Server hinzufügen","name":"Name","namePlaceholder":"z. B. Mein MCP-Server","url":"URL","urlExists":"MCP-Server existiert bereits.","authentication":"Authentifizierung","authNone":"Nicht erforderlich","authNoneDescription":"Ohne Anmeldedaten verbinden","authOAuth":"OAuth","authOAuthDescription":"Im nächsten Schritt autorisieren","customHeaders":"Benutzerdefinierte Header","optional":"optional","headersDescription":"Header hinzufügen, die mit jeder Anfrage gesendet werden (z. B. API-Schlüssel)","headerName":"Header-Name","headerValue":"Wert","addHeader":"Header hinzufügen","connectionFailed":"Verbindung fehlgeschlagen","serverReady":"MCP-Server ist bereit zur Verbindung.","serverReadyWithTools_one":"MCP-Server ist bereit zur Verbindung. 1 Tool gefunden.","serverReadyWithTools_other":"MCP-Server ist bereit zur Verbindung. {{count}} Tools gefunden.","toolsFound_one":"{{count}} Tool gefunden.","toolsFound_other":"{{count}} Tools gefunden.","oauthConfirmed":"Server bestätigt. Klicke auf \\"Autorisieren & Hinzufügen\\", um die OAuth-Authentifizierung abzuschließen.","test":"Testen","testAndAdd":"Testen & Hinzufügen","authorizeAndAdd":"Autorisieren & Hinzufügen","cancel":"Abbrechen","urlRequired":"Bitte gib eine Server-URL ein.","fieldsRequired":"Bitte fülle alle Pflichtfelder aus.","authRequired":"Für diesen Server ist eine Authentifizierung erforderlich. Wähle OAuth, um fortzufahren.","authNotRequired":"Dieser Server benötigt kein OAuth. Versuche, ohne OAuth hinzuzufügen.","testFailed":"Verbindungstest fehlgeschlagen."},"editDialog":{"title":"Verbundenen MCP bearbeiten","enabled":"Aktiviert","nameRequired":"Bitte gib einen Namen ein.","changeInfo":"Um die URL oder Authentifizierungsmethode zu ändern, erstelle eine neue MCP-Verbindung.","saveChanges":"Änderungen speichern","removeMcp":"MCP entfernen","cancel":"Abbrechen"},"toast":{"added":"MCP-Verbindung hinzugefügt","addedDescription":"Erfolgreich mit dem MCP-Server verbunden.","addedWithName":"Verbindung \\"{{name}}\\" erfolgreich hinzugefügt.","saved":"Änderungen gespeichert","savedDescription":"MCP-Verbindung erfolgreich aktualisiert."}},"skills":{"title":"Fähigkeiten","addSkill":"Fähigkeit hinzufügen","addSkillLower":"Fähigkeit hinzufügen","editSkill":"Fähigkeit bearbeiten","viewSkill":"Fähigkeit anzeigen","deleteSkill":"Fähigkeit löschen","limitReached":"Du hast das Limit von {{max}} Fähigkeiten erreicht. Entferne eine, um eine neue Fähigkeit hinzuzufügen.","description":"Erstelle wiederverwendbare Anweisungssätze, die der KI-Builder während Gesprächen aktivieren kann.","emptyDescription":"Fähigkeiten sind gespeicherte Richtlinien, die bestimmen, wie die KI deine Apps baut. Sie werden bei Bedarf aktiviert, um deinen Regeln und Best Practices automatisch zu folgen.","emptyDescriptionWithLink":"Fähigkeiten sind gespeicherte Richtlinien, die bestimmen, wie die KI deine Apps baut. Sie werden bei Bedarf aktiviert, um deinen Regeln und Best Practices automatisch zu folgen. <a>Mehr erfahren</a>","learnMore":"Mehr erfahren","getStartedWithTemplate":"Mit einer Vorlage starten","viewMore":"Mehr anzeigen","failedToLoadTemplates":"Fähigkeiten-Vorlagen konnten nicht geladen werden","templatesUnavailable":"Vordefinierte Vorlagen sind möglicherweise nicht verfügbar.","failedToLoadTemplate":"Vorlage konnte nicht geladen werden","form":{"skillName":"Name der Fähigkeit","namePlaceholder":"z. B. brand-guidelines","nameRequired":"Name ist erforderlich","nameMaxLength":"Der Name darf maximal {{max}} Zeichen lang sein","namePattern":"Nur Kleinbuchstaben, Zahlen und Bindestriche (z. B. code-review)","nameExists":"Eine Fähigkeit mit diesem Namen existiert bereits","description":"Beschreibung","descriptionHint":"Sag dem Agenten, wann er diese Fähigkeit nutzen soll. Er liest dies, um zu entscheiden, ob er sie aktiviert.","descriptionPlaceholder":"z.B. Setzt Markenfarben, Typografie und Designmuster auf allen Seiten und Komponenten durch. Verwenden bei der Erstellung neuer Seiten, Aktualisierung von Styles oder wenn der Benutzer die Marke oder das Designsystem erwähnt.","instructions":"Anweisungen","instructionsHint":"Die Schritt-für-Schritt-Regeln, die dein Agent befolgt, wenn diese Fähigkeit aktiviert wird. Schreib es, als würdest du ein neues Teammitglied trainieren.","instructionsPlaceholder":"## Markenfarben\\nPrimär: #1E40AF (Navigation, Buttons)\\nAkzent: #F59E0B (Highlights, CTAs)\\nHintergrund: #F8FAFC, Oberfläche: Weiß\\n\\n## Typografie\\nÜberschriften: fett, dunkles Schiefergrau\\nFließtext: text-sm text-slate-600\\nEinheitliche Abstände zwischen Abschnitten\\n\\n## Komponentenmuster\\n- Card mit dezentem Schatten für Datenbereiche\\n- Immer Lade- und Leerzustände einbauen\\n- Formulare: Sheet-Dialoge für Erstellen/Bearbeiten\\n- Tabellen: gestreifte Zeilen, sortierbare Spalten","reviewHint":"Von KI verfeinert. Passe es vor dem Speichern gerne an."},"dialog":{"reviewTitle":"Fähigkeit überprüfen","reviewSubtitle":"Überprüfe die Beschreibung und Anweisungen vor dem Speichern. Du kannst dies jederzeit bearbeiten.","pickerTitle":"Fähigkeit hinzufügen oder von Grund auf starten","startFromScratch":"Von Grund auf starten","cancel":"Abbrechen","backToOriginal":"Zurück zum Original","saveSkill":"Fähigkeit speichern","saveChanges":"Änderungen speichern","refineAndReview":"Verfeinern & Überprüfen","refineShort":"Verfeinern","close":"Schließen","add":"Hinzufügen","enabled":"Aktiviert"},"toast":{"created":"Fähigkeit erstellt","createdDescription":"\\"{{name}}\\" wurde hinzugefügt.","failedToCreate":"Fähigkeit konnte nicht erstellt werden","updated":"Fähigkeit aktualisiert","updatedDescription":"\\"{{name}}\\" wurde gespeichert.","failedToUpdate":"Fähigkeit konnte nicht aktualisiert werden","refinedTooLong":"Verfeinerte Fähigkeit ist zu lang","refinedTooLongDescription":"Wir haben versucht, sie zu kürzen, aber das Ergebnis überschreitet immer noch das Zeichenlimit. Kürze deinen Inhalt und verfeinere erneut.","failedToPolish":"Fähigkeit konnte nicht verfeinert werden","failedToLoad":"Fähigkeit konnte nicht geladen werden","failedToLoadList":"Fähigkeiten konnten nicht geladen werden","retryLater":"Bitte versuche es später erneut.","retryAgain":"Bitte versuche es erneut.","removed":"Fähigkeit entfernt","removedDescription":"Die Fähigkeit wurde entfernt."},"deleteConfirm":{"description":"Bist du sicher, dass du \\"{{name}}\\" löschen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.","confirm":"Löschen","cancel":"Abbrechen"},"aria":{"enableSkill":"{{name}} aktivieren","disableSkill":"{{name}} deaktivieren","actionsFor":"Aktionen für {{name}}"}},"secrets":{"title":"Geheimnisse","description":"Verwalten Sie Anmeldeinformationen und Zugriffstoken für den programmatischen Zugriff auf Ihren Workspace.","apiKeys":{"title":"API-Schlüssel","description":"Erstellen und verwalten Sie API-Schlüssel für den programmatischen Zugriff auf Ihren Workspace. Verwenden Sie diese Schlüssel, um Audit-Logs zu streamen, Ihren Identity-Provider über SCIM zu verbinden oder Workspace-Daten über die Monitoring-API in ein externes System zu exportieren.","createButton":"API-Schlüssel erstellen","limitReached":"Sie haben das Maximum von {{max}} API-Schlüsseln erreicht. Löschen Sie einen vorhandenen Schlüssel, um einen neuen zu erstellen.","table":{"name":"Name","key":"Schlüssel","createdBy":"Erstellt von","created":"Erstellt","lastUsed":"Zuletzt verwendet","status":"Status","never":"Nie"},"status":{"active":"Aktiv","disabled":"Deaktiviert"},"emptyState":{"title":"Noch keine API-Schlüssel","description":"Workspace-API-Schlüssel ermöglichen programmatischen Zugriff auf Ihre Workspace-APIs (SIEM, SCIM, benutzerdefinierte Integrationen)."},"actions":{"edit":"Bearbeiten","disableKey":"Schlüssel deaktivieren","enableKey":"Schlüssel aktivieren","deleteKey":"Schlüssel löschen","actionsFor":"Aktionen für {{name}}"},"sheet":{"editButton":"Bearbeiten","disableButton":"Deaktivieren","enableButton":"Aktivieren"},"disableConfirm":{"title":"API-Schlüssel deaktivieren?","description":"Der API-Schlüssel <strong>\\"{{name}}\\"</strong> wird sofort deaktiviert. Integrationen, die diesen Schlüssel verwenden, funktionieren nicht mehr.","note":"Sie können ihn später wieder aktivieren.","confirm":"Schlüssel deaktivieren","cancel":"Abbrechen"},"enableConfirm":{"title":"API-Schlüssel aktivieren?","description":"Der API-Schlüssel <strong>\\"{{name}}\\"</strong> wird wieder aktiviert. Integrationen, die diesen Schlüssel verwenden, funktionieren wieder.","confirm":"Schlüssel aktivieren","cancel":"Abbrechen"},"deleteConfirm":{"title":"API-Schlüssel löschen?","description":"Der API-Schlüssel <strong>\\"{{name}}\\"</strong> wird dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden. Integrationen, die diesen Schlüssel verwenden, funktionieren sofort nicht mehr.","confirm":"Schlüssel löschen","cancel":"Abbrechen"},"toast":{"loadError":"API-Schlüssel konnten nicht geladen werden","loadErrorDescription":"Bitte versuchen Sie es erneut.","disabled":"API-Schlüssel deaktiviert","disabledDescription":"\\"{{name}}\\" wurde deaktiviert.","disableError":"API-Schlüssel konnte nicht deaktiviert werden","enabled":"API-Schlüssel aktiviert","enabledDescription":"\\"{{name}}\\" wurde wieder aktiviert.","enableError":"API-Schlüssel konnte nicht aktiviert werden","deleted":"API-Schlüssel gelöscht","deletedDescription":"\\"{{name}}\\" wurde dauerhaft gelöscht.","deleteError":"API-Schlüssel konnte nicht gelöscht werden","createError":"API-Schlüssel konnte nicht erstellt werden","updateError":"API-Schlüssel konnte nicht aktualisiert werden","copyError":"API-Schlüssel konnte nicht kopiert werden","updated":"API-Schlüssel aktualisiert","updatedDescription":"\\"{{name}}\\" wurde gespeichert."},"createDialog":{"title":"API-Schlüssel erstellen","titleReveal":"API-Schlüssel erstellt","namePlaceholder":"z.B. SIEM-Integration","descriptionPlaceholder":"Wofür wird dieser Schlüssel verwendet?","cancelButton":"Abbrechen","createButton":"Schlüssel erstellen","creatingButton":"Erstelle...","warningMessage":"Kopieren Sie diesen Schlüssel jetzt – Sie werden ihn nicht mehr sehen können. Behandeln Sie ihn wie ein Passwort: Er gewährt Zugriff auf Ihre Workspace-Daten über die API.","yourApiKey":"Ihr API-Schlüssel","doneButton":"Fertig","copyAria":"API-Schlüssel kopieren"},"editDialog":{"title":"API-Schlüssel bearbeiten","cancelButton":"Abbrechen","saveButton":"Speichern","savingButton":"Speichere..."},"formFields":{"name":"Name","description":"Beschreibung","descriptionOptional":"(optional)"}}},"authSecurity":{"title":"Authentifizierung und Sicherheit","description":"Konfiguriere die Authentifizierungs- und Sicherheitseinstellungen für deinen Arbeitsbereich.","sso":{"title":"Single Sign-On-Konfiguration","configureTooltip":"SSO für deinen Arbeitsbereich konfigurieren","description":"Aktiviere SSO, um die Authentifizierung für deine Arbeitsbereichsmitglieder zu vereinfachen.","settingUp":"Einrichten...","setUp":"Einrichten","setUpConfiguration":"SSO einrichten","enforcedTooltip":"Dieses SSO wird für alle Apps im Arbeitsbereich erzwungen, d.h. sie verwenden es automatisch zur Authentifizierung. Um die Durchsetzungseinstellungen zu aktualisieren, gehe zu App-Konfiguration.","enforcedBadge":"Für Apps erzwungen","setUpAction":"Einrichten","configure":"Konfigurieren","selectProvider":"SSO-Anbieter auswählen","cancelSetup":"Einrichtung abbrechen","dismiss":"Schließen","saving":"Speichern...","enableSSO":"SSO aktivieren","saveSSOSettings":"SSO-Einstellungen speichern","notAvailableTitle":"Nicht verfügbar","notAvailableDesc":"Single Sign-On (SSO) ist für persönliche Arbeitsbereiche nicht verfügbar.","limitedAccessTitle":"Eingeschränkter Zugriff","limitedAccessDesc":"Nur Arbeitsbereichsadministratoren können SSO-Einstellungen konfigurieren.","toast":{"error":"Fehler","failedToLoadSettings":"SSO-Einstellungen konnten nicht geladen werden","failedToLoadAppSettings":"App-Einstellungen konnten nicht geladen werden","ssoEnabled":"SSO aktiviert","ssoEnabledDesc":"Single Sign-On wurde für deinen Arbeitsbereich aktiviert","ssoDisabled":"SSO deaktiviert","ssoDisabledDesc":"Single Sign-On wurde deaktiviert","failedToUpdateStatus":"SSO-Status konnte nicht aktualisiert werden","success":"Erfolg","settingsUpdated":"SSO-Einstellungen erfolgreich aktualisiert","failedToUpdate":"SSO-Einstellungen konnten nicht aktualisiert werden"},"fields":{"client_id":"Client-ID","client_secret":"Client-Secret","scope":"Scope","discovery_url":"Discovery-URL","tenant_id":"Mandanten-ID","okta_domain":"Okta-Domain","auth_endpoint":"Auth-Endpunkt","token_endpoint":"Token-Endpunkt","userinfo_endpoint":"Benutzerinfo-Endpunkt","jwks_uri":"JWKS-URI","name":"Anbietername"},"autoGenerated":"(Automatisch generiert)","placeholders":{"client_id":"Client-ID eingeben","client_secret":"Client-Secret eingeben","scope":"Scope eingeben","discovery_url":"Discovery-URL eingeben","tenant_id":"Deine Azure AD Mandanten-ID","okta_domain":"dein-unternehmen","auth_endpoint":"Auth-Endpunkt eingeben","token_endpoint":"Token-Endpunkt eingeben","userinfo_endpoint":"Benutzerinfo-Endpunkt eingeben","jwks_uri":"JWKS-URI eingeben","name":"Anbietername eingeben"},"tooltips":{"clientId":"Die OAuth-Client-ID, die von deinem Identitätsanbieter bereitgestellt wird","clientSecret":"Das OAuth-Client-Secret, das von deinem Identitätsanbieter bereitgestellt wird (vertraulich halten)","scopeGeneral":"Anzufordernde OAuth-Bereiche (openid, email, profile werden häufig verwendet)","scopeGithub":"Anzufordernde OAuth-Bereiche (user:email für GitHub)","discoveryUrlGoogle":"OIDC-Discovery-Endpunkt (für Google vorkonfiguriert)","discoveryUrlMicrosoft":"OIDC-Discovery-Endpunkt wird automatisch aus deiner Mandanten-ID generiert","discoveryUrlOkta":"OIDC-Discovery-Endpunkt wird automatisch aus deiner Okta-Domain generiert","discoveryUrlAdvanced":"OIDC-Discovery-Endpunkt-URL (falls von deinem Anbieter unterstützt)","tenantId":"Azure AD-Mandanten-ID. Im Azure-Portal → Azure Active Directory → Übersicht","oktaDomain":"Dein Okta-Domainname (z. B. 'ihr-unternehmen' aus ihr-unternehmen.okta.com)","authEndpointGithub":"GitHub OAuth-Autorisierungs-Endpunkt (vorkonfiguriert)","authEndpointGeneral":"OAuth-Autorisierungs-Endpunkt-URL","tokenEndpointGithub":"GitHub OAuth-Token-Endpunkt (vorkonfiguriert)","tokenEndpointGeneral":"OAuth-Token-Endpunkt-URL","userinfoEndpointGithub":"GitHub API-Benutzer-Endpunkt (vorkonfiguriert)","userinfoEndpointGeneral":"OAuth-Benutzerinfo-Endpunkt-URL","jwksUri":"JSON Web Key Set-URI zur Token-Verifizierung","providerName":"Benutzerdefinierter Name für deinen SSO-Anbieter"},"providerFallback":"{{name}} SSO","providers":{"advanced":"Erweiterte / Manuelle Konfiguration"}},"domainVerification":{"title":"Domain-Verifizierung","label":"Arbeitsbereich-Domain","placeholder":"Domain hinzufügen","hint":"Die mit deinem Arbeitsbereich verknüpfte Domain","check":"Prüfen","verified":"Verifiziert","checking":"Wird geprüft","copyFailed":"Kopieren in die Zwischenablage fehlgeschlagen","dnsTimedOut":"DNS-Verifizierung hat das Zeitlimit überschritten. Bitte überprüfe deine DNS-Einstellungen und versuche es erneut.","domainVerifiedSuccess":"Domain erfolgreich verifiziert!","enterDomainFirst":"Bitte gib zuerst eine Domain ein","domainSaved":"Domain gespeichert. Füge den DNS-Eintrag hinzu, um den Besitz zu bestätigen.","configFailed":"Domain-Verifizierung konnte nicht konfiguriert werden","verificationReset":"Domain-Verifizierung wurde zurückgesetzt","resetFailed":"Domain-Verifizierung konnte nicht zurückgesetzt werden","addDnsRecords":"DNS-Einträge für {{domain}} hinzufügen","dnsInstructions":"Melde dich bei deinem Domain-Anbieter an, gehe zu den DNS-Einstellungen und füge diesen TXT-Eintrag hinzu.","type":"Typ","hostName":"Host / Name","value":"Wert","dnsCheckNote":"Die DNS-Verifizierung kann einige Minuten dauern. Sobald alles aktualisiert ist, verifizieren wir deine Domain automatisch.","checkingDns":"DNS-Einträge werden überprüft...","resetting":"Wird zurückgesetzt...","reset":"Zurücksetzen","copyLabel":"{{label}} kopieren"}}}`),gR={earnBonusCredits:"Bonus-Credits verdienen"},hR={apps:"Apps",superagents:"Superagenten",newAgent:"Neuer Agent",emptyAgents:"Erstellen Sie Ihren ersten Agent und sehen Sie hier Ihre Unterhaltungen.",allAgents:"Alle Agenten",settings:"Einstellungen",inviteMembers:"Mitglieder einladen",allWorkspaces:"Alle Arbeitsbereiche",org:"Organisation",createNewWorkspace:"Neuen Arbeitsbereich erstellen",recents:"Zuletzt verwendet",favorites:"Favoriten",noFavoritesYet:"Noch keine Favoriten",addAppsForQuickAccess:"Fügen Sie Ihre Apps für schnellen Zugriff hinzu",view_all:"Alle anzeigen"},fR={pageTitle:"Base44 Geschenkkarte kaufen",pageSubtitle:"Verschenke die Freude am Bauen. Sende eine Geschenkkarte an einen Freund.",tabBuy:"Geschenkkarte kaufen",tabPurchased:"Gekauft",successTitle:"Geschenkkarte erfolgreich gekauft!",successDescription:"Der Empfänger erhält eine E-Mail mit dem Geschenkkarten-Code.",successDescriptionPdf:"Überprüfe deine E-Mail für eine druckbare Geschenkkarte, die du persönlich verschenken kannst.",dismissSuccess:"Erfolgsmeldung schließen",amount:"Betrag",customAmount:"$ Benutzerdefiniert",customAmountPlaceholder:"{{symbol}} Eigener Betrag",customAmountError:"Der Betrag muss zwischen {{min}} und {{max}} liegen",creditsInfo:"Diese Geschenkkarte enthält <strong>{{credits}} Nachrichtenguthaben</strong> für die App-Entwicklung",deliveryMethodTitle:"Versandmethode wählen",deliveryEmail:"E-Mail an Empfänger senden (sofort nach Kauf)",deliveryPdf:"E-Mail an mich senden (PDF zum Drucken)",recipientTitle:"An",recipientName:"Name",recipientNamePlaceholder:"Name des Empfängers",recipientEmail:"E-Mail",recipientEmailPlaceholder:"E-Mail des Empfängers",messageLabel:"Geschenkkarten-Nachricht (optional)",messagePlaceholder:"Persönliche Nachricht hinzufügen...",suggestMessage:"Nachricht vorschlagen",suggestFallbackName:"Freund",messageCharCount:"{{count}}/300 Zeichen",senderTitle:"Von",senderName:"Dein Name",senderNamePlaceholder:"Dein Name",submitButton:"Weiter zum Kauf",submitting:"Wird verarbeitet...",errorGeneric:"Etwas ist schiefgelaufen",historyEmpty:"Noch keine Geschenkkarten. Kaufe eine für einen Freund!",historyTo:"An {{name}}",historyCodeLabel:"Geschenkkarten-Code",historyCopy:"Kopieren",historyCopied:"Kopiert",historyRedeemed:"Diese Geschenkkarte wurde eingelöst",historyRedeemedOn:"Diese Geschenkkarte wurde am {{date}} eingelöst",historySentTo:"Gesendet an {{email}}",statusSent:"Gesendet",statusRedeemed:"Eingelöst",statusExpired:"Abgelaufen",statusProcessing:"In Bearbeitung",statusPending:"Ausstehend",statusRevoked:"Widerrufen",designTitle:"Design auswählen",historyActions:"Aktionen",designClassic:"Klassisch",designSunrise:"Sonnenaufgang",designOcean:"Ozean",cardLabel:"Geschenkkarte",cardCreditsLabel:"Nachrichtenguthaben",cardFor:"Für {{name}}",cardDefaultName:"Deinen Freund",historyError:"Geschenkkarten konnten nicht geladen werden. Bitte erneut versuchen.",historyDateIssued:"Ausstellungsdatum",historyRecipient:"Empfänger",historyAmount:"Betrag",historyStatus:"Status",historyCode:"Code",historySenderDetails:"Absenderdetails",historySentToYou:"An Sie gesendet",historyViewCode:"Code anzeigen",historyHideCode:"Code verbergen",historyDownloadPdf:"PDF herunterladen",historyResend:"Erneut senden",historyResendSuccess:"Geschenkkarten-E-Mail erfolgreich erneut gesendet!",historyResendError:"Erneutes Senden fehlgeschlagen. Bitte versuchen Sie es erneut.",historyDownloadError:"Download fehlgeschlagen. Bitte versuchen Sie es erneut.",historyCredits:"Credits",emailInvalid:"Bitte geben Sie eine gültige E-Mail-Adresse ein",buyGiftCard:"Geschenkkarte kaufen",giftAndReferrals:"Geschenke & Empfehlungen",redeemTitle:"Du hast eine Geschenkkarte erhalten!",redeemDescription:"Nach dem Einlösen werden die Credits deinem Workspace gutgeschrieben.",redeemSelectWorkspace:"Workspace auswählen",redeemBackToWorkspace:"Zurück zum Workspace",redeemCheckCreditUsage:"Kreditverbrauch prüfen",redeemErrorDescription:"Dieser Code wurde bereits verwendet und kann nicht erneut eingelöst werden. Falls du nicht sicher bist, was passiert ist, kannst du deine Credits prüfen oder den Support kontaktieren.",redeemDefaultWorkspace:"diesem",error:"Fehler",redeemSuccess:"Geschenkkarte eingelöst!",redeemSuccessDescription:"{{credits}} Credits wurden zu {{workspace}} hinzugefügt.",redeemButton:"Geschenkkarte einlösen",redeemNotNow:"Nicht jetzt",redeemDocsLink:"Erfahre in <docsLink>unserer Dokumentation</docsLink>, wie Geschenkkarten-Guthaben funktioniert",redeemCouponDescription:"Löse sie ein, um {{amount}} Rabatt auf dein Abonnement zu erhalten.",redeemCouponAppliedTitle:"Geschenkkarte angewendet!",redeemCouponReadyTitle:"Geschenkkarte einsatzbereit!",redeemCouponNoWorkspace:"Kein Workspace ausgewählt",coupon:{title:"Gutschein oder Geschenkkarte einlösen",description:"Gib deinen Code ein, um Credits zu deinem Guthaben hinzuzufügen.",placeholder:"Code eingeben",apply:"Einlösen",success:"Gutschein erfolgreich eingelöst!",invalidCode:"Der Code ist ungültig. Bitte versuche es erneut.",notFound:"Gutscheincode nicht gefunden. Bitte überprüfe den Code und versuche es erneut.",giftCardNotFound:"Geschenkkarte nicht gefunden. Überprüfe den Code und versuche es erneut.",redeemFailed:"Geschenkkarte konnte nicht eingelöst werden. Bitte versuche es erneut."},errors:{invalidRecipientEmail:"Bitte gib eine gültige E-Mail-Adresse ein",recipientEmailRequired:"E-Mail-Adresse des Empfängers ist erforderlich",checkoutFailed:"Kauf konnte nicht eingeleitet werden. Bitte versuche es erneut.",confirmPurchaseFailed:"Kauf konnte nicht bestätigt werden. Bitte versuche es erneut.",alreadyRedeemed:"Diese Geschenkkarte wurde bereits eingelöst",notAvailable:"Diese Geschenkkarte kann nicht eingelöst werden",expired:"Diese Geschenkkarte ist abgelaufen",notWorkspaceMember:"Du bist kein Mitglied des ausgewählten Workspaces",networkError:"Netzwerkfehler. Bitte überprüfe deine Internetverbindung und versuche es erneut.",rateLimitExceeded:"Zu viele Versuche. Bitte versuche es später erneut.",permissionDenied:"Nur Workspace-Eigentümer können Geschenkkarten einlösen. Bitte einen Workspace-Eigentümer, diesen Code einzulösen.",invalidPlanPrice:"Dieser Plan ist für den Geschenkkarten-Checkout nicht verfügbar. Bitte wähle einen anderen Plan."},creditBanner:"Du hast {{amount}} Geschenkkarten-Guthaben auf deinem Konto. Es wird automatisch auf deine nächste Rechnung angewendet.",upgradeGiftCardWarning:"Dein aktueller Plan wurde mit einer Geschenkkarte erworben. Das Geschenkkarten-Guthaben wird bei Upgrades nicht übertragen — dir wird der anteilige Preis berechnet."},vR={back:"Zurück"},bR="Laden...",yR={message:"Angemeldet als <strong>{{email}}</strong> — stimmt nicht mit dem erwarteten Konto überein.",switchAccount:"Konto wechseln",dismiss:"Banner schließen"},kR={topBar:sR,createWorkspacePage:lR,workspaceMenu:cR,agentEditorMenu:dR,credits:uR,community:pR,workspaceSettings:mR,referralCta:gR,sidebar:hR,giftCards:fR,common:vR,loading:bR,userMismatch:yR},wR={notifications:"Benachrichtigungen",latestNews:"Neueste Nachrichten"},AR={loading:"Laden...",loadingMore:"Mehr laden...",errorLoading:"Benachrichtigungen konnten nicht geladen werden",noNotifications:"Noch keine Benachrichtigungen",noMoreNotifications:"Keine weiteren Benachrichtigungen",noNews:"Noch keine Neuigkeiten"},SR={markAllAsRead:"Alle als gelesen markieren",readMore:"Mehr lesen",showLess:"Weniger anzeigen",upgrade:"Upgrade",percentOff:"{{percent}}% Rabatt"},CR={tabs:wR,states:AR,actions:SR},DR="Plan und Abrechnung",TR="Abonnement verwalten",ER={planAndBilling:"Plan & Abrechnung"},PR={details:"Abonnement-Details",cancelPlan:"Plan kündigen",cancelling:"Wird gekündigt...",explorePlans:"Pläne erkunden",reactivatePlan:"Plan reaktivieren",reactivating:"Wird reaktiviert...",upgradePlan:"Plan upgraden",updatePayment:"Zahlung aktualisieren",managePlan:"Plan verwalten",yourPlan:"Ihr Plan",creditsPerMonth:"Credits pro Monat",price:"Preis",nextBillingDate:"Nächstes Abrechnungsdatum",highlights:"Plan-Highlights",cancelChange:"Änderung abbrechen",cancelTooltip:"Um Ihr Abonnement zu kündigen, brechen Sie zuerst das geplante Downgrade ab",currentlyUsing:"Sie nutzen derzeit den <bold>{{plan}}</bold>-Plan",subscriptionEndsOn:"Ihr Abonnement endet am {{date}}",subscriptionRenewsOn:"Ihr Abonnement wird am {{date}} verlängert",noActiveSubscription:"Kein aktives Abonnement",keepSubscription:"Möchten Sie Ihr Abonnement behalten? Klicken Sie auf <manageLink>Plan verwalten</manageLink> und brechen Sie die Änderung ab.",planChangeNotice:"Ihr Plan wird am Ende des aktuellen Abrechnungszeitraums auf {{plan}} geändert.",cancelOnDate:"Ihr Plan wird am {{date}} gekündigt. Reaktivieren Sie ihn, um Ihre aktuellen Credits und Funktionen zu behalten.",cancelNoDate:"Ihr Abonnement ist zur Kündigung vorgemerkt. Reaktivieren Sie es, um Ihre aktuellen Credits und Funktionen zu behalten.",free:"Kostenlos",monthly:"monatlich",yearly:"jährlich",subscriptionCancelled:"Abonnement gekündigt",staysActiveUntil:"Alles bleibt aktiv bis {{date}}",creditsFormat:"{{messageCredits}} Nachricht | {{integrationCredits}} Integration",priceFormat:"{{amount}} {{symbol}}/{{period}}"},_R={privateApps:"Private Apps",inAppCodeEditing:"Code-Bearbeitung in der App",unlimitedApps:"Unbegrenzte Apps",removeBase44Badge:"Base44-Badge entfernen",connectDomain:"Domain verbinden",backendFunctions:"Backend-Funktionen",github2WaySync:"Github Zwei-Wege-Synchronisation",customOAuth:"Benutzerdefiniertes OAuth aus der Google Console",aiModelSelection:"KI-Modellauswahl",stripeIntegration:"Stripe-Integration",customEmailDomain:"Benutzerdefinierte E-Mail-Domain",appStoreFileDownloads:"App-Store-Dateidownloads"},xR={title:"Zahlung überfällig",description:"Ihre Abonnementzahlung ist überfällig. Bitte aktualisieren Sie Ihre Zahlungsmethode, um vollen Zugang zu Ihren Plan-Funktionen wiederherzustellen.",tryAgain:"Erneut versuchen",trying:"Wird verarbeitet..."},IR={title:"Zahlungsmethode",manage:"Verwalten",noPaymentMethod:"Keine Zahlungsmethode hinterlegt",default:"Standard",expires:"Läuft ab {{month}}/{{year}}"},RR={title:"Rechnungsinformationen",manage:"Verwalten",name:"Name",email:"E-Mail",billingAddress:"Rechnungsadresse",noInformation:"Keine Rechnungsinformationen verfügbar"},zR={title:"Abrechnungshistorie",noHistory:"Keine Abrechnungshistorie verfügbar",loading:"Abrechnungshistorie wird geladen...",loadError:"Fehler beim Laden der Abrechnungsdaten",planDescription:"{{plan}}-Plan",downloadInvoice:"Rechnung herunterladen"},MR={managingBillingFor:"Abrechnung für <bold>{{name}}</bold> verwalten",subscriptionRenewsOn:"Das Workspace-Abonnement wird am {{date}} verlängert",noActiveSubscription:"Kein aktives Workspace-Abonnement",manage:"Verwalten",defaultName:"Arbeitsbereich",addSeats:"Lizenzen hinzufügen",loadError:"Fehler beim Laden der Workspace-Abrechnungshistorie",workspaceSeats:"Workspace-Lizenzen",contactAdmin:{title:"Workspace-Plan",subtitle:"Verwaltet von Ihrem Workspace",body:"Mehr Credits benötigt? Wenden Sie sich an Ihren Workspace-Administrator, um den Plan Ihres Teams zu upgraden."}},NR={portalError:"Abrechnungsportal konnte nicht geöffnet werden. Bitte versuchen Sie es später erneut oder kontaktieren Sie den Support.",paymentPortalError:"Zahlungsverwaltung konnte nicht geöffnet werden. Bitte versuchen Sie es erneut.",scheduleCancelSuccess:"Abonnement-Zeitplan erfolgreich abgebrochen",scheduleCancelError:"Fehler beim Abbrechen des Abonnement-Zeitplans. Bitte versuchen Sie es später erneut.",subscriptionCancelError:"Fehler beim Kündigen des Abonnements. Bitte versuchen Sie es erneut."},FR={title:DR,manageSubscription:TR,breadcrumb:ER,subscription:PR,features:_R,pastDue:xR,paymentMethod:IR,billingInformation:RR,billingHistory:zR,workspace:MR,toasts:NR},LR={title:"Sprechen Sie mit uns",subtitle:"Kontaktieren Sie unser Team, um zu erfahren, wie Base44 Ihrer Organisation helfen kann.",form:{firstName:"Vorname*",lastName:"Nachname*",workEmail:"Geschäftliche E-Mail*",companyWebsite:"Unternehmenswebsite*",role:"Position*",discussion:"Was möchten Sie besprechen?",submit:"Absenden"},success:{title:"Vielen Dank für Ihre Nachricht!",description:"Wir haben Ihre Nachricht erhalten und unser Team wird sich innerhalb von 24 Stunden bei Ihnen melden. Wir freuen uns darauf, Sie auf Ihrer Reise mit Base44 zu begleiten!"}},jR={iso27001:{title:"ISO 27001",subtitle:"ISO Sicherheitsmanagement"},soc2:{title:"SOC 2 Typ II",subtitle:"SOC für Dienstleistungsorganisationen"},gdpr:{title:"DSGVO",subtitle:"Datenschutz-Grundverordnung"}},OR={fiveApps:"5 Apps",unlimitedCollaborators:"Unbegrenzte Mitarbeiter",userAnalytics:"Benutzeranalyse",aiAgents:"KI-Agenten",limitedDb:"Begrenzte 512-MB-Datenbank",unlimitedApps:"Unbegrenzte Apps",unlimitedNumberOfApps:"Unbegrenzte Anzahl von Apps",connectDomain:"Domain verbinden",connectorsIntegrations:"Konnektoren & Integrationen",backendFunctions:"Backend-Funktionen",scaledUserAnalytics:"Skalierte Benutzeranalyse",privateApps:"Private Apps",flexibleAiModelControl:"Flexible KI-Modell-Steuerung",removeBase44Branding:"Base44-Branding entfernen",inAppCodeEditing:"Code-Bearbeitung in der App",inAppCodeEdits:"Code-Bearbeitung in der App",freeDomainOneYear:"Kostenlose Domain für 1 Jahr",creditsToShare:"25 Credits zum Teilen mit einem Freund",githubTwoWayIntegration:"GitHub Zwei-Wege-Integration",githubIntegration:"GitHub-Integration",earlyAccessBeta:"Frühzeitiger Zugang zu Beta-Funktionen",premiumSupport:"Premium-Support",sso:"SSO",prioritySupport:"Bevorzugter Support",workspacePublishingControls:"Workspace-Veröffentlichungssteuerung",workspaceTemplates:"Workspace-Vorlagen",ipWhitelisting:"IP-Whitelist",workspaceUsageAnalytics:"Workspace-Nutzungsanalyse",userRolesPermissions:"Benutzerrollen und Berechtigungen",dataTrainingOptOut:"Opt-out für KI-Training",scim:"SCIM",creditConsumptionControl:"Kreditverbrauchskontrolle",dedicatedAccountManager:"Dedizierter Account-Manager",dedicatedSolutionEngineer:"Dedizierter Solution-Engineer",enterpriseSupport:"Enterprise-Support",customSecurityCapabilities:"Benutzerdefinierte Sicherheitsfunktionen",customDatabaseStorage:"Benutzerdefinierter Datenbankspeicher",customRateLimits:"Benutzerdefinierte Ratenlimits",tailoredOnboarding:"Maßgeschneidertes Onboarding & Befähigung",workspaceMonitoringApi:"Workspace-Überwachungs-API"},BR={unlimitedApps:"Unbegrenzte Apps",unlimitedCollaboratorsSharedCredits:"Unbegrenzte Mitarbeiter mit geteilten Credits",customDomain:"Eigene Domain",removeBase44Branding:"Base44-Branding entfernen",builtInIntegrations:"Vorkonfigurierte Integrationen",automations:"Automatisierungen",chooseAiModel:"KI-Modell wählen",inAppCodeEditing:"Code-Bearbeitung in der App",twoWayGithubSync:"2-Wege GitHub-Sync",privateTemplates:"Private Vorlagen",earlyAccessNewFeatures:"Frühzugang zu neuen Funktionen",prioritySupport:"Prioritäts-Support"},UR={choosePlan:"Wählen Sie den richtigen Plan für sich",usage:"Nutzung",back:"Zurück",chooseBillingCycleUpgrade:"Wählen Sie Ihren Abrechnungszeitraum für das Upgrade auf {{planName}}",selectBillingCycle:"Wählen Sie einen Abrechnungszeitraum für Ihren {{planName}}-Plan",viewBilling:"Abrechnung anzeigen",seePricing:"Preise ansehen"},qR={desktop:"Base44 ist Teil von <wixLogo/> - Vertraut von über 250 Millionen Menschen weltweit",mobile:{line1:"Base44 ist Teil von <wixLogo/>",line2:"Vertraut von über 250 Millionen Menschen weltweit"}},VR={badge:{recommended:"Empfohlen",popular:"Beliebt",mostPopular:"Am beliebtesten",currentPlan:"Aktueller Plan",discountOff:"{{discount}} Rabatt"},button:{processing:"Wird verarbeitet...",notAvailable:"Nicht verfügbar",manageSubscription:"Abonnement verwalten",managePlan:"Plan verwalten",currentPlan:"Aktueller Plan",upgradePlan:"Plan upgraden",upgradeTo:"Auf {{planName}} upgraden",downgradeTo:"Auf {{planName}} downgraden",downgradePlan:"Plan downgraden",switchPlan:"Plan wechseln",subscribeTo:"{{planName}} abonnieren",bookDemo:"Demo buchen",getPlan:"{{planName}} wählen"},credits:{monthly:"Monatliche Credits",integration:"Integrations-Credits",monthlyLower:"monatliche Credits",integrationLower:"Integrations-Credits",messageCredits:"Nachrichten-Credits",perMonth:"/Monat",sharedAcrossUsers:"Geteilt zwischen unbegrenzt vielen Nutzern",messageShort:"Nachrichten",integrationShort:"Integration"},features:{highlights:"Plan-Highlights:",allInBusinessPlus:"Alles in Business plus:",allInBuilderPlus:"Alles in Builder plus:",unlimitedAgents:"Unbegrenzte Anzahl an Agenten"},free:{dailyCredits:"{{dailyCredits}} tägliche Credits (bis zu {{monthlyMax}}/Monat)",integrationCredits:"{{amount}} Integrations-Credits"},enterprise:{description:"Enterprise-gerechte Governance, Skalierbarkeit und Support mit einem <bold>individuellen Preismodell</bold> und einer individuellen Credit-Menge."}},$R={offTiers:"Tarife mit 30% Rabatt",currentPlan:"Aktueller Plan",popular:"Beliebt",messageCredits:"Nachrichten-Credits",integrationCredits:"Integrations-Credits",perMonth:"/Monat",placeholder:"Credits auswählen",footer:{cantFind:"Keinen passenden Plan gefunden?",contactUs:"Kontakt aufnehmen"}},WR={button:{cancel:"Abbrechen",confirmUpgrade:"Upgrade bestätigen",confirmDowngrade:"Downgrade bestätigen",confirmSwitch:"Wechsel bestätigen",processing:"Wird verarbeitet...",continue:"Weiter"},upgrade:{title:"Abonnement-Upgrade bestätigen",upgradeDescription:"Sie sind dabei, auf den {{planName}}-Plan für <price/> zu upgraden. Ihr Abonnement wird sofort aktualisiert und Sie werden anteilig für den Rest Ihres Abrechnungszeitraums belastet.",upgradeDescriptionYearly:"Sie sind dabei, auf den {{planName}}-Jahresplan für <price/> zu upgraden. Ihr Abonnement wird sofort aktualisiert und Sie werden anteilig für den Rest Ihres Abrechnungszeitraums belastet.",upgradeDescriptionShort:"Sie sind dabei, auf den {{planName}}-Plan für <price/> zu upgraden. Ihr Abonnement wird sofort aktualisiert und Sie werden anteilig belastet."},downgrade:{title:"Abonnement-Downgrade bestätigen",description:"Sie sind dabei, auf den {{planName}}-Plan für {{price}}/Monat zu wechseln. Diese Änderung tritt am Ende Ihres aktuellen Abrechnungszeitraums in Kraft."},switch:{title:"Plan wechseln",switchDescription:"Beim Wechsel zum {{planName}}-Plan werden Ihre verfügbaren Funktionen aktualisiert und Ihre monatlichen Limits auf <bold>{{messageCredits}} Nachrichten-Credits und {{integrationCredits}} Integrations-Credits</bold> festgelegt.",nextBillingDate:"Diese Änderungen treten am {{date}} zu Beginn Ihres nächsten Abrechnungszeitraums in Kraft.",nextBillingCycle:"Diese Änderungen treten zu Beginn Ihres nächsten Abrechnungszeitraums in Kraft."},manageSubscription:{title:"Ihr Abonnement verwalten",description:"Wählen Sie, wie Sie Ihr {{planName}}-Abonnement verwalten möchten.",upgradeToYearly:"Auf jährliche Abrechnung upgraden",upgradeToYearlySavings:"Sparen Sie und erhalten Sie eine kostenlose Domain + 25 Credits zum Teilen",upgradeToYearlySavingsStarter:"Sparen Sie und erhalten Sie 25 Credits zum Teilen",managePayments:"Zahlungen verwalten",managePaymentsDescription:"Zahlungsmethode aktualisieren, Rechnungen anzeigen und mehr",managePaymentsDescriptionAlt:"Zahlungsmethode aktualisieren, Rechnungen anzeigen und mehr"},upgradeToYearly:{titleV1:"Abonnement-Upgrade bestätigen",titleV2:"Plan upgraden",descriptionV2:"Nach dem Upgrade wird ein anteiliger Betrag für die verbleibende Zeit Ihres aktuellen Plans berechnet. Ab Ihrem nächsten Abrechnungsdatum wird der volle Planpreis von {{price}} × 12 Monate berechnet.",benefitsTitle:"🎁 Jahres-Vorteile",freeDomain:"Kostenlose Domain für ein Jahr",shareCredits:"25 Credits zum Teilen mit Freunden",betterValue:"Besserer Wert mit jährlicher Abrechnung"}},GR={title:"Häufig gestellte Fragen",whatIsBase44:{question:"Was ist Base44?",answer:{description:"Base44 ist eine KI-gestützte Plattform, die es Ihnen ermöglicht, benutzerdefinierte Softwareanwendungen ohne Programmierkenntnisse zu erstellen. Sie verwendet natürliche Sprachverarbeitung, um Ihre Anforderungen zu verstehen und funktionsfähige Software basierend auf Ihren Beschreibungen zu generieren.",accessibility:"Unsere Plattform ist benutzerfreundlich und für nicht-technische Benutzer zugänglich gestaltet, sodass Sie durch einfache Gespräche mit unserer KI leistungsstarke Anwendungen erstellen können."}},freePlan:{question:"Was ist im kostenlosen Plan enthalten?",answer:{allowances:"Der kostenlose Plan bietet Ihnen täglich 5 Nachrichten und monatlich insgesamt 25 Nachrichten. Außerdem erhalten Sie 100 Integrationsguthaben, um verschiedene Integrationen wie Authentifizierung, Datenbank und Analysen auszuprobieren.",coreAccess:"Mit dem kostenlosen Plan haben Sie Zugang zu allen wichtigen Integrationstypen, sodass Sie vollständig funktionsfähige Anwendungen mit Benutzerauthentifizierung, Datenspeicherung und mehr erstellen können – alles kostenlos."}},integrationCredits:{question:"Was sind Integrationsguthaben?",answer:{definition:"Integrationsguthaben werden verwendet, um auf die verschiedenen Integrationen von Base44 in Ihrer Anwendung zuzugreifen.",capabilities:"Diese Integrationen verbessern die Funktionalität Ihrer App, einschließlich LLMs, Datei-Upload, Bildverständnis, Bildgenerierung, E-Mail-Versand, SMS-Versand, Datenbankabfragen und vieles mehr. Die Anzahl der Integrationsguthaben in Ihrem Plan bestimmt, wie viele dieser Anfragen Sie pro Monat stellen können.",expiration:"Nicht verwendete Guthaben verfallen am Ende Ihres monatlichen Abrechnungszyklus (an Ihrem Reset-Datum).",learnMore:"Erfahren Sie mehr über die Verwendung von Guthaben in der Wissensdatenbank."}},appTypes:{question:"Welche Arten von Anwendungen kann ich mit Base44 erstellen?",answer:{examples:"Base44 ist vielseitig einsetzbar und kann zum Erstellen einer Vielzahl von Anwendungen verwendet werden, einschließlich, aber nicht beschränkt auf: vollständig funktionsfähige SaaS-Produkte, Backoffice-Tools, persönliche Produktivitäts-Apps, Kundenportale und Tools zur Automatisierung von Geschäftsprozessen.",prototyping:"Sie können es auch für schnelles Prototyping und die Erstellung von MVPs nutzen, um Ihre Ideen schnell zu validieren, ohne in teure Entwicklungsressourcen investieren zu müssen."}},ownership:{question:"Wem gehören die mit Base44 erstellten Anwendungen?",answer:{yourProperty:"Zwischen Ihnen und Base44 gelten alle über unsere Plattform generierten Anwendungen und Inhalte als Ihr Eigentum. Wir erheben keine Eigentumsansprüche auf das, was Sie mit Base44 erstellen.",intellectualProperty:"Ihr geistiges Eigentum bleibt Ihres, und Sie können die generierten Anwendungen im Rahmen des gesetzlich Erlaubten frei nutzen, ändern, verteilen oder verkaufen."}},deployment:{question:"Wie werden Base44-Anwendungen bereitgestellt?",answer:{instantAccess:"Mit Base44 ist die Bereitstellung unglaublich einfach. Ihre Anwendungen sind sofort nutzbar und teilbar, sobald Sie sie erstellen. Teilen Sie einfach die URL Ihrer App mit anderen.",noHosting:"Es sind keine separaten Hosting- oder Bereitstellungsschritte erforderlich, was es unglaublich einfach macht, Ihre Anwendung schnell zum Laufen zu bringen."}},planLimits:{question:"Was passiert, wenn ich meine Planlimits erreiche?",answer:{limitations:"Wenn Sie Ihr tägliches Nachrichtenlimit erreichen, müssen Sie bis zum nächsten Tag warten, um weitere Nachrichten zu senden. Wenn Sie Ihr monatliches Limit erreichen, können Sie keine zusätzlichen Nachrichten senden oder Integrationsanfragen stellen, bis Ihr nächster Abrechnungszyklus beginnt.",upgradeOption:"Um Unterbrechungen bei der App-Entwicklung und -Nutzung zu vermeiden, können Sie jederzeit über Ihr Abrechnungs-Dashboard auf einen höheren Plan mit erhöhten Limits upgraden."}}},HR={pendingChange:{title:"Ausstehende Abonnementänderung",message:"Sie haben eine Abonnementänderung zum {{tierName}}-Plan, die am Ende Ihres aktuellen Abrechnungszyklus wirksam wird.",subMessage:'Hinweis: Um Ihr Abonnement zu kündigen, stornieren Sie zuerst diese Änderung und nutzen Sie dann "Zahlungen verwalten" zur Kündigung.',cancelChange:"Änderung stornieren",cancelling:"Wird storniert..."},cancellation:{title:"Abonnementkündigung geplant",message:"Ihr Abonnement endet am {{endDate}}. Bis dahin haben Sie vollen Zugriff auf alle Funktionen.",subMessage:"Möchten Sie Ihr Abonnement behalten? Sie können es mit einem Klick reaktivieren.",managePayments:"Zahlungen verwalten",processing:"Wird verarbeitet..."}},YR={currentPlan:"Ihr aktueller Plan ist {{displayName}},",withCredits:"mit {{messageCredits}} Nachrichtenguthaben & {{integrationCredits}} Integrationsguthaben."},KR={title:"Base44 Vorteile:",responsiveVisualEditor:"Responsiver visueller Editor",builtInBackend:"Integriertes Backend",userManagement:"Benutzerverwaltung"},ZR={title:"Abonnementzahlung überfällig",tryAgain:"Erneut versuchen",trying:"Wird versucht...",updatePaymentMethod:"Zahlungsmethode aktualisieren",description:"Ihre letzte Zahlung ist fehlgeschlagen. Versuchen Sie es erneut oder aktualisieren Sie Ihre Zahlungsmethode, um den vollen Zugriff auf Ihren Plan wiederherzustellen."},JR={error:"Fehler",success:"Erfolg",checkoutError:"Checkout-Sitzung konnte nicht erstellt werden. Bitte versuchen Sie es später erneut.",subscriptionUpdated:"Abonnement aktualisiert",downgradeScheduled:"Ihr Abonnement wurde für ein Downgrade am Ende Ihres Abrechnungszyklus eingeplant.",upgradeSuccess:"Ihr Abonnement wurde erfolgreich hochgestuft. Die Änderungen werden in Kürze wirksam.",updateError:"Abonnement konnte nicht aktualisiert werden. Bitte versuchen Sie es später erneut.",portalError:"Abrechnungsportal konnte nicht geöffnet werden. Bitte versuchen Sie es später erneut.",scheduleCancelSuccess:"Abonnement-Zeitplan erfolgreich storniert",scheduleCancelError:"Abonnement-Zeitplan konnte nicht storniert werden. Bitte versuchen Sie es später erneut.",paymentPortalError:"Zahlungsverwaltung konnte nicht geöffnet werden. Bitte versuchen Sie es erneut."},QR={loadError:"Workspace-Abrechnungsinformationen konnten nicht geladen werden",loadErrorAlert:"Workspace-Abrechnungsinformationen konnten nicht geladen werden. Bitte versuchen Sie es später erneut.",seatTypePlan:"{{seatType}}-Plan",currentPlanContact:"Sie nutzen derzeit den {{seatType}}-Plan. Für Änderungen wenden Sie sich bitte an Ihren Workspace-{{adminType}}.",workspaceOwner:"Workspace-Eigentümer:",workspaceAdmin:"Workspace-Administrator:",viewerAccess:"Betrachter-Zugang",viewerAccessDescription:"Sie haben derzeit Betrachter-Zugang in diesem Workspace. Für einen Platz mit vollem Zugriff wenden Sie sich bitte an Ihren Workspace-{{adminType}}.",adminAccessMessage:"<strong>Administrator-Zugang:</strong> Besuchen Sie das <a>Workspace-Dashboard</a>, um Plätze, Abrechnung und Teammitglieder zu verwalten.",adminTypes:{owner:"Eigentümer",administrator:"Administrator"}},XR={loadError:"Workspace-Informationen konnten nicht geladen werden. Bitte versuchen Sie es später erneut.",workspacePlan:"Workspace-Plan:",renews:"Verlängerung:",workspaceOwner:"Workspace-Eigentümer",contactOwner:"Für Abrechnungsänderungen oder Abonnementfragen wenden Sie sich an Ihren Workspace-Eigentümer.",ownerLabel:"Workspace-Eigentümer:",adminAccessMessage:"<strong>Administrator-Zugang:</strong> Besuchen Sie die <a>Workspace-Mitglieder</a>-Seite, um Mitglieder zu verwalten.",billingManagedByOwner:"Die Abrechnung wird von Ihrem Workspace-Eigentümer verwaltet. Wenden Sie sich bei abrechnungsbezogenen Fragen an den oben genannten Eigentümer.",roles:{owner:{title:"Eigentümer",description:"Voller Zugriff auf Workspace-Abrechnung, Einstellungen und Mitgliederverwaltung."},admin:{title:"Administrator",description:"Kann Workspace-Einstellungen und Mitglieder verwalten, aber keine Abrechnung ändern."},editor:{title:"Bearbeiter",description:"Kann Apps in diesem Workspace erstellen und bearbeiten."},viewer:{title:"Betrachter",description:"Kann Apps in diesem Workspace mit Lesezugriff anzeigen."},member:{title:"Mitglied",description:"Teammitglied mit Zugriff auf Workspace-Apps."},guest:{title:"Gast",description:"Externer Mitarbeiter mit Zugriff auf bestimmte Apps in diesem Workspace."}}},ez={title:"Sicherheit und Compliance",iso:{title:"ISO/IEC 27001",subtitle:"ISO/IEC Sicherheitsmanagement"},soc2:{title:"SOC 2 Type II",subtitle:"SOC für Dienstleistungsorganisationen"},gdpr:{title:"GDPR",subtitle:"Datenschutz- und Privatsphäre-Verordnung"}},tz={title:"Base44 für Unternehmen",subtitle:"Ermöglichen Sie großen Organisationen, Lösungen zu entwickeln, die perfekt zu ihren Teams passen – sicher und skalierbar",contactUs:"Kontaktieren Sie uns",features:{onboarding:{title:"Onboarding & Schulung",description:"Maßgeschneiderte Onboarding-Pläne kombiniert mit Live-Schulungen und Ressourcen, die Administratoren und Endnutzern eine schnelle Einführung ermöglichen."},accountTeam:{title:"Dediziertes Account-Team",description:"Arbeiten Sie mit einem namentlich bekannten Account Manager und Solution Engineer zusammen, der direkte Beratung, Eskalationen und Roadmap-Abstimmung bietet."},prioritySupport:{title:"Priorisierter Support, garantiert",description:"Erhalten Sie garantierten Vorrangsupport und definierte Reaktionszeiten über einen dedizierten Support-Kanal."},capabilities:{title:"Enterprise-Grade-Funktionen",description:"Sicherheits-, Compliance-, Management- und Monitoring-Funktionen – für die erforderliche Kontrolle und Flexibilität im großen Maßstab."}}},az={yearly:"Jährlich",monthly:"Monatlich",yearlyInline:"Jahres",monthlyInline:"Monats",monthlyCredits:"Monats-Credits",integrationCredits:"Integrationsguthaben",priceSuffixYearly:" × 12 Monate",priceSuffixMonthly:" / pro Monat",off:"RABATT",save:"SPAREN",discountBadge:"{{discount}} RABATT",saveBadge:"SPAREN {{amount}}",planNotFound:"Plan-Preise nicht verfügbar. Bitte gehen Sie zurück und versuchen Sie es erneut.",upgradeDialogTitle:"Abonnement-Upgrade bestätigen",upgradeDialogDescription:"Sie sind dabei, auf den {{planName}}-Plan für <price/>/Monat zu upgraden. Ihr Abonnement wird sofort aktualisiert und Ihnen wird ein anteiliger Betrag für den Rest Ihres Abrechnungszyklus berechnet.",noteMonthlyExcludes:"HINWEIS: Das Monatsabonnement enthält nicht:",whatsIncluded:"Was im {{period}}-Plan enthalten ist",chooseYearly:"Wählen Sie ein <yearlyLink>Jahresabonnement</yearlyLink>, um das Beste aus Ihrem Premium-Plan herauszuholen",yearlyFeatures:{discount:"Genießen Sie einen Sonderrabatt und sparen Sie Geld",freeDomain:"Kostenlose Domain für 1 Jahr",shareCredits:"25 Guthaben zum Teilen mit einem Freund"},monthlyFeatures:{discount:"Sonderrabatt und Einsparungen",freeDomain:"Kostenlose Domain für 1 Jahr",shareCredits:"25 Guthaben zum Teilen mit einem Freund"},planNotAvailable:"Planpreise nicht verfügbar. Bitte versuchen Sie es erneut.",goBack:"Zurück",continueToCheckout:"Weiter zur Kasse",confirmSubscriptionUpgrade:"Abonnement-Upgrade bestätigen",upgradeDescription:"Sie sind dabei, auf den {{planName}}-Plan für <strikethrough>{{originalPrice}}</strikethrough>{{price}}/Monat zu upgraden. Ihr Abonnement wird sofort aktualisiert und Ihnen wird ein anteiliger Betrag für den Rest Ihres Abrechnungszyklus berechnet.",cancel:"Abbrechen",confirmUpgrade:"Upgrade bestätigen",processing:"Wird verarbeitet...",studentDiscountFootnote:"Das Angebot gilt für das erste Jahr (12 Monate) eines neuen Starter-Plans. Einmalig pro Benutzer verwendbar; der Rabatt kann nach einer Kündigung nicht reaktiviert werden."},nz={bannerTitle:"Student oder Lehrkraft? Bis zu {{percent}}% Rabatt auf den Starter-Plan",bannerSubtitle:"Verifizieren Sie Ihre Universitäts-E-Mail, um vergünstigte Preise freizuschalten",verifiedWith:"Verifiziert mit {{email}} - bis zu {{percent}}% Rabatt",starterPlan:"Starter-Plan",active:"Aktiv",dialogTitle:"Studentenrabatt",surveyTitle:"Erzählen Sie uns von sich",alreadyActiveDesc:"Ihr Studentenrabatt ist bereits aktiv.",emailStepDesc:"Verifizieren Sie Ihre Universitäts-E-Mail, um Studentenpreise freizuschalten.",codeStepDesc:"Wir haben einen 6-stelligen Code an {{email}} gesendet",surveyStepDesc:"Nur ein paar kurze Fragen, um Ihre Verifizierung abzuschließen.",benefitDiscount:"Bis zu {{percent}}% Rabatt",benefitDiscountDetail:"auf den Starter-Plan",benefitAccess:"Voller Zugang",benefitAccessDetail:"zu allen Starter-Funktionen",benefitClaimOnce:"Einmal einlösen",benefitClaimOnceDetail:"jederzeit auf Starter nutzbar",alreadyApplied:"Ihr Studentenrabatt ist bereits angewendet",alreadyAppliedDesc:"Verifiziert mit {{email}}. Vergünstigte Preise werden bei berechtigten Plänen oben angezeigt.",gotIt:"Verstanden",emailPlaceholder:"sie@universitaet.edu",emailHint:"Wir unterstützen .edu, .ac.uk, .ac.il und andere Universitäts-Domains.",sending:"Wird gesendet...",sendCode:"Verifizierungscode senden",codePlaceholder:"6-stelligen Code eingeben",verifying:"Wird verifiziert...",verifyCode:"Code verifizieren",changeEmail:"E-Mail ändern",resendCooldown:"Code erneut senden ({{seconds}}s)",resendCode:"Code erneut senden",role:"Rolle",student:"Student",teacher:"Lehrkraft",intendedUseLabel:"Wofür planen Sie Base44 zu nutzen?",intendedUsePlaceholder:"z.B. Kursprojekt, Forschungstool, Abschlussarbeit...",fieldOfStudy:"Was ist Ihr Studienfach?",fieldOfTeaching:"Was ist Ihr Lehrfach?",selectField:"Studienfach auswählen...",searchFields:"Fächer suchen...",other:"Sonstiges",specifyField:"Bitte angeben...",graduationDate:"Voraussichtliches Abschlussdatum",month:"Monat",year:"Jahr",activating:"Wird aktiviert...",verifyingEmail:"E-Mail wird verifiziert...",activateDiscount:"Rabatt aktivieren",errorNoEmail:"Bitte geben Sie Ihre Universitäts-E-Mail-Adresse ein.",errorInvalidEmail:"Bitte geben Sie eine gültige E-Mail-Adresse ein.",errorSendFailed:"Verifizierungscode konnte nicht gesendet werden. Bitte versuchen Sie es erneut.",errorEmailAlreadyClaimed:"Diese Universitäts-E-Mail ist bereits mit einem anderen Konto verknüpft.",errorNoCode:"Bitte geben Sie den 6-stelligen Code aus Ihrer E-Mail ein.",errorInvalidCode:"Ungültiger oder abgelaufener Code. Bitte versuchen Sie es erneut.",errorNoIntendedUse:"Bitte teilen Sie uns mit, wofür Sie Base44 nutzen möchten.",errorNoField:"Bitte wählen Sie Ihr Studienfach aus.",errorNoFieldOther:"Bitte geben Sie Ihr Studienfach an.",errorNoGraduation:"Bitte wählen Sie Ihr voraussichtliches Abschlussdatum.",toastActivatedTitle:"Studentenrabatt aktiviert",toastActivatedDesc:"Ihre Studentenpreise werden jetzt auf berechtigte Pläne angewendet. Scrollen Sie nach oben, um die aktualisierten Preise zu sehen.",errorActivateFailed:"Rabatt konnte nicht aktiviert werden. Bitte versuchen Sie es erneut.",toastResentTitle:"Code erneut gesendet",toastResentDesc:"Ein neuer Verifizierungscode wurde an Ihre E-Mail gesendet.",errorResendFailed:"Code konnte nicht erneut gesendet werden. Bitte warten Sie einen Moment und versuchen Sie es erneut."},iz="Dein aktueller Plan wurde mit einer Geschenkkarte erworben. Das Geschenkkarten-Guthaben wird bei Upgrades nicht übertragen — dir wird der anteilige Preis berechnet.",rz={title:"Kauf erfolgreich",redirecting:"Sie werden in {{seconds}}s zur App zurückgeleitet...",button:"Zurück zur App"},oz={modal:LR,certificates:jR,features:OR,borderTag:BR,header:UR,messageLabel:qR,card:VR,dropdown:$R,dialog:WR,faq:GR,notices:HR,manageSubscription:YR,benefits:KR,overduePayment:ZR,toasts:JR,workspaceBilling:QR,workspaceRoles:XR,security:ez,enterprise:tz,periodSelector:az,studentDiscount:nz,upgradeGiftCardWarning:iz,returnToApp:rz},sz="Freunde einladen & Credits verdienen",lz="Freunde einladen &<br/>Credits verdienen",cz="Einladen & Credits verdienen",dz="Teile deinen Link und verdiene {{credits}} Credits, wenn Freunde ihre erste App veröffentlichen",uz={title:"Fantastisch! Du hast die maximale Anzahl an Empfehlungen erreicht",description:"Du kannst insgesamt bis zu {{maxReferrals}} Freunde einladen",extra:"({{extra}} weitere bringen keine Credits)"},pz={tryAgain:"Erneut versuchen",copied:"In die Zwischenablage kopiert!",copyButton:"Kopieren",copiedButton:"Kopiert"},mz={title:"So funktioniert es",shareLink:"Teile deinen einzigartigen Empfehlungslink mit Freunden",signupBonus:"Sie erhalten <bold>{{credits}} Credits</bold>, wenn sie sich anmelden",publishReward:"Du verdienst <bold>{{credits}} Credits</bold>, wenn sie ihre erste App veröffentlichen"},gz="Deine Empfehlungen ({{current}}/{{max}})",hz={registered:"Registriert",earned:"Verdient"},fz={back:"Zurück",close:"Schließen",srTitle:"Empfehlungsprogramm",baseDayBadge:"Base44 Day",creditsCount:"{{credits}} Credits",earnCredits:"{{credits}} Credits verdienen",termsAndConditions:"Nutzungsbedingungen",termsDescription:"Nutzungsbedingungen des Empfehlungsprogramms"},vz={title:"Nutzungsbedingungen",eligibility:{title:"Berechtigung",newUsersOnly:"Nur neue Nutzer können an diesem Empfehlungsangebot teilnehmen. Bestehende Konten sind ausgeschlossen.",shareResponsibly:"Wir bitten dich, deinen Empfehlungslink verantwortungsbewusst zu teilen. Das Posten auf irrelevanten oder spamartigen Plattformen kann zum Ausschluss aus dem Programm führen."},credits:{title:"Empfehlungs-Credits",earnOnPublish:"Du verdienst {{credits}} Credits, wenn ein empfohlener Freund seine erste App veröffentlicht",bonusOnSignup:"Empfohlene Freunde erhalten bei der Registrierung {{credits}} Bonus-Credits",maxPerAccount:"Maximal 5 erfolgreiche Empfehlungen pro Konto",noCashValue:"Credits haben keinen Geldwert und können nicht übertragen werden"},restrictions:{title:"Einschränkungen",voidFraudulent:"Base44 behält sich das Recht vor, betrügerische Empfehlungen zu annullieren",nonTransferable:"Empfehlungscodes sind nicht übertragbar"},footer:"Base44 behält sich das Recht vor, dieses Empfehlungsprogramm jederzeit zu ändern oder zu beenden. Änderungen werden über die Plattform kommuniziert."},bz={title:sz,titleDesktop:lz,titleMobile:cz,subtitle:dz,maxReached:uz,link:pz,howItWorks:mz,yourReferrals:gz,status:hz,dialog:fz,terms:vz},yz={title:"Spotlight",subtitle:"Entdecke herausragende Anwendungen und Websites, die mit Base44 erstellt wurden",loading:"Spotlight wird geladen…",errorMessage:"Spotlight konnte nicht geladen werden. Bitte versuche es später erneut.",empty:"Noch keine Spotlight-Apps."},kz={title:"Fehler",description:"Spotlight-Apps konnten nicht geladen werden."},wz={label:"Heutiges Spotlight",byCreator:"von {{creator}}",screenshotAlt:"{{appName}}-Screenshot",logoAlt:"{{appName}}-Logo"},Az={"beautifully-designed":"Wunderschön gestaltet","loved-by-the-community":"Von der Community geliebt",saas:"SaaS",education:"Bildung","e-commerce":"E-Commerce",websites:"Websites"},Sz={screenshotAlt:"{{appName}}-Screenshot",logoAlt:"{{appName}}-Logo",viewDetailsLabel:"Details anzeigen",viewDetailsAriaLabel:"Details für {{appName}} anzeigen"},Cz={backButton:"Spotlight",byCreator:"Von {{creator}}",iframeTitle:"{{appName}}-Vorschau",previewNotAvailable:"Vorschau nicht verfügbar"},Dz={ariaLabel:"App bei Spotlight einreichen",heading:"Möchtest du, dass deine App hier erscheint?",description:"Zeige, was du mit Base44 gebaut hast. Reiche es bei Spotlight ein und inspiriere die Community.",buttonText:"DEINE APP EINREICHEN"},Tz={title:"App bei Spotlight einreichen",selectAppSubtitle:"Wähle die App aus, die du für die Spotlight-Seite nominieren möchtest.",detailsSubtitle:"Erzähle uns, warum deine App auf der Spotlight-Seite vorgestellt werden sollte.",back:"Zurück",cancel:"Abbrechen",next:"Weiter",searchPlaceholder:"Apps suchen...",aboutLabel:"Über diese App",aboutPlaceholder:"Erzähle uns etwas Interessantes über deine App – besondere Funktionen, clevere Tricks oder alles, was die Community entdecken sollte",screenshotLabel:"Screenshot <optional>(optional)</optional>",screenshotHint:"PNG, JPG oder WebP — min. 800×450 Pixel, bis zu 2 MB",submit:"Einreichen",submitting:"Wird eingereicht…",submitError:"Spotlight-Anfrage konnte nicht gesendet werden.",successAlreadyInSpotlight:"Bereits im Spotlight",successRequestReceived:"Anfrage erhalten",successDescription:'Wir werden "{{appName}}" für Spotlight prüfen. Du erhältst bald eine Antwort.'},Ez={viewApp:"App ansehen",share:"Teilen",upvote:"Abstimmen",alreadyUpvoted:"Bereits abgestimmt",thankYouForVote:"Danke für deine Stimme!",voteError:"Stimme konnte nicht registriert werden",voteErrorDescription:"Bitte versuche es später erneut.",linkShared:"Link geteilt",linkCopied:"Link in Zwischenablage kopiert",shareError:"Konnte nicht geteilt werden"},Pz={label:"Wusstest du schon?"},_z={editedAgo:"bearbeitet {{timeAgo}}",editedRecently:"Kürzlich bearbeitet",noAppsFound:"Keine Apps gefunden",noAppsAvailable:"Keine Apps verfügbar",loadMore:"Mehr Apps laden",loading:"Wird geladen…"},xz={page:yz,fetchError:kz,featured:wz,sections:Az,card:Sz,detailModal:Cz,submitBanner:Dz,requestModal:Tz,actions:Ez,didYouKnow:Pz,appPicker:_z},Iz={page:{title:"Hilfe & Support",subtitle:"Erhalten Sie die Unterstützung, die Sie benötigen, um großartige Anwendungen mit BASE44 zu erstellen"},getStarted:"Loslegen",cards:{documentation:{title:"Dokumentation",description:"Entdecken Sie umfassende Leitfäden, Tutorials, FAQs und Best Practices für das Entwickeln mit Base44."},discord:{title:"Discord-Community",description:"Vernetzen Sie sich mit anderen Entwicklern und erhalten Sie sofortige Hilfe von unserer aktiven Community."},supportTicket:{title:"Support-Ticket eröffnen",description:"Reichen Sie ein detailliertes Support-Ticket ein und erhalten Sie persönliche Unterstützung."}},appContext:{title:"App-spezifischer Support",description:"Supportanfragen werden der App <appId>{{appId}}</appId> zugeordnet"},quickActions:{title:"Schnellaktionen",subtitle:"Verwalten Sie Ihr Support-Erlebnis",myTickets:{title:"Meine Support-Tickets",description:"Vorhandene Support-Tickets anzeigen und verwalten"},communityForum:{title:"Community-Forum",description:"Unsere neue Reddit-Community"}}},Rz={fallbackTitle:"Support-Gespräch",appLink:"App"},zz={title:"Meine Support-Tickets",backToSupport:"Zurück zum Support",showingTicketsForApp:"Zeigt Tickets für App: <app>{{appId}}</app>",filteredByApp:"Gefiltert nach App: <app>{{appId}}</app>"},Mz={title:"Support-Ticket einreichen",titleResume:"Ein Support-Ticket einreichen"},Nz={helpMessage:"Sofortige Hilfe benötigt? <normal>Lesen Sie unsere </normal><docsLink>Dokumentation</docsLink><normal> oder treten Sie unserer </normal><discordLink>Discord-Community</discordLink><normal> bei</normal>."},Fz={heading:"Support-Anfrage fortsetzen?",description:"Sie haben zuvor begonnen, ein Support-Ticket zu erstellen.",chooseHowToProceed:"Wie möchten Sie fortfahren:",continueWhereLeftOff:"Weitermachen, wo Sie aufgehört haben",continueWhereLeftOffDesc:"Stellen Sie Ihre vorherigen Eingaben wieder her und machen Sie weiter, wo Sie aufgehört haben.",startNewTicket:"Neues Ticket starten",startNewTicketDesc:"Entwurf verwerfen und eine neue Support-Anfrage starten.",continue:"Weiter"},Lz={tellUsAboutYourIssue:"Beschreiben Sie Ihr Problem",whatTypeOfIssue:"Welche Art von Problem haben Sie?",selectApp:"Wählen Sie die App aus, die mit Ihrem Problem zusammenhängt"},jz={instruction:"Bitte teilen Sie mit, was Sie getan haben, was schiefgelaufen ist und wie wir das Problem reproduzieren können.",descriptionLabel:"Beschreibung",descriptionPlaceholder:`Beispiel:
• Was Sie versucht haben zu tun
• Was stattdessen passiert ist
• Eventuelle Fehlermeldungen
• Schritte zum Reproduzieren (falls zutreffend)`,attachmentsLabel:"Anhänge",viewApp:"App ansehen",dragAndDropFiles:"Dateien hierher ziehen",dropFilesHere:"Dateien hier ablegen",browseFiles:"Dateien durchsuchen",uploading:"Wird hochgeladen...",unsupportedFileType:'Dateityp "{{type}}" wird nicht unterstützt. Unterstützte Typen: jpg, jpeg, png, pdf.',invalidFile:"Ungültige Datei",failedToUpload:"Datei-Upload fehlgeschlagen"},Oz={analyzingIssue:"Problem wird analysiert...",categoryFullDescription:"Ihr Problem fällt wahrscheinlich in eine dieser Kategorien.<br/>Wählen Sie die passendste aus — das hilft uns, Sie zur richtigen Lösung zu führen."},Bz={authentication:"Authentifizierung",billing:"Abrechnung",bug_report:"Fehlerbericht",domain:"Domain",integrations_and_backend_functions:"Integrationen & Backend",chat_issues:"Chat-Probleme",security:"Sicherheit",social_post_bonus_credits:"Social-Post-Bonusguthaben",superagent:"Superagent",other:"Sonstiges"},Uz={searchPlaceholder:"Apps suchen...",addAppLink:"App-Link hinzufügen",addAppLinkPlaceholder:"z. B. https://your-app-url.com oder https://yourapp.base44.app",invalidUrl:"Bitte geben Sie eine gültige URL ein, die mit http:// oder https:// beginnt",noAppsFound:"Keine Apps gefunden",noAppsAvailable:"Keine Apps verfügbar",loadingMore:"Wird geladen...",loadMore:"Mehr Apps laden",edited:"bearbeitet {{time}}"},qz={loading:"Gespräch wird geladen...",errorTitle:"Fehler beim Laden des Gesprächs",noConversationTitle:"Kein Gespräch gefunden",noConversationMessage:"Dieses Gespräch existiert nicht oder Sie haben keinen Zugriff darauf.",tryAgain:"Erneut versuchen",ticketFallbackTitle:"Support-Ticket",categoryFallback:"Allgemein",closeTicket:"Ticket schließen",closing:"Wird geschlossen...",aiAssistantInfo:"KI-Assistent · Kann Fehler machen",talkToSpecialist:"Mit einem Support-Spezialisten sprechen",handledBySpecialist:"Wird von einem Support-Spezialisten bearbeitet",notifyWhenResponds:"Benachrichtigen, wenn der Support antwortet",ticketResolvedTitle:"Dieses Ticket wurde gelöst",ticketResolvedMessage:"Bitte erstellen Sie ein neues Ticket für weitere Unterstützung",conversationClosed:"Dieses Gespräch ist geschlossen",aiHandlingTicket:"Der KI-Agent bearbeitet dieses Ticket. Klicken Sie auf <bold>Übernehmen</bold>, um manuell zu antworten.",typeResponse:"Antwort eingeben...",typeMessage:"Nachricht eingeben...",failedLoadConversation:"Gespräch konnte nicht geladen werden. Bitte erneut versuchen.",ticketAlreadyResolved:"Dieses Ticket wurde bereits gelöst. Bitte erstellen Sie ein neues Ticket für weitere Unterstützung.",failedCloseTicket:"Ticket konnte nicht geschlossen werden. Bitte erneut versuchen.",failedEscalate:"Ticket konnte nicht eskaliert werden. Bitte erneut versuchen.",confirmCloseTicket:"Möchten Sie dieses Ticket schließen? Es wird als gelöst markiert.",premiumSupportTier:"Premium-Support",standardSupportTier:"Standard-Support",premiumSupportMessage:"Offline-Support, priorisierte Antwort innerhalb von 48 Stunden",standardSupportMessage:"Offline-Support, Antwort innerhalb von 48 Stunden",templates:{label:"Schnellvorlagen",less:"Weniger"},draft:{title:"KI-Vorschlag",collapse:"Einklappen",viewAll:"Alle anzeigen",use:"Verwenden"},escalateModal:{title:"Menschlichen Support anfordern",description:"Ihr Ticket wird zur personalisierten Bearbeitung an unser Support-Team weitergeleitet.",cancel:"Abbrechen",requesting:"Wird angefordert...",requestButton:"Menschlichen Support anfordern"}},Vz={supportTeam:"Support-Team",attachedFile:"Angehängte Datei",translatedFrom:"Übersetzt aus {{language}}",internalNote:"Interne Notiz",emptyTitle:"Gespräch beginnen",emptyMessage:"Senden Sie eine Nachricht, um Ihr Support-Gespräch zu beginnen",translating:"Wird übersetzt...",showingTranslations:"Übersetzungen werden angezeigt",translateToEnglish:"Ins Englische übersetzen",confirmDeleteMessage:"Möchten Sie diese Nachricht wirklich löschen?",failedDeleteMessage:"Nachricht konnte nicht gelöscht werden. Bitte erneut versuchen.",failedTranslate:"Nachrichten konnten nicht übersetzt werden. Bitte erneut versuchen.",attachedContent:"Angehängter Inhalt",videoNotSupported:"Ihr Browser unterstützt keine Videowiedergabe.",noteBy:"von {{name}}",adminFallback:"Admin",events:{unknownActor:"Jemand",statusChange:"{{actor}} hat den Status zu {{status}} geändert",unassigned:"{{actor}} hat die Zuweisung aufgehoben",assigned:"{{actor}} hat {{assignee}} zugewiesen",reassigned:"{{actor}} hat zu {{assignee}} neu zugewiesen",escalated:"{{actor}} hat eskaliert",removedEscalation:"{{actor}} hat die Eskalation aufgehoben",categoryChange:"{{actor}} hat die Kategorie zu {{category}} geändert",labelChangeAdded:"{{actor}} hat {{labels}} hinzugefügt",labelChangeRemoved:"{{actor}} hat {{labels}} entfernt",labelChangeBoth:"{{actor}} hat {{added}} hinzugefügt und {{removed}} entfernt",updated:"{{actor}} hat das Ticket aktualisiert",markedAbusive:"{{actor}} hat Inhalt als missbräuchlich markiert",clearedAbusive:"{{actor}} hat die Markierung für missbräuchlichen Inhalt entfernt"}},$z={uploading:"Wird hochgeladen...",uploadFiles:"Dateien hochladen",fileTypeError:"Bitte fordern Sie Unterstützung für weitere Dateitypen auf <link>feedback.base44.com</link> an"},Wz={open:"Offen",closed:"Geschlossen",all:"Alle"},Gz={open:"Offen",resolved:"Gelöst"},Hz={noOpenTickets:"Keine offenen Tickets",noClosedTickets:"Keine geschlossenen Tickets",noTickets:"Keine Tickets",descriptionOpen:"Sie haben derzeit keine offenen Support-Tickets.",descriptionClosed:"Keine geschlossenen Tickets gefunden.",descriptionAll:"Sie haben noch keine Support-Tickets eingereicht."},Yz={appLabel:"App: {{appId}}",dateNotAvailable:"Nicht verfügbar"},Kz={loadingTitle:"Fehler beim Laden der Tickets",loadingFailed:"Support-Tickets konnten nicht geladen werden. Bitte versuchen Sie es erneut.",ticketLimitTitle:"Ticket-Limit erreicht",ticketLimitDescription:"Es gibt mehr Tickets als geladen werden können. Nur die neuesten 1000 Tickets wurden geladen."},Zz={free:"Kostenlos"},Jz={cancel:"Abbrechen",back:"Zurück",skip:"Überspringen",continue:"Weiter",submitting:"Wird gesendet...",refresh:"Aktualisieren",newTicket:"Neues Ticket",createNewTicket:"Neues Ticket erstellen",tryAgain:"Erneut versuchen",bannedAlert:"Ihr Zugang zu Base44 Support wurde aufgrund eines Verstoßes gegen die Base44 Support-Nutzungsbedingungen eingeschränkt. Weitere Details finden Sie in der E-Mail, die wir Ihnen gesendet haben."},Qz={descriptionRequired:"Bitte fügen Sie eine Beschreibung hinzu",descriptionTooShort:"Bitte fügen Sie etwas mehr Details hinzu. Mindestens 20 Zeichen erforderlich.",appRequired:"Wählen Sie eine Ihrer Apps aus oder fügen Sie einen Link hinzu, damit wir wissen, wo das Problem auftritt.",submissionFailed:"Ihr Support-Ticket konnte nicht gesendet werden. Bitte versuchen Sie es erneut."},Xz={dailyLimitReached:"Tageslimit erreicht",somethingWentWrong:"Etwas ist schiefgelaufen",dailyLimitMessage:"Das tägliche Limit für Support-Gespräche wurde überschritten. Sie können mit Ihrem aktuellen Abonnement bis zu {{limit}} Gespräche pro Tag erstellen.",tryAgain:"Erneut versuchen",cancel:"Abbrechen",close:"Schließen"},eM={help:Iz,sidebar:Rz,page:zz,modal:Mz,footer:Nz,resumeStep:Fz,steps:Lz,tellUsAboutYourIssue:jz,whatTypeOfIssue:Oz,categories:Bz,selectApp:Uz,chat:qz,messages:Vz,input:$z,tabs:Wz,status:Gz,emptyState:Hz,ticketCard:Yz,errors:Kz,tiers:Zz,actions:Jz,validation:Qz,submissionError:Xz},tM={sectionTitle:"Account settings",sectionDescription:"Manage your personal account preferences and settings.",heading:"Account",email:{label:"Email",placeholder:"No email set"},fullName:{label:"Full Name",placeholder:"Enter your full name",profileHint:"This is how you'll appear on your public Base44 <profileLink>profile</profileLink>."},phoneNumber:{label:"Phone Number",placeholder:"Enter your phone number",smsConsent:"By entering your phone number, you agree to receive SMS notifications from us."},defaultAgents:{label:"Default Agents",toggleLabel:"Enable agents for new apps by default",description:"When enabled, new apps will automatically have agents enabled, allowing them to run autonomous tasks and use tools."},defaultTestData:{label:"Default Test Data",toggleLabel:"Enable test data for new apps by default",description:"When enabled, new apps start with test data turned on so you can safely test changes without affecting live data.",upgradeRequired:"This feature requires Builder plan or higher.",seePlans:"See Plans"},apiKey:{label:"API Key",copyTitle:"Copy API key",copied:"Copied!",regenerate:"Regenerate",regenerating:"Regenerating...",regenShort:"Regen",regenShortLoading:"Regen...",description:"Your API key provides access to your workspace. Do not share it with others.",notGenerated:"Not yet generated — click Regenerate"},backofficeApiKey:{title:"Backoffice API Key",description:"Use this key to authenticate programmatic requests against the backoffice service. It will not work on the platform service. Keep it secret.",yourKey:"Your backoffice API key",copySuccess:"API key copied",copyError:"Failed to copy API key",regenSuccess:"Backoffice API key regenerated",regenError:"Failed to regenerate: {{error}}",warning:"Regenerating invalidates the previous key immediately. Any clients using it will need to be updated.",existsPlaceholder:"•••••••••••••••••• (key exists — only the hash is stored; regenerate to see a new one)",showOnceWarning:"Copy this key now. It is shown only once and cannot be retrieved later."},unsavedChanges:"Unsaved changes",discard:"Discard",save:"Save",saving:"Saving...",saveSuccess:"Account settings updated successfully!",saveError:"Failed to update account settings: {{error}}",unknownError:"Unknown error",apiKeyCopySuccess:"API key copied to clipboard!",apiKeyCopyError:"Failed to copy API key",apiKeyRegenSuccess:"API key regenerated successfully!",apiKeyRegenError:"Failed to regenerate API key: {{error}}"},aM={title:"Two-factor authentication",description:"Add an extra layer of protection when signing in. You'll be asked for a code each time you sign in.",twoFactorEnabled:"Two-factor authentication is enabled.",statsLine:"{{used}}/{{total}} recovery codes used · {{devices}} trusted devices",totp:{name:"Authenticator app",description:"Use an app like Google Authenticator or Duo to generate secure sign-in codes.",setupTitle:"Set up your authenticator app",scanQr:"Scan the QR code with your authenticator app",cantScan:"Can't scan the code? Enter it manually:",enterCodeTitle:"Enter a code from your authenticator app",enterDigitCode:"Enter the 6-digit code",codesRefresh:"Codes refresh every 30 seconds.",qrCodeAlt:"QR code for authenticator app setup",enabled:"Authenticator app enabled",disabled:"Authenticator app disabled"},sms:{name:"Text messages",description:"Get sign-in codes sent to your phone by text message.",enterPhone:"Enter your phone number",phoneLabel:"Phone number",phonePlaceholder:"(555) 000-0000",verificationWillBeSent:"A verification code will be sent to this number to confirm it's yours.",verifyPhone:"Verify your phone number",codeSentTo:"A 6-digit code sent to {{phone}}",standardRates:"Standard message and data rates may apply.",invalidPhone:"Invalid phone number. Please check the number and try again.",enabled:"Text message MFA enabled",disabled:"Text messages disabled"},recovery:{saveTitle:"Save your recovery codes",saveDescription:"Save these recovery codes in a secure place. You'll need them if you lose access to your phone or authenticator app.",eachCodeOnce:"Each recovery code can only be used once. Keep them somewhere safe and accessible.",eachCodeOnceShort:"Each recovery code can only be used once.",copyAll:"Copy All",download:"Download",copied:"Copied",enterRecoveryCode:"Enter the recovery code"},disable:{title:"Disable two-factor authentication",turnOff:"Turn off two-factor authentication?",turnOffDescription:"To continue, you'll need to verify with a code sent to your phone or a recovery code.",verifyWithPhone:"Verify with a code sent to your phone",verifyWithApp:"Enter a code from your authenticator app",enterRecoveryToDisable:"Enter one of your recovery codes to disable two-factor authentication.",useRecoveryCode:"Use Recovery Code",verifyViaApp:"Verify via App",verifyAndDisable:"Verify & Disable"},regenerate:{title:"Regenerate recovery codes",trustedDevicesCount_one:"{{count}} trusted device",trustedDevicesCount_other:"{{count}} trusted devices",codesUsed:"{{used}}/{{total}} recovery codes used",descriptionChoose:"Choose a verification method to regenerate your recovery codes. This will invalidate all existing codes.",descriptionSms:"We'll send a verification code to your phone to confirm.",descriptionSmsVerify:"Enter a verification code to regenerate your recovery codes. This will invalidate all existing recovery codes.",descriptionTotpVerify:"Enter a verification code to regenerate your recovery codes. This will invalidate all existing recovery codes.",verifyWithApp:"Enter a code from your authenticator app",verifyWithSms:"Verify with a code sent to your phone",smsMethodLabel:"SMS message",enterCodeLabel:"Enter the 6-digit code",helperTotp:"Open your authenticator app to get the code",helperSms:"Enter the code sent to your phone",verifyAndRegenerate:"Verify & Regenerate",enterCode:"Enter code"},reauth:{title:"Verify your identity",description:"For security, verify your identity before adding {{method}} as a sign-in method.",actionTotp:"Enter the 6-digit code from your authenticator app.",actionSms:"Enter the code sent to {{phone}}."},common:{enable:"Enable",enabled:"Enabled",cancel:"Cancel",close:"Close",back:"Back",done:"Done",verify:"Verify",sendCode:"Send Code",regenerate:"Regenerate",regenerateRecoveryCodes:"Regenerate Recovery Codes",disable:"Disable",continue:"Continue",fullCodeError:"Enter the full 6-digit code",fullRecoveryError:"Enter the full recovery code",enterVerificationCode:"Enter a verification code",didntReceive:"Didn't receive a code?",resendIn:"Resend in {{seconds}}s",resend:"Resend",verificationSent:"Verification code sent",failedToSetup:"Failed to set up authenticator",failedToSendCode:"Failed to send code",failedToResend:"Failed to resend",invalidCode:"Invalid code",lockedOut:"Too many failed attempts. Try again in {{minutes}} min.",lockedOutShort:"Temporarily locked ({{minutes}} min)"}},nM={section:{title:"Delete account",description:"Delete your account along with all associated data, settings, and activity.",accessNote:"You will have access to your account for 1 week after requesting deletion.",deleteButton:"Delete Account",enterpriseTooltip:"Account deletion isn't available for enterprise users. Please contact your organization admin."},pendingRequest:{willBeDeleted:"Your account, subscription, owned apps and workspaces will be deleted in <bold>{{daysRemaining}} days</bold> ({{formattedEnd}}) and will be permanent from that date. Until then you can cancel the deletion.",processing:"Deletion is being processed...",cancelButton:"Cancel request",renewalWarning:"If your subscription is scheduled to renew during these {{daysRemaining}} days, the renewal will still occur unless you cancel the subscription manually before the renewal date"},toast:{submitSuccess:"Deletion request submitted. We will review and process it after the 7-day grace period.",submitError:"Failed to submit deletion request. Please try again.",cancelSuccess:"Deletion request cancelled successfully.",cancelError:"Failed to cancel request. Please try again.",preflightError:"Could not verify account status. Please try again."},dialog:{title:"Delete Your Account",description:"This will schedule your account and all associated data for permanent deletion.",whatWillBeDeleted:"What will be deleted:",itemAccountProfile:"Your account and profile",itemAllApps:"All apps you've created",itemAllData:"All data stored in your apps",itemUploadedFiles:"Uploaded files and media",gracePeriodNote:"You'll have 7 days to cancel this request. After that, our team will review and process your deletion shortly.",subscriptionNote:"Subscription cancellation is final with no refunds",cancelButton:"Cancel",deleteButton:"Delete Account"},subscriptions:{dialogTitle:"Cancel subscriptions before deleting your account",warning:"You still have active subscriptions. Please cancel them first.",listLabel:"Active subscriptions:",personalPlan:"Personal plan",planAndBilling:"Plan & Billing",yearly:"yearly",monthly:"monthly",cancelFirst:"Cancel all subscriptions above, then come back here to delete your account.",closeButton:"Close",manageButton:"Manage subscriptions"},workspaceOwner:{titleStep1:"You own workspaces",titleStep2:"Confirm workspace deletion",memberCount_one:"{{count}} member",memberCount_other:"{{count}} members",warningOwner_one:"You currently own the following workspace. If you continue, all apps in this workspace will be permanently deleted, and all members will lose access.",warningOwner_other:"You currently own the following workspaces. If you continue, all apps in these workspaces will be permanently deleted, and all members will lose access.",leaveWorkspaces_one:"You will also leave this workspace and lose access:",leaveWorkspaces_other:"You will also leave these workspaces and lose access:",confirmInstructions:"Type each workspace name below to confirm deletion. This action is irreversible.",typeToConfirm:'Type <bold>"{{name}}"</bold> to confirm',deleteAnyway:"Delete anyway",deleteAccount:"Delete Account",cancel:"Cancel"},memberInfo:{title_one:"You will leave this workspace",title_other:"You will leave these workspaces",description_one:"Deleting your account will remove you from the following workspace. You will lose access to all workspace apps and data.",description_other:"Deleting your account will remove you from the following workspaces. You will lose access to all workspace apps and data.",continueWithDeletion:"Continue with deletion",cancel:"Cancel"}},iM={title:"GitHub account",addAccount:"Add your GitHub account",unlockWithBuilder:"Unlock this feature with the Builder plan.",loading:"Loading...",connecting:"Connecting...",reconnect:"Reconnect",connectionLost:"The connection to GitHub was lost. Please reconnect your GitHub account to continue.",connected:"Connected",connectedDescription:"Your GitHub account is connected",disconnect:"Disconnect",tryAgain:"Try Again",connectGitHub:"Connect GitHub",disconnectDialog:{title:"Disconnect from GitHub?",accountDescription:"Disconnecting your GitHub account will not affect any connected apps.<br/>You'll only need to reconnect your account if you want to connect or reconnect a repository.",repoDescription:"This will disconnect the app from the {{repoName}} repository.",repoDescriptionNoName:"This will disconnect the app from the GitHub repository.",repoDetail1:"Your GitHub repository will remain unchanged — it will not be deleted or removed.",repoDetail2:"You can continue working on your app as before, but GitHub will no longer be the source of truth for your code, and two-way sync will be disabled.",disconnectingProgress:"Disconnecting… This may take a few minutes.",cancel:"Cancel",disconnect:"Disconnect",disconnecting:"Disconnecting…"}},rM={title:"Google Drive",connected:"Connected",connectedDescription:"Your Google Drive is connected",disconnectedDescription:"Connect your Google Drive to import files",connect:"Connect",connecting:"Connecting...",disconnect:"Disconnect",disconnecting:"Disconnecting...",loading:"Loading...",connectTitle:"Connect to Google Drive",connectDescription:"Give access to use files from Google Drive as AI chat context.",benefitImport:"Import Docs, Sheets, and Slides from your Google Drive",benefitChoose:"Choose which files to use each time",benefitSecure:"Selected content is securely stored for use in your app",connectButton:"Connect Google Drive",cancel:"Cancel",privacyNote:"Only files you select are accessed.",disconnectAnytime:"You can disconnect anytime in account settings."},oM={title:"Chat Settings",sendMessageShortcut:"Send message shortcut",insertNewLineShortcut:"Insert new line shortcut",soundPreferences:"Sound Preferences",browserNotifications:"Browser Notifications",notificationsHelpText:"Enabled notifications but not receiving them? <docLink>Check the documentation</docLink>",notificationOptions:{onFirstPromptOnly:"On first prompt only",onEveryPromptCompletion:"On every prompt completion",disableNotificationSounds:"Disable notification sounds",disableBrowserNotifications:"Disable browser notifications"}},sM={account:tM,mfa:aM,deleteAccount:nM,github:iM,googleDrive:rM,chatSettings:oM},lM={title:"Request access to {{appName}}",subtitleDefault:"Ask for access or switch to an account that is already authorized.",subtitleRequested:"You'll be notified by email if your request is approved.",requestAccess:"Request access",requestSubmitted:"Request submitted",loggedInAs:"You're logged in as {{email}}",switchAccount:"Switch account",errorMessage:"Something went wrong. Please try again or switch to a different account.",tooManyAttempts:"Too many attempts. Please try again later.",backToLogin:"Back to login"},cM={title:"Access restricted",subtitle:"You must be a member of this workspace to access the app."},dM={accessRequired:lM,workspaceRestricted:cM},uM={title:"Welcome to Base44",loginWithGoogle:"Log in with Google",loginWithGithub:"Log in with GitHub",loggingIn:"Logging in...",or:"Or",emailLabel:"Email",emailPlaceholder:"Enter your email address",edit:"Edit",lastUsed:"Last Used",ssoEnabled:"SSO is enabled for <strong>{{workspace}}</strong>",ssoClickBelow:"Click below to continue with your organization's login",passwordLabel:"Password",forgotPassword:"Forgot password?",passwordPlaceholder:"Enter your password",checkingAuth:"Checking authentication method...",checking:"Checking...",continue:"Continue",continueWithSSO:"Continue with {{provider}}",logIn:"Log In",noAccount:"Don't have an account?",signUp:"Sign up",verifyEmailFirst:"Please verify your email before logging in. Check your email for the verification code.",resendVerificationCode:"Resend verification code",enterEmailFirst:"Please enter your email address first",invalidEmail:"Please enter a valid email address",ssoError:"SSO configuration error. Please try again.",invalidCredentials:"Invalid email or password",loginFailed:"Login failed. Please try again.",failedResendVerification:"Failed to resend verification code. Please try again.",passwordResetRequired:"For security reasons, you must reset your password before logging in. Check your email for a reset link.",resetLinkSent:"A password reset link has been sent to your email.",resendResetLink:"Resend reset link",failedResendResetLink:"Failed to send reset link. Please try again.",termsAndPrivacy:"<terms>Terms of Service</terms> and <privacy>Privacy Policy</privacy>."},pM={title:"Create your account",agreeToTerms:'By clicking "Sign Up", you agree to our <terms>Terms of Service</terms> and <privacy>Privacy Policy</privacy>.',signUpWithGoogle:"Sign up with Google",signUpWithGithub:"Sign up with GitHub",signingUp:"Signing up...",creatingAccount:"Creating account...",signUpButton:"Sign Up",alreadyHaveAccount:"Already have a Base44 account?",logIn:"Log in",validatingReferral:"Validating referral code...",invalidReferral:"Invalid Referral Code",youveBeenInvited:"You've been invited!",invitedToJoin:"<strong>{{name}}</strong> invited you to join Base44",signUpFreeCredits:"Sign up to get 10 free credits!",signUpBaseDayCredits:"Sign up to get 44 free credits!",letsBuild:"Let's build something amazing together!",registrationFailed:"Registration failed. Please try again.",failedValidateReferral:"Failed to validate referral code",completeVerification:"Please complete the verification",weakPassword:"Weak password"},mM={title:"Reset your password",subtitle:"Enter the email address you used to sign up, and we'll send you a link to reset your password.",backToLogin:"Back to log in",loginEmail:"Login email",emailPlaceholder:"e.g., name@email.com",sending:"Sending...",verifyEmail:"Verify Email",invalidEmail:"Invalid email address",failedSendReset:"Failed to send reset link. Please try again."},gM={title:"Check your email",subtitle:"We've sent password reset instructions to <strong>{{email}}</strong>.",backToReset:"Back to Reset password",checkInfo:"Please check your email for the password reset link.",mayTakeMinutes:"It may take a few minutes to arrive.",goToSignIn:"Go to Sign In",didntGetEmail:"Didn't get the email?",resending:"Resending...",resendEmail:"Resend email",emailNotFound:"Email address not found. Please go back and try again.",newResetSent:"New password reset email sent. Please check your inbox.",failedResendEmail:"Failed to resend email. Please try again."},hM={title:"Set new password",subtitle:"Enter your new password for Base44",newPasswordLabel:"New password",newPasswordPlaceholder:"Enter your new password",confirmPasswordLabel:"Confirm new password",confirmPasswordPlaceholder:"Confirm your new password",resetting:"Resetting...",resetButton:"Reset Password",backToLogIn:"Back to Log In",invalidToken:"Invalid or missing reset token. Please request a new password reset.",passwordsMismatch:"Passwords do not match. Please try again.",weakPassword:"Please create at least an average strength password.",resetSuccess:"Password reset successfully! Redirecting to login...",resetSuccessLogin:"Password reset successfully! Please log in with your new password.",failedReset:"Failed to reset password. Please try again.",invalidOrExpiredToken:"Invalid or expired reset token"},fM={verifyTitle:"Verify your identity",verification:{chooseMethod:"Choose an authentication method",authenticatorApp:"Authenticator app",smsMessage:"SMS message",recoveryCode:"Recovery code",continue:"Continue",backToLogin:"Back to Login",chooseAnotherMethod:"Choose Another Method",verifyViaText:"Verify via Text Message",verifyViaApp:"Verify via Authenticator App",enterRecoveryCode:"Enter the recovery code",rememberDevice:"Remember this device for 30 days",verifying:"Verifying...",verify:"Verify",useRecoveryCode:"Use a Recovery Code",sendingCodeTo:"Sending code to {{phone}}…",enterCodeSentTo:"Enter the code sent to {{phone}}",enterCodeFromApp:"Enter the code from your authenticator app",yourPhone:"your phone",didntReceiveCode:"Didn't receive a code?",resendIn:"Resend in {{seconds}}s",resend:"Resend",enterCompleteRecoveryCode:"Please enter the complete recovery code",enterCompleteCode:"Please enter the complete 6-digit code",verificationFailed:"Verification failed. Please try again.",failedSendCode:"Failed to send code. Please try resending."}},vM={buildingApp:"Building your app",verifyEmailSubtitle:"Verify your email to continue",signUpSubtitle:"Sign up to watch it come to life",loginSubtitle:"Log in to watch it come to life"},bM={completeVerification:"Please complete the security verification"},yM={title:"Verify your email",subtitle:"We sent a verification code to {{email}}",verificationCode:"Verification Code",fillAllFields:"Please fill out all fields.",enterCodeSent:"Enter the verification code sent to your email",verifying:"Verifying...",verifyEmail:"Verify Email",wrongEmail:"Wrong email? Change it",didntReceiveCode:"Didn't receive the code?",resendEmail:"Resend email",emailVerifiedLogin:"Email verified successfully! You can now log in.",emailVerifiedContinue:"Email verified successfully! Please log in to continue.",invalidCode:"Invalid verification code. Please try again.",verificationFailed:"Verification failed. Please try again.",newCodeSent:"New verification code sent to your email.",failedResendCode:"Failed to resend verification code. Please try again."},kM={login:uM,register:pM,forgotPassword:mM,checkEmail:gM,resetPassword:hM,mfa:fM,authModal:vM,turnstile:bM,otp:yM},wM={notFound:"Profile not found",notFoundDescription:"The builder profile @{{username}} doesn't exist."},AM={edit:"Edit",done:"Done",cancel:"Cancel",appCount_one:"{{count}} App",appCount_other:"{{count}} Apps",joined:"Joined {{date}}",namePlaceholder:"Your name",displayNameLabel:"Display Name",usernameLabel:"Username",changeUsername:"Change username",saveChanges:"Save changes",partnerBadge:"Base44 Partner"},SM={label:"Bio",placeholder:"Write a short bio about yourself...",emptyPlaceholder:"Tell visitors about yourself — add a short bio.",hint:"Max. 220 characters",maxChars:"Max. {{max}} characters"},CM={viewTitle:"Apps",appsHeader:"Apps ({{count}})",appsHeaderEmpty:"Apps",featuredCounter_one:"{{count}} featured",featuredCounter_other:"{{count}} featured",editHint:"Select which apps appear on your public profile.",noPublishedApps:"No published apps found. Publish an app first!",noPublishedAppsTitle:"No published apps",noPublishedAppsDescription:"You haven't published any apps just yet. Head over to your workspace to finalize a draft and hit publish so you can showcase it on your profile.",viewMyApps:"View my apps",untitled:"Untitled",updated:"Pinned apps updated!",updateFailed:"Failed to update pinned apps",manageApps:"Manage apps",chooseTitle:"Choose Apps to Display",chooseDescription:"Select up to {{max}} published apps to appear on your public profile",selectAll:"Select all",selectAllCount:"Select all ({{count}})",deselectAll:"Deselect all",deselectAllCount:"Deselect all ({{count}})",saveChanges:"Save",searchApps:"Search apps...",publicBadge:"Public",privateBadge:"Private",showMore:"Show more",showLess:"Show less",maxReached:"Maximum {{max}} apps allowed",close:"Close",noSearchResults:"No apps match your search",updatedRecently:"updated recently"},DM={editTooltip:"Edit social links",addLinks:"Add social links",addLink:"Add link",cancelTooltip:"Cancel",removeTooltip:"Remove",label:"Socials",hint:"Add up to 6 social links",linkLabel:"Link",addCustomLink:"Add custom link",pastePlaceholder:"Paste URL here",enterUsernameOrUrl:"Enter your username or full profile URL",movedTo:"Moved to {{platform}}",addedAsCustom:"Added as custom link",fieldOccupied:"Looks like a {{platform}} link — that field already has a URL",customSlotsFull:"Looks like a {{platform}} link. Remove a custom link to add it."},TM={profileUpdated:"Profile updated!",profileUpdateFailed:"Failed to update profile",usernameClaimed:"Username claimed!",usernameClaimFailed:"Failed to claim username",loadFailed:"Failed to load profile",invalidImageType:"Please upload a valid image (JPG, PNG, GIF, or WebP)",imageTooLarge:"Image must be less than 5MB",avatarUpdated:"Profile image updated!",avatarUploadFailed:"Failed to upload image",avatarRemoveFailed:"Failed to remove image"},EM={title:"Discard changes?",description:"You have unsaved changes that will be lost.",confirm:"Discard"},PM={title:"Change Username",placeholder:"username",checking:"Checking...",available:"Available!",notAvailable:"Not available",urlWarning:"Your profile URL will change to /@{{username}}. Old links will stop working.",cancel:"Cancel",claim:"Claim Username",tryInstead:"Try:"},_M={locationLabel:"Location",locationPlaceholder:"e.g. San Francisco, CA",showEmailLabel:"Display your account email"},xM={title:"Update cover image",description:"Choose one of our custom gradients or upload your own",uploadFile:"Upload custom image",orUseTemplate:"Or use a template",cancel:"Cancel",saveChanges:"Save changes",updated:"Cover image updated!",updateFailed:"Failed to update cover image",uploadFailed:"Failed to upload image",dragToReposition:"Drag to reposition",replaceImage:"Replace Image",reposition:"Reposition"},IM={title:"Activity",mon:"Mon",wed:"Wed",fri:"Fri",less:"Less",more:"More",messages_one:"{{count}} prompt",messages_other:"{{count}} prompts",founderMode:"Founder mode",noActivity:"No activity",onDate:"on {{date}}",showOnProfile:"Show on profile"},RM={customize:"Customize your profile",title:"No public apps yet",description:"Your profile is the best place to share your work with the Base44 community. Select from your existing published apps to display them here, or start building a new project to grow your activity.",anonDescription:"This builder hasn't made any of their apps visible to the public. Check back later to see their latest activity, or explore what other creators are building.",startCreating:"Start Creating",chooseFromApps:"Choose from my apps"},zM={page:wM,header:AM,bio:SM,pinnedApps:CM,social:DM,toast:TM,discardDialog:EM,usernameDialog:PM,details:_M,coverImage:xM,activity:IM,emptyState:RM},MM={title:"AI Agents",beta:"Beta",subtitle:"Build AI agents into your app using Base44's AI agents infrastructure",disabled:"Disabled",setupAgents:"Set up Agents",enableAgents:"Enable Agents",turnOnToggle:"Turn on the toggle to allow agent creation",addFirstAgent:"Add your first Agent",creditsUsed:"{{credits}} credits used",creditsUsedTooltip:"Monthly integration credits used",askChatToCreate:"Ask the chat to create an agent for you. Describe what role the agent should have and what tasks it should perform.",defineInConfig:"Define your agents in local configuration files and sync them with your app using the Base44 CLI.",viewDocumentation:"View documentation",noAgentsYet:"No Agents Yet",promptChatToCreate:"Prompt the chat to create your first AI agent",agentsTab:"Agents",conversationsTab:"Conversations",searchConversations:"Search conversations...",filterAll:"All",filterMine:"Mine",filterUsers:"Users",noConversationsYet:"No conversations yet",noConversationsMatchSearch:"No conversations match your search",tryDifferentSearch:"Try a different search term",goToAgentsTab:"Go to the Agents tab to start a conversation",conversationStarted:"Conversation started",agentConfiguration:"Agent Configuration",guidelines:"Guidelines",tools:"Tools",whatsapp:"WhatsApp",toolsAndCapabilities:"Tools and Capabilities",descriptionLabel:"Description",systemPromptDesc:"This is the system prompt that defines the agent's behavior",briefDescription:"Brief description of what this agent does...",instructions:"Instructions",instructionsDesc:"Specific guidelines and rules the agent should follow",detailedInstructions:"Detailed instructions for the agent...",availableTools:"Available Tools",configureTools:"Configure what tools and data this agent can access",add:"Add",allEntitySlotsUsed:"All Entity Slots Used",addEntityTool:"Add Entity Tool",entityToolDesc:"Database operations and CRUD access",allFunctionSlotsUsed:"All Function Slots Used",addBackendFunction:"Add Backend Function",backendFunctionDesc:"Custom backend logic and integrations",noToolsConfigured:"No tools configured",addToolsDesc:"Add entity tools or backend functions to give the agent capabilities",entityTool:"Entity Tool",selectEntity:"Select entity",allowedOperations:"Allowed operations",deleteWarning:"Careful, deleted data by the agent can't be restored",backendFunction:"Backend Function",selectBackendFunction:"Select backend function",functionDescription:"Function Description",describeFunction:"Describe when and how this function should be used...",whatsappIntegration:"WhatsApp Integration",whatsappDesc:"Connect your agent to WhatsApp for seamless communication",testChat:"Test Chat",addWhatsapp:"Add WhatsApp to Your App",whatsappEnableDesc:"Enable WhatsApp access for your users with a single command",addWhatsappButton:"Add a WhatsApp button for the {{agent}}",sendToChat:"Send to Chat",fullChatCapabilities:"Full Chat Capabilities",fullChatDesc:"All web chat features work seamlessly in WhatsApp, including tools and data access",voiceMediaSupport:"Voice & Media Support",voiceMediaDesc:"Users can send voice notes and images for natural interaction",customNumbers:"Custom Numbers",customNumbersDesc:"Connect your own WhatsApp Business numbers",easyUiIntegration:"Easy UI Integration",easyUiDesc:"Add WhatsApp button to your app with a simple chat command",welcomeMessage:"Welcome Message",welcomeMessageDesc:"Craft a warm greeting that introduces your agent and sets expectations",charCount:"{{count}}/500",editAgent:"Edit Agent",edit:"Edit",startChat:"Start Chat",chat:"Chat",functionCount:"{{count}} function(s)",noDescriptionProvided:"No description provided",entities:"Entities:",activeConversation:"Active conversation",readOnlyConversation:"Read-only conversation",startConversation:"Start your conversation",typeMessageBelow:"Type a message below to begin",typeYourMessage:"Type your message...",cancel:"Cancel",saving:"Saving...",save:"Save",commandAddedToChat:"Command added to chat. Press Enter to send.",failedToSaveAgentConfiguration:"Failed to save agent configuration",promptAddedToChat:"Prompt added to chat",unableToLoadSuggestions:"Unable to load suggestions. Try again later.",createAgent:"Create Agent",createAgentTitle:"Create an Agent",createAgentDescription:"Ask the chat to create an agent for you. Describe what role the agent should have and what tasks it should perform.",manageAgentsAndConversations:"Manage agents and conversations",skills:"Skills",skillsEnabledLimit:"You can enable up to {{count}} skills per agent.",appSkillsTitle:"App Skills",appSkillsDescription:"Reusable instruction skills for agents in this app.",addSkill:"Add Skill",noAppSkillsYet:"No app skills yet. Create one to reuse across agents in this app.",workspaceSkillsTitle:"Workspace Skills",workspaceSkillsDescription:"Shared skills from this workspace. Toggle them on to enable for this agent.",loadingWorkspaceSkills:"Loading workspace skills...",noWorkspaceSkillsAvailable:"No shared workspace skills are currently available.",manageWorkspaceSkills:"Manage workspace skills",workspaceSkillSource:"workspace",appSkillSource:"app",unavailable:"unavailable",addAppSkill:"Add App Skill",editAppSkill:"Edit {{name}}",skillName:"Skill name",skillNameHint:"Use lowercase letters, numbers, and hyphens.",skillNameInvalid:"Name must be lowercase alphanumeric with hyphens, no leading/trailing hyphens (e.g. 'code-review', 'sql-expert').",skillDescription:"Description",skillInstructions:"Instructions",enableForCurrentAgent:"Enable for current agent",enableForCurrentAgentDescription:"This changes the current editor state and is saved with the agent.",createSkill:"Create Skill",saveChanges:"Save Changes",workspaceSkillUnavailableDescription:"This workspace skill is no longer enabled or available.",appSkillUnavailableDescription:"This app skill no longer exists in the app skill library.",skillValidationRequired:"Name, description, and instructions are required",skillCreated:"Skill created",skillUpdated:"Skill updated",failedToSaveSkill:"Failed to save skill",skillSavedButAssignmentsFailed:"Skill saved, but attaching it to the agent failed",skillSavedButAssignmentsRefreshDelayed:"The editor could not refresh automatically. Please reload to verify the latest state.",skillSavedButSyncFailed:"Skill saved, but syncing the agent state failed",skillSavedButSyncRefreshDelayed:"The skill was saved, but the editor could not refresh automatically. Please reload to verify the latest state.",skillSavedStateRefreshed:"Skill saved. The editor was refreshed to match the latest saved state.",skillSavedRefreshDelayed:"Skill saved, but the editor could not refresh automatically. Please reload to verify the latest state.",skillDeleted:"Skill deleted",skillDeletedRefreshDelayed:"The skill was deleted, but the editor could not refresh automatically. Please reload to verify the latest state.",failedToDeleteSkill:"Failed to delete skill",skillLimitReached:"This agent already has the maximum number of enabled skills.",skillTemplatePickerTitle:"Choose a starter skill",startFromScratch:"Start from scratch",startFromScratchDescription:"Create a custom skill with your own instructions.",useTemplate:"Use template",skillTemplates:{refundPolicy:{description:"Template for refund rules, eligibility, and how the agent should collect details before escalating."},supportEscalation:{description:"Template for when to hand off to human support and what summary the agent should prepare."},pricingAndPlans:{description:"Template for explaining plans, billing cadence, upgrades, and when to route enterprise requests."},brandVoice:{description:"Template for tone, writing style, and communication rules so the agent sounds on-brand."}},memory:"Memory",memoryTitle:"Agent Memory",memorySubtitle:"Enable long-term memory so your agent can remember information across conversations",enableMemory:"Enable Memory",enableMemoryDesc:"When enabled, the agent can save and recall information across conversations",memoryScope:"Memory Scope",memoryScopeDesc:"Choose what types of memories the agent can create",memoryScopeGlobalAndUser:"Global & Per User",memoryScopeGlobalAndUserDesc:"Agent can save shared and personal memories",memoryScopeGlobal:"Global Only",memoryScopeGlobalDesc:"Memories shared across all users",memoryScopeUser:"Per User Only",memoryScopeUserDesc:"Memories specific to each user",memoryInstructions:"Memory Instructions",memoryInstructionsDesc:"Guide the agent on when to save memories and what to include",memoryInstructionsPlaceholder:"E.g., Save global memories for product updates, company announcements, and shared knowledge. Save user memories for personal preferences like communication style, tone, and specific interests.",savedMemories:"Saved Memories",refresh:"Refresh",noMemoriesYet:"No memories saved yet",noMemoriesDesc:"Memories will appear here as the agent saves them during conversations",memoryItemDeleted:"Memory item deleted",memoryDeleteFailed:"Failed to delete memory item",defaultDescription:"Default: {{description}}"},NM={writing:"Writing",wrote:"Wrote",reading:"Reading",read:"Read",deleting:"Deleting",deleted:"Deleted",editing:"Editing",edited:"Edited",creating:"Creating",created:"Created",updating:"Updating",updated:"Updated",update:"Update",delete:"Delete",importing:"Importing",imported:"Imported",import:"Import",searching:"Searching",searched:"Searched",searchingForBugs:"Searching for bugs...",searchedBugs:"Searched bugs",install:"Install",installing:"Installing",installed:"Installed",analyzing:"Analyzing",running:"Running",failed:"Failed",run:"Run",settingSecrets:"Setting secrets",setSecret:"Set secret",setSecrets:"Set secrets",testing:"Testing",checking:"Checking",tested:"Tested",checked:"Checked",fetching:"Fetching",fetched:"Fetched",waitingForApproval:"Waiting for approval...",searchedDocsFor:"Searched docs for",searchingDocsFor:"Searching docs for",searchedFor:"Searched for",searchingFor:"Searching for",foundResult_one:"Found {{count}} result",foundResult_other:"Found {{count}} results",toggling:"Toggling",toggled:"Toggled",listing:"Listing",listed:"Listed",approvalRequired:"Approval Required",approve:"Approve",approving:"Approving...",reject:"Reject",rejected:"rejected",previousApproval:"This approval request is from a previous message",query:"Query:",updateWith:"Update with:",importComplete:"Import complete",importingData:"Importing data...",percentComplete:"{{percent}}% complete",recordsProgress:"{{current}} / {{total}} records",preparing:"Preparing...",otherToolsAfterApproval:"Other tools will run after approval",countPackages:"{{num}} packages:",updateAllEntityRecords:"Update all <entity>{{entityName}}</entity> records",updateEntityRecordsMatching:"Update <entity>{{entityName}}</entity> records matching:",deleteAllEntityRecords:"Delete all <entity>{{entityName}}</entity> records",deleteEntityRecordsMatching:"Delete <entity>{{entityName}}</entity> records matching:",importDataFromInto:"Import data from <file>{{fileName}}</file> into <entity>{{entityName}}</entity>",importDataFromSheetInto:"Import data from <file>{{fileName}}</file> (sheet: <sheet>{{sheetName}}</sheet>) into <entity>{{entityName}}</entity>",countRecordsIntoEntity:"{{num}} records into <entity>{{entityName}}</entity>",dataIntoEntity:"data into <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} records <entity>{{entityName}}</entity>",allEntityRecords:"all <entity>{{entityName}}</entity> records",entityRecords:"<entity>{{entityName}}</entity> records",grepSearching:'Searching "{{pattern}}"...',grepSearchComplete:"Search complete",grepFoundResults_one:"Found {{count}} result",grepFoundResults_other:"Found {{count}} results",grepInFiles_one:"in {{count}} file",grepInFiles_other:"in {{count}} files"},FM={agents:MM,tools:NM},LM={title:"Automations",subtitle:"Build and manage automations in your app.",newAutomation:"New Automation",chooseAutomation:"Choose an automation",selectHowStarts:"Select how this automation will start.",scheduled:"Scheduled",scheduledDescription:"Run this automation on a recurring schedule or at a specific time.",dataEvent:"Data event",dataEventDescription:"Run this automation when a record is created, updated, or deleted.",connector:"Connector",connectorDescription:"Run this automation when a connected integration sends an event.",connectorBetaTooltip:"This connector is free while in beta.",beta:"Beta",connectorNewAutomation:"New Connector Automation",connectorIntegrationType:"Integration",connectorSelectIntegration:"Select an integration",connectorNoIntegrations:"No integrations connected",connectorNoIntegrationsHint:"To enable automation, you need to create an integration first.",connectorCreateIntegration:"Create integration",connectorCreateNewIntegration:"Create new integration",connectorEvents:"Events",connectorSelectEvent:"Select an event",connectorSelectEvents:"Select events to listen for",connectorAvailableEvents:"Available events ({{count}})",connectorType:"Connector",allEvents:"all events",deleteAutomation:"Delete automation?",deleteAutomationDesc:'This will permanently delete "{{name}}" and all its execution history. This action cannot be undone.',delete:"Delete",deleting:"Deleting...",cancel:"Cancel",copyOutput:"Copy output",scheduledType:"Scheduled",dataEventType:"Data event",someRunsFailed:"Some runs failed",reviewLogsOrFix:"Review the logs or let AI fix the errors.",fixing:"Fixing...",fixWithAI:"Fix with AI",failedToGetErrorContext:"Failed to get error context",logsTab:"Logs",noLogsYet:"No logs yet",back:"Back",close:"Close",saving:"Saving...",save:"Save",active:"Active",archived:"Archived",archivedAutomations:"Archived automations",nameAndDescription:"Name and description",typeColumn:"Type",lastRun:"Last run",failed:"Failed",loading:"Loading...",editAutomation:"Edit automation",runNow:"Run now",archive:"Archive",duplicate:"Duplicate",unlockAutomations:"Unlock automations",unlockAutomationsDesc:"To run automations in your app, you need backend functions enabled. Upgrade to enable backend functions and start using automations.",enableBackendFunctions:"Enable backend functions to get started",enableBackendFunctionsDesc:"Automations run backend functions on a schedule or when data changes. Turn on backend functions in Settings to use automations.",openSettings:"Open Settings",createBackendFunction:"Create a backend function to add automations",createBackendFunctionDesc:"To create an automation, you first need a backend function in your code. Write a backend function in your code or ask the chat for help.",noAutomationsYet:"No automations yet",noAutomationsDesc:"Create an automation to run tasks automatically in your app.",noArchivedAutomations:"No archived automations",noArchivedDesc:"Automations you archive or that reach their end date will appear here.",runAutomation:"Run Automation",selectRecord:"Select a <entity>{{entity}}</entity> record to run the automation with.",searchRecords:"Search {{entity}} records...",noRecordsFound:"No {{entity}} records found.",noRecordsMatch:'No records match "{{query}}"',recordsCount:"{{filtered}} of {{total}} records",totalRecords:"{{total}} records",running:"Running...",automationName:"Automation name",describeAutomation:"Describe what this automation does.",functionToRun:"Function to run",selectFunction:"Select a backend function from your code. The function will receive the entity data when the automation fires.",noBackendFunctions:"No backend functions available",selectAFunction:"Select a function",runsWhen:"Runs when",noItems:"No items",selectItem:"Select item",is:"Is",selectEvent:"Select event",automationNameRequired:"Automation name is required.",selectEntity:"Please select an entity.",selectEventType:"Please select at least one event type.",selectFunctionRequired:"Please select a function to run.",newDataAutomation:"New data automation",details:"Details",logsWillAppearAfterFire:"Logs will appear here after this automation fires.",selectFunctionFromCode:"Select a backend function from your code. To add or edit a function, update it in your code or ask the chat for help.",recurring:"Recurring",oneTime:"One Time",repeatsEvery:"Repeats every",minute:"Minute",hour:"Hour",day:"Day",week:"Week",month:"Month",startAt:"Start at",at:"At",repeatsOn:"Repeats on",repeatsOnDay:"Repeats on day",ends:"Ends",never:"Never",on:"On",after:"After",occurrences:"occurrences",runOn:"Run on",atTime:"At time",oneTimeDateRequired:"One-time schedules require a date to be specified.",oneTimeTimeRequired:"One-time schedules require a time to be specified.",oneTimePastError:"One-time schedule date and time cannot be in the past.",minMinutesInterval:"Minimum interval for minute-based schedules is {{min}} minutes.",selectDayForWeekly:"Please select at least one day for weekly schedule.",monthlyDayRequired:"Monthly schedules require a day of month to be selected.",endDateRequired:"End date is required when 'Ends' is set to 'On'.",endDatePast:"End date cannot be in the past.",occurrenceCountMin:"Occurrence count must be at least 1.",newScheduledAutomation:"New scheduled automation",logsWillAppearAfterRun:"Logs will appear here after this automation runs.",description:"Description",nameField:"Name",typeField:"Type",automationUpdated:"Automation updated successfully",automationCreated:"Automation created successfully",failedToSave:"Failed to save automation",functionArgs:"Arguments (JSON)",functionArgsPlaceholder:'{"key": "value"}',functionArgsTooltip:"Optional JSON object passed to the function as additional arguments.",functionArgsInvalidJson:"Arguments must be valid JSON.",advanced:"Advanced",triggerConditions:"Trigger conditions",conditionsSetByAI:"Conditions are configured by the AI builder and cannot be edited manually.",conditionsSummaryError:"Could not load conditions summary.",connectorNoManualIntegrations:"No integrations available for manual creation",connectorNoManualIntegrationsHint:"Some integrations require trigger conditions and can only be created through the AI builder.",suggestedForYou:"Suggested for you",basedOnYourContext:"Based on your app's context",createFromScratch:"Create from scratch"},jM={automations:LM},OM={title:"Integrations",myIntegrations:"My integrations",browse:"Browse",payments:"Payments",failedToLoad:"Failed to load app connections",successfullySwitched:"Successfully switched account to {{name}}",cancelled:"Cancelled",connectionCancelled:"App connection was cancelled",disconnected:"{{name}} has been disconnected",failedToDisconnect:"Failed to disconnect app connection",stripeRemoved:"Stripe integration has been removed",wixPaymentsDisconnected:"Wix Payments has been disconnected",integrationRemoved:"{{name}} has been removed",failedToRemove:"Failed to remove integration",connectedAccountsWarning:"Connected accounts may expose sensitive data to anyone with access.",unlockFeature:"Unlock this feature",unlockFeatureDesc:"This feature is only available on the Builder plan or higher. Upgrade to continue working without limits",upgradeToUseConnector:"Upgrade to use feature",access:"{{name}} Access",disconnectAccount:"Disconnect Account?",disconnectDesc:"Access for <bold>{{email}}</bold> on <bold>{{name}}</bold> will be revoked.<br/>The integration record will be preserved for future reconnection.",disconnecting:"Disconnecting...",disconnect:"Disconnect",removeIntegration:"Remove Integration?",removeDesc:"<bold>{{name}}</bold> will be permanently removed from this app.<br/>To create a connection again, you will need to set it up from scratch.",removing:"Removing...",remove:"Remove",cancel:"Cancel",reject:"Reject",new:"New",done:"Done",success:"Success",error:"Error",setupIntegrations:"Set up Integrations",setupIntegrationsDesc:"Easily link your app to connectors like Google Calendar, Google Drive, Slack, Notion, Salesforce, HubSpot and more.",setupIntegrationsChat:"Just describe what you want to connect in the chat, and it will set it up for you.",viewAccess:"View Access",connecting:"Connecting...",switchAccount:"Switch account",reconnect:"Reconnect",disconnectAccount2:"Disconnect account",use:"Use",examplePrompts:"Example prompts",clickPromptToAdd:"Click a prompt to add it to your chat.",unableToLoadSuggestions:"Unable to load suggestions. Please try again later.",requiresBackendFunctions:"This integration requires backend functions, a feature available only on Builder tier and above. ",seePlans:"See Plans",promptAddedToChat:"Prompt added to chat. Press Enter to send.",connectors:"Connectors",connectorsDesc:"Connect your app to popular services with quick OAuth connections.",searchConnectors:"Search connectors",noSearchResults:"No results for your search",noSearchResultsDesc:"Try using different keywords or check the spelling. You can also sort by name or recently added to browse.",sort:{title:"Sort",mostUsed:"Most used",recentlyAdded:"Recently added",az:"A-Z",za:"Z-A"},revoked:"Revoked",connectionLost:"Connection is lost — please reconnect",configModal:{connectTo:"Connect to {{name}}",configureConnection:"Configure your {{name}} connection",loadingConfig:"Loading configuration...",retryHint:"You can try again.",connect:"Connect",connecting:"Connecting...",validationRequired:"{{name}} is required",validationInvalid:"Invalid {{name}}",fetchError:"Failed to load configuration.",retry:"Retry"},wixPayments:{title:"Wix Payments",live:"Live",disconnected:"Disconnected",acceptingPayments:"Accepting payments",integrationDisconnected:"Integration disconnected",openingWixPayments:"Opening Wix Payments...",popupBlocked:"Wix Payments was blocked by your browser. Use the link below to open Payments Dashboard manually.",errors:{noUrl:"Failed to get Wix Payments URL. Please try again.",fetchFailed:"Failed to open Wix Payments. Please try again.",invalidRedirect:"Failed to open Wix Payments. Please try again."},openDashboard:"Open Dashboard",managePayments:"Manage Payments",disconnect:"Disconnect",disconnectIntegration:"Disconnect Integration?",disconnectDesc:"<bold>Wix Payments</bold> will be disconnected from this app.<br/>You can reconnect it later from the chat.",disconnecting:"Disconnecting...",disconnectButton:"Disconnect",enterNamePrompt:"Please enter your name to continue:",firstNamePlaceholder:"First name",lastNamePlaceholder:"Last name"},stripe:{unableToClaimSandbox:"Unable to claim sandbox",sandboxExpired:"The sandbox may have expired or already been claimed. Please refresh the page.",failedGetClaimUrl:"Failed to get claim URL",pleaseTryAgain:"Please try again or refresh the page.",pendingSetup:"Pending Setup",completeSetupGuide:"Complete the setup guide to accept real payments",live:"Live",stripe:"Stripe",loadingStripe:"Loading...",acceptingPayments:"Accepting real payments",accountDetails:"Stripe account details",hideGuide:"Hide Guide",showGuide:"Show Guide",goToStripe:"Go to Stripe",aboutIntegration:"About Integration",aboutStripeIntegration:"About Stripe Integration",stripeDesc:"Stripe allows you to accept payments, send payouts, and manage your business online. This integration enables you to:",acceptCards:"Accept credit cards and other payment methods",createProducts:"Create products and subscriptions",manageCustomers:"Manage customers and billing",close:"Close",tryTestPayment:"Try a test payment",claimSandbox:"Claim your Stripe sandbox",addLiveKeys:"Add your live API keys from Stripe",copiedCard:"Copied!",testCardCopied:"Test card number copied to clipboard.",failedToCopy:"Failed to copy",copyManually:"Please copy manually: 4242 4242 4242 4242",keysSaved:"API keys saved successfully.",failedSaveKeys:"Failed to save API keys. Please try again.",movedOutOfTestMode:"You've moved out of test mode.",noNeedTestPayments:"No need to run test payments anymore.",useTestCard:"Use this test card to simulate a purchase:",testCardNumber:"4242 4242 4242 4242",anyFutureExpiry:", any future expiry, any 3-digit CVC.",publishAndOpen:"Publish your app and open it in a new tab to test the checkout experience",copyCardNumber:"Copy Card Number",connectStripeDesc:"Connect to your existing Stripe account or create a new one to start accepting real payments.",claimAndGoLive:"Claim & Go Live",copyLiveKeys:"Copy your live Publishable and Secret keys from your <link>Stripe Dashboard</link> to finish setup and enable real payments in your app.",publishableKey:"Publishable key",secretKey:"Secret key",enterValue:"Enter value",savingKeys:"Saving...",saveApiKeys:"Save API keys",completeStepInStripe:"To complete this step, claim sandbox and finish setup in Stripe"}},BM={title:"App Integrations",subtitle:"Connect your app to third-party services and extend its functionality.",integrationCatalog:"Integration Catalog",payments:"Payments",zapier:"Zapier",couldNotLoad:"Could not load integration details. Please try again.",loadingDetails:"Loading details...",backToCatalog:"Back to Catalog",integrationAdded:"Integration Added (Placeholder)",wouldBeAdded:"{{name}} would be added to your app. Secret values logged.",requiresConfiguration:"Requires Configuration",requiresSecrets:"This integration requires {{count}} secret value(s) to be configured.",addToApp:"Add to App",paymentProcessing:"Payment Processing",paymentProcessingDesc:"Accept payments in your app with popular payment processors. Coming Soon!",leadingPaymentPlatform:"Leading payment platform",globallyRecognized:"Globally recognized payments",configurePayment:"Configure payment providers to enable subscriptions, one-time purchases, and more in your application.",zapierIntegration:"Zapier Integration",zapierDesc:"Connect your app with thousands of other services through Zapier.",automateWithZapier:"Automate with Zapier",linkBase44:"Link Base44 to your favorite apps like Slack, Google Sheets, Mailchimp, and more.",exploreOnZapier:"Explore Base44 on Zapier",configureIntegration:"Configure {{name}}",configureDesc:"This integration requires some secret values to be set up. These are stored securely and encrypted.",saveAndAdd:"Save and Add Integration"},UM={title:"Skills",description:"Add skills to shape how the AI builds your apps.",manage:"Manage"},qM=JSON.parse(`{"title":"Connectors","connectorsForAppUsers":"Connectors For App Users","connectorsForAppUsersDesc":"Set up connectors so app users can link personal accounts to apps in this workspace.","connectorsForAppUsersDialogDesc":"Let app users connect their personal accounts to apps in this workspace.","addConnector":"Add Connector","browseConnectors":"Browse Connectors","noConnectorsYet":"No connectors yet","noConnectorsYetDesc":"Add connectors so app users can link their personal accounts.","view":"View","edit":"Edit","connections":"Connections","addConnection":"Add Connection","viewConnector":"View Connector","connectorName":"Connector name","connector":"{{name}} Connector","examplePrompts":"Example Prompts","back":"Back","configureConnection":"Configure your connection","configureConnectionDesc":"Provide your Client ID, Secret, and permissions.","connectorNameDesc":"Enter a short name to identify this connector","clientId":"Client ID","clientSecret":"Client Secret","clientSecrets":"Client Secrets","scopes":"Scopes","scopesDesc":"Enter the scopes your app needs. Write each scope on a separate line.","scopesPlaceholder":"Enter scopes, one per line","scopesPlaceholderExample":"e.g.\\nhttps://www.googleapis.com/auth/calendar.readonly\\nemail","connectionConfig":"Connection Configuration","cancel":"Cancel","close":"Close","addingConnector":"Adding...","savingConnector":"Saving...","saveChanges":"Save Changes","deleteConnector":"Delete Connector","deleteConfirm":"Delete {{name}}? This action cannot be undone.","deleting":"Deleting...","addConnectionTitle":"Add {{name}} Connection","editConnectionTitle":"Edit {{name}} Connection","connectorReadOnly":"{{name}} Connector","readOnlyDesc":"Read-only view of connector details","builtInConnectors":"Built in Connectors","promptExamples":"Prompt examples to get started","adminOnlyTooltip":"Only workspace admins or owners can connect integrations for app users","settingUp":"Setting up connector...","configured":"Connector configured","setUp":"Set up {{type}} app user connector","setUpGeneric":"Set up app user connector","connecting":"Connecting...","connect":"Connect","reject":"Reject","workspaceLevelNote":"This integration will be accessible at the workspace level and applied to all applications created within that workspace.","previousMessage":"This connector setup is from a previous message","toastErrorTitle":"Error","toastCreated":"Connector created","toastCreateFailed":"Failed to create connector","toastDuplicateName":"A connector with this name already exists in this workspace","toastUpdated":"Connector updated","toastUpdateFailed":"Failed to update connector","toastDeleted":"Connector deleted","toastDeleteFailed":"Failed to delete connector","configFetchFailed":"Failed to load connection configuration. Required fields may be missing.","retry":"Retry","toastLoadFailed":"Failed to load OAuth connectors","namePlaceholder":"e.g. Marketing {{label}}","clientIdPlaceholder":"Enter OAuth client ID","clientSecretPlaceholderNew":"Enter new client secret","clientSecretPlaceholder":"Enter OAuth client secret","extraDetails":{"googlecalendar":{"longDescription":"Connect to Google Calendar to let your app users view, create, and manage calendar events. Sync schedules, automate meeting creation from form submissions, and build scheduling workflows.","examplePrompt0":"Sync upcoming meetings to an in-app dashboard.","examplePrompt1":"Create calendar events from form submissions.","examplePrompt2":"Show a daily agenda view for the logged-in user.","examplePrompt3":"Send reminders before upcoming events."},"slack":{"longDescription":"Connect to Slack to share messages and create canvases directly to simplify collaboration and boost productivity. Search and retrieve messages, channels, threads, files, and users, giving Claude the context to streamline your work.","examplePrompt0":"Sync new app users to a Slack channel.","examplePrompt1":"Send build status updates to #devops.","examplePrompt2":"Post app errors to #alerts channel.","examplePrompt3":"Notify team on new customer feedback."},"salesforce":{"longDescription":"Connect to Salesforce to access contacts, leads, opportunities, and custom objects. Let your app users view and update their CRM data, track deals, and automate sales workflows.","examplePrompt0":"Show a dashboard of open opportunities.","examplePrompt1":"Create a new lead from a form submission.","examplePrompt2":"Sync contact updates back to Salesforce.","examplePrompt3":"Notify the team when a deal closes."},"hubspot":{"longDescription":"Connect to HubSpot to manage contacts, companies, deals, and marketing campaigns. Let your app users sync their CRM data, track engagement, and automate marketing workflows.","examplePrompt0":"Display a list of recent deals in the app.","examplePrompt1":"Add new contacts from sign-up forms.","examplePrompt2":"Sync email campaign results to a dashboard.","examplePrompt3":"Update deal stages from the app."},"notion":{"longDescription":"Connect to Notion to access pages, databases, and workspace content. Let your app users read and update their Notion workspace, sync structured data, and automate content workflows.","examplePrompt0":"Pull task lists from a Notion database.","examplePrompt1":"Create new pages from form submissions.","examplePrompt2":"Sync project status updates to Notion.","examplePrompt3":"Display Notion content inside the app."},"slackbot":{"longDescription":"Connect a Slack Bot to post messages as a branded bot with a custom name and icon. Respond to app mentions, use slash commands, and automate bot-centric workflows in your Slack workspace.","examplePrompt0":"Post daily standup summaries to #general.","examplePrompt1":"Respond to slash commands with app data.","examplePrompt2":"Send automated alerts when tasks are overdue.","examplePrompt3":"Notify channels when new orders come in."},"googledrive":{"longDescription":"Connect to Google Drive to upload, organize, and manage files. Let your app users save generated documents, back up data, and access their Drive files directly from your app.","examplePrompt0":"Save generated reports to a shared Drive folder.","examplePrompt1":"Upload user-submitted files to Google Drive.","examplePrompt2":"List recent files from a specific folder.","examplePrompt3":"Back up app data exports to Drive automatically."},"gmail":{"longDescription":"Connect to Gmail to send, read, and manage emails programmatically. Let your app users automate email workflows, read inbox messages, and send personalized emails from their own account.","examplePrompt0":"Send a confirmation email after form submission.","examplePrompt1":"Display the user's latest inbox messages.","examplePrompt2":"Auto-reply to emails matching certain criteria.","examplePrompt3":"Draft and send personalized outreach emails."},"googlesheets":{"longDescription":"Connect to Google Sheets to read, write, and update spreadsheet data. Let your app users sync records, import data from sheets, and export app data to their spreadsheets.","examplePrompt0":"Import product data from a Google Sheet.","examplePrompt1":"Export daily sales reports to a spreadsheet.","examplePrompt2":"Sync form submissions to a tracking sheet.","examplePrompt3":"Read pricing data from a shared spreadsheet."},"googleslides":{"longDescription":"Connect to Google Slides to create and edit presentations. Let your app users generate slide decks from templates, add dynamic content, and automate presentation creation.","examplePrompt0":"Generate a pitch deck from form inputs.","examplePrompt1":"Add a new slide with weekly metrics.","examplePrompt2":"Create presentations from report templates.","examplePrompt3":"Update slide content with the latest data."},"googledocs":{"longDescription":"Connect to Google Docs to create, read, and edit documents. Let your app users generate contracts, fill in templates, and manage documents directly from your app.","examplePrompt0":"Generate a contract from a template.","examplePrompt1":"Create meeting notes from form data.","examplePrompt2":"Fill in a document template with user details.","examplePrompt3":"Append new content to an existing doc."},"googlebigquery":{"longDescription":"Connect to Google BigQuery to run SQL queries and analyze large datasets. Let your app users query their data warehouse, build dashboards, and pull analytics into your app.","examplePrompt0":"Query sales data and display in a chart.","examplePrompt1":"Pull user analytics from BigQuery tables.","examplePrompt2":"Run a scheduled report from warehouse data.","examplePrompt3":"Show top-performing products from query results."},"linkedin":{"longDescription":"Connect to LinkedIn to access profile data and share posts. Let your app users publish updates, retrieve professional profiles, and automate social media workflows on LinkedIn.","examplePrompt0":"Post company updates to LinkedIn automatically.","examplePrompt1":"Pull profile details for the logged-in user.","examplePrompt2":"Share blog posts to LinkedIn from the app.","examplePrompt3":"Display LinkedIn profile info on a dashboard."},"tiktok":{"longDescription":"Connect to TikTok to access profile info, follower stats, and video data. Let your app users track their TikTok performance and browse their published videos.","examplePrompt0":"Show follower count and profile stats.","examplePrompt1":"List the user's most recent TikTok videos.","examplePrompt2":"Display video performance metrics on a dashboard.","examplePrompt3":"Track follower growth over time."},"discord":{"longDescription":"Connect to Discord to send messages, manage servers, and interact with guilds and channels. Let your app users automate notifications, post updates, and integrate with their Discord community.","examplePrompt0":"Send order notifications to a Discord channel.","examplePrompt1":"Post app alerts to a #notifications channel.","examplePrompt2":"List available channels in a Discord server.","examplePrompt3":"Notify the team when a new user signs up."},"wix":{"longDescription":"Connect to Wix to access site data, manage content, and interact with Wix business solutions like Stores, Bookings, and CRM. Let your app users sync products, orders, and customer data.","examplePrompt0":"Sync Wix store products to the app.","examplePrompt1":"Pull recent orders from Wix Stores.","examplePrompt2":"Display booking availability from Wix Bookings.","examplePrompt3":"Manage Wix CRM contacts from your app."},"github":{"longDescription":"Connect to GitHub to access repositories, manage issues and pull requests, and automate development workflows. Let your app users track code changes, create issues, and streamline their dev process.","examplePrompt0":"List open issues from a repository.","examplePrompt1":"Create a new issue from a bug report form.","examplePrompt2":"Show recent pull requests on a dashboard.","examplePrompt3":"Track commit activity across repositories."},"wrike":{"longDescription":"Connect to Wrike to manage projects, tasks, and team collaboration. Let your app users create and update tasks, track project progress, and coordinate work across teams.","examplePrompt0":"Create tasks from form submissions.","examplePrompt1":"Display project timelines on a dashboard.","examplePrompt2":"Update task status from within the app.","examplePrompt3":"Show team workload and task assignments."},"box":{"longDescription":"Connect to Box to upload, manage, and share files and folders. Let your app users store documents securely, organize files, and collaborate on content in Box.","examplePrompt0":"Upload generated documents to a Box folder.","examplePrompt1":"List files in a shared Box directory.","examplePrompt2":"Download files from Box into the app.","examplePrompt3":"Share a Box file link with team members."},"clickup":{"longDescription":"Connect to ClickUp to manage tasks, projects, and team workflows. Let your app users create tasks, update statuses, and track project progress directly from your app.","examplePrompt0":"Create ClickUp tasks from form submissions.","examplePrompt1":"Show task board status on a dashboard.","examplePrompt2":"Update task priorities from the app.","examplePrompt3":"List overdue tasks for the current sprint."},"google_analytics":{"longDescription":"Connect to Google Analytics to access website traffic, user behavior, and marketing performance data. Let your app users view analytics reports and track key metrics from within your app.","examplePrompt0":"Display page views and sessions on a dashboard.","examplePrompt1":"Show top traffic sources for the past week.","examplePrompt2":"Track conversion rates across campaigns.","examplePrompt3":"Pull user demographics and behavior data."},"outlook":{"longDescription":"Connect to Outlook to send and read emails, manage calendar events, and access Microsoft 365 mail and calendar. Let your app users automate email workflows and sync their schedule.","examplePrompt0":"Send follow-up emails from the app.","examplePrompt1":"Display upcoming calendar events.","examplePrompt2":"Create calendar events from form submissions.","examplePrompt3":"Show recent emails on a dashboard."},"linear":{"longDescription":"Connect to Linear to create and manage issues, projects, and cycles. Let your app users track team workflows, organize sprints, and stay on top of engineering progress.","examplePrompt0":"Create Linear issues from bug report forms.","examplePrompt1":"Show active sprint issues on a dashboard.","examplePrompt2":"Update issue status from within the app.","examplePrompt3":"Track cycle progress and team velocity."},"dropbox":{"longDescription":"Connect to Dropbox to upload, download, and manage files and folders. Let your app users store files in the cloud, sync data, and access their Dropbox content from your app.","examplePrompt0":"Upload exported reports to Dropbox.","examplePrompt1":"List files in a specific Dropbox folder.","examplePrompt2":"Download shared files into the app.","examplePrompt3":"Sync app data backups to Dropbox."}},"builtIn":{"sendEmail":{"name":"Send Emails","rowDescription":"Send emails to people in your Base44 app with customizable sender names and rich HTML content.","subtitle":"Send automated emails to your users directly from your app.","longDescription":"Send emails automatically from your app as part of workflows or automations. This integration can be triggered from flows, backend functions, or agents to send notifications such as confirmations, alerts, summaries, or access links to users.","examplePrompt0":"When a support ticket is updated to \\"resolved\\", use SendEmail to notify the requester with a summary of the resolution.","examplePrompt1":"Create a weekly automation that uses SendEmail to send admins a digest of new orders and key metrics.","examplePrompt2":"Add a daily flow that uses SendEmail to send admins a summary of new signups in this app.","examplePrompt3":"Create an automation that uses SendEmail to remind users 24 hours before their booked appointment."},"uploadFile":{"name":"Upload File","rowDescription":"Let people upload files to your app. Use the returned file URL in other integrations or workflows.","subtitle":"Let people upload files to your app. Use the returned file URL in other integrations or workflows.","longDescription":"Allow users to upload files to your app and attach them to records. This integration powers upload components so you can collect documents, images, receipts, contracts, screenshots, profile pictures, CSV files, or spreadsheets, and store only the secure file URL in your data.","examplePrompt0":"Add a file upload field to this form using Upload File and save the file URL on the related record.","examplePrompt1":"Create a page where users can upload profile pictures with Upload File and store the image URL on their user entity.","examplePrompt2":"Set up an upload area for CSV files using Upload File so I can import those files later into my data tables."},"invokeLlm":{"name":"Invoke LLM","rowDescription":"Generate AI responses using built-in language models, prompts, files, and structured outputs.","subtitle":"Generate AI responses using built-in language models, prompts, files, and structured outputs.","longDescription":"Use a language model to generate responses from prompts. This integration can return structured JSON outputs, analyze images, use file attachments as context, and perform web search when needed. It can be used to power agents, workflows, and other AI-driven features in your app.","examplePrompt0":"Generate AI responses from user input using Invoke LLM and show the answer on this page.","examplePrompt1":"Use Invoke LLM to summarize long feedback messages into three bullet insights stored on each Feedback record.","examplePrompt2":"Add a \\"rewrite this text\\" feature that sends user text to Invoke LLM and returns a clearer, friendlier version.","examplePrompt3":"Use Invoke LLM to classify each support ticket as \\"bug\\", \\"feature request\\", or \\"question\\" and save the label on the ticket record."},"generateImage":{"name":"Generate Image","rowDescription":"Create images from detailed text prompts. Returns a URL to the generated image.","subtitle":"Simply provide a text prompt describing the image you want, and it returns a URL to the generated image.","longDescription":"Generate images using AI from text prompts or flows in your app. This integration lets your app create cover images, thumbnails, avatars, product placeholders, or simple marketing visuals on demand without connecting to an external image provider.","examplePrompt0":"Use Generate Image to create a default product image when a new product is added without photos.","examplePrompt1":"Add a feature where users can enter a short description and Generate Image returns a cover image URL saved on their post.","examplePrompt2":"Create a flow that uses Generate Image to generate avatar images for new users based on their favorite color or theme."},"extractData":{"name":"Extract data from uploaded files","rowDescription":"Pull structured data from uploaded files (CSV, PNG, JPG, JPEG, PDF) using JSON schemas. Useful for importing data in bulk.","subtitle":"Pull structured data from uploaded files (CSV, PNG, JPG, JPEG, PDF) using JSON schemas. Useful for importing data in bulk.","longDescription":"Automatically extract structured data from files uploaded to your app and store it in your entities. This integration reads documents and spreadsheets and turns their contents into structured fields you can use in records, reports, or automations.","examplePrompt0":"When someone uploads a PDF invoice, use Extract Data from Uploaded Files to pull out the vendor, total amount, and due date into an Invoices entity.","examplePrompt1":"Use Extract Data from Uploaded Files to read a CSV of contacts and create one contact record per row.","examplePrompt2":"After a user uploads a receipt image, use Extract Data from Uploaded Files to extract the merchant, date, and line items into a structured Expenses record."},"whatsapp":{"name":"WhatsApp","rowDescription":"Connect your agent to WhatsApp so people can message your app's agent directly from their phone, without even opening the app.","subtitle":"Connect your agent to WhatsApp so people can message your app's agent directly from their phone, without even opening the app.","longDescription":"Connect your agent to WhatsApp so people can message your app's agent directly from their phone. Use this integration to handle support, collect data, or send updates over WhatsApp while the agent calls your app's data and workflows behind the scenes.","examplePrompt0":"Connect my support agent to WhatsApp so customers can ask questions there and the agent replies using my app's knowledge.","examplePrompt1":"Set up a WhatsApp flow where new messages create or update records in my Contacts entity and the agent confirms the details.","examplePrompt2":"When an order status changes to \\"shipped\\", have the agent send a WhatsApp message with the tracking link and key order info."}}}`),VM={title:"Connectors For App Users",description:"Set up connectors so app users can link their personal accounts.",manage:"Manage"},$M={connections:OM,integrations:BM,skillsBanner:UM,oauthConnectors:qM,oauthConnectorsBanner:VM},WM={importSuccessful:"Import Successful",importSuccessfulMsg:"Successfully imported {{count}} {{name}} records",importFailed:"Import Failed",exportSuccessful:"Export Successful",exportSuccessfulMsg:"Successfully exported entities to CSV",exportFailed:"Export Failed",moveAllToTrash:"Move All Records to Trash",moveAllToTrashConfirm:"Are you sure you want to move all record(s) to trash? You can restore them later from the trash.",moveToTrash:"Move to Trash",success:"Success",allMovedToTrash:"All records moved to trash successfully",error:"Error",add:"Add",addItem:"Add Item",import:"Import",export:"Export",schema:"Schema",recentlyDeleted:"Recently Deleted",deleteAll:"Delete All",permissions:"Permissions",permissionsDesc:"Create rules to control who can read and write records. Multiple rules are combined with OR logic.",saveRules:"Save Rules",permissionsIssueDetected:"Permissions issue detected",learnMoreAboutPermissions:"<a>Learn more <icon/></a> about permissions and security rules",customize:"Customize",apply:"Apply",checkingPermissions:"Checking permissions security",failedCheckPermissions:"Failed to check permissions",permissionsCheckPassed:"Permissions check passed",recommendedRules:"Recommended rules",editRecord:"Edit {{entity}}",addNewRecord:"Add New {{entity}}",test:"Test",production:"Production",filters:"Filters",schemaEditor:"Schema Editor",noRecordsFound:"No records found",getStartedAdding:"Get started by adding your first record.",loadingEntity:"Loading {{entity}}..."},GM={production:"Production",test:"Test"},HM={back:"Back",trashTitle:"{{entity}}: Trash",test:"(Test)",production:"(Production)",trashDescription:`View, restore or permanently delete items.
Items are permanently deleted after 30 days.`,permanentlyDelete:"Permanently Delete Record",permanentlyDeleteConfirm:"Are you sure you want to permanently delete this record? This action cannot be undone.",deletePermanently:"Delete Permanently",restoreSelected:"Restore Selected Records",restoreSelectedConfirm:"Are you sure you want to restore {{count}} selected record(s)?",restore:"Restore",restoreAll:"Restore All Records",restoreAllConfirm:"Are you sure you want to restore all records in the trash?",restoreAllBtn:"Restore All",deletedDate:"Deleted Date",actions:"Actions",failedToLoad:"Failed to load deleted records",tryAgain:"Try Again",loadingDeleted:"Loading deleted records...",noDeletedRecords:"No deleted records found",restoreCount:"Restore {{count}} Selected",restoring:"Restoring..."},YM={data:WM,toolbar:GM,trash:HM},KM=JSON.parse(`{"title":"Domains","subtitle":"Buy, connect and manage your domains.","learnMore":"Learn more","expired":"Expired {{days}} days ago","expiresIn":"Expires in {{days}} days","lastChecked":"Last checked: {{time}}","domainLinked":"Domain linked","domainLinkedMsg":"Domain has been linked to your project","errorLinkingDomain":"Error linking domain","linking":"Linking...","linkDomain":"Link Domain","checkStatus":"Check Status","checking":"Checking...","verifyDomain":"Verify","verifying":"Verifying...","unlinkDomain":"Unlink Domain","unlinking":"Unlinking...","unlinked":"Unlinked","domainActive":"Domain Active","waitingDns":"Waiting for DNS Propagation","verified":"Verified","error":"Error","pending":"Pending","domainUnlinked":"Domain unlinked","domainUnlinkedMsg":"Domain has been unlinked from your project","errorUnlinkingDomain":"Error unlinking domain","domainDeleted":"Domain deleted","errorDeletingDomain":"Error deleting domain","errorCheckingStatus":"Error checking status","verificationInitiated":"Verification initiated","checkBackMinutes":"Please check back in a few minutes","errorVerifyingDomain":"Error verifying domain","deleteDomain":"Delete domain","deleteConfirm":"Are you sure you want to delete?","deleting":"Deleting...","unlinkDialogDescription":"This domain was purchased through Base44.\\n\\nIt will remain listed under your domains but will no longer be connected to your project.","wantToUseDomain":"Want to use your domain?","customDomainsAvailable":"Custom domains are available on our Builder plan and above.<br/>Upgrade to connect your domain to this app.","viewPlans":"View Plans","getNewDomain":"Get a new domain","getNewDomainDescription":"Make your app look professional with a unique domain.","suggestedForApp":"Suggested for your app: <bold>{{domain}}</bold>","suggestedForApp_prefix":"Suggested for your app:","buyNewDomain":"Buy new domain","buyAnother":"Buy another","buyThisDomain":"Buy this domain","orConnectExisting":"Or connect an existing domain you already own","connectExistingDomain":"Connect existing domain","getYourCustomDomain":"Get your custom domain","upgradeDescription":"Custom domains are available on our Builder plan and above.","upgradeYourPlan":"Upgrade your plan","processing":"Processing...","loading":"Loading...","domainLimitReached":"Domain Limit Reached","domainLimitMsg":"You have reached the maximum of {{max}} domains for this app ({{current}}/{{max}}).\\nPlease remove some domains before adding new ones.","noCustomDomainYet":"You haven't connected a custom domain yet","connectDescription":"Connect your Base44 app to your own domain to put your brand front and center, and make your app easy to find and share.","buyDomain":"Buy Domain","neverExpires":"Never Expires","editUrl":"Edit URL","domainPurchased":"Domain Purchased!","domainPurchasedMsg":"Your domain {{domain}} was purchased successfully. Waiting for it to appear in your domains...","domainPurchaseFailed":"Domain Purchase Failed","purchaseFailedMsg":"Purchase failed for {{domain}}.","domainLimitReachedToast":"Domain limit reached","domainLimitToastMsg":"You can only have up to {{max}} domains per app. Please remove some domains first.","domainAddedSuccessfully":"Domain added successfully.","verifyToComplete":"Please verify your domain to complete setup.","failedToConnect":"Failed to connect your domain","connectYourDomain":"Connect","builtInDomain":"Built-in URL","customDomains":"Custom domains","adminCanAdd":"Admin: can add any domain","domainDisabled":"Domain disabled","domainEnabled":"Domain enabled","domainDisabledMsg":"Domain has been disabled and will no longer serve traffic.","domainEnabledMsg":"Domain has been re-enabled and will resume serving traffic.","errorTogglingDomain":"Error toggling domain","disabledBadge":"Disabled","enableDomain":"Enable","disableDomain":"Disable","enableDomainTitle":"Enable domain (admin)","disableDomainTitle":"Disable domain (admin)","errorFetchingDomains":"Error fetching domains","cancel":"Cancel","cannotPurchase":"Cannot purchase domain","domainPurchaseDisabled":"Domain purchase is currently disabled","entriNotReady":"Entri is not ready yet. Please try again in a moment.","errorPurchasingDomain":"Error purchasing domain","loadingEntri":"Loading Entri...","addNewDomain":"Add New Domain","enterDomainFormat":"Enter your domain name below. Make sure it follows the format: app.example.com","enterDomainPlaceholder":"Enter domain (e.g., app.example.com)","invalidDomain":"This doesn't look like a valid domain.\\nEnter a valid domain, e.g. example.com or app.example.com.","domainAlreadyConnected":"This domain is already connected to your app.","configureDnsAtRegister":"Configure DNS at register","addDomain":"Add Domain","adding":"Adding...","domainConnectionNeeded":"Domain connection needed","retryFromEmailSettings":"Please retry from the email domain settings.","emailDomainSubmitted":"Email domain submitted.","addDnsRecords":"Please add DNS records to your domain provider.","verificationMayTake48h":"Verification may take up to 48 hours.","senderDetailsUpdated":"Sender details updated.","editSenderDetails":"Edit sender details","setSenderDetails":"Set your sender details","saveChanges":"Save Changes","connectDomain":"Connect Domain","saving":"Saving...","connecting":"Connecting...","usersWillGetEmails":"Your users will get emails from these sender details.","senderName":"Sender name","customAddress":"Custom address","noReply":"no-reply","noReplyEmailAddress":"no-reply@base44-apps.com","domain":"Domain","copyToClipboard":"Copy to clipboard","addCnameRecord":"Add CNAME record: ","wwwToDomain":"www → base44.onrender.com","addAnameRecord":"Add ANAME/ALIAS record: ","emptyOrAtDomain":"empty or @ → base44.onrender.com","ifNoAnameSupport":"If your DNS provider doesn't support ANAME/ALIAS, use A record:","aRecordIp":"@ → 216.24.57.1","removeAaaaRecords":"Remove any AAAA records from your domain while configuring DNS. AAAA records map to an IPv6 address, and Base44 uses IPv4. These records can cause unexpected behavior for your custom domain.","dnsChangesNote":"Please note, after adding DNS records, it may take some time for changes to fully propagate across the internet. During this time, the domain may not work properly.","addDnsRecordsFor":"1. Add these DNS records to your domain provider for ","type":"Type","nameColumn":"Name","hostColumn":"Host","tabAnameAlias":"ANAME/ALIAS","tabARecord":"A record","addRecordsStepIntro":"Add these records in your provider's dashboard to finish setup:","removeAaaaShort":"Be sure to remove any AAAA (IPv6) records, as they can block connections.","customDomainStep2Verify":"Once you've updated all the records in your provider's dashboard, click '<bold>Verify Domain</bold>'. DNS changes may take up to 48-78 hours to propagate.","closeModal":"Close","verifyDomainButton":"Verify domain","dnsTargetFallback":"base44.onrender.com","value":"Value","onceConfiguredVerify":"2. Once configured, click '<bold>Verify</bold>' on the email domain card to verify the setup. DNS changes may take up to 48-78 hours to propagate.","emailDnsChangesNote":"Please note, after adding DNS records, changes may take up to 48 hours to propagate. During this time, emails will be sent from current email address.","configureDnsForEmail":"Configure DNS for email domain","connectDomainDns":"Connect your domain through your DNS provider","followInstructions":"Follow the instructions below to configure DNS records.","addRecordsInProvider":"Add these records in your provider's dashboard to finish setup.","done":"Done","needHelp":"Need help? Create a ticket at ","supportSystem":"support system","urlUpdated":"URL updated","customUrlRemoved":"Custom url removed. Your app is now available at {{url}}","appAvailableAt":"Your app is now available at {{url}}","urlAlreadyTaken":"This URL is already taken. Try one of the suggestions below, or enter a different one.","urlAlreadyTakenNoSuggestions":"This URL is already taken. Please try a different one.","suggestedAlternatives":"Available alternatives:","urlReserved":"This URL is reserved. Please try a different one.","urlInvalid":"This URL is invalid. Please try a different one.","slugInvalidClient":"This URL is invalid. Use lowercase letters, numbers, and hyphens only","slugResetToDefault":"Slug reset to default","errorResettingSlug":"Error resetting slug","failedResetSlug":"Failed to reset to default slug","editUrlTitle":"Edit URL","builtInDomainLabel":"Base44 Built-in URL","resetToDefault":"Reset to default","urlEditingRequiresPlan":"URL editing requires a starter plan. ","upgradeToPremium":"Upgrade to Premium","changing":"Changing...","change":"Change","emailDomain":"Email domain","sendingFromDefault":"Sending from the default domain costs 1 integration credit per email. Using a custom domain costs 2 integration credits.","useCustomDomain":"Use your custom domain","sendingFrom":"Sender Name: {{name}}","connectDomainForCustom":"Connect a domain to use a custom sender address.","buyADomain":"Buy a domain","dnsConfiguration":"DNS configuration","pleaseWaitTryAgain":"Please wait a moment and try again.","dnsConfigFailed":"DNS configuration failed","dnsPleaseTryLater":"Please try again later.","verificationFailed":"Verification failed","dnsNotVerified":"DNS records not yet verified. Please check your DNS configuration and try again.","domainVerificationFailed":"Domain verification failed","couldntVerifyDns":"We couldn't verify your DNS records. Please check them and try again.","completeSetup":"Complete Setup","opening":"Opening...","cancelling":"Cancelling...","connectionFailed":"Connection failed","retry":"Retry","retrying":"Retrying...","couldntCompleteDns":"Couldn't complete DNS setup. Please try again.","couldntConnectEmail":"Couldn't connect the domain to the email provider. Please try again.","pendingVerification":"Pending verification","emailBeingVerified":"Your email address is being verified.","makeSureDnsCorrect":"Make sure DNS records added correctly to your domain provider.","verify":"Verify","notConfigured":"Not Configured","active":"Active","editSenderDetailsAction":"Edit Sender Details","detachCustomDomain":"Detach custom domain","suspended":"Suspended","disabled":"Disabled","blocked":"Blocked","propagationBlocked":"Propagation Blocked","propagationBlockedTooltip":"DNS propagation can take a while. Compare your DNS records with our instructions if something still looks wrong.","pendingConnection":"Pending connection","completeSetupToSend":"Complete setup to start sending emails from your domain. Emails are currently sent from ","emailCurrentlySentFrom":"Your email address is being verified. Emails are currently sent from ","dnsNotVerifiedYet":"DNS records haven't been verified yet. Make sure they're set correctly, then click 'Verify'.","couldntConnectMakeSure":"Couldn't connect the domain to the email provider. Make sure DNS records added correctly to your domain provider and try again.","base44Domain":"Base44 Domain","maxDomainsReached":"Maximum of {{max}} domains reached for this app","viewDnsRecords":"View DNS records","save":"Save","urlHint":"Use lowercase letters, numbers, and hyphens only","copyUrl":"Copy URL","builtInUrlTooltip":"Your app will always be available at this URL.","builderPlanRequired":"This feature is available on our Builder plan and above.","upgradeBannerText":"Custom domains require a Builder plan or higher. Upgrade to enable them.","upgradeToUseDomain":"Upgrade your plan to use this domain.","emailDomainPurchasedOnly":"Email domain setup is currently available only for domains purchased through Base44.","somethingWentWrong":"Something went wrong","failedToGetPurchaseConfig":"Failed to get purchase config","errorEnablingEmail":"Error enabling email","failedToEnableEmail":"Failed to enable email","errorUpdatingSenderDetails":"Error updating sender details","failedToUpdateSenderDetails":"Failed to update sender details","errorReplacingDomain":"Error replacing domain","failedToReplaceDomain":"Failed to replace domain","failedToAddDomain":"Failed to add domain","processingPurchase":"Processing purchase...","subscriptionRequired":"Subscription Required"}`),ZM={domains:KM},JM={title:"Logs Explorer",subtitle:"Monitor system logs across your application.",refresh:"Refresh",loadingLogs:"Loading logs...",pleaseWait:"Please wait while we fetch your logs",failedToLoad:"Failed to load logs",errorFetching:"There was an error fetching the logs. Please try again.",noLogsMatchFilters:"No logs match your filters",tryAdjusting:"Try adjusting your filters",noLogsFound:"No logs found",logsWillAppear:"Logs will appear here when activity occurs",tryAgain:"Try again",resetFilters:"Reset filters",details:"Details",outputs:"Outputs",errorTab:"Error",noAdditionalDetails:"No additional details available.",clearFilters:"Clear filters",filterByEmail:"Filter by email...",errorsOnly:"Errors only",allEvents:"All Events",typeColumn:"Type",userColumn:"User",timestamp:"Timestamp"},QM={title:"Analytics",publishToCollect:"Publish your app to start collecting data."},XM={title:"API Documentation",subtitle:"Complete API reference for your app. Use the OpenAPI spec with any API client or documentation tool.",downloadSpec:"Download OpenAPI Spec",copyForLLM:"Copy for LLM",copyForLLMTooltip:"Copy AI-friendly Markdown documentation to clipboard",copied:"Copied!",codeExamplesIn:"Code examples in:",authTitle:"Authentication",authDescription:"All API requests require an api_key header. You can find your API key in your user profile, or retrieve it programmatically via User.me() in the app SDK.",sdkAuthDescription:"Install the Base44 SDK and initialize the client with your app ID. The SDK handles authentication and provides typed methods for all entity operations and backend functions.",entitiesTitle:"Entity Endpoints",schema:"Schema",endpoints:"Endpoints",copyAll:"Copy all",copyEntity:"Copy entity",functionsTitle:"Backend Functions",functionsDescription:"Invoke your deployed backend functions via HTTP. Each function accepts any JSON payload and returns the function's response.",agentTitle:"App Agent",agentDescription:"Interact with your app's AI agent through conversations. Create a conversation, send messages, and receive agent responses.",copy:"Copy",parameters:"Parameters",loading:"Loading API documentation...",error:"Failed to load API documentation. Please try again."},eN={logs:JM,analytics:QM,api:XM},tN={error:"Error",appStillLoading:"App is still loading... name not updated",appNameEmpty:"App name cannot be empty",removedFromFavorites:"Removed from favorites",addedToFavorites:"Added to favorites",removedDescription:"App removed from your starred list",addedDescription:"App added to your starred list",descriptionUpdated:"Description updated",descriptionUpdatedMsg:"Your app description has been updated successfully",failedUpdateDescription:"Failed to update app description",openApp:"Open App",shareApp:"Share App",winFreeCredits:"win free credits!",appVisibility:"App Visibility",controlAccess:"Control who can access your application",inviteUsers:"Invite Users",growUserBase:"Grow your user base by inviting others",copyLink:"Copy Link",copied:"Copied!",sendInvites:"Send Invites",paymentsViaStripe:"Payments via Stripe",pendingSetup:"Pending Setup",completeSetupGuide:"Complete the setup guide to accept real payments",live:"Live",testModeMessage:"You're still in test mode. Finish setup to start receiving payments.",readyForPayments:"Your app is ready to accept payments via Stripe.",continueSetup:"Continue Setup",payments:"Payments",poweredByWix:"Powered by Wix",manage:"Manage",openingWixPayments:"Opening Wix Payments...",wixPaymentsErrors:{noUrl:"Failed to get Wix Payments URL. Please try again.",fetchFailed:"Failed to open Wix Payments. Please try again.",invalidRedirect:"Failed to open Wix Payments. Please try again."},disconnected:"Disconnected",wixPaymentsDashboardError:"Failed to open Wix Payments dashboard",platformBadge:"Platform Badge",badgeVisible:'The "Edit with Base44" badge is currently visible on your app.',hideBadge:"Hide Badge",editAppNameAccessibilityLabel:"Edit title",editAppDescription:"Edit App Description",descriptionPrompt:"Provide a brief description of your app's purpose and functionality.",describeYourApp:"Describe your app...",cancel:"Cancel",save:"Save",created:"Created {{time}}"},aN={overview:tN},nN={title:"App Security",subtitle:"Configure row-level security policies to control who can access your app's data",scanIssues:"Scan issues",scanTime:"Scan typically takes few minutes to complete",scanning:"Scanning",startSecurityCheck:"Start Security Check",scanResults:"Scan Results",rlsRecommendations:"RLS Recommendations",rlsRecommendationsFound:"{{count}} RLS recommendation(s) found,",viewRecommendations:"View recommendations",noRlsRecommendations:"No RLS recommendations found",secrets:"Secrets",exposedSecretsFound:"{{count}} Exposed secrets found",noExposedSecrets:"No exposed secrets found",backendFunctions:"Backend Functions",unauthenticatedFunctions:"{{count}} Unauthenticated backend functions found",noUnauthenticatedFunctions:"No unauthenticated backend functions found",dataEntities:"Data Entities",entitiesCount:"{{count}} entities",scanComplete:"Security scan complete",reviewFindings:"Review the findings below.",scanFailed:"Security scan failed",ruleSaved:"Rule saved for {{entity}}",ruleSavedMsg:"The recommended rule has been saved.",failedToSaveRule:"Failed to save rule",createAccess:"Create Access",readAccess:"Read Access",updateAccess:"Update Access",deleteAccess:"Delete Access",removeAllRules:"Remove All Security Rules",removeAllRulesConfirm:"This will remove all security rules for this entity, allowing all users to access all records. Are you sure you want to continue?",removeAllRulesBtn:"Remove All Rules",securityRules:"Security Rules: {{entity}}",securityRulesTitle:"Security Rules",securityRulesDesc:"Create rules to control who can read and write records. Multiple rules are combined with OR logic.",publicAccess:"Public Access",publicAccessDesc:"Currently all users can access all records in this entity. There are no access restrictions.",createAccessRules:"Create Access Rules",create:"Create",read:"Read",update:"Update",deleteAction:"Delete",crudRules:"{{crud}} Rules",addRule:"Add Rule",generatedRules:"Generated {{crud}} Rules (JSON)",saveSecurityRules:"Save Security Rules",crudAccessRules:"{{crud}} Access Rules",configurePermissions:"Configure permissions for each action",generatedJsonPreview:"Generated JSON (Preview)",saveRules:"Save Rules",rlsRecommendation:"RLS Recommendation",dismiss:"Dismiss",applyFixes:"Apply Fixes",restricted:"Restricted",public:"Public",fullAccess:"All users have full access",createLabel:"Create:",readLabel:"Read:",updateLabel:"Update:",deleteLabel:"Delete:",noRestrictions:"No Restrictions",allUsersCanAccess:"All users can access records",creatorOnly:"Creator Only",creatorOnlyDesc:"Users can only access records they created",entityUserComparison:"Entity-User Field Comparison",entityUserComparisonDesc:"Compare a field in this entity with a user property",entityField:"Entity Field",fieldInEntity:"Field in the entity to compare",userField:"User Field",fieldFromUser:"Field from the user to compare",userPropertyCheck:"User Property Check",userPropertyCheckDesc:"Check if a user property matches a specific value",userProperty:"User Property",selectUserProperty:"Select user property",userRole:"User Role",userEmail:"User Email",fullName:"Full Name",requiredValue:"Required Value",selectRole:"Select role",adminRole:"Admin",userRoleOption:"User",noRestrictionsLabel:"No restrictions",creatorOnlyLabel:"Creator only",adminOnlyLabel:"Admin only",filePath:"File: {{path}}",severityCritical:"Critical",severityHigh:"High",securityScanLabel:"Security Scan",upToDate:"Up to date",upToDateTooltip:"No changes affecting security have been made since the last check",outOfDate:"Out of date",outOfDateTooltip:"Changes affecting security have been made since the last check. Please run a new security scan.",runSecurityScan:"Run Security Scan",securityPageTitle:"Security",securityPageSubtitle:"Manage your permissions and security rules. <a>Learn more <icon/></a>",issuesDetails:"Issues details",rlsIssuesTitle_one:"{{count}} RLS Issue",rlsIssuesTitle_other:"{{count}} RLS Issues",rlsIssuesSubtitle:"Enable Row Level Security to protect your data",exposedSecretsTitle_one:"{{count}} Exposed Secret",exposedSecretsTitle_other:"{{count}} Exposed Secrets",exposedSecretsSubtitle:"Secure and rotate any exposed secrets to keep your application and data safe.",unauthBackendTitle_one:"{{count}} Unauthenticated Backend Function",unauthBackendTitle_other:"{{count}} Unauthenticated Backend Functions",unauthBackendSubtitle:"Protect backend task endpoints with authentication.",noIssuesFound:"No issues found. Your app's security looks good, but keep reviewing it regularly to stay protected.",recommendedRulesLabel:"Recommended rules:",fix:"Fix",fixAll:"Fix All",missingRlsRules:"{{entity}} is missing RLS rules",customizeSuggestion:"Customize suggestion",goToEntityPage:"Go to entity page",ruleColumnHeader:"Rule",allUsers:"All users",fieldComparison:"Field Comparison",noScanTitle:"Check the security of your app",noScanDescription:"Review your configuration, identify potential risks, and learn how to strengthen your app's protection",checkSecurity:"Check Security",back:"Back",cancel:"Cancel"},iN={title:"Application Secrets",secretDeleted:"Secret deleted",errorDeletingSecret:"Error deleting secret",secretUpdated:"Secret updated",errorUpdatingSecret:"Error updating secret",newSecretValue:"New secret value",save:"Save",cancel:"Cancel",addSecret:"Add Secret",addNewSecret:"Add New Secret",addNewSecretDescription:"Enter your secret name and value below. Secrets are encrypted and securely stored.",secretName:"Secret Name",secretNamePlaceholder:"Enter secret name (e.g. API_KEY)",secretNameNoSpaces:"Secret name cannot contain spaces. Use underscores instead (e.g. API_KEY).",secretValue:"Secret Value",secretValuePlaceholder:"Enter secret value",adding:"Adding...",aboutSecretsManagement:"About Secrets Management",secretsDescription:"Secrets are environment variables that contain sensitive information like API keys, tokens, and passwords. They are encrypted at rest and securely injected into your application at runtime.",secretsBullet1:"Secrets are used by your backend functions to access external services",secretsBullet2:"All secrets are encrypted and stored securely",secretsBullet3:"You can add, update, or delete secrets as needed for your application",needHelp:"Need help?",supportSystem:"Open a support ticket",configuredSecrets:"Configured Secrets",noSecretsYet:"No secrets configured yet. Add your first secret to get started.",secretAddedSuccessfully:"Secret added successfully",errorCreatingSecret:"Error creating secret",errorFetchingSecrets:"Error fetching secrets"},rN={security:nN,secrets:iN},oN={mainPage:"Main Page",mainPageDesc:"Set the default landing page for your app",selectMainPage:"Select main page",appVisibility:"App Visibility",controlAccess:"Control who can access your application",platformBadge:"Platform Badge",platformBadgeDesc:'Show or hide the "Edit with Base44" badge on your app.',onlyForPaying:"Available only for paying users.",upgradeNow:"Upgrade now",visible:"Visible",hidden:"Hidden",hideEntityCreator:"Hide Entity Creator",hideEntityCreatorDesc:`Hide who created each record in your app's data tables. When enabled, the "created by" field will not be shown to users.`,aiAgents:"AI Agents",aiAgentsDesc:"Build AI agents into your app using Base44's AI agents infrastructure",aiAgentsEnabled:"AI Agents Enabled",aiAgentsEnabledDesc:"Your app now has access to Base44's AI agents infrastructure. You can create intelligent agents that can help users with various tasks, answer questions, and interact with your app's data. Use the chat to build and configure your agents.",testData:"Test Data",testDataDesc:"Use test data to safely test changes without affecting live data.",onlyForBuilder:"Available only for Builder plan and above.",testDataVersionNote:"To use this, you'll need a newer version of your app. Just make any change—send a message to the AI, tweak some code, or use the visual editor—and you're good to go.",cloneApp:"Clone App",cloneAppDesc:"Create a duplicate of this app",githubConnectionIssue:"GitHub connection issue. Please reconnect to clone this app.",cantCloneOldInfra:`You can't clone an app on the old infrastructure.
Update infrastructure to clone your app.`,createCopy:"Create Copy",backendFunctions:"Backend Functions",backendFunctionsDesc:"Enable server-side functionality • Recommended for developers",activating:"Activating...",activated:"Activated",activate:"Activate",upgradePlan:"Upgrade Plan",dangerZone:"Danger Zone",dangerZoneDesc:"Irreversible actions that affect your app",deleteApp:"Delete App",deleteAppDesc:"Permanently remove this app and all its data",adminControls:"Admin Controls",adminControlsDesc:"Manage app availability",unblockApp:"Unblock App",blockApp:"Block App",appLogo:"App Logo",editLogo:"Edit Logo",appDescription:"App Description",saveDescription:"Save Description",describeYourApp:"Describe your app..."},sN={editAppLogo:"Edit App Logo",uploadLogo:"Upload Logo",generateLogo:"Generate Logo",dragAndDrop:"Drag and drop or click to upload",clickToUpload:"Click to upload or drag and drop",pngJpgLimit:"PNG, JPG up to 5MB",upload:"Upload",whatShouldLook:"What should your logo look like?",generating:"Generating...",generateNew:"Generate new logo",cancel:"Cancel",save:"Save",logoPrompt:"Logo Generation Prompt",describeLogo:"Describe how you want your logo to look",uploading:"Uploading...",selectImage:"Select Image"},lN={removeListingConfirm:"Are you sure you want to remove this listing? This action will remove it from the App templates.",listingRemoved:"Listing removed from catalog successfully",appTemplates:"App Templates",listedFor:"Listed for ${{price}} • {{sales}} sales • {{status}}",manageTemplate:"Manage your template listing",shareTemplate:"Share your template with the community so others can discover and use it.",manageListing:"Manage Listing",publishToTemplates:"Publish to App Templates",seeOnTemplates:"See on App Templates",removingListing:"Removing...",removeFromTemplates:"Remove from App Templates",salesRevenue:"{{sales}} sales • ${{revenue}} revenue",publishedToTemplates:"Published to App Templates",rejectedReason:"Rejected Reason: {{reason}}"},cN={public:"Public",private:"Private",workspace:"Workspace",requireLogin:"Require login to access"},dN={notAvailableOnMobile:"Managing {{feature}} isn't available on mobile",loginFromDesktop:"Please log in from a desktop browser",okay:"Okay",domains:"domains",security:"security",code:"code",apiFeature:"API",templates:"templates"},uN={settings:oN,logo:sN,catalog:lN,visibility:cN,desktop:dN},pN={title:"Users",subtitle:"Manage the app's users and their roles",inviteUser:"Invite User",schema:"Schema",searchByEmailOrName:"Search by Email or Name",pendingRequests:"Pending requests",userSchemaEditor:"User Schema Editor",editUser:"Edit User",loadingUsers:"Loading users...",noUsersFound:"No users found",noPendingRequests:"No pending requests",noPendingRequestsDesc:"There are currently no access requests awaiting approval",inviteYourFirstUser:"Invite your first user",getStartedByInviting:"Get started by inviting your first user to the app.",tryAdjustingSearch:"Try adjusting your search or filters to find what you're looking for.",moreActions:"More actions",resendInvitation:"Resend invitation",cancelInvite:"Cancel invite",editUserAction:"Edit user",changeOwner:"Change owner",makeAppOwner:"Make app owner",resendOwnershipRequest:"Resend ownership request",cancelOwnershipRequest:"Cancel ownership request",changeRole:"Change role",selectNewRole:"Select a new role for {{name}}:",back:"Back",manageInvitation:"Manage invitation",approve:"Approve",reject:"Reject",unknown:"Unknown",admin:"Admin",user:"User",allRoles:"all roles",name:"Name",owner:"Owner",pendingOwnership:"Pending ownership",role:"Role",email:"Email",hasntLoggedIn:"{{role}} hasn't logged in to the app yet.",userRemovedSuccess:"User removed successfully",failedCancelInvitation:"Failed to cancel invitation",userLoggedInSinceRefresh:"This user has logged in since your last refresh. Refresh the page to view their updated status before trying again.",failedRemoveUser:"Failed to remove user",subscriptionRequired:"Subscription Required",onlyPayingCanAdmin:"Only paying users can make other users admins.",upgradeSubscription:"Upgrade your subscription",toContinue:"to continue.",userUpdatedSuccess:"User updated successfully",userApprovedSuccess:"User approved successfully",failedApproveRequest:"Failed to approve access request",invitationRejected:"Invitation rejected",failedDenyRequest:"Failed to deny access request",invitationResentSuccess:"Invitation resent successfully",failedResendInvitation:"Failed to resend invitation",emailSent:"Email sent",ownershipTransferResent:"Ownership transfer invitation has been resent.",transferCancelled:"Transfer cancelled",ownershipTransferCancelled:"The ownership transfer has been cancelled.",failedCancelTransfer:"Failed to cancel transfer",cancelInviteAction:"Cancel invite",removeUser:"Remove user",failedApproveUser:"Failed to approve user",success:"Success",error:"Error",save:"Save",deleteConfirm:"Are you sure you want to delete this record?",deleteFailed:"Delete failed"},mN={users:pN},gN="Social content",hN="Get a social promotion plan and ready-to-post content.",fN="Loading Social content",vN={title:"Something went wrong",description:"An unexpected error occurred. Please try refreshing the page.",tryAgain:"Try again"},bN={emptyTitle:"Promote your app in minutes",emptyDescription:"We'll analyze your app to suggest the best posts and platforms.",getStarted:"Get started",learnMore:"Learn more",emptyCheck1:"Define what you want to achieve",emptyCheck2:"Pick the best channels for your app",emptyCheck3:"Get tailored post ideas you can share right away",analyzingBase:"Analyzing your app",analyzingDescription:"Learning about your app, what it does, who it's for, and how to promote it.",combiningBase:"Creating your content strategy",combiningDescription:"We're shaping your message and selecting the right channels for your launch.",planStep1:"Using your strategy",planStep2:"Adapting content for each platform",planStep3:"Writing post copy",planStep4:"Creating visuals for your posts",stepOf:"Step {{current}} of {{total}}"},yN={letsGo:"Let's go",next:"Continue",back:"Back",creatingPlan:"Generating your social content...",creatingPlanBase:"Generating your social content",strategyReady:"Suggested strategy"},kN={emptyTitle:"Ready to promote your app?",emptyDescription:"Answer the questions to personalize your content.",generateNewPlan:"Generate new strategy",downloadContent:"Download Content",downloading:"Downloading...",startFresh:"Start Fresh"},wN={copy:"Copy",copied:"Copied",copiedToClipboard:"Copied to clipboard",failedToCopy:"Failed to copy",cancel:"Cancel",save:"Save",imageGenerationFailed:"Image generation failed",retryImage:"Try again",download:"Download image",expandImage:"View full size",close:"Close",regenerateImage:"Regenerate image",imageRefinePlaceholder:"What would you like to change?",imageAlt:"Post visual",share:"Share",editPostTitle:"Edit post",descriptionLabel:"Description",imageLabel:"Image",improveWithAI:"Improve with AI",refineInputPlaceholder:"What would you like to change?",saveChanges:"Save changes"},AN={handle:"yourhandle",displayName:"Your Name"},SN={reviewTitle:"Review your suggested strategy",goalLabel:"Your goal",approachLabel:"Suggested approach",strategyLabel:"Strategy overview",showMore:"Show more",showLess:"Show less",platformsLabel:"Target platforms",platformsDescription:"We've pre-selected the best platforms for your business.",editSelection:"Edit selection",selectPlatforms:"Choose your platforms",maxPlatforms:"Up to 3 platforms",toneLabel:"Match your tone (optional)",toneDescription:"Paste a link to your social profile and we'll adapt the posts to your tone.",generatePosts:"Generate posts"},CN={resetTitle:"Generate New Plan?",resetDescription:"We'll generate a completely new plan for you. Your current posts and edits will be replaced and can't be recovered.",cancel:"Cancel",resetConfirm:"Generate New Plan",upgradeTitle:"Not enough integration credits",upgradeDescription:"You don't have enough integration credits for this action. Upgrade your plan to get more.",upgradeAction:"Upgrade Plan"},DN={sendFailed:"Something went wrong",sendFailedDescription:"Couldn't reach the AI. Please try again.",postUpdated:"Post updated",postUpdateFailed:"Failed to update post",postRefined:"Post refined",refineFailed:"Couldn't refine post",refineFailedDescription:"The AI couldn't apply changes this time. Please try again.",imageGenerated:"Image generated!",imageGenerateFailed:"Couldn't generate image",imageGenerateFailedDescription:"Something went wrong with image generation. Please try again.",planReset:"Content reset - ready for a fresh start",planResetFailed:"Failed to reset",insufficientCredits:"Not enough integration credits",insufficientCreditsDescription:"You've run out of integration credits. Upgrade your plan to get more.",downloadPartial:"Couldn't download all content",downloadPartialDescription:"Some images failed to download. Please try again."},TN={pageTitle:gN,pageSubtitle:hN,loadingBase:fN,errorBoundary:vN,wizard:bN,steps:yN,toolbox:kN,post:wN,mock:AN,strategy:SN,dialog:CN,toast:DN},EN={overview:"Overview",users:"Users",data:"Data",analytics:"Analytics",domains:"Domains",integrations:"Integrations",security:"Security",code:"Code",agents:"Agents",automations:"Automations",logs:"Logs",api:"API",settings:"Settings",appSettings:"App Settings",authentication:"Authentication",appTemplate:"App Template",secrets:"Secrets",backToEditor:"Back to Editor",codeFiles:"Code files",search:"Search...",clearSearch:"Clear search",virality:"Social content"},PN="Loading app data...",_N="Trash: {{entityName}}",xN={issuesFound:"Issues Found",inComponent:"In {{componentName}} component:",resolving:"Resolving...",resolveWithAI:"Resolve with AI",noCreditDeduction:"This action won't deduct credits from your account."},IN={loadingCheckpoint:"Loading checkpoint code...",errorFetchingFiles:"Error fetching files",backToPreview:"Back to Preview"},RN={letsBuild:"Let's Build Your App",tellMeCreate:"Tell me what you'd like to create using the chat",loadingApp:"Loading your app",buildingPreview:"Building preview",previewPreparing:"Your app preview is being prepared.",mayTakeMoment:"This may take a moment.",previewUnavailable:"Preview unavailable",previewCouldntLoad:"The preview for this version couldn't be loaded.",retryBuild:"Retry build",buildingIdea:"Building your idea",didYouKnow:"Did you know?",packagePending:"Package Installation Pending",approvePackage:"Please approve the npm package installation in the chat to continue",loadingPreview:"Loading preview…",refreshPreview:"Refresh preview",capture:{verbDiscovering:"Discovering",verbDesigning:"Designing",verbBuilding:"Building",verbPolishing:"Polishing",verbUnveiling:"Unveiling",verbStudying:"Studying",verbExtracting:"Extracting",verbReimagining:"Reimagining",verbRefining:"Refining",stageAnalyzingDesign:"Analyzing design",stageExtractingColorsAndFonts:"Extracting colors & fonts",stageBuildingPages:"Building pages",stageCreatingComponents:"Creating components",stageRefiningDetails:"Refining details",stageAlmostThere:"Almost there",stageStudyingDesignLanguage:"Studying the design language",stageExtractingColorsAndTypography:"Extracting colors & typography",stageCraftingYourPages:"Crafting your unique pages",stageApplyingDesignInspiration:"Applying design inspiration",stageRefiningLookAndFeel:"Refining the look & feel",yourSite:"your site",aSiteInspiredBy:"a site inspired by <site>{{siteName}}</site>",progress:"Progress"},figma:{verbFetching:"Fetching",verbExtracting:"Extracting",verbProcessing:"Processing",verbTransforming:"Transforming",verbBuilding:"Building",stageReadingDesign:"Reading your Figma design",stageProcessingStructure:"Processing design structure",stageHandlingAssets:"Handling assets & generating code",stageApplyingAI:"Applying AI layout transform",stageCompiling:"Compiling & finalizing your app",yourFigmaDesign:"your Figma design",defaultName:"Figma Import"}},zN={canvas:"Canvas",dashboard:"Dashboard",preview:"Preview",exitSplitScreen:"Exit split screen mode to preview",versionHistory:"Version history",moreOptions:"More options",filesUsedInPage:"Files used in this page",seeAllFiles:"See all files",activityMonitor:"Activity monitor",exportAsZip:"Export project as ZIP",helpCenter:"Help Center",actAsUser:"Act as a user",viewAppNewTab:"Preview current version",refreshPreview:"Refresh preview",refresh:"Refresh",switchToDesktop:"Switch to desktop view",switchToMobile:"Switch to mobile view",showChatPanel:"Show chat panel",hideChatPanel:"Hide chat panel",turnOffTestData:"Turn off test data",turnOnTestData:"Turn on test data",shareApp:"Share app",shareInviteUsers:"Share and invite users",moreActions:"More Actions",inviteCollaborators:"Invite collaborators",viewOnly:"View only",viewOnlyAccess:"You have view-only access to this app",upgradeInfraTooltip:"Your app is ready for a quick upgrade<br/>to the new infrastructure.",appOverview:"App Overview",myApp:"My App",production:"Production",test:"Test",gitHub:"GitHub",gitHubConnection:"GitHub Connection",collaborators:"Collaborators",collaboratorDisplayYou:"{{name}} (You)",collaboratorUnknown:"Unknown",addCollaborator:"Add collaborator",saving:"Saving...",savedAgo:"Saved {{time}} ago",unsavedChanges_one:"{{count}} unsaved change",unsavedChanges_other:"{{count}} unsaved changes",theme:"Theme",themeTitle:"Theme",themeDescription:"These colors and fonts make up your theme. Any changes apply everywhere.",themeColors:"Colors",themeFonts:"Fonts",noThemeColors:"No theme colors found",themeSaveChanges:"Save & Apply",themeCancel:"Cancel",colorPickerCustom:"Custom",colorPickerPalette:"Palette",fontPickerSearch:"Search fonts...",fontPickerBrandFonts:"Brand Fonts",fontPickerAllFonts:"All Fonts",fontPickerNoResults:"No fonts found",fontPickerSelectFont:"Select font"},MN={desktop:"Desktop",tablet:"Tablet",mobile:"Mobile",isAvailable:"is available",getDomain:"Get Domain",connectDomain:"Connect a custom domain",undo:"Undo",redo:"Redo",fullscreen:"Fullscreen",breakpoints:"Breakpoints",splitView:"Split view",exitSplitView:"Exit split view",exitPreview:"Exit Preview"},NN={upgrade:"Upgrade",upgradePlan:"Upgrade plan",percentOff:"{{percent}}% off",limitedTimeOffer:"Limited time welcome offer",getDiscountOff:"Get {{discount}} off select yearly plans"},FN={viewingVersionHistory:"Viewing Version History",buildInProgress:"Build in progress...",retryBuildToEnable:"Retry build to enable this view",viewApp:"View App",viewCode:"View Code",restoring:"Restoring...",restoreThisVersion:"Restore This Version",publishing:"Publishing...",publishThisVersion:"Publish This Version",exit:"Exit",back:"Back",publish:"Publish",restore:"Restore",latest:"Latest"},LN={actAs:"Act as",actingAs:"You're acting as",searchUser:"Search for a specific user",anonymousGuest:"Anonymous Guest",you:"You",warningChanges:"Any change you make will reflect in user data.",carefulChanges:"- be careful, changes here affect this user",exitMode:"Exit mode",noUsersYet:"You don't have any users yet",addOrInvite:"Add or invite users to see how your app works for them",invite:"Invite",usersCount:"Users ({{count}})",noMatchingUsers:"No matching users found",trySearching:"Try searching by name or role"},jN={pressEnterNavigate:"Press Enter to navigate"},ON={publishApp:"Publish App",republishApp:"Republish App",publish:"Publish",publishing:"Publishing...",disabledUntilUpdate:"Publishing is disabled until you complete the infrastructure update.",currentlyDisabled:"Publishing is currently disabled",codeNotGenerated:"Publishing will be enabled once your app is ready",visualEditsSaveWarning:"Some visual edits couldn't be saved before publishing",lastPublished:"Last published {{time}}"},BN={whatToChange:"What would you like to change?",whatToDiscuss:"What would you like to discuss?",saveChangesBeforeTyping:"Save changes before typing",exitEditModeToContinue:"Exit Edit mode before typing",fetchingFromGitHub:"Fetching from GitHub...",viewOnlyAccess:"You have view-only access",zeroCreditsRemaining:"0 credits remaining",visualEdit:"Edit",visualEditDisabledAgentRunning:"Visual edit unavailable while agent is running",edit:"Edit",discuss:"Discuss",ask:"Edit Element",editData:"Edit data",discussMode:"Discuss Mode",discussModeDescription:"Chat with the AI about anything without making code changes. Uses 0.3 credits per request.",thought:"Thought",thoughtWithDuration:"Thought <duration>for {{duration}}</duration>",planningNextSteps:"Planning next steps...",signUpToStartBuilding:"Sign up to start building...",suggestions:"Suggestions",latestMessages:"Latest messages",aiModel:"AI Model",aiControls:"AI Controls",uploadFile:"Upload from computer",uploadFileMobile:"Upload from device",addFromGoogleDrive:"Upload from Google Drive",connectorRequestFailed:"Failed to send connector request. Please try again.",designingYourWebsite:"designing your website...",speechToText:"Speech to text",processingAudio:"Processing audio...",clickToStopRecording:"Click to stop recording"},UN={dialogTitle:"Builder command palette",dialogDescription:"Search pages, files, entities, views, and quick actions inside the builder.",searchPlaceholder:"Search pages, files, entities, views, and quick actions...",emptyTitle:"No matching command",emptyDescription:"Try a page name, file path, entity name, editor view, or quick action like test data.",homeSubtitle:"Home",navigationSubtitle:"Dashboard",viewSubtitle:"Editor view",entityDataSubtitle:"Data",entityCodeSubtitle:"Code",integrationsSubtitle:"Integrations",domainSubtitle:"Custom domain",collaboratorsSubtitle:"Collaborators",helpSubtitle:"Help center",publishSubtitle:"Deploy and share",publishNowSubtitle:"Publish latest changes",versionHistorySubtitle:"Version history",securitySubtitle:"Security",testDataSubtitle:"Switch to test data",productionDataSubtitle:"Switch to production data",backToWorkspace:"Back to workspace",switchToPreview:"Switch to Preview",switchToDashboard:"Switch to Dashboard",switchToCode:"Switch to Code",switchToCanvas:"Switch to Canvas",openEntityData:"Open {{entityName}} data",openEntityCode:"Open {{entityName}} code",addIntegration:"Add integration",addDomain:"Add a domain",inviteCollaborator:"Invite collaborator",getHelp:"Get help",publishMyApp:"Publish my app",publishNow:"Publish now",versionHistory:"See version history",startSecurityCheck:"Start Security Check",turnOnTestData:"Turn on test data",turnOffTestData:"Turn off test data",groups:{navigate:"Navigate",views:"Views",files:"Files",entities:"Entities",actions:"Actions"}},qN="Unknown view",VN="App Editor",$N="Beta",WN={title:"Invite collaborators",subtitle:"Give people access to edit this app.",emailPlaceholder:"Enter emails, separated by commas",removeIneligible:"Remove ineligible users",appCollaborators:"App collaborators",you:"(You)",owner:"Owner",moreActions:"More actions",makeAppOwner:"Make app owner",removeCollaborator:"Remove collaborator",resendOwnershipRequest:"Resend ownership request",getOwnershipLink:"Get ownership link",cancelOwnershipRequest:"Cancel ownership request",ownershipTooltip:"The new owner needs to accept the transfer via the invite email. The invite expires in 7 days. You'll get an email when the transfer is complete.",removeTitle:"Remove this collaborator from your app?",removeDescription:"Removing this collaborator will immediately revoke their access to the editor and prevent them from making any changes in the app.",removeAccessOnly:"Remove collaborator access only",removeAccessOnlyDesc:"The user will still appear in the Users list",removeEntirely:"Remove from app entirely",removeEntirelyDesc:"The user will be removed from the Users list as well",cancel:"Cancel",enterEmail:"Please enter an email address",invalidEmail:"Invalid email",invalidEmails:"One or more email addresses are not valid, please check them and try again.",cannotInviteOwner:"You cannot invite the owner of this app",alreadyExists:"Collaborator already exists.",alreadyExist:"Collaborators already exist.",invitationSent:"Collaborators invitation sent successfully",invitationsSent:"{{count}} Collaborators invitation sent successfully",removedFromApp:"Collaborator removed from app",accessRemoved:"Collaborator access removed",ownershipResent:"Ownership request resent successfully",ownershipLinkCopied:"Ownership link copied to clipboard",ownershipCancelled:"Ownership request cancelled",failedToSendInvitation:"Failed to send invitation",failedToRemoveCollaborator:"Failed to remove collaborator",failedToResendOwnership:"Failed to resend ownership request",failedToGetOwnershipLink:"Failed to get ownership link",failedToCancelOwnership:"Failed to cancel ownership request",creditsWarning:"All collaborators consume credits from the workspace.",notWorkspaceMember:"Not a workspace member",notMemberDescription_one:"<bold>{{emails}}</bold> is not a member of this workspace.",notMemberDescription_other:"<bold>{{emails}}</bold> are not members of this workspace.",addAsGuest:"Add as guest",addAsGuestDescription:"The user will be added as a guest with access to this app only.",addToWorkspace:"Add to workspace",addToWorkspaceDescription:"Go to workspace settings to add as a full workspace member.",guestBadge:"Guest",emailListOverflow:"{{first}} and {{count}} more",pendingInvitationWarning_one:"This user already has a pending workspace member invitation. Adding as guest will replace it.",pendingInvitationWarning_other:"{{count}} of these users already have pending workspace member invitations. Adding as guests will replace them."},GN={title:"You've run out of integration credits",description:"This may affect users in your app from performing certain actions.",upgradeLink:"Upgrade plan to get more credits",dismiss:"Dismiss banner"},HN={gathering:"Gathering",gathered:"Gathered",connectorsInformation:"connectors information",write:"Write",writing:"Writing",wrote:"Wrote",generatingImage:"Generating image",generatedImage:"Generated image",reading:"Reading",read:"Read",deleting:"Deleting",deleted:"Deleted",editing:"Editing",edited:"Edited",edit:"Edit",creating:"Creating",created:"Created",updating:"Updating",updated:"Updated",update:"Update",delete:"Delete",importing:"Importing",imported:"Imported",import:"Import",searching:"Searching",searched:"Searched",searchingForBugs:"Searching for bugs...",searchedBugs:"Searched bugs",install:"Install",installing:"Installing",installed:"Installed",analyzing:"Analyzing",running:"Running",failed:"Failed",run:"Run",settingSecrets:"Setting secrets",setSecret:"Set secret",setSecrets:"Set secrets",testing:"Testing",checking:"Checking",tested:"Tested",checked:"Checked",fetching:"Fetching",fetched:"Fetched",waitingForApproval:"Waiting for approval...",searchedDocsFor:"Searched docs for",searchingDocsFor:"Searching docs for",searchedFor:"Searched for",searchingFor:"Searching for",foundResult_one:"Found {{count}} result",foundResult_other:"Found {{count}} results",toggling:"Toggling",toggled:"Toggled",listing:"Listing",listed:"Listed",approvalRequired:"Approval Required",changesPending_one:"{{count}} change pending",changesPending_other:"{{count}} changes pending",approve:"Approve",approving:"Approving...",reject:"Reject",rejected:"rejected",rejecting:"Rejecting...",approveCount:"Approve ({{count}})",rejectAll:"Reject All",previousApproval:"This approval request is from a previous message",query:"Query:",updateFallback:"Update {{entityName}}",updateFallbackSingle:"Set {{fieldName}} to {{fieldValue}} on {{entityName}}",updateFallbackMultiple:"Set {{fieldName}} to {{fieldValue}} (+{{extraFields}} more) on {{entityName}}",deleteFallback:"Delete {{entityName}} records",updateWith:"Update with:",importComplete:"Import complete",importingData:"Importing data...",percentComplete:"{{percent}}% complete",recordsProgress:"{{current}} / {{total}} records",preparing:"Preparing...",otherToolsAfterApproval:"Other tools will run after approval",loadingConfig:"Loading configuration...",fetchConfigError:"Failed to load configuration.",retry:"Retry",countPackages:"{{num}} packages:",updateAllEntityRecords:"Update all <entity>{{entityName}}</entity> records",updateEntityRecordsMatching:"Update <entity>{{entityName}}</entity> records matching:",deleteAllEntityRecords:"Delete all <entity>{{entityName}}</entity> records",deleteEntityRecordsMatching:"Delete <entity>{{entityName}}</entity> records matching:",importDataFromInto:"Import data from <file>{{fileName}}</file> into <entity>{{entityName}}</entity>",importDataFromSheetInto:"Import data from <file>{{fileName}}</file> (sheet: <sheet>{{sheetName}}</sheet>) into <entity>{{entityName}}</entity>",countRecordsIntoEntity:"{{num}} records into <entity>{{entityName}}</entity>",dataIntoEntity:"data into <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} records <entity>{{entityName}}</entity>",allEntityRecords:"all <entity>{{entityName}}</entity> records",entityRecords:"<entity>{{entityName}}</entity> records",grepSearching:'Searching "{{pattern}}"...',grepSearchComplete:"Search complete",grepFoundResults_one:"Found {{count}} result",grepFoundResults_other:"Found {{count}} results",grepInFiles_one:"in {{count}} file",grepInFiles_other:"in {{count}} files"},YN={chatOnlyDescription:"This setting can now be accessed only via chat.",description:"Set the default landing page for your app",chatHint:"To change this write in chat:",prompt:"Change the main page to {PageName}",placeholder:"Main page",copiedToast:"Copied to clipboard"},KN={confirmMessage:"Are you sure you want to unpublish this app? It will no longer be accessible to users until you publish it again.",successTitle:"Success",successDescription:"App unpublished successfully",errorTitle:"Error",errorDescription:"Failed to unpublish app",description:"Take your app offline. You can re-publish it at any time.",unpublishing:"Unpublishing...",button:"Unpublish"},ZN={title:"Delete App",description:"This action <strong>cannot</strong> be undone. This will permanently delete the <strong>{{appSlug}}</strong> app and all of its data.",descriptionSimple:"This will permanently delete <strong>{{displayName}}</strong>.<br/>All app data, history, users, domains, and integrations will be permanently erased. <danger>This action cannot be undone.</danger>",confirmLabel:"To confirm, type <strong>{{appSlug}}</strong> below:",cancel:"Cancel",deleteButton:"Delete this app",deleting:"Deleting...",successTitle:"Success",successDescription:"App deleted successfully",errorTitle:"Error",errorDescription:"Failed to delete app"},JN={title:"Delete Agent",description:"This will permanently delete <strong>{{displayName}}</strong>.<br/>All agent data, conversations, files, and integrations will be permanently erased. <danger>This action cannot be undone.</danger>",cancel:"Cancel",deleteButton:"Delete this agent",deleting:"Deleting..."},QN={using:"Using {{name}} skill",failed:"Failed to use {{name}} skill",used:"Used {{name}} skill"},XN={thinkingIdeas:"{{agentName}} is thinking of ideas...",ideasFrom:"Ideas from {{agentName}}"},eF="Creating automation...",tF="Failed to create automation",aF="Automation",nF=JSON.parse(`{"sidebar":{"chat":"Chat","continueOnWhatsApp":"Continue on WhatsApp","continueOnTelegram":"Continue on Telegram","continueOnLine":"Continue on LINE","continueOnIMessage":"Continue on iMessage","imessage":"iMessage","brain":"Brain","integrations":"Integrations","knowledge":"Knowledge","memory":"Memory","payments":"Payments","tasks":"Tasks","artifacts":"Artifacts","settings":"Settings","secretsAndKeys":"Secrets & Keys","security":"Security","credits":"Credits","whatsapp":"WhatsApp","telegram":"Telegram","line":"LINE","files":"Files","uploadFile":"Attach","refreshFiles":"Refresh files","searchFiles":"Search files...","filesFolders":"{{fileCount}} files · {{folderCount}} folders","toolsPermission":"Tools Permission","apiDocs":"API","agentSettings":"Agent Settings","dangerZone":"Danger Zone","channels":"Channels","feedback":"Leave feedback"},"filePanel":{"source":"Source","preview":"Preview","save":"Save","saveAndRedeploy":"Save & Redeploy","fileSaved":"File saved","functionRedeployed":"Function saved and redeployed","failedToSaveFile":"Failed to save file","failedToRedeploy":"Failed to redeploy function","failedToReadFile":"Failed to read file"},"modelPicker":{"automatic":"Automatic","automaticDescription":"Matched with the best AI model for each request","manual":"Manual","manualDescription":"Select a specific AI model.","manualCreditNote":"Credit usage may vary by model","manualDisabledDescription":"Select a specific AI model ({{models}}). Available on the Builder plan and above.","builderPlus":"Builder+","upgradeToSelect":"Upgrade to select an AI model"},"chat":{"loadingAgent":"Loading agent...","agentNotFound":"Agent not found","waitingForAuth":"Waiting for authentication token...","anErrorOccurred":"An error occurred","aiModelUpdated":"AI model updated","failedToUpdateModel":"Failed to update AI model","hideSidebar":"Hide sidebar","showSidebar":"Show sidebar","darkMode":"Switch to dark mode","lightMode":"Switch to light mode","dropFileHere":"Drop file here","imagesDocsAndMore":"Images, documents, and more","loadPreviousMessages":"Load previous messages","somethingWentWrong":"Something went wrong","retry":"Retry","chatFromApp":"Chat with me from an app you already use","attachFile":"Attach files","typeMessage":"Type a message...","toggleLiveBrowser":"Toggle live browser","noActiveBrowser":"No active browser session","stopGenerating":"Stop generating","suggestions":"Suggestions","liveBrowser":"Live Browser","fullScreen":"Full screen","exitFullScreen":"Exit full screen","closeBrowser":"Close browser","live":"Live","expandBrowser":"Expand browser","failedToStartConversation":"Failed to start conversation — try sending a message manually.","failedToLoadConversation":"Failed to load conversation","failedToUploadFile":"Failed to upload file","tooManyFiles":"You can attach up to {{max}} files per message","failedToSendMessage":"Failed to send message","failedToStopAgent":"Failed to stop agent","today":"Today","yesterday":"Yesterday","thinking":"Thinking...","you":"You","failedToSubmitToolInput":"Failed to submit tool input","queued":"Queued ({{count}})","queueFull":"Message queue is full. Please wait for the agent to finish.","failedToEditQueued":"Failed to edit queued message","failedToDeleteQueued":"Failed to remove queued message","deleteMessage":"Delete message","failedToDeleteMessage":"Failed to delete message","whatsInImage":"What's in this image?","heresAFile":"Here's a file: {{fileName}}","heresAFileAndMore":"Here's a file: {{fileName}} (+{{count}} more)","heresFiles":"Here are {{count}} files","whatsInTheseImages":"What's in these {{count}} images?","creditsRunningLow":"You're running low on credits.","purchaseMoreCredits":"Purchase more credits →","saleDiscount":"Get {{discount}} off select yearly plans","limitedTimeOffer":"Limited time offer","upgradePlan":"Upgrade Plan","reply":"Reply","copyMessage":"Copy","copied":"Copied"},"files":{"uploaded":"Uploaded {{fileName}}","failedToUpload":"Failed to upload {{fileName}}","failedToRead":"Failed to read {{fileName}}"},"dashboard":{"title":"Dashboard","subtitle":"Overview of your agent.","created":"Created {{date}}","memories":"Memories","filesLabel":"Files","folders":"Folders","agentMemory":"Agent Memory","noMemoriesYet":"No memories yet","noMemoriesDescription":"Your agent will store learned information here as you chat."},"memoryTab":{"title":"Memory","subtitle":"What your agent knows about you and your conversations.","emptyTitle":"Nothing here yet","emptyDescription":"As you chat, your agent will build memory automatically — context from recent messages, session summaries, and key facts.","addEntry":"Add","saveEntry":"Save","cancelEdit":"Cancel","titlePlaceholder":"What should the agent remember?","contentPlaceholder":"Add more detail (optional)","saved":"Memory updated","failedToSave":"Failed to update","factsHeading":"Saved Facts","factsDescription":"Key facts that persist across all conversations.","noMemories":"No saved facts","noMemoriesDescription":"Important facts are auto-extracted from conversations, or you can add them manually.","shortTermHeading":"Short-term Memory","shortTermDescription":"Context from the current conversation, updated every ~10 messages.","shortTermUpdated":"Updated","shortTermDeleted":"Deleted","deleteShortTermConfirm":"Remove this context? The agent will lose this part of the conversation history.","longTermHeading":"Daily Sessions","longTermDescription":"A summary of each day's conversations.","longTermDeleted":"Deleted","deleteLongTermConfirm":"Delete this day's session? The agent will lose access to this conversation history.","messages":"{{count}} msgs","emptyTranscript":"Empty transcript","noText":"(no text)","usedTools":"Used: {{tools}}"},"creditsTab":{"title":"Credits","description":"Credit usage and billing details will appear here."},"settingsTab":{"settings":"Settings","secrets":"Secrets","security":"Security","creditCard":"Credit Card"},"agentSettingsTab":{"title":"Agent Settings","subtitle":"Configure how your agent operates.","cloneTitle":"Clone Agent","cloneDescription":"Create a copy of this agent with all its configuration, entities, and backend functions.","cloneButton":"Clone Agent"},"clonePage":{"back":"Back","title":"Clone Agent","subtitle":"Choose what to include in your cloned agent.","optionChat":"Chat History","optionChatDesc":"Copy the builder conversation history to the new agent.","optionSkills":"Skills","optionSkillsDesc":"Copy backend functions, integrations, and tool configurations.","optionTasks":"Tasks","optionTasksDesc":"Copy automations (scheduled, entity-triggered, and connector-based).","optionSecrets":"API Keys","optionSecretsDesc":"Copy stored secrets and API keys to the new agent.","cloneButton":"Clone Agent","cloning":"Cloning...","cloneError":"Failed to clone agent"},"securityTab":{"title":"Security","subtitle":"Run a security scan to detect potential vulnerabilities.","scanning":"Scanning...","runScan":"Run Security Scan","noIssues":"No issues found","agentSecure":"Your agent looks secure.","severityCount":"{{severity}} severity","idleMessage":"Click \\"Run Security Scan\\" to check your agent for vulnerabilities.","scanFailed":"Security scan failed"},"secretsTab":{"title":"Secrets","subtitle":"Environment variables available to your agent's backend functions.","noSecrets":"No secrets yet","addSecret":"Add a secret","secretNamePlaceholder":"SECRET_NAME","valuePlaceholder":"value","add":"Add","secretSaved":"Secret {{name}} saved","failedToSave":"Failed to save secret","secretDeleted":"Secret {{name}} deleted","failedToDelete":"Failed to delete secret","failedToLoad":"Failed to load secrets"},"billingTab":{"title":"Agent Credit Card","subtitle":"Usage and billing for your agent.","monthlyUsage":"Monthly Usage","extraCredits":"+{{count}} extra credits available","pastDue":"Payment past due","pastDueDescription":"Please update your payment method to avoid service interruption.","goodStanding":"Account in good standing","currentPeriod":"Current period:","nextPeriod":"Next period starts:","manageBilling":"Manage billing","failedToLoad":"Failed to load usage data","unableToLoad":"Unable to load billing data"},"dangerZoneTab":{"title":"Danger Zone","subtitle":"Irreversible actions for this agent.","deleteTitle":"Delete this agent","deleteDescription":"Permanently remove this agent and all its data, conversations, files, and integrations. This action cannot be undone.","deleteButton":"Delete this agent","deleteSuccess":"Agent deleted successfully","deleteFailed":"Failed to delete agent"},"apiDocsTab":{"title":"API Reference","subtitle":"Use the REST API to interact with your agent programmatically. Create conversations, send messages, and manage memory from any application.","baseUrl":"Base URL","authentication":"Authentication","authDescription":"Include your API key in the request header:","authAlternative":"Alternatively, pass it as a query parameter:","quickStart":"Quick Start","quickStartDescription":"Follow these steps to start chatting with your agent via the API:","step1CreateConversation":"1. Create a conversation","step2SendMessage":"2. Send a message","step3ListConversations":"3. List conversations","endpoints":"API Endpoints","requestBody":"Request body","listConversationsDesc":"List all conversations for the authenticated user","listConversationsNote":"Returns conversations sorted by creation date. Supports pagination via query parameters.","getConversationDesc":"Get a specific conversation with all messages","createConversationDesc":"Create a new conversation with the agent","sendMessageDesc":"Send a message and get the agent's response","sendMessageNote":"The agent will process the message and return its response. Max message length is 8000 characters.","deleteMessageDesc":"Delete a specific message from a conversation","listMemoryDesc":"List the agent's memory items","deleteMemoryDesc":"Delete a specific memory item","responseFormat":"Response Format","responseFormatDescription":"Conversations are returned as JSON objects containing an array of messages:","rateLimits":"Rate Limits","rateLimitsDescription":"API requests are rate-limited per user. If you exceed the limit, you'll receive a 429 status code. Wait and retry after a short delay.","errorCodes":"Error Codes","error401":"Unauthorized — invalid or missing API key","error403":"Forbidden — you don't have access to this resource","error400":"Bad request — invalid input (e.g. message too long)","error404":"Not found — conversation or resource doesn't exist","copy":"Copy"},"toolsPermissionTab":{"title":"Tools Permission","subtitle":"Allow specific operations to execute without requiring your confirmation.","warning":"When enabled, the agent will perform these actions on its own. Your data security rules still apply.","updateData":"Update Data","updateDataDescription":"Let the agent update records without asking first.","deleteData":"Delete Data","deleteDataDescription":"Let the agent delete records without asking first.","failedToSave":"Failed to save settings","effectNote":"Settings apply immediately. AI responses may not always follow rules perfectly.","connectorRulesTitle":"Connector Rules","connectorRulesSubtitle":"Tell the agent what it can and can't do with each service.","connectorRulePlaceholder":"e.g., Only read emails, never send or delete","loadingConnectors":"Loading connectors...","saveRules":"Save","rulesSaved":"Connector rules saved"},"knowledgeTab":{"noFiles":"No knowledge files yet","noFilesDescription":"Start chatting with your agent to build its identity and knowledge","identity":"Identity"},"telegramTab":{"title":"Telegram","connected":"Your Telegram bot is connected and active.","notConnected":"Connect a Telegram bot to chat with your agent.","connectedBot":"Connected Bot","botName":"Bot name","username":"Username","status":"Status","active":"Active","verifyBanner":"Click the button below to verify your identity on Telegram. This ensures only you can use this bot.","verifyOnTelegram":"Verify on Telegram","openTelegram":"Open in Telegram","scanQr":"Scan the QR code with your phone to open the bot in Telegram.","disconnect":"Disconnect","disconnectConfirm":"Disconnect this Telegram bot? Users will no longer receive responses.","disconnected":"Telegram bot disconnected","failedToDisconnect":"Failed to disconnect","howItWorks":"How it works","step1":"Users open your bot in Telegram and send /start to begin.","step2":"Every text message they send is processed by your agent.","step3":"The agent's response is sent back in the Telegram chat."},"telegramSetup":{"connectTitle":"Connect Telegram","connectDescription":"Create a Telegram bot for your agent with one click. It will be set up and ready to chat automatically.","autoCreateButton":"Connect Telegram Bot","autoWaitingTitle":"Waiting for bot creation...","autoWaitingDescription":"Confirm the bot in Telegram, then we'll set everything up automatically.","autoTimeoutError":"Bot creation timed out. Please try again or use manual setup.","autoExpiredError":"Bot creation failed. Please try again.","cancel":"Cancel","alreadyHaveBot":"I already have a bot token","pasteTokenTitle":"Connect with Token","manualInstructions":"Create a bot via @BotFather in Telegram, then paste the token here.","tokenPlaceholder":"Paste bot token...","tokenExtracted":"Token extracted","tokenNotFound":"No valid token found","connectBot":"Connect","connecting":"Connecting...","successTitle":"Bot Connected!","openTelegram":"Open in Telegram","failedToConnect":"Failed to connect bot"},"whatsappTab":{"title":"WhatsApp","subtitle":"Chat with your agent via WhatsApp.","connectTitle":"Connect WhatsApp","connectDescription":"Click the button below to open WhatsApp and activate the connection. You'll receive an activation code to send to the agent's WhatsApp number.","openWhatsApp":"Open WhatsApp","scanQr":"Scan the QR code with your phone to open the conversation in WhatsApp.","howItWorks":"How it works","step1":"Click \\"Open WhatsApp\\" — this opens WhatsApp with a pre-filled activation code.","step2":"Send the activation code to start the connection.","step3":"Once connected, any message you send on WhatsApp will be handled by your agent."},"lineTab":{"title":"LINE","subtitle":"Chat with your agent on LINE.","connectTitle":"Connect via LINE","connectDescription":"Generate an activation code, scan the QR on your phone to add the bot, then send the code.","generateCode":"Generate Activation Code","scanQrLabel":"Scan with LINE","scanQrHint":"Open LINE on your phone and scan this QR code to add the bot.","activationCodeLabel":"Activation code","sendCodeHint":"After adding the bot, send this code as a message to activate.","generating":"Generating...","regenerate":"Generate a new code","codeCopied":"Code copied!","codeExpiry":"Expires in 30 minutes","failedToGenerate":"Failed to connect to LINE","howItWorks":"How it works","step1":"Click \\"Generate Activation Code\\" to get your code and QR.","step2":"Scan the QR code with LINE on your phone to add the bot as a friend.","step3":"Send the activation code as a message to the bot to connect."},"imessageTab":{"title":"iMessage","subtitle":"Chat with your agent via iMessage.","connected":"Connected and active via iMessage.","connectedTitle":"iMessage Connection","connectAnotherTitle":"Connect another device","statusLabel":"Status","active":"Active","connectTitle":"Connect via iMessage","connectDescription":"Click the button below and iMessage will open with the activation code ready to send.","connectButton":"Connect via iMessage","manualFallback":"Didn't open automatically? Send the code manually:","phoneNumberLabel":"Phone number","activationCodeLabel":"Activation code","codeCopied":"Code copied!","codeExpiry":"Expires in 30 minutes","failedToGenerate":"Failed to generate iMessage code","appleOnlyTitle":"Apple device required","appleOnlyMessage":"iMessage is only available on Apple devices (iPhone, iPad, or Mac). Please open this page on an Apple device to connect.","capacityTitle":"iMessage temporarily unavailable","capacityMessage":"iMessage is experiencing unusually high demand right now. Please check back in a few hours — we're working on expanding capacity.","howItWorks":"How it works","step1":"Click \\"Connect via iMessage\\" — your Messages app will open with the activation code pre-filled.","step2":"Send the message and your agent is connected. That's it!"},"pluginsTab":{"builtInServices":"Built-in Services","builtInSubtitle":"Platform capabilities available to your agent by default.","base44Backend":"Base44 Backend","alwaysActive":"Always Active","base44Description":"Database, functions, file storage, and automations","dataEntities":"Data & Entities","dataEntitiesTool1":"Create, read, update, delete & filter entity records","dataEntitiesTool2":"Row-level security enforcement","backendFunctions":"Backend Functions","backendFunctionsTool1":"Deploy & call serverless Deno functions","backendFunctionsTool2":"Manage environment secrets","fileStorage":"File Storage","fileStorageTool1":"Upload public & private files","fileStorageTool2":"Create signed download URLs","automationsLabel":"Automations","automationsTool1":"Schedule CRON jobs","automationsTool2":"Entity change triggers","connectors":"Connectors","connectorsSubtitle":"Connect your agent to the apps and services you already use.","addConnector":"Add Connector","close":"Close","noConnectors":"No connectors. Add one to give your agent access to external services.","connected":"Connected","available":"Available ({{count}})","allConnected":"All connectors are already connected.","revoked":"Revoked","disconnectedStatus":"Disconnected","active":"Active","switchAccount":"Switch account","reconnect":"Reconnect","disconnect":"Disconnect","remove":"Remove","connect":"Connect","connectorConnected":"Connector connected","connectionCancelled":"Connection cancelled","connectorDisconnected":"Connector disconnected","failedToDisconnect":"Failed to disconnect","connectorRemoved":"Connector removed","failedToRemove":"Failed to remove","openAuthLinkManually":"Open authorization link manually","connecting":"Connecting...","mcpPlugins":"MCP Plugins","mcpSubtitle":"MCP connections that extend your agent's capabilities.","cancel":"Cancel","addPlugin":"Add Plugin","noPlugins":"No plugins connected","noPluginsDescription":"Add an MCP server to give your agent new tools.","failedToLoad":"Failed to load plugins","failedToToggle":"Failed to toggle plugin","pluginDeleted":"Plugin deleted","failedToDelete":"Failed to delete plugin","pluginAdded":"Plugin added","pluginNamePlaceholder":"Plugin name","mcpUrlPlaceholder":"MCP server URL (https://...)","foundTools":"Found {{count}} tools","connectionTestFailed":"Connection test failed","connectedTools":"Connected — {{count}} tools available","connectionFailed":"Connection failed","test":"Test","save":"Save","failedToCreate":"Failed to create plugin","enabled":"Enabled","disabled":"Disabled","toolsCount":"Tools ({{count}})","noTools":"No tools available","toolsFound":"{{count}} tools found","testFailed":"Test failed","connectedChatMessage":"I just connected {{name}} from the integrations panel. What can I do with it?","connectedReadOnlyChatMessage":"I just connected {{name}} in read-only mode from the integrations panel. It can only read data, not create or modify anything. What can I do with it?","accessModeChangedMessage":"I just switched {{name}} to {{mode}} mode. Please keep this in mind for future actions.","disconnectedChatMessage":"I just disconnected {{name}} from the integrations panel.","readOnly":"Read only","fullAccess":"Can manage","switchToReadOnly":"Switch to read only","switchToFullAccess":"Switch to manage","searchConnectors":"Search connectors...","noSearchResults":"No connectors found","noSearchResultsDesc":"Try different keywords or clear the search.","noConnectorsYet":"No connectors connected yet.","base44Official":"Base44 Official","setUp":"Set up","loadMore":"Load {{count}} more","showAll":"Show all ({{count}})","moreIcons":"+{{count}} more","sort":{"title":"Sort","mostUsed":"Most used","recentlyAdded":"Recently added","az":"A-Z","za":"Z-A"}},"paymentsTab":{"title":"Payments","stripeName":"Stripe","description":"Accept payments from your customers via Stripe.","notConnected":"Stripe is not connected","connectedDescription":"Payment links, products, and checkout are available.","setupPrompt":"Ask your agent in chat to set up Stripe payments. It will guide you through the process.","askInChat":"Ask in chat","sandboxMode":"Sandbox","liveMode":"Live","testCard":"Test card number","claimAndGoLive":"Claim & Go Live","remove":"Remove integration","removeConfirm":"Are you sure?","confirmRemove":"Yes, remove","cancel":"Cancel","removed":"Stripe integration removed","removeFailed":"Failed to remove Stripe integration","loadFailed":"Failed to load payment status","setupMessage":"Set up Stripe payments for my agent"},"integrationsTab":{"tabSkills":"Skills","tabConnectors":"Connectors","skillsTitle":"Skills","skillsSubtitle":"Reusable instructions that give your agent specialized abilities.","addSkill":"Add Skill","noSkills":"No skills yet","noSkillsHint":"Add a skill to teach your agent new capabilities.","installed":"Installed"},"automationsTab":{"title":"Automations","subtitle":"Scheduled tasks and webhooks.","noAutomations":"No automations yet","trySuggestions":"Try one of the ideas above, or ask in chat.","askAgent":"Ask your agent in chat to set one up.","scheduled":"Scheduled","entityTriggered":"Entity Triggered","webhooks":"Webhooks","active":"Active","paused":"Paused","details":"Details","runNow":"Run now","pause":"Pause","activate":"Activate","delete":"Delete","trigger":"Trigger","instructions":"Instructions","taskId":"Task ID","parameters":"Parameters","runHistory":"Run History","totalRuns":"{{count}} total","succeeded":"{{count}} succeeded","failedRuns":"{{count}} failed","lastRun":"Last run:","created":"Created {{date}}","runsStats":"{{total}} runs · {{succeeded}} succeeded · {{failed}} failed","failedToToggle":"Failed to toggle automation","archive":"Archive","automationArchived":"Automation archived","failedToArchive":"Failed to archive automation","automationDeleted":"Automation deleted","failedToDelete":"Failed to delete automation","automationTriggered":"Automation triggered","failedToRun":"Failed to run automation","failedToLoad":"Failed to load automations","consumesCredits":"Consumes message credits","agentRunsWhenTriggered":"Agent responds when triggered","agentNameRunsWhenTriggered":"{{name}} responds when triggered","creditsUsed":"{{credits}} credits used","totalCredits":"Total credits: {{credits}}","trackingSince":"since {{date}}","executionLogs":"Execution Logs","noLogs":"No logs yet","status":{"success":"success","running":"running","failed":"failed"},"archived":"Archived","noArchivedAutomations":"No archived automations","archivedDescription":"Automations you archive will appear here.","restore":"Restore","automationRestored":"Automation restored","failedToRestore":"Failed to restore automation"},"identity":{"updated":"Identity updated","failedToSave":"Failed to save identity","avatar":"Avatar","emoji":"Emoji","setEmoji":"Set","uploadImage":"Upload image","changeImage":"Change","removeImage":"Remove image","useEmoji":"Use emoji","name":"Agent Name","agentNamePlaceholder":"Agent name","userName":"Your Name","userNameDisplay":"Your Name: {{name}}","userNamePlaceholder":"Your name","userNameHint":"How the agent addresses you","description":"Description","descriptionPlaceholder":"What does this agent do?","unnamedAgent":"Unnamed Agent","cancel":"Cancel","save":"Save","edit":"Edit","rawIdentity":"Raw IDENTITY.md","editInEditor":"Edit in editor","entry":"{{count}} entry","entries":"{{count}} entries"},"knowledgeEditor":{"fileUpdated":"File was updated externally","fileModified":"{{name}} was modified. Reload to see changes.","reload":"Reload","saved":"{{label}} saved","failedToSave":"Failed to save","unsavedChanges":"You have unsaved changes. Discard them?","rawText":"Raw text","readOnly":"Read-only","editAnyway":"Edit anyway","edit":"Edit","save":"Save","startWriting":"Start writing..."},"knowledgeFiles":{"title":"Knowledge Files","uploading":"Uploading {{count}} file(s)...","new":"New","fileNamePlaceholder":"file-name","mdExtension":".md","enterFileName":"Please enter a file name","fileExists":"A file with this name already exists","failedToCreate":"Failed to create file","unsupportedType":"Unsupported file type","failedToUpload":"Failed to upload {{name}}","renamedTo":"Renamed to {{name}}","failedToRename":"Failed to rename file","failedToLoadFile":"Failed to load file","deleteConfirm":"Delete \\"{{name}}\\"? This cannot be undone.","failedToDelete":"Failed to delete file","dropOrUpload":"Drop files here or click to upload","supportedTypes":"Documents, images, CSVs, code files, and more","dropOrBrowse":"Drop files or","browse":"browse"},"artifacts":{"description":"Small mini apps to get you going. For full-featured apps, build on Base44.","buildFullApp":"Build a full app","title":"Artifacts","pageCount_one":"{{count}} page","pageCount_other":"{{count}} pages","empty":"No artifacts yet","emptyDescription":"Ask your agent to create a mini app and it will appear here."},"feedbackModal":{"thankYou":"Thank you!","thankYouSubtitle":"Your feedback helps us improve.","title":"How's your experience?","subtitle":"Your feedback shapes what we build next.","submitError":"Failed to submit feedback. Please try again.","placeholder":"Tell us what's on your mind...","sending":"Sending...","sendFeedback":"Send feedback","ratingBad":"Bad","ratingPoor":"Poor","ratingOkay":"Okay","ratingGood":"Good","ratingAmazing":"Love it","openSupportTicket":"Open a support ticket"}}`),iF={live:"Live",offScreen:"Off-screen",waiting:"Waiting...",loading:"Loading...",previewTitle:"Preview: {{pageName}}"},rF={main:"main"},oF={title:"Share your app",subtitle:"Share a link by email or on social",sendInviteLabel:"Send invite",sendInvitation_one:"Send Invitation",sendInvitation_other:"Send Invitations",invalidEmailsError:"One or more email addresses are not valid, please check them and try again.",workspaceIneligibleError:"You can also invite users from your workspace.",nonWorkspaceIneligibleError:"Some email addresses are not eligible to be invited.",removeIneligibleUsers:"Remove ineligible users",inviteSuccessToast:"User invitation sent successfully",inviteErrorToast:"Failed to send invites",copyLink:"Copy link",sendInvitationSection:"Send invitation",inviteEmailPlaceholder:"Enter email address",inviteButton:"Invite",shareLiveAppLink:"Share live app link",shareLiveAppLinkDesc:"Anyone with the link can view your app live, based on your app's visibility settings.",linkCopied:"Link Copied",enterEmailError:"Please enter an email address",cannotInviteOwner:"You cannot invite the owner of this app",inviteSuccess_one:"Invitation sent successfully",inviteSuccess_other:"{{count}} invitations sent successfully",inviteFailedToSend:"Failed to send invitation",role_admin:"Admin",role_user:"User"},sF={sidebar:EN,loading:PN,trash:_N,errors:xN,codeView:IN,loader:RN,toolbar:zN,header:MN,upgrade:NN,checkpoints:FN,viewAs:LN,pages:jN,publish:ON,chat:BN,builderCommandPalette:UN,unknownView:qN,appEditor:VN,beta:$N,new:"New",collaborators:WN,integrationsBanner:GN,tools:HN,mainPage:YN,unpublishApp:KN,deleteApp:ZN,deleteAgent:JN,skillTool:QN,automations:XN,create_automation:eF,create_automation_error:tF,automation_fallback_name:aF,agentEditor:nF,canvasPage:iF,canvasToolbar:rF,shareModal:oF},lF={title:"What will you build next?",titleMobile:`Hi, What will you
build next?`,subtitle:"Describe your app idea below or get inspired by our",subtitleTemplatesLink:"templates"},cF={title:"Recent Apps"},dF={title:"Recent Superagents"},uF={placeholder:"Describe the app you want to create...",placeholderPlanMode:"Tell Base what you want",placeholderViewer:"Viewers cannot create apps",placeholderWithUrl:"Add a description (optional)...",captureFullMode:"Build a site like this one",captureDesignMode:"Create a new site inspired by this design for...",uploadFile:"Upload from computer",uploadFileMobile:"Upload from device",captureFromUrlDescription:"Create a 1:1 starting point",createFromUrl:"Start from URL",addFromGoogleDrive:"Upload from Google Drive",aiModel:"AI Model",selectAiModel:"Select AI Model",modelPicker:{automatic:"Automatic",automaticDescription:"Matched with the best AI Model for each request",new:"New",manual:"Manual",builderPlus:"Builder+",manualDescription:"Select a specific AI model ({{models}}). Available on the Builder plan and above.",upgradeToSelect:"Upgrade to select an AI model"},speechToText:"Speech to text",processingAudio:"Processing audio...",clickToStopRecording:"Click to stop recording"},pF={exploreTemplates:"Explore templates from the community",discoverDescription:"Discover a curated collection of applications built by our community.",failedToLoadCatalog:"Failed to load catalog items",showingItems:"Showing {{displayed}} of {{total}} items",searchApps:"Search apps",viewAllTemplates:"View all templates",allCategories:"All",priceAll:"All Templates",priceFree:"Free Only",pricePaid:"Paid Only",pageTitle:"App Templates",pageSubtitle:"Explore a curated collection of applications built by our community.",tabs:{community:"Community",workspace:"Workspace",myTemplates:"My Templates"},categories:{marketingAndSales:"Marketing & Sales",operations:"Operations",dataAndAnalytics:"Data & Analytics",contentGeneration:"Content Generation",hrAndLegal:"HR & Legal",finance:"Finance",education:"Education",community:"Community",lifestyleAndHobbies:"Lifestyle & Hobbies",gamesAndEntertainment:"Games & Entertainment","Marketing & Sales":"Marketing & Sales",Operations:"Operations","Data & Analytics":"Data & Analytics","Content Generation":"Content Generation","HR & Legal":"HR & Legal",Finance:"Finance",Education:"Education",Community:"Community","Lifestyle & Hobbies":"Lifestyle & Hobbies","Games & Entertainment":"Games & Entertainment"},sort:{popular:"Popular",newest:"Newest first",oldest:"Oldest first"},languagePlaceholder:"Language",pricePlaceholder:"Price",noAppsFound:"No apps found",adjustSearchOrFilters:"Try adjusting your search or filters",templateNotFound:"Template not found or unavailable.",viewAllCommunityTemplates:"View All Community Templates",loadingMore:"Loading more items...",viewDetails:"View details",workspaceBadge:"Workspace",purchasedBadge:"Purchased",free:"Free",unknownUser:"Unknown User",private:"Private",howTo:{title:"How to Share Your App with the Community",intro:"Follow these simple steps:",step1Title:"Open your app's builder",step1Desc:"Navigate to an app you created or have admin access to",step2Title:"Go to catalog settings",step2Path:"Workspace → Settings → App Templates → Manage Listing",step3Title:"Publish your listing",step3Desc:"Add a description, screenshots, and configure your listing visibility",tipFull:"<bold>Tip:</bold> Make sure your app is deployed and has an engaging description to attract more users!"},modal:{close:"Close",prevScreenshot:"Previous screenshot",nextScreenshot:"Next screenshot",screenshotAlt:"Screenshot {{index}}",goToScreenshot:"Go to screenshot {{index}}",createdBy:"by {{creatorName}}",unknownCreator:"Unknown",usages_one:"{{count}} Usage",usages_other:"{{count}} Usages",private:"Private",workspaceTemplate:"Workspace Template",clonePurchase:"Clone Purchase",processing:"Processing...",purchaseFor:"Purchase for ${{price}}",useTemplate:"Use Template",viewApp:"View app",paymentInfo:"Payment goes entirely to the creator",backendFunctionsEnabled:"Backend functions enabled",usesIntegrations:"Uses integrations",aboutThisApp:"About this app",noDescription:"No description available",termsOfUse:"Terms of use",success:"Success",error:"Error",purchaseFailed:"Purchase Failed",failedToPurchase:"Failed to initiate purchase",listingApproved:"App listing approved successfully",approveListingFailed:"Failed to approve listing",listingDeclined:"App listing declined successfully",declineListingFailed:"Failed to decline listing",pendingUpdate:"Pending Update for Review",codeChangesPending:"App code changes pending",metadataChanges:"Listing metadata changes:",manageListing:"Manage Listing",approveUpdate:"Approve Update",declineUpdate:"Decline Update",approveListing:"Approve Listing",declineListing:"Decline Listing",approving:"Approving...",declining:"Declining...",cloneAsAdmin:"Clone as Admin"}},mF={subscriptionOverdue:"Subscription payment overdue",overdueMessage:"Your subscription payment is overdue, Access to some features is currently limited. Please update your payment method to regain full access.",goToBilling:"Go to Billing",creditLimitReached:"You've reached this month's limit. To continue creating apps",upgradePlan:"upgrade your plan"},gF={viewerAccess:"You have viewer access and cannot create apps. Contact your workspace admin to upgrade to Editor."},hF={fillApiKeys:"Please fill in all required API keys before submitting.",createAppFailed:"Failed to create app. Please try again."},fF={title:"Start from URL",description:"Use any website as a starting point for your new site.",urlLabel:"Website URL",urlPlaceholder:"e.g., www.example.com",errorEmpty:"Please enter a URL",errorInvalid:"Enter a valid website URL, like www.example.com",errorTooLong:"URL is too long. Please use a shorter URL.",modeFull:"Content & Design",modeFullDescription:"Build a similar site.",modeDesign:"Design only",modeDesignDescription:"Create a new site in the same style.",modeContent:"Content only",legalNotice:"Only use URLs where you have rights to the content.",cancel:"Cancel",add:"Add",learnMore:"Learn about creating from a URL",capturedUrl:"Captured url",appReady:"Your app is ready! You can now customize it or add new features.",banner:{headline:"Creating your app",headlineDesign:"Creating your app",subtitle:"This might take a bit longer than usual - we're making it worth the wait.",activity:{msg1:"Getting to know the site...",msg2:"Studying the design and feel...",msg3:"Putting the pieces together...",msg4:"Crafting something special...",msg5:"Working on it...",msg6:"Making it just right...",msg7:"Hang tight, great things ahead..."}}},vF={count:"Integrations: {{count}}",loading:"Loading integration...",selectedIntegrations:"Selected Integrations:"},bF={menuItem:"Connectors",dialogTitle:"Connectors",dialogDescription:"Connect tools and data sources to power your app.",search:"Search",add:"Add",added:"Added",remove:"Remove",noResults:"No connectors found",suggestionCardTitle:"Help me understand your integration request to:",choosePrompt:"Choose a prompt to continue.",somethingElse:"Something else",cancel:"Cancel",send:"Send",connectTo:"Connect to <name>{{name}}</name>",upgradeToConnect:"Upgrade your plan to connect {{name}} to your app.",connecting:"Connecting {{names}}…",cancelled:"cancelled",subtitles:{stripe:"Sell products or subscriptions and get paid online.",salesforce:"Automate and sync CRM records.",slack:"Send messages and manage Slack as a user.",slackbot:"Post as a branded bot in your Slack workspace.",notion:"Organize and sync knowledge or project data.",googlecalendar:"Manage your schedule and calendar events.",googledrive:"Export and back up app-generated files.",gmail:"Automate email sending and inbox management.",googlesheets:"Sync and manage spreadsheet data.",googleslides:"Generate and manage presentations.",googledocs:"Manage and automate document creation.",googlebigquery:"Query and sync analytics data.",hubspot:"Sync CRM data and automate marketing.",linkedin:"Share updates and access professional profiles.",tiktok:"Track your profile stats and browse your videos.",discord:"Notify channels and integrate with your Discord community.",wix:"Access Wix site data and business tools.",github:"Manage repos, issues, and pull requests.",gitlab:"Manage projects, MRs, and CI/CD pipelines.",bamboohr:"Employee directory and HR management.",wrike:"Project planning and team coordination.",box:"Secure cloud content management.",clickup:"Organize projects and track team work.",google_analytics:"Track website traffic and user insights.",outlook:"Email and calendar.",linear:"Issue tracking and project management.",dropbox:"Store and sync files in the cloud.",google_search_console:"SEO and search analytics.",google_classroom:"Education and course management.",airtable:"Flexible databases and spreadsheets.",splitwise:"Expense splitting and group bills.",microsoft_teams:"Team chat, channels, and meetings.",share_point:"Document management and collaboration.",one_drive:"Cloud file storage.",typeform:"Forms, surveys, and data collection."}},yF={label:"Plan",tooltip:"Enable Plan mode to have the AI create a detailed plan before building your app."},kF="View all",wF="Error",AF={menuLabel:"Import from Figma",title:"Generate from Figma",description:"Paste a link to your Figma frame to generate an app based on your design.",labelUrl:"Figma URL",placeholderUrl:"e.g., https://www.figma.com/frame-link",urlHelp:"Use a link to one frame or section, not a file or page.",learnPrepare:"Learn how to prepare your design for import",connectTitle:"Connect to Figma",connectDescription:"Allow access to your Figma account to import your design.",connectButton:"Connect to Figma",connectedToFigma:"Connected to Figma",errorMissingUrl:"Enter a URL to a Figma frame or section",errorNotFigmaUrl:"Enter a URL to a Figma frame or section",errorNotFrameUrl:"Enter a URL to one frame, not a file or page.",errorRateLimit:"Figma's API is temporarily busy. Please try again in a few minutes.",errorForbidden:"Invalid or expired Figma connection. Please try reconnecting your Figma account.",errorNotFound:"Figma file not found. Please check the URL and make sure you have access to this file.",errorGeneric:"Unable to access this Figma design. Please check the URL and try again.",validating:"Checking...",switchAccount:"Switch Figma account",cancel:"Cancel",generate:"Generate",viewerCannotGenerate:"You have viewer access and cannot create apps. Contact your workspace admin to upgrade to Editor.",figmaFile:"Figma file",justNow:"Just now",importingMessage:"Generate an app based on your design from this Figma frame."},SF={connectFailed:"Failed to connect Figma. Please try again.",popupBlocked:"Popup blocked. Please allow popups and try again.",disconnected:"Figma disconnected",disconnectFailed:"Failed to disconnect Figma. Please try again."},CF={capturing:"Capturing...",figmaDescription:"Analyzing Figma design system. Extracting layout, typography, and color tokens to build your app."},DF={webApp:"Apps",aiAgent:"Superagents",recentApps:"Recent apps",templates:"Templates",favoritesComingSoon:"Favorites coming soon"},TF={new:"New",message:"Say hello to your real Personal Agent",cta:"Try it now"},EF={greeting:"Hi {{name}},",greetingGeneric:"Hi there,",title:"Build your own AI Personal Agent",createTitle:"Create your own Superagent",newBadge:"New",subtitle:"Your AI agent that runs tasks, connects to your tools, and works for you 24/7",cta:"Create your Superagent",creating:"Creating...",continueHero:{heading:"Pick up where you left off",continueBtn:"Continue with {{name}}",or:"Or",createNew:"Create a new superagent",activeAgo:"Active {{time}}",you:"You"},features:{hassleFree:{title:"Hassle free",desc:"No Docker, no servers, no setup. Just run your Superagent."},alwaysOn:{title:"Always on",desc:"Runs tasks and automations for you, 24/7."},actions:{title:"Takes real action",desc:"Handles tasks, sends updates, and reacts automatically."},remembers:{title:"Remembers everything",desc:"Keeps track of your goals, preferences, and context."},everywhere:{title:"Lives where you are",desc:"Works in WhatsApp, Telegram, Slack, and your browser."},secure:{title:"Secure by default",desc:"Access only to what you allow."}},untitled:"Untitled Agent",active:"Active",noDescription:"No description available",edited:"Edited {{time}}",updated:"Updated {{time}}",failedToCreate:"Failed to create agent. Please try again.",errorPage:{title:"Oops, something went wrong",descriptionLine1:"There was a technical issue on our side.",descriptionLine2:"Go back to the agent creation page and try again",goToAgents:"Go to Agents →"}},PF={edited:"Edited {{time}}",updated:"Updated {{time}}",updatedRecently:"Updated recently"},_F={emptyTitle:"You haven't created any apps yet.",emptySubtitle:"Create your first app using the form above!"},xF={dialogTitle:"Quick navigation",dialogDescription:"Jump to apps, templates, billing, and workspace settings from the homepage.",searchPlaceholder:"Search apps, settings, templates, billing...",searching:"Searching workspace apps...",emptyTitle:"No matching destination",emptyDescription:"Try an app name, a settings section, or a page like billing or templates.",allApps:"All apps",backToWorkspace:"Back to workspace",templates:"Templates",billing:"Billing",groups:{apps:"Apps",navigate:"Pages",workspace:"Workspace",account:"Account"},subtitles:{favoriteApp:"Favorite app",recentApp:"Recent app",page:"Page"}},IF={label:"What would you like to create?",more:"More",moreIdeas:"More ideas",categories:{CRM:"CRM","Dev productivity":"Dev Productivity",Educational:"Educational","Content Generation and Editing":"Content Generation and Editing","Personal Finance":"Personal Finance","Health and Wellness":"Health and Wellness",Productivity:"Productivity","Travel Planning":"Travel Planning",Entertainment:"Entertainment",Environmental:"Environmental","Home Management":"Home Management","Creative Tools":"Creative Tools",Tasks:"Tasks","CRM & Sales":"CRM & Sales",Portfolio:"Portfolio",Finance:"Finance","Scheduling & Booking":"Scheduling & Booking",eCommerce:"eCommerce","Construction & Trade":"Construction & Trade","Events & Community":"Events & Community",Wellness:"Wellness","Operations & Logistics":"Operations & Logistics","Tasks & Workflows":"Tasks & Workflows","Content & Sites":"Content & Sites",Booking:"Booking","E-commerce":"E-Commerce",Projects:"Projects",Operations:"Operations"}},RF={hero:lF,recentApps:cF,recentAgents:dF,chat:uF,catalog:pF,billing:mF,permissions:gF,validation:hF,urlCapture:fF,integrations:vF,connectors:bF,planMode:yF,viewAll:kF,error:wF,figmaDialog:AF,figmaOAuth:SF,statusBanner:CF,tabs:DF,tryAgentBanner:TF,agent:EF,appCard:PF,appsList:_F,commandPalette:xF,ideas:IF},zF={title:"Integrations",subtitle:"Discover pre-built integrations that let you connect to APIs, services, and tools to extend your app's capabilities."},MF={placeholder:"Search integrations..."},NF={title:"No matching integrations found",description:"Try adjusting your search or filter settings."},FF={title:"Connectors",subtitle:"Quick OAuth connections to popular services, supported by Base44."},LF={howToUse:"How to use",dialog:{getStarted:"Get started",navigateInstruction:"Navigate to your app's Integrations tab to connect {{name}} and get personalized prompts.",upgradeNotice:"This integration requires backend functions, a feature available only on Builder tier and above. <seePlansLink>See Plans</seePlansLink>"}},jF={stripe:"Sell products or subscriptions and get paid online.",salesforce:"Automate and sync CRM records.",slack:"Send messages and manage Slack as a user.",slackbot:"Post as a branded bot in your Slack workspace.",notion:"Organize and sync knowledge or project data.",googlecalendar:"Manage your schedule and calendar events.",googledrive:"Export and back up app-generated files.",gmail:"Automate email sending and inbox management.",googlesheets:"Sync and manage spreadsheet data.",googleslides:"Generate and manage presentations.",googledocs:"Manage and automate document creation.",googlebigquery:"Query and sync analytics data.",googletasks:"Manage to-do lists and tasks.",googlemeet:"Video conferences and meetings.",hubspot:"Sync CRM data and automate marketing.",linkedin:"Share updates and access professional profiles.",tiktok:"Track your profile stats and browse your videos.",discord:"Notify channels and integrate with your Discord community.",wix:"Access Wix site data and business tools.",github:"Manage repos, issues, and pull requests.",gitlab:"Manage projects, MRs, and CI/CD pipelines.",bamboohr:"Employee directory and HR management.",wrike:"Project planning and team coordination.",box:"Secure cloud content management.",clickup:"Organize projects and track team work.",google_analytics:"Track website traffic and user insights.",outlook:"Email and calendar.",linear:"Issue tracking and project management.",dropbox:"Store and sync files in the cloud.",google_search_console:"SEO and search analytics.",google_classroom:"Education and course management.",airtable:"Flexible databases and spreadsheets.",splitwise:"Expense splitting and group bills.",microsoft_teams:"Team chat, channels, and meetings.",share_point:"Document management and collaboration.",one_drive:"Cloud file storage.",typeform:"Forms, surveys, and data collection.",hugging_face:"AI inference and model repos.",calendly:"Automated appointment scheduling.",contentful:"Headless CMS and content management.",supabase:"Browse schemas, read data, and view project status (read-only)."},OF={page:zF,search:MF,emptyState:NF,connectors:FF,connector:LF,catalog:jF},BF={title:"Launchpad",subtitle:"Discover and explore apps built by the community",shareApp:"Share Your App",allApps:"All Apps",noAppsFound:"No apps found",noAppsHint:"Try clearing your filters or searching for something else.",noAppsEmpty:"Be the first to publish an app on Launchpad!",clearFilters:"Clear filters",goToFirstPage:"Go to first page",retry:"Retry",publishedToast:"Your app is now live on Launchpad!"},UF={placeholder:"Search apps on Launchpad..."},qF={all:"All"},VF={title:"Trending Now"},$F={title:"Top Apps",empty:"No top apps for this period yet.",thisWeek:"This Week",thisMonth:"This Month",allTime:"All Time"},WF={live:"Live",someone:"Someone",sentences:{vote:"{{user}} just voted on {{app}}",like:"{{user}} just liked {{app}}",publish:"{{user}} just published {{app}}",default:"{{user}} just interacted with {{app}}"}},GF={signInPrompt:"Please sign in to publish your app on Launchpad.",signIn:"Sign in",back:"Back",next:"Next",publish:"Publish",publishing:"Publishing...",stepOf:"Step {{current}} of {{total}}",successToast:"Your app is now live on Launchpad!",failedDefault:"Failed to publish. Please try again.",categoriesLoadFailed:"Failed to load categories. Please close and try again.",categoriesRetry:"Retry",steps:{selectApp:"Select App",details:"Details",preview:"Preview"},appPicker:{chooseApp:"Choose which app you'd like to publish on Launchpad.",searchPlaceholder:"Search your apps...",loadFailed:"Failed to load your apps.",tryAgain:"Try again",noApps:"You don't have any apps yet.",noAppsForQuery:'No apps found for "{{query}}"',loadMore:"Load more"},preview:{caption:"Here's how your app will appear in the Launchpad grid:",creatorFallback:"You"},categoryPicker:{count:"{{current}}/{{max}} categories selected"},validation:{nameRequired:"App name is required",descriptionRequired:"Short description is required",descriptionTooLong:"Max {{max}} characters",categoriesRequired:"Select at least 1 category",screenshotsRequired:"Upload at least 1 screenshot"}},HF={uploadFailed:"Some screenshots failed to upload. Please try again.",uploading:"Uploading...",addImage:"Add image",count:"{{current}}/{{max}} screenshots. Drag to reorder."},YF={previous:"Previous",next:"Next",pageOf:"Page {{page}} of {{totalPages}}"},KF={justNow:"just now",minutesAgo:"{{count}}m ago",hoursAgo:"{{count}}h ago",daysAgo:"{{count}}d ago"},ZF={appName:"App Name",shortDescription:"Short Description",shortDescriptionPlaceholder:"A brief description of what your app does",longDescription:"Long Description",longDescriptionPlaceholder:"Tell people more about your app...",optional:"Optional",categories:"Categories",screenshots:"Screenshots",generateWithAi:"Generate with AI",aiComingSoon:"AI generation coming soon"},JF={tryApp:"Try App",share:"Share",shareToast:"Link copied to clipboard!",shareError:"Failed to share",about:"About",moreByCreator:"More by {{name}}",backToLaunchpad:"Back to Launchpad",notFound:"App not found",notFoundHint:"This app may have been removed or unpublished.",loadFailed:"Failed to load app details.",unknownCreator:"this creator"},QF={title:"Comments",placeholder:"Write a comment...",submit:"Post",submitting:"Posting...",empty:"No comments yet. Be the first!",loadMore:"Load more comments",deleteFailed:"Failed to delete comment.",postFailed:"Failed to post comment.",signInToComment:"Sign in to leave a comment",anonymous:"Anonymous"},XF={likeFailed:"Failed to update like.",voteFailed:"Failed to update vote.",selfVoteError:"You cannot vote for your own app."},eL={loadFailed:"Failed to load Launchpad data. Please try again.",browseFailed:"Failed to load apps. Please try again.",topAppsFailed:"Failed to load top apps. Please try again.",categoriesFailed:"Failed to load categories.",refreshFailed:"Failed to refresh — please reload the page."},tL={page:BF,search:UF,categories:qF,trending:VF,topApps:$F,liveActivity:WF,publish:GF,screenshots:HF,pagination:YF,relativeTime:KF,fillDetails:ZF,detail:JF,comments:QF,engagement:XF,errors:eL},aL={title:"Apps",allAgentsTitle:"All Agents",createNewApp:"Create New App",createNewAgent:"Create New Agent",tabRecents:"Recents",tabFavorites:"Favorites",tabAllApps:"All Apps",tabAllAgents:"All Agents",searchPlaceholder:"Search apps",gridView:"Grid view",listView:"List view",appTypeLabel:"App type",appTypeApps:"Apps",appTypeAgents:"Agents",tableHeaderName:"Name",tableHeaderDescription:"Description",tableHeaderActions:"Actions",folderActionAddApps:"Add Apps",folderActionRename:"Rename",folderActionDelete:"Delete",filterOwnedByMe:"Owned by me",filterMyAppsPersonal:"My apps (personal workspace)",filterAllPlatform:"All apps (platform wide)",filterMyAppsWorkspace:"My apps in {{workspaceName}} workspace",filterAllAppsWorkspace:"All apps in {{workspaceName}} workspace",addNewFolder:"Add New Folder",sortLastUpdated:"Last updated",sortLastCreated:"Last created",sortNameAsc:"Name (A-Z)",sortNameDesc:"Name (Z-A)",filterCreatedByMe:"Created by me",filterCreatedByAnyone:"Created by anyone",filterAllPlatformApps:"All platform apps",filterMyApps:"My apps in {{workspaceName}}",planModeDescription:"This application is currently in Plan Mode and has not been built yet.",noDescription:"No description",byCreator:"By {{name}}",createdAgo:"Created {{timeAgo}}",untitledPlan:"Untitled Plan",tableHeaderApp:"App",tableHeaderLastUpdated:"Last updated",tableHeaderCreatedBy:"Created by",emptyFolderTitle:"No apps added yet",emptyFolderMessage:"Apps will appear here once you add them",addExistingApps:"Add Existing Apps",emptyFavoritesTitle:"No favorite apps yet",emptyFavoritesMessage:"Star an app to add it here.",emptyRecentsTitle:"No recent activity",emptyRecentsMessage:"Apps you open will appear here.",emptySearchTitle:"No apps found",emptySearchMessage:"No apps found matching your criteria.",clearFilters:"Clear filters",previous:"Previous",next:"Next",failedToUpdateStar:"Failed to update star",failedToUpdateFavorite:"Failed to update favorite",pleaseRetry:"Please try again",folderCreated:"Folder created",folderRenamed:"Folder renamed",folderDeleted:"Folder deleted",folderUpdated:"Folder updated",filter:"Filter"},nL={showAll:"Show all",appCount_one:"{{count}} app",appCount_other:"{{count}} apps",addApps:"Add apps",rename:"Rename",delete:"Delete",cancel:"Cancel",save:"Save",saving:"Saving...",create:"Create",deleting:"Deleting...",createFirstFolder:"Create your first folder",createNewFolder:"Create new folder",renameFolder:"Rename folder",folderVisibilityDescription:"Folder organization is visible for your workspace.",folderNamePlaceholder:"Folder name",visibility:"Visibility",scopeWorkspace:"Workspace",scopePersonal:"Personal",personalScopeHint:"Only visible to you",deleteFolder:"Delete folder",deleteFolderDescription:`You're about to delete "{{name}}"? Apps in this folder won't be deleted, only the folder.`,manageFolders:"Manage folders",manageFoldersDescription:"Add or remove this app from folders.",searchFoldersPlaceholder:"Search folders...",createNewFolderButton:"Create New Folder",noFoldersMatchSearch:"No folders match your search",noFoldersYet:"No folders yet",allFolders:"All Folders",searchFolders:"Search folders",scopeFilterAll:"All",sortNameAsc:"Name A–Z",sortNameDesc:"Name Z–A",sortMostApps:"Most apps",sortFewestApps:"Fewest apps",noFoldersFound:"No folders found",noFoldersMatchCriteria:"No folders match your search criteria.",clearSearch:"Clear search",manageAppsInFolder:"Manage apps in folder",manageAppsDescription:'Add or remove apps in "{{name}}".',searchAppsPlaceholder:"Search for apps...",noAppsMatchSearch:"No apps match your search",noAppsFound:"No apps found",loadMore:"Load more",appUpdatedAgo:"Updated {{timeAgo}}",saveWithCount:"{{label}} ({{count}})",operationFailed:"Operation failed. Please try again."},iL={viewLiveApp:"View live app",share:"Share",rename:"Rename",cloneApp:"Clone app",appSettings:"App settings",delete:"Delete",appDeleted:"App deleted",appDeletedDescription:'"{{name}}" has been deleted',failedToDelete:"Failed to delete app",failedToDeleteDescription:"An error occurred while deleting the app",manageFolders:"Manage folders",removeFromFolder:"Remove from folder",goToAppSettings:"Go to App Settings",deleteApp:"Delete app",deleteAppTitle:'Delete "{{name}}"?',deleteAppDescription:"This will permanently delete this app and all its data. This action cannot be undone.",appRemovedFromFolder:"App removed from folder",failedToRemoveFromFolder:"Failed to remove app from folder",addedToFolders_one:"App added to {{count}} folder",addedToFolders_other:"App added to {{count}} folders",removedFromFolders_one:"App removed from {{count}} folder",removedFromFolders_other:"App removed from {{count}} folders",failedToUpdateFolders:"Failed to update folders",foldersUpdated:"{{added}} and {{removed}}",removeFromFavorites:"Remove from favorites",addToFavorites:"Add to favorites"},rL={title:"Rename app",description:"The app name is visible to you and your users.",inputPlaceholder:"Enter app name",urlUpdateNote:"Changing the app name will also update the app URL.",cancel:"Cancel",save:"Save",saving:"Saving...",nameRequired:"App name is required",enterDifferentName:"Please enter a different name",successTitle:"App renamed",successDescription:'App renamed to "{{name}}"',successDescriptionUrlFailed:'App renamed to "{{name}}", but the URL could not be updated.',failedTitle:"Failed to rename app",failedDescription:"An error occurred while renaming the app"},oL="Loading...",sL="(Copy)",lL={cloningTitle:"Cloning {{appName}}",cloningDescription:"This may take a few moments. You'll find it in the Apps page once it's ready",goToApps:"Go to Apps",confirmingPurchaseTitle:"Confirming your purchase...",confirmingPurchaseSubtitle:"This usually takes just a few seconds",errorTitle:"Error",goBack:"Go Back",cloneNotAllowedTitle:"Clone Not Allowed",cloneNotAllowedDescription:"This app requires backend functions. You need to be on the Builder tier or above to remix it.",configureSecrets:"Configure Secrets",cloneTitle:"Clone {{name}}",cloneButton:"Clone {{name}}",cloningButton:"Cloning {{name}}...",defaultAppName:"App",preparing:"Preparing...",errorCloningApp:"An error occurred while cloning the app",errorFetchingRequirements:"An error occurred while fetching cloning requirements",errorPurchaseTimeout:"Your purchase is taking longer than expected to confirm. Please check your email for confirmation, or contact support if the issue persists.",errorVerifyPurchase:"Unable to verify purchase. Please try again."},cL={userApps:aL,folders:nL,appActions:iL,renameApp:rL,loading:oL,copySuffix:sL,remixPage:lL},dL={title:"Base44 App Templates Marketplace - Terms of Service",lastUpdated:"Last updated: November 18, 2025"},uL=`These Base44 App Templates Marketplace Terms of Service (the "App Templates Terms") are a binding agreement between you and Wix.com Ltd. (including its subsidiaries and affiliates), which operates the Base44-branded services (collectively, "Base44", "we," or "us").

By accessing or using the App Templates Marketplace, you acknowledge that you have read, understood and agree to be bound by:

- the general Terms of Service of Base44.com, as may be amended from time to time, which can be reviewed at {{termsUrl}} ("Base44 Terms")

You further acknowledge that you have read the terms and conditions of Base44's privacy policy, which are published at {{privacyUrl}}, as may be amended from time to time, ("Privacy Policy").

The Base44 Terms and the Privacy Policy are incorporated herein by reference, and shall govern your use of the Base44 App Templates Marketplace in addition to these Terms. For the avoidance of doubt, the Base44 App Templates Marketplace is part of the Base44 Services. In the event of any conflict or inconsistency between these Terms and the Base44 Terms or the Privacy Policy, these Terms shall prevail with respect to the App Templates Marketplace.

Capitalized terms used in these Terms but not defined herein shall have the respective meanings ascribed to them in the Base44 Terms and Privacy Policy.

**WE MAY REVISE THESE APP TEMPLATES TERMS AT ANY TIME BY POSTING AN UPDATED VERSION.** Changes may include, without limitation, revenue‑share percentages, service fees, pricing, tax handling, payment processor terms, payout methods, minimum payout thresholds, currencies, withholdings and reserves, listing standards, ranking signals, security and compliance requirements, review policies, and enforcement mechanisms (collectively, "Program Changes"). Unless we state otherwise in our notice, Program Changes apply on and after the effective date of your Creator account, your existing listings, and future transactions involving those listings. Service fees, reserves, withholdings, offsets, payment processor requirements, and payout schedules may apply to amounts not yet paid out as of the effective date and to future transactions for existing listings. End‑user entitlements: Program Changes do not reduce features or access that an end user has already paid for under a prior license grant; however, operational, billing, support, compliance, security, or technical requirements may be updated and will apply to ongoing use. We may use third‑party payment processors, and your payouts are subject to their terms, limits, verification/KYC requirements, and availability. You are responsible for all taxes, and we may withhold or collect taxes where required by law. We may offset any amounts you owe us (including fees, refunds, chargebacks, adjustments, or tax withholdings) against any payouts due to you and we may establish, adjust, or release commercially reasonable reserves (e.g., up to 90 days, or longer if permitted by law or required by processors) to cover potential liabilities for past or future transactions.

We may modify, suspend, or discontinue the Marketplace or any feature, category, integration, or API, and may reclassify, delist, or require updates to your listings.

We may suspend or terminate your access, listings, or account at any time, with or without notice, including for suspected fraud, abuse, violations of these Terms, or non‑compliance with payment processor requirements or where your listings or templates present a security or integrity risk, including any attempt to install or distribute malware, spyware, or other malicious code, run unauthorized background services, mine cryptocurrency, or otherwise misuse user or platform resources. Upon suspension or termination, we may: (a) disable or remove your listings; (b) calculate your final net balance; (c) withhold a commercially reasonable reserve (e.g., up to 90 days) to cover potential refunds, chargebacks, or other liabilities; (d) pay out any undisputed net amounts due in accordance with the then‑current payout schedule, subject to offsets, holds, and legal withholdings; and/or (e) recoup any negative balances from your on‑file payment method or future earnings. Your continued use of the App Templates Marketplace following any changes constitutes acceptance. If you do not agree, do not use the App Templates Marketplace.

Base44 shall have the right to terminate your account as a Base44 Creator (as defined below) or a Base44 Member and remove you from the App Templates Marketplace at any time, without notice.

## 1. Overview of the Base44 App Templates Marketplace

### 1.1 Definitions

**"Marketplace"** means the Base44 App Templates Marketplace.

**"Listing"** means a Template's Marketplace page content (title, description, pricing, media, and support details).

**"Template License"** means the limited license granted to a Member to install/use one Template.

**"Duplicated App" / "Duplicating"** means creating a new app instance by duplicating from another app (whether via Base44 functionality or other means).

**"Base44 Billing System"** means Base44's integrated payments infrastructure (and approved third‑party processors).

**"Billing Action"** means any transaction processed by or through the Base44 Billing System, including purchases, refunds, chargebacks, holds, offsets, and reserves.

**"Member Modifications"** means any configurations, custom code, scripts, schemas, components, connectors, assets, content, data models, or other changes created by or for a Member in connection with installing, using, or customizing a Template in an app instance.

**"Member Derivative Works"** means any derivative works based on a Template that are created by or for a Member within the Member's environment, excluding the unmodified Template and Creator assets (e.g., Creator's marks, media, and proprietary libraries).

**"Member Data"** means any data, content, or materials input, uploaded, generated, or otherwise supplied by or for a Member (including by end users) in connection with use of the Template or the Marketplace.

### 1.2 The Base44 App Templates Marketplace is a marketplace that:

- Enables Base44 Creators (as defined below) to list, market and license app templates designed to operate in connection with the Base44 platform ("App Templates" or "Templates");
- Enables Base44 Members (as defined below) to discover Creators, review their profiles, and purchase single‑use licenses to App Templates.

Base44 itself does not offer or provide any services under the App Template Marketplace. Base44 is authorized by Creators to grant and sell licenses to App Templates. Creators remain solely responsible for their Templates.

### 1.3 Roles

**"Base44 Creator"** or **"Creator"** is any person or entity with a premium valid Base44 User Account that lists App Templates in the App Templates Marketplace.

**"Base44 Member"** or **"Member"** is any user with a valid Base44 User Account who browses, licenses Templates.

Creators and Members are each a "User" and collectively "Users."

### 1.4 Nature of services

Base44 is not an employment, matching, or referral agency. Except as expressly stated, the App Templates Marketplace does not provide, place, or seek employment/engagements for Users.

Base44 (or its payment providers) is authorized by Creators to grant and sell end‑user licenses to App Templates. Creators remain solely responsible for their Templates. Base44 is not liable for Creator Templates.

## 2. Eligibility

You must be at least 18 (or the age of majority in your jurisdiction) and have the authority to enter into these Terms. If you act on behalf of an entity, you represent that you are duly authorized to bind that entity.

You are responsible for your account, credentials, and all activity under it. Do not share your credentials. Notify Base44 promptly of any unauthorized access.

You agree not to:

- Violate any law, regulation, sanctions or export control regimes;
- Infringe any third‑party rights (IP, privacy, publicity, contract);
- Introduce malware, spyware, or other malicious code;
- Engage in spamming, scraping, or abusive behavior;
- Circumvent security or technical protections;

## 3. Participation

Selling Templates requires a paid plan, you must maintain an active eligible Base44 subscription (as specified by Base44 from time to time) in order to list, sell, or receive payouts for Templates.

Access to list App Templates is subject to Base44 eligibility criteria, guidelines, and continued compliance. We may approve, reject, remove, or require edits to any Template or profile at our sole discretion and without obligation to explain. One profile per Creator. Public profile information may be visible through the Platform.

## 4. Licenses and rights

### 4.1 Your license to Base44

By creating, posting or sharing any information or Templates, through the Service, you grant Base44 a worldwide, non‑exclusive, sublicensable, royalty‑free, fully‑paid, perpetual, transferable license to use, host, reproduce, modify, distribute, publicly perform/display, and otherwise exploit your App Templates, listing materials, profile content, marks and logos to operate, market, review, test, list, license and support the App Templates Marketplace and related Base44 services. This includes, without limitation, the right to sell non-sublicensable licenses of Marketplace Templates to Base44 Members, facilitate communications with Base44 Members and advertise and promote the Service, the Marketplace, your Profile, Portfolio and Templates. You waive any claims against Base44 or anyone on its behalf relating to any past, present or future moral rights, artists' rights, or any other similar rights worldwide that you may have in or to the Templates in your portfolio, with respect to such permitted uses.

### 4.2 Ownership

Except for the granted licenses, between Base44 and Creator, Creator retains ownership of its App Templates, marks and content. Base44 does not claim ownership in your Template Intellectual Property by virtue of listing or sale in the App Templates Marketplace.

Base44 does not acquire any ownership interest in the Templates, Marks or other User Content under these Marketplace Terms. Base44 Creator and its licensors (as applicable) shall retain their right, title and interest in the Templates, Marks and other User Content. In the event of any third party claim that a Base44 Member's possession or use of a Template or service you provide infringes on a third party's intellectual property rights, you, not Base44, will be solely responsible for the investigation, defense, settlement and discharge of any such intellectual property infringement claim.

**Member ownership of modifications.** As between the Parties, Member owns all right, title, and interest in and to Member Modifications, Member Derivative Works, and Member Data (excluding the underlying Template IP and Creator assets). Creator will have no claim (including IP, authorship, or moral rights claims) to Member Modifications, Member Derivative Works, or Member Data, and hereby waives and agrees not to assert such claims to the extent permitted by law. Nothing herein grants Member any ownership interest in the Creator's Template IP or Creator assets.

**Marks.** You grant Base44 a right to use, reproduce and display the Base44 Creator, and the Template's name and trademarks (the "Base44 Creator Marks") to market your listing, the App Templates Marketplace and promotional and marketing activities conducted by Base44 from time to time.

## 5. Creator representations

You represent, warrant, and covenant that:

1. You have the full right, power and authority to enter into these Terms and to fully perform all obligations hereunder. If you are entering into these Terms on behalf of an entity, you have the legal authority to bind that entity to these Terms. You are at least eighteen (18) years of age, or the age of majority in your jurisdiction of residence, whichever is higher.

2. All information you have provided and will provide to Base44 (including in listings, profiles, support channels, compliance attestations, tax forms and review materials) is and will remain true, accurate, current and complete.

3. Your App Templates, their contemplated use, and your use of App Templates Marketplace resources, do not and will not violate or conflict with any agreement, obligation, policy, or restriction to which you are a party or of which you are aware.

4. Your App Templates, their contemplated use, and your use of the App Templates Marketplace comply, and will continue to comply, with all applicable laws, rules and regulations, including without limitation:
   - Data protection, privacy, and security laws governing the collection, use, sharing, retention and cross‑border transfer of personal information;
   - Applicable telecommunications and electronic communications laws;
   - Consumer protection, e‑commerce, advertising and marketing, product/service, and related laws.

5. Your App Templates, listings, and related materials, and your use of the App Templates Marketplace platform, do not and will not infringe, misappropriate, or violate any intellectual property, privacy, publicity, contractual, or other personal rights of any third party.

6. Your Templates presented in your profile will be free of any malicious code.

7. You own or otherwise have the full right and authority to present and publish the User Content or other content presented in your Profile, your Templates and your Portfolio (including, without limitation, links and third party websites). You must not submit, upload, post, display or share any content that you do not have the right to copy, use, link to or share for the purpose of your use of the Base44 Marketplace.

8. **No third‑party payments triggered by our exercise of rights** Base44 exercise of the rights you grant under these App Templates Marketplace Terms (including the operational license and use of your marks and listing materials) will not obligate Base44 to pay any amounts to any third party (e.g., royalties, residuals, guild fees, or other payments).

9. You are not (i) listed on, owned or controlled by any person or entity listed on, or otherwise the subject of, any applicable sanctions lists (including the U.S. OFAC Specially Designated Nationals and Blocked Persons List), and (ii) a national of, located in, or ordinarily resident in any country or region subject to comprehensive economic sanctions by the United States or Israel (currently including Crimea region of Ukraine, Cuba, Iran, North Korea, and Syria). You will comply with all applicable export control and sanctions laws.

10. You will promptly notify Base44 of any change that would render the above untrue or inaccurate; timely address review findings; and provide information reasonably requested to verify your compliance with these App Templates Marketplace Terms.

11. You confirm and acknowledge that some Personal Information and other Information (as those terms are defined in the Privacy Policy) you provide Base44 may become public and accessible to Base44 Members and other Base44 website visitors reviewing your Profile on the Base44 App Template Marketplace.

12. To the extent permitted by law, you irrevocably permit Members to adapt, configure, and develop on top of your Template within their app instance(s) and waive, and agree not to assert, any moral rights or similar claims that would restrict such permitted adaptations.

### 5.1 Warranty

You are solely responsible for any warranties, whether expressed or implied by law, to the extent not effectively disclaimed, for the Templates and any services you provide. Base44 will have no warranty obligation whatsoever with respect to the Templates or services you provide.

You agree that Base44 may monitor use of the Creator App Template to ensure quality, improve Base44 products and services, and verify your compliance with the Base44 Terms. This monitoring may include Base44 accessing and using your Apps, for example to identify security issues that could affect Base44 or Base44's users and/or visitors (collectively, the "Users"). You will not interfere with this monitoring. Base44 may use any technical means to overcome such interference. Base44 may suspend access to the Creator Apps by You or your Apps without notice if we reasonably believe that You are in violation of the Base44 Terms.

### 5.2 License to You

Subject to your ongoing compliance with these Terms, Base44 grants You a limited, non-exclusive, non-assignable, non-transferable and revocable license to use the Base44 Platform and develop, test, share and support your Apps which are built on Our Platform, solely in the manner described in these Terms.

You may not rent, lease, lend, sell, redistribute or sublicense the Base44 Services and/or the Base44 Template Marketplace.

Base44 retains all right, title, and interest in the Base44 Platform and Services.

## 6. Template requirements; submission and review

### 6.1 Requirements

- The Template must be fully functional and reviewed for bugs and defects;
- The Template, and any demo or instances presented in your Listing, must be free of malware, spyware, viruses, trojans, backdoors, or other malicious code, and must not run unauthorized background services, mine cryptocurrency, or otherwise misuse user or platform resources;
- The Template must not include any mechanism that grants the Creator (or any third party) access to a Member's app instance, systems, or data.
- The Template must not collect, transmit, Member Data.
- The Template must not infringe or misappropriate any intellectual property or personal right of any third party; and
- The Template must comply with any other requirements provided to you by Base44.

### 6.2 Submission

Submit each Template (and material updates) for review with an active demo account, credentials, and any resources needed to fully evaluate functionality.

Address review findings within specified timeframes; do not introduce unrelated changes when correcting issues.

Only public Templates without login are permitted; do not submit private Templates.

Listing text, screenshots, media, and pricing must accurately describe functionality, limitations, and any in‑Template purchases.

### 6.3 Approval; monitoring

Base44 may review before and after publication, require changes, or remove/suspend any Template or Creator profile at any time at our discretion, including any attempt to install or distribute malware, spyware, or other malicious code, run unauthorized background services, mine cryptocurrency, or otherwise misuse user or platform resources.

Content that is defamatory, libelous, obscene, harassing, threatening, incendiary, abusive, racist, deceptive or fraudulent; encourages harmful/illegal conduct; infringes rights; manipulates ratings/reviews; cheats review; steals data; or otherwise violates law/these Terms.

Base44 Creator agrees to cooperate with Base44 in the reviewing, testing and evaluation process and to answer questions and provide information and materials reasonably requested by Base44. Base44 may require Base44 Creator to make adjustments and/or modifications to its Template, as necessary to ensure the Template's compliance with this Agreement. Base44 Creator shall make such required adjustments within a reasonable period of time as determined by Base44. It is clarified that Base44 shall have no obligation to include any Template in the Marketplace even if such Template was previously approved by Base44.

### 6.4 Ranking

The order of presentation of the Base44 Creators' Profiles and Marketplace Templates on the Base44 Marketplace is subject to Base44's sole and absolute discretion. Ranking is determined by parameters decided by Base44, including, without limitation, the nature of the feedback we may receive from Base44 Members who have purchased the Templates you designed. Ranking signals may include compliance history, quality and performance metrics, User feedback, and support responsiveness, and may change over time without notice.

## 7. Responsibility and Support

### 7.1 You are solely responsible for all content of the Template

You are solely responsible for development, operation, maintenance, compliance, and support of Templates and for addressing third‑party claims.

Publish clear support channels (name, address, contact email) and provide timely support to Members who purchased your Template.

Creators must acknowledge Member support requests within two (2) business days and provide status updates until resolution, as disclosed in the Listing.

If Base44 receives a claim from a third party concerning a Template, Base44 may refer such claim to you. You must respond to the claim promptly, and take any and all actions required for the Template to comply with the law when applicable. If you discover or are notified that a Template violates the terms of these Marketplace Terms or the Base44 Terms, you shall immediately take the required actions to correct such violation. You must state in your Profile your name, address and all the required contact information to which any Base44 Member questions, complaints or claims with respect to the App Templates provide should be directed.

## 8. Pricing, Collection and Revenue Share

All money collection related to Templates must use the Base44 Billing System and approved payment providers. No external purchase mechanisms (e.g., license keys, QR codes, external checkout links).

### 8.1 Pricing disclosures and entitlements

Base44 Creators are required to clearly define and present the prices applicable to the Template Licenses being purchased on the Marketplace. If a Marketplace Template License price is charged in any currency other than U.S. Dollar, Base44 will have the sole discretion to determine the exchange rate applicable to the Marketplace Template License and to set off any exchange rate costs incurred to Base44 as result of payment in any non U.S. Dollar currency.

Prices must reflect total cost. If integration is free but a related service costs money, disclose that price in the listing.

Your Template's pricing is up to you. However, Base44 won't distribute apps or in-app purchase items that are clearly overpriced, and such behavior may lead to rejection.

If your Template includes in-app purchases, make sure the description, screenshots and previews indicate which features require purchase.

If you raise prices, the change applies only to new purchasers. Existing paying users retain access to all functionality they already paid for.

### 8.2 Collection

Base44, either directly or through its third party partners or service providers, shall facilitate all purchases, returns and chargeback transactions related to the offered Marketplace Template Licenses (each, a "Billing Action"), including, collection of payments and processing cancellations and refunds related to Marketplace Template Licenses as the Creator's authorized. Base44 shall have the right but shall not be obligated, at its sole discretion, to approve cancellations of Marketplace Template Licenses purchased by Base44 Members and to refund such Base44 Members for the amounts paid by them to Base44 (or any part thereof). All Billing Actions are processed via the Base44 Billing System and are subject to processor terms, limits, verification/KYC, and availability.

### 8.3 Revenue share

"Net App Template License Revenues" are payable 100% to the Creator and 0% to Base44 (the "Revenue Share"), unless otherwise notified in writing. The term "Net App Template License Revenues" shall mean the aggregate amounts actually paid by Base44 Members to Base44 in consideration for the sale and use of a License to a Marketplace Template offered on the Marketplace excluding any and all taxes, currency exchange rates and other governmental charges of any kind that may be imposed; hosting fees; third party fees; refunds or rebates; billing or processing fees; and amounts paid by Base44 in connection with the sale of a License for a Marketplace Template.

### 8.4 Payment of Revenue Share

The Revenue Share will be payable on a monthly basis within ninety (90) days from the Calculation Date (as defined below) on which Base44 collected the relevant Net App Template License Revenues. Calculation of the Revenue Share will occur on the first day of each calendar month for all Marketplace Template Licenses purchased by Base44 Members during the prior calendar month (the "Calculation Date").

Base44 will not pay Base44 Creator an amount lower than two hundred U.S. dollars (USD $200; the "Minimum Payment Amount"). Accordingly, in the event Base44 Creator's balance at the end of a month is lower than the Minimum Payment Amount, such balance shall be carried over and added to the next month's Revenue Share amount until the total amount payable to such Base44 Creator reaches the Minimum Payment Amount. Any amounts will be payable to a Base44 Creator upon closing of such Base44 Creator's User Account.

### 8.5 Form of Payment

All Revenue Share payments shall be due and payable in U.S. dollars only. Payment shall be made through wire transfer or any other method chosen by Base44, at its sole discretion. In certain territories, Base44 may require a valid tax invoice from the party receiving the payment, and payouts may be delayed until such documentation is received. Payment timing may be adjusted for holds, reserves, chargebacks, and other Billing Actions as permitted in these Terms.

### 8.6 Refunds and chargebacks

Base44 may approve cancellations/refunds at its discretion. Creators must return the corresponding share for refunded/charged‑back transactions; we may offset against future payouts.

### 8.7 Taxes

Base44 does not serve as an employer of any Base44 Creator. Base44 Creator shall be responsible for the payment of any and all taxes assessments, fees and other governmental charges of any kind, as well as withholding and reporting obligations applicable to the conduct of Base44 Creator's business. You understand and agree that if Base44 is found to be liable for any tax, withholding or reporting obligation in connection with any Services provided or received by you, you will immediately reimburse and indemnify Base44 for all costs, expenses and liabilities (including any interest and penalties) relating to the same. In the event that pursuant to any law or regulation, tax is required to be withheld at source from any payment made to Base44 Creator, Base44 shall withhold said tax at the rate set forth in the certification issued by the appropriate taxing authority and provided to Base44 by Base44 Creator, or in the absence of such certification, at the rate determined by said law or regulation. If a Template License price is presented in any currency other than U.S. dollars, Base44 will have the sole discretion to determine the exchange rate applicable to the License and to set off any exchange rate costs incurred to Base44 as result of payment in any non U.S. dollar currency.

### 8.8 Right to change

We may modify revenue mechanisms, payout methods, minimums and and/or any other method set forth in this Section, at our sole discretion at any time, without notice to Base44 Creator.

## 9. Access controls

### 9.1 No unauthorized admin or role elevation; no backdoors

You must not add yourself (or anyone on your behalf) as a site owner, site admin, contributor, or otherwise elevate your privileges within a Member's app instance.

You must not create hidden users, backdoor access, shared "support" accounts, or otherwise bypass Base44 permission flows.

### 9.2 Cookies/trackers

If the Template uses cookies or similar tracking technologies ("Cookies") to track Base44 Members or their visitors, the Base44 Creator must provide clear and comprehensive notice identifying the Cookies used, the data collected, purposes of use, third parties involved, and obtain valid consent where required (e.g., via a compliant CMP in the EEA/UK).

### 9.3 Duplicating

For clarity: Cloning creates a new app instance and does not carry over or expand the scope of any existing Template License. Each Duplicated App must initialize as a separate Instance under these Terms.

**Ownership of content created in a Duplicated App.** Member Modifications, Member Derivative Works, and Member Data created in a Duplicated App are owned by the Member (excluding underlying Template IP and Creator assets), and are not subject to Creator ownership or claim.

## 10. Security and permissions

Implement industry‑standard security (e.g., protect against CSRF/XSS; store salted password hashes; encrypt sensitive data in transit and at rest; do not store sensitive data in cookies).

Request only the minimum permissions necessary; define scope before requesting; secure app secret keys, OAuth tokens, and Instance IDs.

## 11. Economic Sanctions and Exports Controls

Creator will not provide or permit use of Templates in or by persons/entities in any of the countries that are subject to comprehensive economic sanctions under the EAR, OFAC, or Israeli regulations - currently including Crimea region of Ukraine, Cuba, Iran, North Korea, Syria. Moreover, Base44 Creator shall not allow and fully restrict any usage relating to its Template(s) from Members (individuals and entities) identified on any Sanctions list, including but not limited to OFAC's Specially Designated Nationals and Blocked Parties List (the "SDN List"), entities owned 50% or more by any individuals or entities on the SDN List, or individuals or entities that are located in any comprehensively sanctioned country.

Creator is solely responsible for compliance with U.S., Israeli, EU, UK and other applicable export controls and sanctions.

## 12. User experience; technical; accessibility

Functionality must be clear and match the listing.

Installation/configuration/management flows must be intuitive; show demo data on first run.

Submissions with material bugs or errors will be rejected.

## 13. Marketing; reviews

Do not force ratings/reviews/shares/follows, or incentivize reviews (discounts, gifts, etc.). Do not write or solicit fake reviews.

**UX intrusions.** No distracting/annoying behavior (e.g., JS alert/confirm boxes).

Do not display ads or "powered by" watermarks.

Creators must not promote or redirect Users to other distribution platforms or external purchase flows from within the Template or the Listing.

Cross‑promotion of other apps by the same Creator must be unobtrusive and relevant to the Template's core functionality.

## 14. Content and third‑party data

Do not include illegal content or infringe Base44 or third‑party rights (including trademarks/copyrights/branded content) without authorization. Provide proof upon request.

If the Template uses/displays third‑party content/services, ensure you have rights under their terms; provide authorization upon Base44 request.

Do not facilitate illegal file sharing or enable saving, copying, extracting, converting, downloading, or transmitting media from third‑party sources without explicit authorization/licensing.

## 15. Additional terms for Members

### 15.1 General acknowledgements

Base44 is not the employer, agent, or supervisor of Creators. Creators act as independent contractors.

Listings are Creator‑provided. Base44 does not guarantee accuracy, suitability, quality, legality, availability, or performance of Templates.

You are responsible for providing accurate information, paying required fees/taxes, and complying with law, export controls, and sanctions.

References or links to Creators or Templates do not constitute endorsement.

You are solely responsible for your activity in the App Templates Marketplace and for exercising judgment when licensing Templates or engaging Creators.

### 15.2 Information sharing and communications

You authorize Base44 to share your necessary account and contact information with Creators you engage and to contact you with messages and promotional materials (opt‑out available as provided by law).

### 15.3 Third‑party dependencies

Some Templates rely on external services/APIs. Your use of those is subject to the third party's terms and privacy policy. Changes by a third party may affect Template functionality; Base44 is not responsible for third‑party services.

### 15.4 Termination by Base44

We may terminate or suspend your access at any time. Previously purchased Template licenses generally remain in effect per the applicable license terms.

## 16. Licensing of App Templates

Base44 is authorized by the Creator to grant you a limited, personal, non‑exclusive, non‑transferable, non‑sublicensable, perpetual, single‑use license to install/use the Template in connection with one (1) app instance under your Base44 account, solely to customize and operate that app instance.

**Member Modifications; Derivative Works.** Subject to these Terms and the applicable license, Members may configure, adapt, and create Member Modifications and Member Derivative Works from a Template for use within their app instance(s). Creator irrevocably permits such adaptations and, to the maximum extent permitted by law, waives any moral rights enforcement that would prevent or restrict such adaptations. For the avoidance of doubt: (i) the Creator retains ownership of the underlying Template IP and Creator assets; (ii) the Member owns the Member Modifications, Member Derivative Works, and Member Data (excluding the underlying Template IP and Creator assets); and (iii) Creator has no ownership, authorship, or other IP claim to Member Modifications, Member Derivative Works, or Member Data.

**Commercialization limits.** Member Modifications and Member Derivative Works may not be resold, relicensed, distributed, or published as Templates or marketplace listings (on or off the Marketplace) unless expressly permitted by these Terms or by written consent from the Creator and Base44.

### 16.1 License limitations

This App Template license is limited to a single use and is non‑refundable unless required by applicable law or expressly stated otherwise herein.

You may not resell, redistribute, relicense, or publish the Template or any substantial portion of it, including any modified versions, except for internal use within your licensed app instance(s). Each Duplicated App is a separate app instance and requires its own Template License.

Nothing in these Terms restricts your right to create and use Member Modifications or Member Derivative Works internally within your app instance(s). However, you may not list or distribute Member Modifications or Member Derivative Works as a new Template or product on the Marketplace (or elsewhere) if they incorporate the Creator's Template IP or assets, unless you have obtained written permission from the Creator (and Base44, where required).

Creators must not display advertisements, promotional banners, or "powered by" watermarks to site owners or visitors, except where the Template's sole purpose is advertising and such behavior is (i) lawful, (ii) clearly disclosed pre‑purchase in the Listing, and (iii) compliant with applicable consent and disclosure requirements.

### 16.2 Ownership and support

Creator retains ownership of Template IP. No rights are granted except as expressly stated.

Creator is solely responsible for Template support unless the listing states otherwise. Base44 does not provide support for Creator Templates.

### 16.3 Non‑refundability

Template purchases are generally final and non‑refundable, except where required by law.

### 16.4 Payments

You authorize Base44 or its payment providers to process charges and handle renewals if a Template or related service is offered on a subscription basis.

Chargebacks may result in suspension/termination of access and capacity loss. Contact support before initiating a chargeback to avoid unintended consequences.

### 16.5 Third‑party services and dependencies

Templates may require or interoperate with third‑party services, APIs, data sources or Base44 platform services. Your use of such offerings is subject to their terms and privacy policies. Base44 is not responsible for third‑party services.

### 16.6 Removal/suspension

We may suspend or remove access to third‑party services (including where a provider ceases operations or violates policy) without liability to you. Such changes may impact Template functionality.

### 16.7 Creator - Member disputes

Creators and Members must resolve disputes directly. Base44 does not mediate Creator‑Member disputes. Violations of these App Templates Marketplace Terms may result in removal, suspension, or other action.

## 17. Intellectual property; notices

We respect IP rights. If you believe content infringes your rights, submit a notice to abuse@base44.com (subject: "IP Infringement Notice"). We may remove content or disable access and may terminate repeat infringers.

**Counter‑notice.** If your content was removed based on an infringement notice, you may submit a counter‑notice as permitted by law. We may share notices with the other party.

## 18. Warranties; Disclaimers

To the fullest extent permitted by law, the App Templates Marketplace and all Templates are provided "as is" and "as available," without warranties of any kind (express, implied, or statutory), including merchantability, fitness for a particular purpose, accuracy, reliability, non‑infringement, or that Templates or the App Templates Marketplace will be secure, error‑free, or uninterrupted. Outputs from any AI or automated tooling are suggestions only and may be inaccurate or infringing; review before use.

## 19. Limitation of liability

The following disclaimers and limitations of liability are supplemental to the disclaimers and limitations of liability under the Base44 Terms:

**19.1** YOU AGREE THAT YOUR USE OF THE BASE44 APP TEMPLATE MARKETPLACE, WHETHER AS A BASE44 CREATOR OR AS A BASE44 MEMBER, IS AT YOUR SOLE RISK. TO THE FULLEST EXTENT PERMITTED BY LAW, BASE44, ITS OFFICERS, DIRECTORS, EMPLOYEES, AND AGENTS (COLLECTIVELY, "BASE44 REPRESENTATIVES") DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, AND ASSUME NO RESPONSIBILITY IN CONNECTION WITH: (A) THE TEMPLATES OFFERED BY BASE44 CREATORS ON THE BASE44 APP TEMPLATE MARKETPLACE AND ANY USE THEREOF BY ANY USER; (B) THE ACCURACY OR COMPLETENESS OF THE MARKETPLACE SITE'S CONTENT OR THE CONTENT OF ANY SITES LINKED TO THE MARKETPLACE; (C) ANY BASE44 CREATOR'S REGISTRATION OR PROFESSIONAL ACCREDITATION; (D) THE RESULTS THAT MAY BE OBTAINED FROM USE OF THE BASE44 APP TEMPLATE MARKETPLACE; (E) THE TIMELINESS, ACCURACY, RELIABILITY, QUALITY, SUITABILITY, SAFETY, COMPLETENESS, OR CONTENT OF THE APP TEMPLATES, OR ANY PRODUCTS, MERCHANDISE, CONTENT, INFORMATION, OR MATERIALS PROVIDED THROUGH OR IN CONNECTION WITH THE BASE44 APP TEMPLATE MARKETPLACE; AND (F) THE SUITABILITY, LEGALITY, OR ABILITY OF ANY BASE44 CREATOR TO PROVIDE SERVICES.

NEITHER BASE44 NOR BASE44 REPRESENTATIVES ARE RESPONSIBLE FOR THE CONDUCT, WHETHER ONLINE OR OFFLINE, OF ANY USER OF THE BASE44 APP TEMPLATE MARKETPLACE (INCLUDING, WITHOUT LIMITATION, ANY BASE44 MEMBER OR BASE44 CREATOR).

**19.2** IN ADDITION TO ANY LIMITATIONS OF LIABILITY SET OUT IN THE BASE44 TERMS, IN NO EVENT SHALL BASE44 OR ANY BASE44 REPRESENTATIVES BE LIABLE TO YOU FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES WHATSOEVER RESULTING FROM: (I) THE USE OF OR INABILITY TO USE THE SERVICE; (II) UNAUTHORIZED ACCESS TO OR ALTERATION OF YOUR ACCOUNT; (III) YOUR RELIANCE ON USER CONTENT, INCLUDING TEMPLATES; (IV) ANY COMMUNICATION BETWEEN ANY BASE44 MEMBER AND ANY BASE44 CREATOR LISTED ON THE BASE44 APP TEMPLATE MARKETPLACE; OR (V) ANY OTHER MATTER RELATING TO THE SERVICE. SOME JURISDICTIONS DO NOT PERMIT THE EXCLUSION OF CERTAIN LIABILITIES; ACCORDINGLY, CERTAIN LIMITATIONS DESCRIBED HEREIN MAY NOT APPLY TO YOU.

YOU EXPRESSLY WAIVE AND RELEASE BASE44 AND BASE44 REPRESENTATIVES FROM ANY AND ALL LIABILITY, CLAIMS, OR DAMAGES ARISING FROM OR IN ANY WAY RELATED TO THE SERVICES. IN THE EVENT YOU HAVE A DISPUTE WITH ONE OR MORE USERS, YOU RELEASE BASE44 AND BASE44 REPRESENTATIVES FROM ANY AND ALL CLAIMS, DEMANDS, OR DAMAGES (ACTUAL, DIRECT, OR CONSEQUENTIAL) OF EVERY KIND AND NATURE, KNOWN AND UNKNOWN, SUSPECTED AND UNSUSPECTED, DISCLOSED AND UNDISCLOSED, ARISING OUT OF OR IN ANY WAY CONNECTED WITH SUCH DISPUTE. AS WITH THE PURCHASE OF ANY PRODUCT OR SERVICE, USERS SHOULD USE THEIR BEST JUDGMENT AND EXERCISE CAUTION WHERE APPROPRIATE. YOUR USE OF THE BASE44 APP TEMPLATE MARKETPLACE AND THE SERVICES IS AT YOUR OWN RISK. THE FOREGOING LIMITATIONS OF LIABILITY SHALL APPLY TO THE FULLEST EXTENT PERMITTED BY LAW IN THE APPLICABLE JURISDICTION. USERS SHOULD USE THEIR BEST JUDGMENT WHEN PURCHASING OR PROVIDING A SERVICE.

NOTHING IN THE BASE44 APP TEMPLATES TERMS OR ON THE BASE44 APP TEMPLATE MARKETPLACE CONSTITUTES, OR IS INTENDED TO CONSTITUTE, LEGAL, FINANCIAL, OR OTHER PROFESSIONAL ADVICE.

TO THE FULLEST EXTENT PERMITTED BY LAW, BASE44'S MAXIMUM LIABILITY ARISING OUT OF OR IN CONNECTION WITH THE SERVICE OR YOUR USE OF THE BASE44 APP TEMPLATE MARKETPLACE, REGARDLESS OF THE CAUSE OF ACTION (CONTRACT, TORT, BREACH OF WARRANTY, OR OTHERWISE), WILL NOT EXCEED THE GREATER OF: (A) IF YOU ARE A BASE44 MEMBER, THE FEES YOU HAVE PAID TO BASE44 FOR THE LICENSE TO A TEMPLATE; (B) IF YOU ARE A BASE44 CREATOR, THE FEES PAID BY BASE44 TO YOU IN THE LAST THREE (3) MONTHS; AND (C) $100.

## 20. Indemnity

As a user of the Base44 App Template Marketplace (whether a Base44 Member or a Base44 Creator), and in addition to your indemnification obligations under the Base44 Terms, you agree to defend, indemnify, and hold harmless Base44 and its officers, directors, shareholders, employees, affiliates, and agents from and against any and all claims, damages, obligations, losses, liabilities, costs, debts, and expenses (including reasonable attorneys' fees) arising out of or related to:

**For all Base44 Members and Base44 Creators:**

1. your violation of any third‑party right, including any copyright, property, or privacy right, resulting from your portfolio, user content, or your use of the Services or Templates;

2. your use of the Base44 App Template Marketplace and/or the Services, including any transactions or interactions arising therefrom; and

3. any alleged breach by you of these Marketplace Terms (including any documents incorporated by reference) or of any agreement between a Base44 Creator and a Base44 Member governing a Member's use of a Template.

**Additional obligations for Base44 Creators:**

4. your gross negligence or willful misconduct; and

5. any claims arising from the use of, inability to use, performance, non‑performance, or improper performance of your Template, including any product liability claims.

## 21. Termination

Base44 Members and Base44 Creators acknowledge that Base44 may, in its sole discretion, terminate their access to the Base44 App Template Marketplace, the Services, and any Templates at any time, with or without notice. Such termination may disable or limit certain Template features. Base44 shall have no liability arising from or related to any such termination.

### 21.1 Effect

- Creator accounts and listings may be deactivated or removed.
- Member access to the App Templates Marketplace may cease; previously issued Template licenses generally remain in effect per license terms.
- Accrued, undisputed Creator payouts will be paid per schedule, subject to offsets for refunds/chargebacks.
- Sections intended to survive (payments, IP, disclaimers, limitations, indemnity, privacy, sanctions/export, governing law) survive termination.

### 21.2 Data and capacity loss

Termination or removal may result in loss of content, data or functionality. Back up your data. We are not responsible for data loss.

## 22. Changes to the App Templates Marketplace

**Terms and services** We may change, suspend, or discontinue any feature of the App Templates Marketplace, and/or update these Terms, at any time, with or without notice, subject to applicable law. If changes materially impact fees or revenue share percentage, we will provide prior notice (for percentage changes).

## 23. Governing law; disputes; venue; class action waiver

### 23.1 Governing law

You expressly acknowledge and agree that Base44 shall have the right to enforce these Terms against you. Except to the extent any mandatory applicable law provides otherwise, these Terms, the rights and remedies provided hereunder, and any and all claims and disputes related hereto and/or to the App Templates Marketplace shall be governed by, construed under and enforced in all respects solely and exclusively in accordance with the internal substantive laws of the State of Israel, without respect to its conflict of laws principles. Any and all such claims and disputes shall be brought in, and you hereby consent to them being decided exclusively by, a court of competent jurisdiction located in Tel Aviv, Israel. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded.

Notwithstanding the foregoing, if you are located in the United States of America, the governing law for payment‑related disputes between you and Base44 will be the State of New York, without respect to its conflict of laws principles, and such disputes shall be brought exclusively in courts located in New York, New York.

## 24. Miscellaneous

**Entire agreement.** These Terms, together with the Base44 Terms of Service, and the Base44 Privacy Policy, constitute the entire agreement regarding the App Templates Marketplace.

**Assignment.** We may assign these Terms. You may not assign without our prior written consent.

**Severability; waiver.** If any provision is unenforceable, the remainder remains in effect. No waiver is effective unless in writing and no waiver of one breach is a waiver of another.

**Notices.** We may notify you via the App Templates Marketplace, email, your account, your Reseller (if applicable), or other contact details you provided. Notices are deemed received within 24 hours of sending unless otherwise indicated.

**Relationship.** Nothing herein creates a partnership, joint venture, or employment relationship between Base44 and any User.

**Survival.** The following provisions survive termination or expiration: licenses granted to Base44; payments, offsets, taxes; data privacy and access controls; security and permissions; sanctions/export; disclaimers; limitations of liability; indemnity; IP and notices; dispute resolution; and any other provision that by its nature should survive.`,pL={header:dL,body:uL},mL={home:"Home",allApps:"All apps",apps:"Apps",integrations:"Integrations",appTemplates:"Templates",hirePartner:"Hire A Partner",affiliates:"Affiliates",docsSupport:"Docs & Support",admins:"Admins",referFriends:"Refer Friends",language:"Language",startBuilding:"Start Building"},gL={title:"Create a Workspace",subtitle:"Start collaborating with your workspace members",back:"Back",formTitle:"Workspace Information",nameLabel:"Workspace Name",namePlaceholder:"Enter your workspace name",nameHint:"Choose a name that represents your workspace",nameRequiredError:"Workspace name is required",createFailedError:"Failed to create workspace",limitReachedError:"Workspace limit reached. You can create a maximum of 3 workspaces.",cancelButton:"Cancel",createButton:"Create Workspace",creatingButton:"Creating Workspace...",whatHappensNext:{title:"What happens next?",ownerPermissions:"You'll be the workspace owner with full management permissions",inviteMembers:"You can invite workspace members and manage seats",accessDashboard:"Access your workspace dashboard to get started"}},hL={workspace:"Workspace",backToWorkspace:"Back to {{workspaceName}}",settings:"Settings",inviteMembers:"Invite members",myWorkspaces:"My Workspaces",createWorkspace:"Create a Workspace",noWorkspacesFound:"No workspaces found",accountSettings:"Account settings",apiKey:"API Key",helpSupport:"Help & support",becomeAffiliate:"Become an affiliate",defaultUser:"User",defaultUserInitial:"U",referFriend:"Refer a friend",giftCards:"Gift Cards",sendGiftCard:"Send a gift card",notifications:"Notifications",logOut:"Log out",aboutApp:"About the app",upgradePlan:"Upgrade Plan",winCredits:"Win free credits",pricingPlans:"Pricing plans",documentation:"Documentation",getHelp:"Get help",memberCount_one:"{{count}} member",memberCount_other:"{{count}} members",myProfile:"My Profile",viewProfile:"View profile",failedToLoadProfile:"Failed to load profile",user:"User"},fL={ariaLabel:"Agent menu",agentFallback:"Agent"},vL={integrationCredits:"Integration credits",monthlyCredits:"Monthly Credits",messageCredits:"Message credits",dailyCredits:"Daily Credits",giftCardCredits:"Gift Credits",renewsAt:"Renews at {{date}}",giftCardTooltip:"Gift card credits are used before your plan credits.",percentUsed:"{{percent}}% used",messagesRemaining_one:"{{count}} message remaining",messagesRemaining_other:"{{count}} messages remaining",upgradeYourPlan:"Upgrade your plan",getMoreOutOfYourApps:"Get more out of your apps",upgradeYourPlanToPro:"Upgrade your plan to Pro",redeemDescription:"Once you redeem, credits will be applied to your workspace.",creditsRemaining_one:"{{count}} credit remaining",creditsRemaining_other:"{{count}} credits remaining"},bL={label:"Community",appTemplates:"App Templates",appTemplatesDesc:"Start faster with community templates.",hirePartner:"Hire a Partner",hirePartnerDesc:"Find partners and start collaborating.",spotlight:"Spotlight",spotlightDesc:"Explore standout applications.",affiliateProgram:"Affiliate Program",affiliateProgramDesc:"Become a Base44 affiliate.",joinUsOn:"Join us on"},yL=JSON.parse(`{"title":"Settings","lockedFeature":{"includedInPlan":"Included in the {{plan}} plan and above","includedInPlanExact":"Included in the {{plan}} plan","viewPlans":"View Plans","talkToSales":"Talk to sales","authSecurity":{"title":"Control workspace access","body":"Essential for regulated industries and security-conscious organizations","ssoAccess":"Use single sign-on (SSO) to reduce password risk","domainVerification":"Control who can join with domain verification","ipWhitelisting":"Allow access only from trusted IP addresses"},"integrations":{"title":"Set up once, use across your workspace","body":"For teams standardizing APIs and external tools across apps.","configureOnce":"Configure API integrations once for all apps and teammates","sharedAccess":"Let anyone in your workspace use connected tools instantly","consistentConnections":"Keep external connections consistent across every app"},"appsConfiguration":{"title":"Set app visibility and SSO rules","body":"For teams managing internal tools and sensitive apps.","publicAppControl":"Decide who can create public apps in this workspace","defaultVisibility":"Set the initial visibility for new apps","enforceSso":"Enforce workspace SSO across all apps"},"analytics":{"title":"See how your team uses Base44","body":"For workspace owners and admins tracking usage and adoption.","creditTracking":"Track how credits are being used across your team","activeUsers":"See which teammates are actively using Base44","licenseUsage":"Understand how many licenses are currently in use"},"skills":{"title":"Give Your AI Reusable Skills","body":"Define consistent AI behavior that works across all your apps.","reusableInstructions":"Create a set of custom instructions (a skill) that shape how the AI builds your apps","autoActivation":"Create once, reuse across all your apps","teamConsistency":"Guide tone, formatting, logic, or any behavior you want to standardize"},"mcpConnections":{"title":"Connect external tools with MCP","body":"Bring live data from external tools directly into your apps.","externalTools":"Give your AI builder access to real-time context while it works","customServers":"Connect custom MCP servers to use across all your apps","extendCapabilities":"Access tools like Amplitude, Linear, and more while building"}},"membersTitle":"Members","inviteMembers":"Invite Members","inviteByEmail":"Invite by email","bulkInviteCsv":"Bulk invite (CSV)","close":"Close","createInviteLink":"Create Invite Link","manageInviteLinks":"Manage Invite Links","backToMembers":"Back to members","backToMenu":"Back to settings menu","inviteLinks":{"title":"Invite links","breadcrumb":"Invite Links","description":"Create and manage invite links for this workspace.","createInviteLink":"Create Invite Link","noLinksYet":"No invite links yet","noLinksSubtitle":"Create an invite link to easily share access to this workspace.","copyLink":"Copy Link","copyLinkLower":"Copy link","deleteTooltip":"Delete invite link","deleteButton":"Delete","deleteLinkButton":"Delete Link","deleteConfirmTitle":"Delete invite link?","deleteConfirmActive":"People won't be able to join using this link anymore. This action can't be undone.","deleteConfirmInactive":"This link and its history will be removed from this workspace.","copiedToClipboard":"Invite link copied to clipboard.","columnName":"Name","columnStatus":"Status","columnUsage":"Usage","columnRole":"Role","columnExpiration":"Expiration date","columnDomains":"Allowed domains","statusActive":"Active","statusRevoked":"Revoked","statusExpired":"Expired","statusLimitReached":"Limit reached","usageUnlimited":"Unlimited","dialogTitle":"Create invite link","dialogMobileTitle":"Create link","linkName":"Link name (Optional)","linkNamePlaceholder":"e.g., New Hire Onboarding","role":"Role","selectRole":"Select role","roleViewer":"Viewer","roleEditor":"Editor","roleMember":"Member","expiration":"Expiration","selectExpiration":"Select expiration","nDays_one":"{{count}} day","nDays_other":"{{count}} days","never":"Never","maximumUses":"Maximum uses","selectLimit":"Select limit","unlimited":"Unlimited","nUses_one":"{{count}} use","nUses_other":"{{count}} uses","allowedDomains":"Allowed email domains (Optional)","allowedDomainsPlaceholder":"e.g., company.com, partner.org","domainsHelp":"Separate multiple domains with commas.","domainsError":"Invalid entry. Use comma-separated domains (e.g., company.com, partner.org)","securityWarning":"Anyone with this link can join your workspace and access its data. Only share it with people you trust.","advancedOptions":"Advanced options","cancel":"Cancel","creating":"Creating...","create":"Create","linkCreatedAndCopied":"Invite link created and copied.","manageInvitations":"Manage invitations"},"postPaymentInvite":{"title":"You're all set!","description":"Your plan is active. Invite your friends and colleagues to start building together.","createInviteLink":"Create Invite Link","inviteByEmail":"Invite by Email","maybeLater":"Maybe Later","inviteLinkReady":"Invite link ready","subtitleNoDomain":"Anyone with this link can join as <bold>{{role}}</bold>","subtitleWithDomain":"Anyone with a {{domains}} email can join as <bold>{{role}}</bold>","copied":"Copied","manageInvitationsPrompt":"You can manage all your invite links from the <inviteLink>Invite Links</inviteLink> settings page.","copyLink":"Copy","close":"Close","expires":"Expires {{time}}","remainingUses_one":"{{count}} use remaining","remainingUses_other":"{{count}} uses remaining"},"sections":{"workspace":"Workspace","integrations":"Integrations","account":"Account"},"creditUsage":{"pageDescription":"Monitor your credit consumption and usage patterns.","currentPlan":"You're currently on the {{planName}} Plan","overLimit":"Over Limit","updatePayment":"Update Payment","upgrade":"Upgrade","paymentOverdue":"Payment overdue","pastDueDescription":"Your subscription payment is past due. Credits and limits shown are based on your last paid plan ({{plan}}).","tryAgain":"Try again","trying":"Trying...","monthlyMessages":"Monthly Messages","workspaceTotal":"Workspace Total","workspaceUsage":"Workspace Usage","dailyMessages":"Daily Messages","loadError":"Failed to load usage statistics","portalError":"Failed to open payment management. Please try again.","portalErrorTitle":"Error","creditsRenewIn":"Credits renew in {{timeLeft}}","expired":"Expired","dailyUsageTitle":"Daily Usage (Messages)","noUsageData":"No usage data available","messagesLabel":"messages","timeDaysHours":"{{days}}d : {{hours}}h","timeHoursMinutes":"{{hours}}h : {{minutes}}m","timeMinutes":"{{minutes}}m"},"basicInformation":{"pageTitle":"Basic information","pageSubtitleEditable":"Manage your workspace details and settings.","pageSubtitleReadOnly":"View workspace details. Only workspace owners and admins can edit.","loadingMessage":"Loading workspace information...","workspaceNameLabel":"Workspace name","workspaceNamePlaceholder":"Enter workspace name","workspaceDescriptionLabel":"Workspace description","workspaceDescriptionPlaceholder":"Describe your workspace...","workspaceNameEmptyErrorMessage":"Workspace name cannot be empty","cancelButton":"Cancel","saveButton":"Save Changes","savingButton":"Saving...","saveSuccessMessage":"Workspace settings updated successfully!","saveErrorMessage":"Failed to update workspace settings: {{error}}","unknownError":"Unknown error"},"leaveWorkspace":{"title":"Leave workspace","description":"If you leave this workspace, you will lose access to all associated apps. Ownership of your apps will be transferred to the workspace owner.","button":"Leave Workspace","soleOwnerNote":"You can't leave the workspace because you're the only owner.","successMessage":"You have left the workspace.","workspaceNameFallback":"workspace","dialog":{"title":"Leave {{name}}?","confirmQuestion":"Are you sure you want to leave <bold>{{name}}</bold>?","transferWarning":"Your apps in this workspace will be transferred to the workspace owner and you will lose access.","cancelButton":"Cancel","confirmButton":"Leave Workspace"}},"menu":{"basicInformation":"Basic information","planAndBilling":"Plan and billing","creditUsage":"Credit usage","members":"Members","seatsAndMembers":"Seats and members","authAndSecurity":"Auth and security","integrations":"Integrations","appsConfiguration":"Apps configuration","analytics":"Analytics","accountSettings":"Account settings","mcpConnections":"MCP connections","skills":"Skills","connectors":"Connectors","manageSubscription":"Manage Subscription","secrets":"Secrets","dataResidency":"Data residency"},"guests":{"tabMembers":"Members","tabGuests":"Guests","title":"Guests","infoBanner":"Guests are external users invited to specific apps. They consume credits from the workspace's shared pool.","searchPlaceholder":"Search by email or app...","columnGuest":"Guests","columnApp":"App","columnInvitedBy":"Invited by","columnCreditsUsed":"Credits used","pending":"Pending","promoteToEditor":"Promote to editor","promoteToViewer":"Promote to viewer","removeFromWorkspace":"Remove from workspace","emptyTitle":"No guests yet","emptySubtitle":"Guests can be added from the app collaborator invite flow.","noResults":"No guests found","noResultsSubtitle":"No guests match \\"{{searchTerm}}\\"","promoted":"{{email}} promoted to {{role}}","promoteFailed":"Failed to update role","setCreditLimit":"Set credit limit","upgradeForCreditLimit":"Upgrade to Enterprise plan for this feature","viewAppAccess":"View app access","removeMember":"Remove member","guestRole":"Guest","appAccessTitle":"{{name}}'s app access","appAccessDescription":"View the apps this guest can access in the workspace.","appAccessLoading":"Loading...","appAccessEmpty":"No app access found.","appAccessColumnApp":"App","appAccessDone":"Done"},"members":{"pageTitle":"Members","pageDescription":"View and manage members and roles for this workspace.","tableTitle":"Members ({{count}})","columnMembers":"Members","columnCreditsUsed":"Credits used","columnCreditsUsedWithLimit":"Credits used (out of {{limit}})","columnCreditLimit":"Credit limit","columnRole":"Role","roleOwner":"Owner","roleAdmin":"Admin","roleEditor":"Editor","roleViewer":"Viewer","pending":"Pending","expired":"Expired","searchPlaceholder":"Search by name or email...","searchPlaceholderMobile":"Search...","inviteMembers":"Invite Members","inviteByEmail":"Invite members","bulkInvite":"Bulk invite","setCreditLimit":"Set credit limit","removeMember":"Remove member","upgradeTooltip":"Upgrade to the Enterprise plan to unlock this feature","default":"(default)","emptyTitle":"No workspace members yet","emptyTitleNoResults":"No members found","emptySubtitlePersonal":"Personal workspaces contain only you","emptySubtitleShared":"Start by inviting your first workspace member","emptySubtitleNoResults":"No members match \\"{{searchTerm}}\\"","cantChangeOwnRole":"You can't change your own role. Ask a workspace owner to update it for you.","creditLimitTooltip":"Limit how many credits each member can use from the workspace pool. Set limits individually or distribute evenly across all members.","tableTitleFiltered":"Members ({{filteredCount}} of {{totalCount}})","clearSearch":"Clear search"},"seatsAndMembers":{"pageTitle":"Seats and members","pageDescription":"Manage workspace seats and team members.","emptyTitle":"Get Started with Workspace Seats","emptyDescription":"Purchase seats to invite workspace members and start collaborating.","buyFirstSeats":"Buy Your First Seats","planSeats":"{{planName}} Seats","seatsUsage":"Seats Usage","addSeats":"Add Seats","removeSeats":"Remove Seats","seatsAvailable_one":"{{count}} seat available","seatsAvailable_other":"{{count}} seats available","buyMoreSeats":"Buy More Seats","expandWorkspace":"Expand your workspace size","searchPlaceholder":"Search by email, role, status, or seat type (e.g., starter, pro)...","searchTip":"Tip: Search for seat types like \\"starter\\", \\"builder\\", \\"pro\\", \\"elite\\", or \\"no seat\\""},"inviteDialog":{"title":"Invite Members","emailAddress":"Email Address","role":"Role","cancel":"Cancel","invite":"Invite","inviting":"Inviting...","roleViewer":"Viewer","roleEditor":"Editor","roleAdmin":"Admin","roleMember":"Member","errorNoEmail":"Please enter at least one email address","errorInvalidEmail":"One or more email addresses are invalid.","errorFallback":"Failed to invite users","toastSingle":"Invitation sent to {{email}}","toastMultiple":"{{count}} invitations sent successfully"},"dataResidency":{"title":"Data residency","tooltip":"Sets the data storage region for apps in this workspace.","edit":"Edit","upgradeRequired":"Elite plan or above required to configure data residency.","appliesToNewApps":"Applies to newly created apps. Existing apps keep their current region.","editModal":{"title":"Workspace data residency","description":"Choose where to store data for apps you create in this workspace.","label":"Data residency","appliesToNewApps":"Applies to newly created apps. Existing apps keep their current data region.","viewAllApps":"View data residency for all workspace apps","cancel":"Cancel","save":"Save","saving":"Saving...","updateSuccess":"Data residency updated successfully","updateError":"Failed to update data residency: {{detail}}","unknownError":"Unknown error"},"appsModal":{"title":"App data residency","description":"See where data is stored for each app in this workspace.","appName":"App name","dataRegion":"Data region","loading":"Loading...","noApps":"No apps in this workspace.","migrationInfo":"Need to move an app to a different region? <a>Request a migration.</a>","supportTitle":"Data region migration request — {{name}}","supportContent":"I'd like to migrate app data to a different region.\\n\\nWorkspace: {{name}} ({{id}})\\nCurrent default region: {{region}}\\nTarget region: \\nApps to migrate: "}},"mcp":{"title":"MCP Connections","addMcp":"Add MCP","limitReached":"You've reached the limit of {{max}} MCP servers. Remove one to add a new connection.","description":"Connect custom MCP servers to extend Base44's building capabilities with external tools and data.","descriptionWithLink":"Connect custom MCP servers to extend Base44's building capabilities with external tools and data. <a>Learn more about MCP<icon/></a>","learnMore":"Learn more about MCP","emptyTitle":"No MCP server connected yet","addCustomMcp":"Add Custom MCP","aria":{"enableConnection":"Enable {{name}}","disableConnection":"Disable {{name}}","actionsFor":"Actions for {{name}}"},"actions":{"editDetails":"Edit Details","removeMcp":"Remove MCP"},"deleteConfirm":{"title":"Remove MCP Connection","description":"Are you sure you want to remove \\"{{name}}\\"? This action cannot be undone.","confirm":"Remove","cancel":"Cancel"},"tools":{"availableTools_one":"{{count}} available tool","availableTools_other":"{{count}} available tools","more":"+{{count}} more","showLess":"Show less","loadingTools":"Loading tools..."},"addDialog":{"title":"Add custom MCP server","name":"Name","namePlaceholder":"i.e., My MCP Server","url":"URL","urlExists":"MCP Server already exists.","authentication":"Authentication","authNone":"Not required","authNoneDescription":"Connect without credentials","authOAuth":"OAuth","authOAuthDescription":"Authorize in the next step","customHeaders":"Custom Headers","optional":"optional","headersDescription":"Add headers that will be sent with every request (e.g., API keys)","headerName":"Header name","headerValue":"Value","addHeader":"Add Header","connectionFailed":"Connection failed","serverReady":"MCP server is ready to connect.","serverReadyWithTools_one":"MCP server is ready to connect. 1 tool found.","serverReadyWithTools_other":"MCP server is ready to connect. {{count}} tools found.","toolsFound_one":"{{count}} tool found.","toolsFound_other":"{{count}} tools found.","oauthConfirmed":"Server confirmed. Click \\"Authorize & Add\\" to complete OAuth authentication.","test":"Test","testAndAdd":"Test & Add","authorizeAndAdd":"Authorize & Add","cancel":"Cancel","urlRequired":"Please enter a server URL.","fieldsRequired":"Please fill in all required fields.","authRequired":"Authentication is required for this server. Select OAuth to continue.","authNotRequired":"This server does not require OAuth. Try adding without OAuth.","testFailed":"Connection test failed."},"editDialog":{"title":"Edit connected MCP","enabled":"Enabled","nameRequired":"Please enter a name.","changeInfo":"To change the URL or authentication method, create a new MCP connection.","saveChanges":"Save Changes","removeMcp":"Remove MCP","cancel":"Cancel"},"toast":{"added":"MCP connection added","addedDescription":"Successfully connected to the MCP server.","addedWithName":"Successfully added \\"{{name}}\\" connection.","saved":"Changes saved","savedDescription":"MCP connection updated successfully."}},"skills":{"title":"Skills","addSkill":"Add Skill","addSkillLower":"Add skill","editSkill":"Edit Skill","viewSkill":"View Skill","deleteSkill":"Delete Skill","limitReached":"You've reached the limit of {{max}} skills. Remove one to add a new skill.","description":"Create reusable instruction sets that the AI builder can activate during conversations.","emptyDescription":"Skills are saved guidelines that shape how the AI builds your apps. They activate when needed to follow your rules and best practices automatically.","emptyDescriptionWithLink":"Skills are saved guidelines that shape how the AI builds your apps. They activate when needed to follow your rules and best practices automatically. <a>Learn more</a>","learnMore":"Learn more","getStartedWithTemplate":"Get started with a template","viewMore":"View more","failedToLoadTemplates":"Failed to load skill templates","templatesUnavailable":"Preset templates may be unavailable.","failedToLoadTemplate":"Failed to load template","form":{"skillName":"Skill Name","namePlaceholder":"e.g. brand-guidelines","nameRequired":"Name is required","nameMaxLength":"Name must be at most {{max}} characters","namePattern":"Lowercase letters, numbers, and hyphens only (e.g. code-review)","nameExists":"A skill with this name already exists","description":"Description","descriptionHint":"Tell the agent when to use this skill. It reads this to decide whether to activate it.","descriptionPlaceholder":"e.g. Enforces brand colors, typography, and design patterns across all pages and components. Use when creating new pages, updating styling, or when the user mentions the brand or design system.","instructions":"Instructions","instructionsHint":"The step-by-step rules your agent follows when this skill activates. Write it like you're training a new team member.","instructionsPlaceholder":"## Brand Colors\\nPrimary: #1E40AF (navigation, buttons)\\nAccent: #F59E0B (highlights, CTAs)\\nBackground: #F8FAFC, Surface: white\\n\\n## Typography\\nHeadings: bold, dark slate\\nBody: text-sm text-slate-600\\nUse consistent spacing between sections\\n\\n## Component Patterns\\n- Use Card with subtle shadow for data sections\\n- Always include loading and empty states\\n- Forms: use Sheet dialogs for create/edit flows\\n- Tables: striped rows, sortable columns","reviewHint":"Refined by AI. Feel free to adjust before saving."},"dialog":{"reviewTitle":"Review your skill","reviewSubtitle":"Check the description and instructions before saving. You can edit this anytime.","pickerTitle":"Add skill or start from scratch","startFromScratch":"Start from scratch","cancel":"Cancel","backToOriginal":"Back to Original","saveSkill":"Save Skill","saveChanges":"Save Changes","refineAndReview":"Refine & Review","refineShort":"Refine","close":"Close","add":"Add","enabled":"Enabled"},"toast":{"created":"Skill created","createdDescription":"\\"{{name}}\\" has been added.","failedToCreate":"Failed to create skill","updated":"Skill updated","updatedDescription":"\\"{{name}}\\" has been saved.","failedToUpdate":"Failed to update skill","refinedTooLong":"Refined skill is too long","refinedTooLongDescription":"We tried to condense it but the result still exceeds the character limit. Try shortening your content and refining again.","failedToPolish":"Failed to polish skill","failedToLoad":"Failed to load skill","failedToLoadList":"Failed to load skills","retryLater":"Please try again later.","retryAgain":"Please try again.","removed":"Skill removed","removedDescription":"The skill has been removed."},"deleteConfirm":{"description":"Are you sure you want to delete \\"{{name}}\\"? This action cannot be undone.","confirm":"Delete","cancel":"Cancel"},"aria":{"enableSkill":"Enable {{name}}","disableSkill":"Disable {{name}}","actionsFor":"Actions for {{name}}"}},"secrets":{"title":"Secrets","description":"Manage credentials and access tokens for programmatic access to your workspace.","apiKeys":{"title":"API keys","description":"Create and manage API keys for programmatic access to your workspace. Use these keys to stream audit logs, connect your identity provider via SCIM, or pull workspace data into an external system via the Monitoring API.","createButton":"Create API Key","limitReached":"You've reached the maximum limit of {{max}} API keys. Delete an existing key to create a new one.","table":{"name":"Name","key":"Key","createdBy":"Created by","created":"Created","lastUsed":"Last Used","status":"Status","never":"Never"},"status":{"active":"Active","disabled":"Disabled"},"emptyState":{"title":"No API keys yet","description":"Workspace API keys give programmatic access to your workspace APIs (SIEM, SCIM, custom integrations)."},"actions":{"edit":"Edit","disableKey":"Disable key","enableKey":"Enable key","deleteKey":"Delete key","actionsFor":"Actions for {{name}}"},"sheet":{"editButton":"Edit","disableButton":"Disable","enableButton":"Enable"},"disableConfirm":{"title":"Disable API Key?","description":"The API key <strong>\\"{{name}}\\"</strong> will be immediately disabled. Any integrations using this key will stop working.","note":"You can re-enable it later.","confirm":"Disable Key","cancel":"Cancel"},"enableConfirm":{"title":"Enable API Key?","description":"The API key <strong>\\"{{name}}\\"</strong> will be re-enabled. Integrations using this key will resume working.","confirm":"Enable Key","cancel":"Cancel"},"deleteConfirm":{"title":"Delete API Key?","description":"The API key <strong>\\"{{name}}\\"</strong> will be permanently deleted. This action cannot be undone. Any integrations using this key will stop working immediately.","confirm":"Delete Key","cancel":"Cancel"},"toast":{"loadError":"Failed to load API keys","loadErrorDescription":"Please try again.","disabled":"API key disabled","disabledDescription":"\\"{{name}}\\" has been disabled.","disableError":"Failed to disable API key","enabled":"API key enabled","enabledDescription":"\\"{{name}}\\" has been re-enabled.","enableError":"Failed to enable API key","deleted":"API key deleted","deletedDescription":"\\"{{name}}\\" has been permanently deleted.","deleteError":"Failed to delete API key","createError":"Failed to create API key","updateError":"Failed to update API key","copyError":"Failed to copy API key","updated":"API key updated","updatedDescription":"\\"{{name}}\\" has been saved."},"createDialog":{"title":"Create API Key","titleReveal":"API Key Created","namePlaceholder":"e.g. SIEM Integration","descriptionPlaceholder":"What is this key used for?","cancelButton":"Cancel","createButton":"Create Key","creatingButton":"Creating...","warningMessage":"Copy this key now - you won't be able to see it again. Treat it like a password: it grants access to your workspace data via the API.","yourApiKey":"Your API key","doneButton":"Done","copyAria":"Copy API key"},"editDialog":{"title":"Edit API Key","cancelButton":"Cancel","saveButton":"Save","savingButton":"Saving..."},"formFields":{"name":"Name","description":"Description","descriptionOptional":"(optional)"}}},"authSecurity":{"title":"Auth and security","description":"Configure authentication and security settings for your workspace.","sso":{"title":"Single Sign-on Configuration","configureTooltip":"Configure SSO for your workspace","description":"Enable SSO to streamline authentication for your workspace members.","settingUp":"Setting up...","setUp":"Set Up","setUpConfiguration":"Set up SSO Configuration","enforcedTooltip":"This SSO is enforced for all apps in the workspace, meaning they automatically use it for authentication. To update enforcement settings, go to Apps Configuration.","enforcedBadge":"Enforced for apps","setUpAction":"Set up","configure":"Configure","selectProvider":"Select SSO Provider","cancelSetup":"Cancel Setup","dismiss":"Dismiss","saving":"Saving...","enableSSO":"Enable SSO","saveSSOSettings":"Save SSO Settings","notAvailableTitle":"Not Available","notAvailableDesc":"Single Sign-On (SSO) is not available for personal workspaces.","limitedAccessTitle":"Limited Access","limitedAccessDesc":"Only workspace admins can configure SSO settings.","toast":{"error":"Error","failedToLoadSettings":"Failed to load SSO settings","failedToLoadAppSettings":"Failed to load app settings","ssoEnabled":"SSO Enabled","ssoEnabledDesc":"Single Sign-On has been enabled for your workspace","ssoDisabled":"SSO Disabled","ssoDisabledDesc":"Single Sign-On has been disabled","failedToUpdateStatus":"Failed to update SSO status","success":"Success","settingsUpdated":"SSO settings updated successfully","failedToUpdate":"Failed to update SSO settings"},"fields":{"client_id":"Client ID","client_secret":"Client Secret","scope":"Scope","discovery_url":"Discovery URL","tenant_id":"Tenant ID","okta_domain":"Okta Domain","auth_endpoint":"Auth Endpoint","token_endpoint":"Token Endpoint","userinfo_endpoint":"Userinfo Endpoint","jwks_uri":"JWKS URI","name":"Provider Name"},"autoGenerated":"(Auto-generated)","placeholders":{"client_id":"Enter client ID","client_secret":"Enter client secret","scope":"Enter scope","discovery_url":"Enter discovery URL","tenant_id":"Your Azure AD tenant ID","okta_domain":"your-company","auth_endpoint":"Enter auth endpoint","token_endpoint":"Enter token endpoint","userinfo_endpoint":"Enter userinfo endpoint","jwks_uri":"Enter JWKS URI","name":"Enter provider name"},"tooltips":{"clientId":"The OAuth client ID provided by your identity provider","clientSecret":"The OAuth client secret provided by your identity provider (keep this confidential)","scopeGeneral":"OAuth scopes to request (openid, email, profile are commonly used)","scopeGithub":"OAuth scopes to request (user:email for GitHub)","discoveryUrlGoogle":"OIDC discovery endpoint (pre-configured for Google)","discoveryUrlMicrosoft":"OIDC discovery endpoint automatically generated from your tenant ID","discoveryUrlOkta":"OIDC discovery endpoint automatically generated from your Okta domain","discoveryUrlAdvanced":"OIDC discovery endpoint URL (if supported by your provider)","tenantId":"Azure AD Directory (tenant) ID - found in Azure Portal → Azure Active Directory → Overview","oktaDomain":"Your Okta domain name (e.g., 'your-company' from your-company.okta.com)","authEndpointGithub":"GitHub OAuth authorization endpoint (pre-configured)","authEndpointGeneral":"OAuth authorization endpoint URL","tokenEndpointGithub":"GitHub OAuth token endpoint (pre-configured)","tokenEndpointGeneral":"OAuth token endpoint URL","userinfoEndpointGithub":"GitHub API user endpoint (pre-configured)","userinfoEndpointGeneral":"OAuth userinfo endpoint URL","jwksUri":"JSON Web Key Set URI for token verification","providerName":"Custom name for your SSO provider"},"providerFallback":"{{name}} SSO","providers":{"advanced":"Advanced / Manual Configuration"}},"domainVerification":{"title":"Domain Verification","label":"Workspace domain","placeholder":"Add your domain","hint":"The domain linked to your workspace","check":"Check","verified":"Verified","checking":"Checking","copyFailed":"Failed to copy to clipboard","dnsTimedOut":"DNS verification timed out. Please check your DNS settings and try again.","domainVerifiedSuccess":"Domain verified successfully!","enterDomainFirst":"Please enter a domain first","domainSaved":"Domain saved. Add the DNS record to verify ownership.","configFailed":"Failed to configure domain verification","verificationReset":"Domain verification has been reset","resetFailed":"Failed to reset domain verification","addDnsRecords":"Add DNS records for {{domain}}","dnsInstructions":"Log into your domain provider, go to the DNS settings, and add this TXT record.","type":"Type","hostName":"Host / Name","value":"Value","dnsCheckNote":"DNS verification can take a few minutes. Once everything is updated, we'll automatically verify your domain.","checkingDns":"Checking your DNS records...","resetting":"Resetting...","reset":"Reset","copyLabel":"Copy {{label}}"}}}`),kL={earnBonusCredits:"Earn bonus credits"},wL={apps:"Apps",superagents:"Superagents",newAgent:"New Agent",emptyAgents:"Create your first agent and see your conversations here.",allAgents:"All Agents",settings:"Settings",inviteMembers:"Invite members",allWorkspaces:"My workspaces",org:"Org",createNewWorkspace:"Create new workspace",recents:"Recents",favorites:"Favorites",noFavoritesYet:"No favorites yet",addAppsForQuickAccess:"Add your apps for quick access",view_all:"View all"},AL={pageTitle:"Gift cards",pageSubtitle:"Give the gift of building. Send a gift card to a friend.",tabBuy:"Buy a gift card",tabPurchased:"Purchase history",successTitle:"Gift card purchased successfully!",successDescription:"The recipient will receive an email with their gift card code.",successDescriptionPdf:"Check your email for a printable gift card to give in person.",dismissSuccess:"Dismiss success message",amount:"Choose an amount",customAmount:"$ Custom",customAmountPlaceholder:"{{symbol}} Custom amount",customAmountError:"Amount must be between {{min}} and {{max}}",creditsInfo:"This gift card includes <strong>{{credits}} message credits</strong> to build apps",deliveryMethodTitle:"How would you like to send it?",deliveryEmail:"Email to recipient (immediately)",deliveryPdf:"Email to you (printable)",recipientTitle:"Who is it for?",recipientName:"Name",recipientNamePlaceholder:"Enter recipient name",recipientEmail:"Email",recipientEmailPlaceholder:"Enter recipient email",messageLabel:"Gift card message (optional)",messagePlaceholder:"Add a personal message (optional)",suggestMessage:"Suggest a message",suggestFallbackName:"friend",messageCharCount:"{{count}}/300 characters",senderTitle:"Who is it from?",senderName:"Your name",senderNamePlaceholder:"Enter sender name",submitButton:"Continue to checkout",submitting:"Processing...",errorGeneric:"Something went wrong",historyEmpty:"No gift cards yet. Buy one for a friend!",historyTo:"To {{name}}",historyCodeLabel:"Gift card code",historyCopy:"Copy",historyCopied:"Copied",historyRedeemed:"This gift card has been redeemed",historyRedeemedOn:"This gift card has been redeemed on {{date}}",historySentTo:"Sent to {{email}}",statusSent:"Sent",statusRedeemed:"Redeemed",statusExpired:"Expired",statusProcessing:"Processing",statusPending:"Pending",statusRevoked:"Revoked",historyActions:"Actions",designTitle:"Pick a design",designClassic:"Classic",designSunrise:"Sunrise",designOcean:"Ocean",cardLabel:"Gift Card",cardCreditsLabel:"message credits",cardFor:"For {{name}}",cardDefaultName:"Your Friend",historyError:"Failed to load gift cards. Please try again.",historyDateIssued:"Date issued",historyRecipient:"Recipient",historyAmount:"Amount",historyStatus:"Status",historyCode:"Code",historySenderDetails:"Sender details",historySentToYou:"Sent to you",historyViewCode:"View code",historyHideCode:"Hide code",historyDownloadPdf:"Download PDF",historyResend:"Resend",historyResendSuccess:"Gift card email resent successfully!",historyResendError:"Failed to resend email. Please try again.",historyDownloadError:"Failed to download. Please try again.",historyCredits:"credits",emailInvalid:"Please enter a valid email address",buyGiftCard:"Buy a Gift Card",giftAndReferrals:"Gift & Referrals",redeemTitle:"You received a gift card!",redeemDescription:"Once you redeem, credits will be applied to your workspace.",redeemSelectWorkspace:"Select a workspace",redeemBackToWorkspace:"Back to Workspace",redeemCheckCreditUsage:"Check credit usage",redeemErrorDescription:"This code has already been used and cannot be redeemed again. If you are not sure what happened, you can check your credits or contact support.",redeemDefaultWorkspace:"this",error:"Error",redeemSuccess:"Gift card redeemed!",redeemSuccessDescription:"{{credits}} credits added to {{workspace}}.",redeemButton:"Redeem gift card",redeemNotNow:"Not now",redeemDocsLink:"Learn how gift card credits work in <docsLink>our documentation</docsLink>",redeemCouponDescription:"Redeem it to get {{amount}} off your subscription.",redeemCouponAppliedTitle:"Gift card applied!",redeemCouponReadyTitle:"Gift card ready to use!",redeemCouponNoWorkspace:"No workspace selected",coupon:{title:"Redeem a coupon or gift card",description:"Enter your code to add credits to your balance.",placeholder:"Enter your code",apply:"Apply",success:"Coupon applied successfully!",invalidCode:"The code is invalid. Please try again.",notFound:"Coupon code not found. Please check and try again.",giftCardNotFound:"Gift card not found. Check the code and try again.",redeemFailed:"Failed to redeem gift card. Please try again."},errors:{invalidRecipientEmail:"Please enter a valid email address",recipientEmailRequired:"Recipient email is required",checkoutFailed:"Failed to initiate checkout. Please try again.",confirmPurchaseFailed:"Failed to confirm purchase. Please try again.",alreadyRedeemed:"This gift card has already been redeemed",notAvailable:"This gift card is not available for redemption",expired:"This gift card has expired",notWorkspaceMember:"You are not a member of the selected workspace",networkError:"Network error. Please check your internet connection and try again.",rateLimitExceeded:"Too many attempts. Please try again later.",permissionDenied:"Only workspace owners can redeem gift cards. Ask a workspace owner to apply this code.",invalidPlanPrice:"This plan is not available for gift card checkout. Please select a different plan."},creditBanner:"You have {{amount}} gift card credit on your account. It will be applied to your next invoice automatically.",upgradeGiftCardWarning:"Your current plan was purchased using a gift card. Gift card credit is not transferred on upgrades — you will be charged the prorated price."},SL={back:"Go Back"},CL="Loading...",DL={message:"Signed in as <strong>{{email}}</strong> — doesn't match the expected account.",switchAccount:"Switch account",dismiss:"Dismiss banner"},TL={topBar:mL,createWorkspacePage:gL,workspaceMenu:hL,agentEditorMenu:fL,credits:vL,community:bL,workspaceSettings:yL,referralCta:kL,sidebar:wL,giftCards:AL,common:SL,loading:CL,userMismatch:DL},EL={notifications:"Notifications",latestNews:"Latest news"},PL={loading:"Loading...",loadingMore:"Loading more...",errorLoading:"Failed to load notifications",noNotifications:"No notifications yet",noMoreNotifications:"No more notifications",noNews:"No news yet"},_L={markAllAsRead:"Mark all as read",readMore:"Read more",showLess:"Show less",upgrade:"Upgrade",percentOff:"{{percent}}% off"},xL={tabs:EL,states:PL,actions:_L},IL="Plan and billing",RL="Manage Subscription",zL={planAndBilling:"Plan & billing"},ML={details:"Subscription Details",cancelPlan:"Cancel Plan",cancelling:"Cancelling...",explorePlans:"Explore Plans",reactivatePlan:"Reactivate Plan",reactivating:"Reactivating...",upgradePlan:"Upgrade Plan",updatePayment:"Update Payment",managePlan:"Manage Plan",yourPlan:"Your Plan",creditsPerMonth:"Credits per month",price:"Price",nextBillingDate:"Next Billing Date",highlights:"Plan highlights",cancelChange:"Cancel Change",cancelTooltip:"To cancel your subscription, first cancel your scheduled downgrade",currentlyUsing:"You're currently using the <bold>{{plan}}</bold> plan",subscriptionEndsOn:"Your subscription will end on {{date}}",subscriptionRenewsOn:"Your subscription renews on {{date}}",noActiveSubscription:"No active subscription",keepSubscription:"Want to keep your subscription? Click <manageLink>Manage Plan</manageLink> and Cancel the change.",planChangeNotice:"Your plan will change to {{plan}} at the end of your current billing cycle.",cancelOnDate:"Your plan is set to cancel on {{date}}. Reactivate to keep your current credits and features.",cancelNoDate:"Your subscription is set to cancel. Reactivate to keep your current credits and features.",free:"Free",monthly:"monthly",yearly:"yearly",subscriptionCancelled:"Subscription Cancelled",staysActiveUntil:"Everything stays active until {{date}}",creditsFormat:"{{messageCredits}} message | {{integrationCredits}} integration",priceFormat:"{{symbol}}{{amount}}/{{period}}"},NL={privateApps:"Private apps",inAppCodeEditing:"In app code editing",unlimitedApps:"Unlimited apps",removeBase44Badge:"Remove Base44 badge",connectDomain:"Connect a domain",backendFunctions:"Backend functions",github2WaySync:"Github 2-way sync",customOAuth:"Custom OAuth from google console",aiModelSelection:"AI Model selection",stripeIntegration:"Stripe integration",customEmailDomain:"Custom e-mail domain",appStoreFileDownloads:"App store file downloads"},FL={title:"Payment overdue",description:"Your subscription payment is past due. Please update your payment method to restore full access to your plan features.",tryAgain:"Try again",trying:"Trying..."},LL={title:"Payment Method",manage:"Manage",noPaymentMethod:"No payment method on file",default:"Default",expires:"Expires {{month}}/{{year}}"},jL={title:"Billing Information",manage:"Manage",name:"Name",email:"Email",billingAddress:"Billing Address",noInformation:"No billing information available"},OL={title:"Billing History",noHistory:"No billing history available",loading:"Loading billing history...",loadError:"Failed to load billing data",planDescription:"{{plan}} Plan",downloadInvoice:"Download Invoice"},BL={managingBillingFor:"Managing billing for <bold>{{name}}</bold>",subscriptionRenewsOn:"Workspace subscription renews on {{date}}",noActiveSubscription:"No active workspace subscription",manage:"Manage",defaultName:"workspace",addSeats:"Add Seats",loadError:"Failed to load workspace billing history",workspaceSeats:"Workspace Seats",contactAdmin:{title:"Workspace Plan",subtitle:"Managed by your workspace",body:"Need more credits? Contact your workspace administrator to upgrade your team's plan."}},UL={portalError:"Failed to open billing portal. Please try again later or contact support.",paymentPortalError:"Failed to open payment management. Please try again.",scheduleCancelSuccess:"Subscription schedule cancelled successfully",scheduleCancelError:"Failed to cancel subscription schedule. Please try again later.",subscriptionCancelError:"Failed to cancel subscription. Please try again."},qL={title:IL,manageSubscription:RL,breadcrumb:zL,subscription:ML,features:NL,pastDue:FL,paymentMethod:LL,billingInformation:jL,billingHistory:OL,workspace:BL,toasts:UL},VL={title:"Let's talk",subtitle:"Connect with our team to see how Base44 can help your organization.",form:{firstName:"First name*",lastName:"Last name*",workEmail:"Work Email*",companyWebsite:"Company website*",role:"Role*",discussion:"What would you like to discuss?",submit:"Submit"},success:{title:"Thank you for reaching out!",description:"We've received your message and our team will get back to you within 24 hours. We're excited to help you with your Base44 journey!"}},$L={iso27001:{title:"ISO 27001",subtitle:"ISO Security Management"},soc2:{title:"SOC 2 Type II",subtitle:"SOC for Service Organizations"},gdpr:{title:"GDPR",subtitle:"Data Protection and Privacy Regulation"}},WL={fiveApps:"5 apps",unlimitedCollaborators:"Unlimited collaborators",userAnalytics:"User analytics",aiAgents:"AI Agents",limitedDb:"Limited 512MB DB",unlimitedApps:"Unlimited apps",unlimitedNumberOfApps:"Unlimited number of apps",connectDomain:"Connect a domain",connectorsIntegrations:"Connectors & integrations",backendFunctions:"Backend Functions",scaledUserAnalytics:"Scaled user analytics",privateApps:"Private apps",flexibleAiModelControl:"Flexible AI model control",removeBase44Branding:"Remove Base44 branding",inAppCodeEditing:"In-app code editing",inAppCodeEdits:"In-app code edits",freeDomainOneYear:"Free domain for 1 year",creditsToShare:"25 credits to share with a friend",githubTwoWayIntegration:"GitHub 2-way integration",githubIntegration:"GitHub integration",earlyAccessBeta:"Early access to beta features",premiumSupport:"Premium Support",sso:"SSO",prioritySupport:"Priority support",workspacePublishingControls:"Workspace publishing controls",workspaceTemplates:"Workspace templates",ipWhitelisting:"IP Whitelisting",workspaceUsageAnalytics:"Workspace usage analytics",userRolesPermissions:"User roles and permissions",dataTrainingOptOut:"Data training opt out",scim:"SCIM",creditConsumptionControl:"Credit consumption control",dedicatedAccountManager:"Dedicated Account Manager",dedicatedSolutionEngineer:"Dedicated Solution Engineer",enterpriseSupport:"Enterprise Support",customSecurityCapabilities:"Custom security capabilities",customDatabaseStorage:"Custom Database Storage",customRateLimits:"Custom rate limits",tailoredOnboarding:"Tailored onboarding & enablement",workspaceMonitoringApi:"Workspace monitoring API"},GL={unlimitedApps:"Unlimited apps",unlimitedCollaboratorsSharedCredits:"Unlimited collaborators with shared credits",customDomain:"Custom domain",removeBase44Branding:"Remove Base44 branding",builtInIntegrations:"Built-in integrations",automations:"Automations",chooseAiModel:"Choose your AI model",inAppCodeEditing:"In-app code editing",twoWayGithubSync:"2-way GitHub sync",privateTemplates:"Private templates",earlyAccessNewFeatures:"Early access to new features",prioritySupport:"Priority support"},HL={choosePlan:"Choose the plan that's right for you",usage:"Usage",back:"Back",chooseBillingCycleUpgrade:"Choose your billing cycle for upgrading to {{planName}}",selectBillingCycle:"Select a billing cycle for your {{planName}} plan",viewBilling:"View Billing",seePricing:"See Pricing"},YL={desktop:"Base44 is part of <wixLogo/> - Trusted by 250M+ people worldwide",mobile:{line1:"Base44 is part of <wixLogo/>",line2:"Trusted by 250M+ people worldwide"}},KL={badge:{recommended:"Recommended",popular:"Popular",mostPopular:"Most Popular",currentPlan:"Current Plan",discountOff:"{{discount}} off"},button:{processing:"Processing...",notAvailable:"Not Available",manageSubscription:"Manage Subscription",managePlan:"Manage Plan",currentPlan:"Current Plan",upgradePlan:"Upgrade Plan",upgradeTo:"Upgrade to {{planName}}",downgradeTo:"Downgrade to {{planName}}",downgradePlan:"Downgrade Plan",switchPlan:"Switch Plan",subscribeTo:"Subscribe to {{planName}}",bookDemo:"Book a Demo",getPlan:"Get {{planName}}"},credits:{monthly:"Monthly credits",integration:"Integration credits",monthlyLower:"monthly credits",integrationLower:"integration credits",messageCredits:"message credits",perMonth:"/mo",sharedAcrossUsers:"Shared across unlimited users",messageShort:"message",integrationShort:"integration"},features:{highlights:"Plan highlights:",allInBusinessPlus:"All in Business plus:",allInBuilderPlus:"All in Builder plus:",unlimitedAgents:"Unlimited number of agents"},free:{dailyCredits:"{{dailyCredits}} daily credits (up to {{monthlyMax}}/mo)",integrationCredits:"{{amount}} integration credits"},enterprise:{description:"Get enterprise-grade governance, scalability, and support, with a <bold>custom pricing</bold> model and a custom credit amount."}},ZL={offTiers:"30% off tiers",currentPlan:"Current plan",popular:"Popular",messageCredits:"message credits",integrationCredits:"integration credits",perMonth:"/mo",placeholder:"Select credits",footer:{cantFind:"Can't find a plan that fits?",contactUs:"Contact Us"}},JL={button:{cancel:"Cancel",confirmUpgrade:"Confirm Upgrade",confirmDowngrade:"Confirm Downgrade",confirmSwitch:"Confirm Switch",processing:"Processing...",continue:"Continue"},upgrade:{title:"Confirm Subscription Upgrade",upgradeDescription:"You are about to upgrade to the {{planName}} plan for <price/>. Your subscription will be updated immediately and you'll be charged a prorated amount for the remainder of your billing cycle.",upgradeDescriptionYearly:"You are about to upgrade to the {{planName}} yearly plan for <price/>. Your subscription will be updated immediately and you'll be charged a prorated amount for the remainder of your billing cycle.",upgradeDescriptionShort:"You are about to upgrade to the {{planName}} plan for <price/>. Your subscription will be updated immediately and you'll be charged a prorated amount."},downgrade:{title:"Confirm Subscription Downgrade",description:"You are about to downgrade to the {{planName}} plan for {{price}}/mo. This change will take effect at the end of your current billing cycle."},switch:{title:"Switch Plan",switchDescription:"Switching to the {{planName}} plan will update your available features and set your monthly limits to <bold>{{messageCredits}} message credits and {{integrationCredits}} integration credits.</bold>",nextBillingDate:"These changes will take effect on {{date}}, at the start of your next billing cycle.",nextBillingCycle:"These changes will take effect at the start of your next billing cycle."},manageSubscription:{title:"Manage Your Subscription",description:"Choose how you'd like to manage your {{planName}} subscription.",upgradeToYearly:"Upgrade to Yearly",upgradeToYearlySavings:"Save money and get a free domain + 25 credits to share",upgradeToYearlySavingsStarter:"Save money and get 25 credits to share",managePayments:"Manage Payments",managePaymentsDescription:"Update payment method, view invoices and more",managePaymentsDescriptionAlt:"Update payment method, view invoices, and more"},upgradeToYearly:{titleV1:"Confirm Subscription Upgrade",titleV2:"Upgrade Plan",descriptionV2:"Once you upgrade, you'll be charged a prorated amount as a result of the time left in your current plan. Starting on your next billing date, you'll be charged for the full plan price of {{price}} x 12 months.",benefitsTitle:"🎁 Yearly Benefits",freeDomain:"Get a free domain for a year",shareCredits:"25 credits to share with friends",betterValue:"Better value with yearly pricing"}},QL={title:"Frequently Asked Questions",whatIsBase44:{question:"What is Base44?",answer:{description:"Base44 is an AI-powered platform that allows you to build custom software applications without coding. It uses natural language processing to understand your requirements and generate functional software based on your descriptions.",accessibility:"Our platform is designed to be user-friendly and accessible to non-technical users, enabling you to create powerful applications through simple conversations with our AI."}},freePlan:{question:"What's included in the free plan?",answer:{allowances:"The free plan gives you a daily allowance of 5 messages and a monthly cap of 25 messages total. You also get 100 integration credits to experiment with various integrations like authentication, database, and analytics.",coreAccess:"With the free plan, you have access to all core integration types, allowing you to build fully functional applications with user authentication, data storage, and more - all at no cost."}},integrationCredits:{question:"What are integration credits?",answer:{definition:"Integration credits are used to access Base44's various integrations within your application.",capabilities:"These integrations enhance your app's functionality, including LLMs, file uploading, image understanding, image generation, email sending, SMS sending, database querying, and many more. The number of integration credits in your plan determines how many of these requests you can make per month.",expiration:"Unused credits expire at the end of your monthly billing cycle (on your reset date).",learnMore:"Learn more about how credits are used in the Knowledge Base."}},appTypes:{question:"What types of applications can I build with Base44?",answer:{examples:"Base44 is versatile and can be used to build a wide range of applications, including but not limited to: fully functional SaaS products, backoffice tools, personal productivity apps, customer portals, and business process automation tools.",prototyping:"You can also use it for rapid prototyping and creating MVPs, allowing you to validate your ideas quickly without investing in expensive development resources."}},ownership:{question:"Who owns the applications created with Base44?",answer:{yourProperty:"Between you and Base44, all applications and content generated through our platform shall be considered your property. We make no ownership claims over anything you create using Base44.",intellectualProperty:"Your intellectual property remains yours, and you're free to use, modify, distribute, or sell the generated applications as permitted by law."}},deployment:{question:"How are Base44 applications deployed?",answer:{instantAccess:"With Base44, deployment is incredibly simple. Your applications are instantly usable and shareable as soon as you create them. Simply use and share the URL of your app with others.",noHosting:"There's no need for separate hosting or deployment steps, making it incredibly easy to get your application up and running quickly."}},planLimits:{question:"What happens if I reach my plan limits?",answer:{limitations:"When you reach your daily message limit, you'll need to wait until the next day to send more messages. If you hit your monthly limit, you won't be able to send additional messages or make integration requests until the beginning of your next billing cycle.",upgradeOption:"To avoid interruptions in your app development and usage, you can upgrade to a higher tier plan with increased limits at any time from your billing dashboard."}}},XL={pendingChange:{title:"Pending Subscription Change",message:"You have a subscription change to the {{tierName}} plan scheduled to take effect at the end of your current billing cycle.",subMessage:'Note: To cancel your subscription, first cancel this change, then use "manage payments" to cancel.',cancelChange:"Cancel Change",cancelling:"Cancelling..."},cancellation:{title:"Subscription Cancellation Scheduled",message:"Your subscription will end on {{endDate}}. Until then, you have full access to all features.",subMessage:"Want to keep your subscription? You can reactivate it with one click.",managePayments:"Manage Payments",processing:"Processing..."}},e0={currentPlan:"Your current plan is {{displayName}},",withCredits:"with {{messageCredits}} message credits & {{integrationCredits}} integration credits."},t0={title:"Base44 benefits:",responsiveVisualEditor:"Responsive visual editor",builtInBackend:"Built-in backend",userManagement:"User management"},a0={title:"Subscription payment overdue",tryAgain:"Try again",trying:"Trying...",updatePaymentMethod:"Update Payment Method",description:"Your last payment didn't go through. Try again or update your payment method to restore full access to your plan."},n0={error:"Error",success:"Success",checkoutError:"Failed to create checkout session. Please try again later.",subscriptionUpdated:"Subscription Updated",downgradeScheduled:"Your subscription has been scheduled to downgrade at the end of your billing cycle.",upgradeSuccess:"Your subscription has been upgraded successfully. Changes will be reflected shortly.",updateError:"Failed to update subscription. Please try again later.",portalError:"Failed to open billing portal. Please try again later.",scheduleCancelSuccess:"Subscription schedule cancelled successfully",scheduleCancelError:"Failed to cancel subscription schedule. Please try again later.",paymentPortalError:"Failed to open payment management. Please try again."},i0={loadError:"Failed to load workspace billing information",loadErrorAlert:"Unable to load workspace billing information. Please try again later.",seatTypePlan:"{{seatType}} Plan",currentPlanContact:"You're currently on the {{seatType}} plan. To make changes, please contact your workspace {{adminType}}.",workspaceOwner:"Workspace owner:",workspaceAdmin:"Workspace admin:",viewerAccess:"Viewer Access",viewerAccessDescription:"You currently have viewer access in this workspace. To get a seat with full access, please contact your workspace {{adminType}}.",adminAccessMessage:"<strong>Administrator Access:</strong> Visit the <a>workspace dashboard</a> to manage seats, billing, and team members.",adminTypes:{owner:"owner",administrator:"administrator"}},r0={loadError:"Unable to load workspace information. Please try again later.",workspacePlan:"Workspace plan:",renews:"Renews:",workspaceOwner:"Workspace Owner",contactOwner:"For billing changes or subscription questions, contact your workspace owner.",ownerLabel:"Workspace owner:",adminAccessMessage:"<strong>Administrator Access:</strong> Visit the <a>workspace members</a> page to manage members.",billingManagedByOwner:"Billing is managed by your workspace owner. Contact the owner listed above for any billing-related questions.",roles:{owner:{title:"Owner",description:"Full access to workspace billing, settings, and member management."},admin:{title:"Admin",description:"Can manage workspace settings and members, but cannot modify billing."},editor:{title:"Editor",description:"Can create and edit apps within this workspace."},viewer:{title:"Viewer",description:"Can view apps in this workspace with read-only access."},member:{title:"Member",description:"Team member with access to workspace apps."},guest:{title:"Guest",description:"External collaborator with access to specific apps in this workspace."}}},o0={title:"Security and Compliance",iso:{title:"ISO/IEC 27001",subtitle:"ISO/IEC Security Management"},soc2:{title:"SOC 2 Type II",subtitle:"SOC for Service Organizations"},gdpr:{title:"GDPR",subtitle:"Data Protection and Privacy Regulation"}},s0={title:"Base44 for Enterprise",subtitle:"Empower large organizations to build solutions that fit their teams perfectly, safely and at scale",contactUs:"Contact Us",features:{onboarding:{title:"Onboarding & Training",description:"Tailored onboarding plans combined with live training and resources, designed to help admins and end users adopt quickly."},accountTeam:{title:"Dedicated Account Team",description:"Work with a named account manager and solution engineer, providing direct guidance, escalations, and roadmap alignment."},prioritySupport:{title:"Priority support, guaranteed",description:"Get guaranteed priority assistance and defined response times from a dedicated support channel."},capabilities:{title:"Enterprise-Grade Capabilities",description:"Security, compliance, management, and monitoring features - providing the control and flexibility required at scale."}}},l0={yearly:"Yearly",monthly:"Monthly",yearlyInline:"yearly",monthlyInline:"monthly",monthlyCredits:"Monthly credits",integrationCredits:"Integration credits",priceSuffixYearly:" × 12 months",priceSuffixMonthly:" / every month",off:"OFF",save:"SAVE",discountBadge:"{{discount}} OFF",saveBadge:"SAVE {{amount}}",planNotFound:"Plan pricing not available. Please go back and try again.",upgradeDialogTitle:"Confirm Subscription Upgrade",upgradeDialogDescription:"You are about to upgrade to the {{planName}} plan for <price/>/mo. Your subscription will be updated immediately and you'll be charged a prorated amount for the remainder of your billing cycle.",noteMonthlyExcludes:"NOTE: Monthly subscription doesn't include:",whatsIncluded:"What's included with the {{period}} plan",chooseYearly:"Choose a <yearlyLink>yearly</yearlyLink> subscription to get the most from your premium plan",yearlyFeatures:{discount:"Enjoy a special discount and save money",freeDomain:"Get a free domain for 1 year",shareCredits:"Receive 25 credits to share with a friend"},monthlyFeatures:{discount:"Special discount and savings",freeDomain:"Free domain for 1 year",shareCredits:"25 credits to share with a friend"},planNotAvailable:"Plan pricing not available. Please try again.",goBack:"Go Back",continueToCheckout:"Continue to Checkout",confirmSubscriptionUpgrade:"Confirm Subscription Upgrade",upgradeDescription:"You are about to upgrade to the {{planName}} plan for <strikethrough>{{originalPrice}}</strikethrough>{{price}}/mo. Your subscription will be updated immediately and you'll be charged a prorated amount for the remainder of your billing cycle.",cancel:"Cancel",confirmUpgrade:"Confirm Upgrade",processing:"Processing...",studentDiscountFootnote:"Offer applies to the first year (12 months) of a new Starter plan. One-time use per user; discount cannot be reactivated following cancellation."},c0={bannerTitle:"Student or teacher? Get up to {{percent}}% off Starter plan",bannerSubtitle:"Verify your university email to unlock discounted pricing",verifiedWith:"Verified with {{email}} - up to {{percent}}% off",starterPlan:"Starter Plan",active:"Active",dialogTitle:"Student discount",surveyTitle:"Tell us about yourself",alreadyActiveDesc:"Your student discount is already active.",emailStepDesc:"Verify your university email to unlock student pricing.",codeStepDesc:"We sent a 6-digit code to {{email}}",surveyStepDesc:"Just a few quick questions to complete your verification.",benefitDiscount:"Up to {{percent}}% off",benefitDiscountDetail:"on the Starter plan",benefitAccess:"Full access",benefitAccessDetail:"to all Starter features",benefitClaimOnce:"Claim once",benefitClaimOnceDetail:"use anytime on Starter",alreadyApplied:"Your student discount is already applied",alreadyAppliedDesc:"Verified with {{email}}. Discounted pricing is shown on eligible plans above.",gotIt:"Got it",emailPlaceholder:"you@university.edu",emailHint:"We accept .edu, .ac.uk, .ac.il, and other university domains.",sending:"Sending...",sendCode:"Send verification code",codePlaceholder:"Enter 6-digit code",verifying:"Verifying...",verifyCode:"Verify code",changeEmail:"Change email",resendCooldown:"Resend code ({{seconds}}s)",resendCode:"Resend code",role:"Role",student:"Student",teacher:"Teacher",intendedUseLabel:"What do you plan to use Base44 for?",intendedUsePlaceholder:"e.g., Class project, research tool, thesis...",fieldOfStudy:"What is your field of study?",fieldOfTeaching:"What is your field of teaching?",selectField:"Select field of study...",searchFields:"Search fields...",other:"Other",specifyField:"Please specify...",graduationDate:"Expected graduation date",month:"Month",year:"Year",activating:"Activating...",verifyingEmail:"Verifying email...",activateDiscount:"Activate discount",errorNoEmail:"Please enter your university email address.",errorInvalidEmail:"Please enter a valid email address.",errorSendFailed:"Failed to send verification code. Please try again.",errorEmailAlreadyClaimed:"This university email is already linked to another account.",errorNoCode:"Please enter the 6-digit code from your email.",errorInvalidCode:"Invalid or expired code. Please try again.",errorNoIntendedUse:"Please tell us what you plan to use Base44 for.",errorNoField:"Please select your field of study.",errorNoFieldOther:"Please specify your field of study.",errorNoGraduation:"Please select your expected graduation date.",toastActivatedTitle:"Student discount activated",toastActivatedDesc:"Your student pricing is now applied to eligible plans. Scroll up to view updated prices.",errorActivateFailed:"Failed to activate discount. Please try again.",toastResentTitle:"Code resent",toastResentDesc:"A new verification code has been sent to your email.",errorResendFailed:"Failed to resend code. Please wait a moment and try again."},d0="Your current plan was purchased using a gift card. Gift card credit is not transferred on upgrades — you will be charged the prorated price.",u0={title:"Purchase Successful",redirecting:"Redirecting you back to the app in {{seconds}}s...",button:"Return to App"},p0={modal:VL,certificates:$L,features:WL,borderTag:GL,header:HL,messageLabel:YL,card:KL,dropdown:ZL,dialog:JL,faq:QL,notices:XL,manageSubscription:e0,benefits:t0,overduePayment:a0,toasts:n0,workspaceBilling:i0,workspaceRoles:r0,security:o0,enterprise:s0,periodSelector:l0,studentDiscount:c0,upgradeGiftCardWarning:d0,returnToApp:u0},m0="Invite Friends & Earn Credits",g0="Invite Friends &<br/>Earn Credits",h0="Invite & Earn Credits",f0="Share your link and earn {{credits}} credits when friends publish their first app",v0={title:"Amazing! You've reached the maximum referrals",description:"You can refer up to {{maxReferrals}} friends total",extra:"({{extra}} additional won't earn credits)"},b0={tryAgain:"Try again",copied:"Copied to clipboard!",copyButton:"Copy",copiedButton:"Copied"},y0={title:"How it Works",shareLink:"Share your unique referral link with friends",signupBonus:"They get <bold>{{credits}} credits</bold> when they sign up",publishReward:"You earn <bold>{{credits}} credits</bold> when they publish their first app"},k0="Your Referrals ({{current}}/{{max}})",w0={registered:"Registered",earned:"Earned"},A0={back:"Back",close:"Close",srTitle:"Referral Program",baseDayBadge:"Base44 Day",creditsCount:"{{credits}} credits",earnCredits:"Earn {{credits}} credits",termsAndConditions:"Terms & Conditions",termsDescription:"Referral program terms and conditions"},S0={title:"Terms & Conditions",eligibility:{title:"Eligibility",newUsersOnly:"Only brand-new users can join through this referral offer. Existing accounts aren't included.",shareResponsibly:"We ask that you share your referral link responsibly. Posting it in irrelevant or spammy places may lead to removal from the program."},credits:{title:"Referral Credits",earnOnPublish:"You earn {{credits}} credits when a referred friend publishes their first app",bonusOnSignup:"Referred friends receive {{credits}} bonus credits upon registration",maxPerAccount:"Maximum of 5 successful referrals per account",noCashValue:"Credits have no cash value and cannot be transferred"},restrictions:{title:"Restrictions",voidFraudulent:"Base44 reserves the right to void fraudulent referrals",nonTransferable:"Referral codes are non-transferable"},footer:"Base44 reserves the right to modify or terminate this referral program at any time. Changes will be communicated through the platform."},C0={title:m0,titleDesktop:g0,titleMobile:h0,subtitle:f0,maxReached:v0,link:b0,howItWorks:y0,yourReferrals:k0,status:w0,dialog:A0,terms:S0},D0={title:"Spotlight",subtitle:"Explore standout applications and websites created with Base44",loading:"Loading spotlight…",errorMessage:"Unable to load spotlight. Please try again later.",empty:"No spotlight apps yet."},T0={title:"Error",description:"Failed to load spotlight apps."},E0={label:"Today's Spotlight",byCreator:"by {{creator}}",screenshotAlt:"{{appName}} screenshot",logoAlt:"{{appName}} logo"},P0={"beautifully-designed":"Beautifully Designed","loved-by-the-community":"Loved by the Community",saas:"SaaS",education:"Education","e-commerce":"e-Commerce",websites:"Websites"},_0={screenshotAlt:"{{appName}} screenshot",logoAlt:"{{appName}} logo",viewDetailsLabel:"View Details",viewDetailsAriaLabel:"View details for {{appName}}"},x0={backButton:"Spotlight",byCreator:"By {{creator}}",iframeTitle:"{{appName}} preview",previewNotAvailable:"Preview not available"},I0={ariaLabel:"Submit your app to Spotlight",heading:"Want your app to appear here?",description:"Show what you've built in Base44. Submit to Spotlight and inspire the community.",buttonText:"SUBMIT YOUR APP"},R0={title:"Submit your app to Spotlight",selectAppSubtitle:"Choose the app you want to nominate for the Spotlight page.",detailsSubtitle:"Tell us why your app should be featured on the Spotlight page.",back:"Back",cancel:"Cancel",next:"Next",searchPlaceholder:"Search for apps...",aboutLabel:"About this app",aboutPlaceholder:"Tell us something interesting about your app that users should know – special features, smart tricks you used, or anything the community would enjoy discovering",screenshotLabel:"Screenshot <optional>(optional)</optional>",screenshotHint:"PNG, JPG, or WebP — min 800×450px, up to 2 MB",submit:"Submit",submitting:"Submitting…",submitError:"Failed to submit spotlight request.",successAlreadyInSpotlight:"Already in spotlight",successRequestReceived:"Request received",successDescription:`We'll review "{{appName}}" for spotlight. You'll hear back soon.`},z0={viewApp:"View App",share:"Share",upvote:"Upvote",alreadyUpvoted:"Already upvoted",thankYouForVote:"Thanks for your vote!",voteError:"Could not register vote",voteErrorDescription:"Please try again later.",linkShared:"Link shared",linkCopied:"Link copied to clipboard",shareError:"Could not share"},M0={label:"Did you know?"},N0={editedAgo:"edited {{timeAgo}}",editedRecently:"Edited recently",noAppsFound:"No apps found",noAppsAvailable:"No apps available",loadMore:"Load more apps",loading:"Loading…"},F0={page:D0,fetchError:T0,featured:E0,sections:P0,card:_0,detailModal:x0,submitBanner:I0,requestModal:R0,actions:z0,didYouKnow:M0,appPicker:N0},L0={page:{title:"Help & Support",subtitle:"Get the help you need to build amazing applications with BASE44"},getStarted:"Get Started",cards:{documentation:{title:"Documentation",description:"Explore comprehensive guides, tutorials, FAQs, and best practices for building with Base44."},discord:{title:"Discord Community",description:"Connect with fellow builders and get instant help from our active community."},supportTicket:{title:"Open Support Ticket",description:"Submit a detailed support ticket and get personalized assistance."}},appContext:{title:"App-Specific Support",description:"Support requests will be associated with app: <appId>{{appId}}</appId>"},quickActions:{title:"Quick Actions",subtitle:"Manage your support experience",myTickets:{title:"My Support Tickets",description:"View and manage your existing support tickets"},communityForum:{title:"Community Forum",description:"Our brand-new reddit community"}}},j0={fallbackTitle:"Support Conversation",appLink:"App"},O0={title:"My Support Tickets",backToSupport:"Back to Support",showingTicketsForApp:"Showing tickets for App: <app>{{appId}}</app>",filteredByApp:"Filtered by App: <app>{{appId}}</app>"},B0={title:"Submit support ticket",titleResume:"Submit a support ticket"},U0={helpMessage:"Need immediate help? <normal>Check our </normal><docsLink>documentation</docsLink><normal> or join our </normal><discordLink>Discord community</discordLink>."},q0={heading:"Continue your support request?",description:"You started creating a support ticket earlier.",chooseHowToProceed:"Choose how you'd like to proceed:",continueWhereLeftOff:"Continue where you left off",continueWhereLeftOffDesc:"Restore your previous inputs and continue from the last step.",startNewTicket:"Start a new ticket",startNewTicketDesc:"Discard the draft and start a new support request.",continue:"Continue"},V0={tellUsAboutYourIssue:"Tell us about your issue",whatTypeOfIssue:"What type of issue are you experiencing?",selectApp:"Select the app related to your issue"},$0={instruction:"Please share what you were doing, what went wrong, how we can reproduce it.",descriptionLabel:"Description",descriptionPlaceholder:`Example:
• What you were trying to do
• What happened instead
• Any error message
• Steps to reproduce (if relevant)`,attachmentsLabel:"Attachments",viewApp:"View app",dragAndDropFiles:"Drag and drop files here",dropFilesHere:"Drop files here",browseFiles:"Browse files",uploading:"Uploading...",unsupportedFileType:'File type "{{type}}" is not supported. Supported types: jpg, jpeg, png, pdf.',invalidFile:"Invalid file",failedToUpload:"Failed to upload file"},W0={analyzingIssue:"Analyzing your issue...",categoryFullDescription:"It looks like your issue falls into one of these categories.<br/>Select the one that fits best — it helps us guide you to the right solution."},G0={authentication:"Authentication",billing:"Billing",bug_report:"Bug Report",domain:"Domain",integrations_and_backend_functions:"Integrations & Backend",chat_issues:"Chat Issues",security:"Security",social_post_bonus_credits:"Social Post Bonus Credits",superagent:"Superagent",other:"Other"},H0={searchPlaceholder:"Search for apps...",addAppLink:"Add app link",addAppLinkPlaceholder:"e. g., https://your-app-url.com or https://yourapp.base44.app",invalidUrl:"Please enter a valid URL starting with http:// or https://",noAppsFound:"No apps found",noAppsAvailable:"No apps available",loadingMore:"Loading...",loadMore:"Load more apps",edited:"edited {{time}}"},Y0={loading:"Loading conversation...",errorTitle:"Error Loading Conversation",noConversationTitle:"No Conversation Found",noConversationMessage:"This conversation doesn't exist or you don't have access to it.",tryAgain:"Try Again",ticketFallbackTitle:"Support Ticket",categoryFallback:"General",closeTicket:"Close Ticket",closing:"Closing...",aiAssistantInfo:"AI assistant · May make mistakes",talkToSpecialist:"Talk to a support specialist",handledBySpecialist:"Handled by a support specialist",notifyWhenResponds:"Notify me when support responds",ticketResolvedTitle:"This ticket has been resolved",ticketResolvedMessage:"Please create a new ticket for additional support",conversationClosed:"This conversation is closed",aiHandlingTicket:"AI agent is handling this ticket. Click <bold>Take over</bold> to reply manually.",typeResponse:"Type your response...",typeMessage:"Type your message...",failedLoadConversation:"Failed to load conversation. Please try again.",ticketAlreadyResolved:"This ticket has been resolved. Please create a new ticket for additional support.",failedCloseTicket:"Failed to close ticket. Please try again.",failedEscalate:"Failed to escalate ticket. Please try again.",confirmCloseTicket:"Are you sure you want to close this ticket? This will mark it as resolved.",premiumSupportTier:"Premium Support",standardSupportTier:"Standard Support",premiumSupportMessage:"Offline support, prioritized reply within 48h",standardSupportMessage:"Offline support, reply within 48h",templates:{label:"Quick Templates",less:"Less"},draft:{title:"AI Suggested Response",collapse:"Collapse",viewAll:"View All",use:"Use"},escalateModal:{title:"Request human support",description:"Your ticket will be transferred to our support team for a personalized response.",cancel:"Cancel",requesting:"Requesting...",requestButton:"Request human support"}},K0={supportTeam:"Support Team",attachedFile:"Attached file",translatedFrom:"Translated from {{language}}",internalNote:"Internal Note",emptyTitle:"Start the conversation",emptyMessage:"Send a message to begin your support conversation",translating:"Translating...",showingTranslations:"Showing translations",translateToEnglish:"Translate to English",confirmDeleteMessage:"Are you sure you want to delete this message?",failedDeleteMessage:"Failed to delete message. Please try again.",failedTranslate:"Failed to translate messages. Please try again.",attachedContent:"Attached content",videoNotSupported:"Your browser doesn't support video playback.",noteBy:"by {{name}}",adminFallback:"Admin",events:{unknownActor:"Someone",statusChange:"{{actor}} changed status to {{status}}",unassigned:"{{actor}} unassigned the ticket",assigned:"{{actor}} assigned to {{assignee}}",reassigned:"{{actor}} reassigned to {{assignee}}",escalated:"{{actor}} escalated",removedEscalation:"{{actor}} removed escalation",categoryChange:"{{actor}} changed category to {{category}}",labelChangeAdded:"{{actor}} added {{labels}}",labelChangeRemoved:"{{actor}} removed {{labels}}",labelChangeBoth:"{{actor}} added {{added}}; removed {{removed}}",updated:"{{actor}} updated ticket",markedAbusive:"{{actor}} marked content as abusive",clearedAbusive:"{{actor}} cleared abusive content flag"}},Z0={uploading:"Uploading...",uploadFiles:"Upload files",fileTypeError:"Please request support for additional file types at <link>feedback.base44.com</link>"},J0={open:"Open",closed:"Closed",all:"All"},Q0={open:"Open",resolved:"Resolved"},X0={noOpenTickets:"No Open Tickets",noClosedTickets:"No Closed Tickets",noTickets:"No Tickets",descriptionOpen:"You don't have any open support tickets at the moment.",descriptionClosed:"No closed tickets found.",descriptionAll:"You haven't submitted any support tickets yet."},ej={appLabel:"App: {{appId}}",dateNotAvailable:"Not available"},tj={loadingTitle:"Error Loading Tickets",loadingFailed:"Failed to load support tickets. Please try again.",ticketLimitTitle:"Ticket Limit Reached",ticketLimitDescription:"There are more tickets than can be loaded. Only the top 1000 most recent tickets were loaded."},aj={free:"Free"},nj={cancel:"Cancel",back:"Back",skip:"Skip",continue:"Continue",submitting:"Submitting...",refresh:"Refresh",newTicket:"New Ticket",createNewTicket:"Create New Ticket",tryAgain:"Try Again",bannedAlert:"Your access to Base44 Support has been restricted due to a violation of the Base44 Support Terms of Use. Please refer to the email we sent you for more details."},ij={descriptionRequired:"Please add a description",descriptionTooShort:"Please add a bit more detail. Minimum is 20 characters.",appRequired:"Choose one of your apps or add a link so we know where the issue is happening.",submissionFailed:"Failed to submit your support ticket. Please try again."},rj={dailyLimitReached:"Daily limit reached",somethingWentWrong:"Something went wrong",dailyLimitMessage:"Daily support conversation limit exceeded. You can create up to {{limit}} conversations per day with your current subscription.",tryAgain:"Try again",cancel:"Cancel",close:"Close"},oj={help:L0,sidebar:j0,page:O0,modal:B0,footer:U0,resumeStep:q0,steps:V0,tellUsAboutYourIssue:$0,whatTypeOfIssue:W0,categories:G0,selectApp:H0,chat:Y0,messages:K0,input:Z0,tabs:J0,status:Q0,emptyState:X0,ticketCard:ej,errors:tj,tiers:aj,actions:nj,validation:ij,submissionError:rj},sj={sectionTitle:"Configuración de cuenta",sectionDescription:"Administra tus preferencias y configuración personal de cuenta.",heading:"Cuenta",email:{label:"Correo electrónico",placeholder:"Sin correo electrónico"},fullName:{label:"Nombre completo",placeholder:"Ingresa tu nombre completo",profileHint:"Así aparecerás en tu <profileLink>perfil</profileLink> público de Base44."},phoneNumber:{label:"Número de teléfono",placeholder:"Ingresa tu número de teléfono",smsConsent:"Al ingresar tu número de teléfono, aceptas recibir notificaciones SMS de nuestra parte."},defaultAgents:{label:"Agentes predeterminados",toggleLabel:"Habilitar agentes para nuevas apps por defecto",description:"Cuando está habilitado, las nuevas apps tendrán agentes activados automáticamente, permitiéndoles ejecutar tareas autónomas y usar herramientas."},defaultTestData:{label:"Datos de prueba predeterminados",toggleLabel:"Habilitar datos de prueba para nuevas apps por defecto",description:"Cuando está habilitado, las nuevas apps inician con datos de prueba activados para que puedas probar cambios de forma segura sin afectar los datos en vivo.",upgradeRequired:"Esta función requiere el plan Builder o superior.",seePlans:"Ver planes"},apiKey:{label:"Clave API",copyTitle:"Copiar clave API",copied:"¡Copiado!",regenerate:"Regenerar",regenerating:"Regenerando...",regenShort:"Regen.",regenShortLoading:"Regen...",description:"Tu clave API proporciona acceso a tu espacio de trabajo. No la compartas con otros.",notGenerated:"Aún no generada — haz clic en Regenerar"},backofficeApiKey:{title:"Clave API del Backoffice",description:"Usa esta clave para autenticar peticiones programáticas al servicio de backoffice. No funciona en el servicio de plataforma. Mantenla en secreto.",yourKey:"Tu clave API del backoffice",copySuccess:"Clave API copiada",copyError:"Error al copiar la clave API",regenSuccess:"Clave API del backoffice regenerada",regenError:"Error al regenerar: {{error}}",warning:"Regenerar invalida la clave anterior inmediatamente. Los clientes que la usen deberán actualizarse.",existsPlaceholder:"•••••••••••••••••• (clave existe — solo se almacena el hash; regenera para ver una nueva)",showOnceWarning:"Copia esta clave ahora. Se muestra solo una vez y no puede recuperarse después."},unsavedChanges:"Cambios sin guardar",discard:"Descartar",save:"Guardar",saving:"Guardando...",saveSuccess:"¡Configuración de cuenta actualizada correctamente!",saveError:"No se pudo actualizar la configuración de cuenta: {{error}}",unknownError:"Error desconocido",apiKeyCopySuccess:"¡Clave API copiada al portapapeles!",apiKeyCopyError:"No se pudo copiar la clave API",apiKeyRegenSuccess:"¡Clave API regenerada correctamente!",apiKeyRegenError:"No se pudo regenerar la clave API: {{error}}"},lj={title:"Autenticación de dos factores",description:"Agrega una capa extra de protección al iniciar sesión. Se te pedirá un código cada vez que inicies sesión.",twoFactorEnabled:"La autenticación de dos factores está habilitada.",statsLine:"{{used}}/{{total}} códigos de recuperación usados · {{devices}} dispositivos de confianza",totp:{name:"Aplicación de autenticación",description:"Usa una aplicación como Google Authenticator o Duo para generar códigos de inicio de sesión seguros.",setupTitle:"Configura tu aplicación de autenticación",scanQr:"Escanea el código QR con tu aplicación de autenticación",cantScan:"¿No puedes escanear el código? Ingrésalo manualmente:",enterCodeTitle:"Ingresa un código de tu aplicación de autenticación",enterDigitCode:"Ingresa el código de 6 dígitos",codesRefresh:"Los códigos se actualizan cada 30 segundos.",qrCodeAlt:"Código QR para configurar la aplicación de autenticación",enabled:"Aplicación de autenticación habilitada",disabled:"Aplicación de autenticación deshabilitada"},sms:{name:"Mensajes de texto",description:"Recibe códigos de inicio de sesión enviados a tu teléfono por mensaje de texto.",enterPhone:"Ingresa tu número de teléfono",phoneLabel:"Número de teléfono",phonePlaceholder:"(555) 000-0000",verificationWillBeSent:"Se enviará un código de verificación a este número para confirmar que es tuyo.",verifyPhone:"Verificar tu número de teléfono",codeSentTo:"Se envió un código de 6 dígitos a {{phone}}",standardRates:"Pueden aplicarse tarifas estándar de mensajes y datos.",invalidPhone:"Número de teléfono inválido. Verifica el número e intenta de nuevo.",enabled:"MFA por mensaje de texto habilitado",disabled:"Mensajes de texto deshabilitados"},recovery:{saveTitle:"Guarda tus códigos de recuperación",saveDescription:"Guarda estos códigos de recuperación en un lugar seguro. Los necesitarás si pierdes acceso a tu teléfono o aplicación de autenticación.",eachCodeOnce:"Cada código de recuperación solo se puede usar una vez. Guárdalos en un lugar seguro y accesible.",eachCodeOnceShort:"Cada código de recuperación solo se puede usar una vez.",copyAll:"Copiar todo",download:"Descargar",copied:"Copiado",enterRecoveryCode:"Ingresa el código de recuperación"},disable:{title:"Deshabilitar autenticación de dos factores",turnOff:"¿Desactivar la autenticación de dos factores?",turnOffDescription:"Para continuar, necesitarás verificar con un código enviado a tu teléfono o un código de recuperación.",verifyWithPhone:"Verificar con un código enviado a tu teléfono",verifyWithApp:"Ingresa un código de tu aplicación de autenticación",enterRecoveryToDisable:"Ingresa uno de tus códigos de recuperación para deshabilitar la autenticación de dos factores.",useRecoveryCode:"Usar código de recuperación",verifyViaApp:"Verificar vía App",verifyAndDisable:"Verificar y deshabilitar"},regenerate:{title:"Regenerar códigos de recuperación",trustedDevicesCount_one:"{{count}} dispositivo de confianza",trustedDevicesCount_other:"{{count}} dispositivos de confianza",codesUsed:"{{used}}/{{total}} códigos de recuperación usados",descriptionChoose:"Elige un método de verificación para regenerar tus códigos de recuperación. Esto invalidará todos los códigos existentes.",descriptionSms:"Enviaremos un código de verificación a tu teléfono para confirmar.",descriptionSmsVerify:"Ingresa un código de verificación para regenerar tus códigos de recuperación. Esto invalidará todos los códigos existentes.",descriptionTotpVerify:"Ingresa un código de verificación para regenerar tus códigos de recuperación. Esto invalidará todos los códigos existentes.",verifyWithApp:"Ingresa un código de tu aplicación de autenticación",verifyWithSms:"Verificar con un código enviado a tu teléfono",smsMethodLabel:"Mensaje SMS",enterCodeLabel:"Ingresa el código de 6 dígitos",helperTotp:"Abre tu aplicación de autenticación para obtener el código",helperSms:"Ingresa el código enviado a tu teléfono",verifyAndRegenerate:"Verificar y regenerar",enterCode:"Ingresar código"},reauth:{title:"Verifica tu identidad",description:"Por seguridad, verifica tu identidad antes de agregar {{method}} como método de inicio de sesión.",actionTotp:"Ingresa el código de 6 dígitos de tu aplicación de autenticación.",actionSms:"Ingresa el código enviado a {{phone}}."},common:{enable:"Habilitar",enabled:"Habilitado",cancel:"Cancelar",close:"Cerrar",back:"Atrás",done:"Listo",verify:"Verificar",sendCode:"Enviar código",regenerate:"Regenerar",regenerateRecoveryCodes:"Regenerar códigos de recuperación",disable:"Deshabilitar",continue:"Continuar",fullCodeError:"Ingresa el código completo de 6 dígitos",fullRecoveryError:"Ingresa el código de recuperación completo",enterVerificationCode:"Ingresa un código de verificación",didntReceive:"¿No recibiste un código?",resendIn:"Reenviar en {{seconds}}s",resend:"Reenviar",verificationSent:"Código de verificación enviado",failedToSetup:"Error al configurar la aplicación de autenticación",failedToSendCode:"Error al enviar el código",failedToResend:"Error al reenviar",invalidCode:"Código inválido",lockedOut:"Demasiados intentos fallidos. Inténtalo de nuevo en {{minutes}} min.",lockedOutShort:"Bloqueado temporalmente ({{minutes}} min)"}},cj={section:{title:"Eliminar cuenta",description:"Elimina tu cuenta junto con todos los datos, configuraciones y actividad asociados.",accessNote:"Tendrás acceso a tu cuenta durante 1 semana después de solicitar la eliminación.",deleteButton:"Eliminar cuenta",enterpriseTooltip:"La eliminación de cuenta no está disponible para usuarios empresariales. Comunícate con el administrador de tu organización."},pendingRequest:{willBeDeleted:"Tu cuenta, suscripción, apps propias y espacios de trabajo se eliminarán en <bold>{{daysRemaining}} días</bold> ({{formattedEnd}}) y la eliminación será permanente a partir de esa fecha. Hasta entonces puedes cancelar la eliminación.",processing:"La eliminación está siendo procesada...",cancelButton:"Cancelar solicitud",renewalWarning:"Si tu suscripción está programada para renovarse durante estos {{daysRemaining}} días, la renovación ocurrirá de todos modos a menos que canceles la suscripción manualmente antes de la fecha de renovación"},toast:{submitSuccess:"Solicitud de eliminación enviada. La revisaremos y procesaremos después del período de gracia de 7 días.",submitError:"No se pudo enviar la solicitud de eliminación. Por favor, inténtalo de nuevo.",cancelSuccess:"Solicitud de eliminación cancelada exitosamente.",cancelError:"No se pudo cancelar la solicitud. Por favor, inténtalo de nuevo.",preflightError:"No se pudo verificar el estado de la cuenta. Por favor, inténtalo de nuevo."},dialog:{title:"Eliminar tu cuenta",description:"Esto programará tu cuenta y todos los datos asociados para su eliminación permanente.",whatWillBeDeleted:"Qué se eliminará:",itemAccountProfile:"Tu cuenta y perfil",itemAllApps:"Todas las apps que has creado",itemAllData:"Todos los datos almacenados en tus apps",itemUploadedFiles:"Archivos y medios subidos",gracePeriodNote:"Tendrás 7 días para cancelar esta solicitud. Después de eso, nuestro equipo revisará y procesará tu eliminación en breve.",subscriptionNote:"La cancelación de la suscripción es definitiva y sin reembolsos",cancelButton:"Cancelar",deleteButton:"Eliminar cuenta"},subscriptions:{dialogTitle:"Cancela las suscripciones antes de eliminar tu cuenta",warning:"Aún tienes suscripciones activas. Por favor, cancélalas primero.",listLabel:"Suscripciones activas:",personalPlan:"Plan personal",planAndBilling:"Plan y facturación",yearly:"anual",monthly:"mensual",cancelFirst:"Cancela todas las suscripciones anteriores, luego vuelve aquí para eliminar tu cuenta.",closeButton:"Cerrar",manageButton:"Gestionar suscripciones"},workspaceOwner:{titleStep1:"Eres propietario de espacios de trabajo",titleStep2:"Confirmar eliminación del espacio de trabajo",memberCount_one:"{{count}} miembro",memberCount_other:"{{count}} miembros",warningOwner_one:"Actualmente eres propietario del siguiente espacio de trabajo. Si continúas, todas las apps en este espacio de trabajo se eliminarán permanentemente y todos los miembros perderán el acceso.",warningOwner_other:"Actualmente eres propietario de los siguientes espacios de trabajo. Si continúas, todas las apps en estos espacios de trabajo se eliminarán permanentemente y todos los miembros perderán el acceso.",leaveWorkspaces_one:"También abandonarás este espacio de trabajo y perderás el acceso:",leaveWorkspaces_other:"También abandonarás estos espacios de trabajo y perderás el acceso:",confirmInstructions:"Escribe el nombre de cada espacio de trabajo a continuación para confirmar la eliminación. Esta acción es irreversible.",typeToConfirm:'Escribe <bold>"{{name}}"</bold> para confirmar',deleteAnyway:"Eliminar de todos modos",deleteAccount:"Eliminar cuenta",cancel:"Cancelar"},memberInfo:{title_one:"Abandonarás este espacio de trabajo",title_other:"Abandonarás estos espacios de trabajo",description_one:"Al eliminar tu cuenta, serás eliminado del siguiente espacio de trabajo. Perderás el acceso a todas las apps y datos del espacio de trabajo.",description_other:"Al eliminar tu cuenta, serás eliminado de los siguientes espacios de trabajo. Perderás el acceso a todas las apps y datos de los espacios de trabajo.",cancel:"Cancelar",continueWithDeletion:"Continuar con la eliminación"}},dj={title:"Cuenta de GitHub",addAccount:"Agrega tu cuenta de GitHub",unlockWithBuilder:"Desbloquea esta función con el plan Builder.",loading:"Cargando...",connecting:"Conectando...",reconnect:"Volver a conectar",connectionLost:"Se perdió la conexión a GitHub. Vuelve a conectar tu cuenta de GitHub para continuar.",connected:"Conectado",connectedDescription:"Tu cuenta de GitHub está conectada",disconnect:"Desconectar",tryAgain:"Intentar de nuevo",connectGitHub:"Conectar GitHub",disconnectDialog:{title:"¿Desconectar de GitHub?",accountDescription:"Desconectar tu cuenta de GitHub no afectará ninguna app conectada.<br/>Solo necesitarás volver a conectar tu cuenta si quieres conectar o reconectar un repositorio.",repoDescription:"Esto desconectará la app del repositorio {{repoName}}.",repoDescriptionNoName:"Esto desconectará la app del repositorio de GitHub.",repoDetail1:"Tu repositorio de GitHub permanecerá sin cambios — no se eliminará ni se quitará.",repoDetail2:"Puedes continuar trabajando en tu app como antes, pero GitHub ya no será la fuente de verdad para tu código y la sincronización bidireccional quedará deshabilitada.",disconnectingProgress:"Desconectando… Esto puede tardar unos minutos.",cancel:"Cancelar",disconnect:"Desconectar",disconnecting:"Desconectando…"}},uj={title:"Google Drive",connected:"Conectado",connectedDescription:"Tu Google Drive está conectado",disconnectedDescription:"Conecta tu Google Drive para importar archivos",connect:"Conectar",connecting:"Conectando...",disconnect:"Desconectar",disconnecting:"Desconectando...",loading:"Cargando...",connectTitle:"Conectar con Google Drive",connectDescription:"Otorga acceso para usar archivos de Google Drive como contexto del chat de IA.",benefitImport:"Importa Documentos, Hojas de cálculo y Presentaciones desde tu Google Drive",benefitChoose:"Elige qué archivos usar cada vez",benefitSecure:"El contenido seleccionado se almacena de forma segura para usar en tu aplicación",connectButton:"Conectar Google Drive",cancel:"Cancelar",privacyNote:"Solo se accede a los archivos que selecciones.",disconnectAnytime:"Puedes desconectar en cualquier momento desde la configuración de la cuenta."},pj={title:"Configuración del chat",sendMessageShortcut:"Atajo para enviar mensajes",insertNewLineShortcut:"Atajo para nueva línea",soundPreferences:"Preferencias de sonido",browserNotifications:"Notificaciones del navegador",notificationsHelpText:"¿Notificaciones habilitadas pero no las recibes? <docLink>Consulta la documentación</docLink>",notificationOptions:{onFirstPromptOnly:"Solo en el primer prompt",onEveryPromptCompletion:"En cada finalización de prompt",disableNotificationSounds:"Deshabilitar sonidos de notificación",disableBrowserNotifications:"Deshabilitar notificaciones del navegador"}},mj={account:sj,mfa:lj,deleteAccount:cj,github:dj,googleDrive:uj,chatSettings:pj},gj={title:"Solicitar acceso a {{appName}}",subtitleDefault:"Solicite acceso o cambie a una cuenta que ya tenga permiso.",subtitleRequested:"Recibirás un correo cuando tu solicitud sea aprobada.",requestAccess:"Solicitar acceso",requestSubmitted:"Solicitud enviada",loggedInAs:"Has iniciado sesión como {{email}}",switchAccount:"Cambiar cuenta",errorMessage:"Algo salió mal. Inténtalo de nuevo o cambia a una cuenta diferente.",tooManyAttempts:"Demasiados intentos. Inténtalo de nuevo más tarde.",backToLogin:"Volver al inicio de sesión"},hj={title:"Acceso restringido",subtitle:"Debes ser miembro de este espacio de trabajo para acceder a la aplicación."},fj={accessRequired:gj,workspaceRestricted:hj},vj={title:"Bienvenido a Base44",loginWithGoogle:"Iniciar sesión con Google",loginWithGithub:"Iniciar sesión con GitHub",loggingIn:"Iniciando sesión...",or:"O",emailLabel:"Correo electrónico",emailPlaceholder:"Ingresa tu correo electrónico",edit:"Editar",lastUsed:"Último usado",ssoEnabled:"SSO está habilitado para <strong>{{workspace}}</strong>",ssoClickBelow:"Haz clic abajo para continuar con el inicio de sesión de tu organización",passwordLabel:"Contraseña",forgotPassword:"¿Olvidaste tu contraseña?",passwordPlaceholder:"Ingresa tu contraseña",checkingAuth:"Verificando método de autenticación...",checking:"Verificando...",continue:"Continuar",continueWithSSO:"Continuar con {{provider}}",logIn:"Iniciar sesión",noAccount:"¿No tienes una cuenta?",signUp:"Registrarse",verifyEmailFirst:"Por favor, verifica tu correo electrónico antes de iniciar sesión. Revisa tu correo para el código de verificación.",resendVerificationCode:"Reenviar código de verificación",enterEmailFirst:"Por favor, ingresa tu correo electrónico primero",invalidEmail:"Por favor, ingresa un correo electrónico válido",ssoError:"Error de configuración SSO. Por favor, intenta de nuevo.",invalidCredentials:"Correo electrónico o contraseña inválidos",loginFailed:"Error al iniciar sesión. Por favor, intenta de nuevo.",failedResendVerification:"Error al reenviar el código de verificación. Por favor, intenta de nuevo.",passwordResetRequired:"Por razones de seguridad, debes restablecer tu contraseña antes de iniciar sesión. Revisa tu correo para un enlace de restablecimiento.",resetLinkSent:"Se ha enviado un enlace para restablecer la contraseña a tu correo electrónico.",resendResetLink:"Reenviar enlace de restablecimiento",failedResendResetLink:"No se pudo enviar el enlace de restablecimiento. Inténtalo de nuevo.",termsAndPrivacy:"<terms>Términos de servicio</terms> y <privacy>Política de privacidad</privacy>."},bj={title:"Crea tu cuenta",agreeToTerms:'Al hacer clic en "Registrarse", aceptas nuestros <terms>Términos de servicio</terms> y <privacy>Política de privacidad</privacy>.',signUpWithGoogle:"Registrarse con Google",signUpWithGithub:"Registrarse con GitHub",signingUp:"Registrando...",creatingAccount:"Creando cuenta...",signUpButton:"Registrarse",alreadyHaveAccount:"¿Ya tienes una cuenta de Base44?",logIn:"Iniciar sesión",validatingReferral:"Validando código de referido...",invalidReferral:"Código de referido inválido",youveBeenInvited:"¡Has sido invitado!",invitedToJoin:"<strong>{{name}}</strong> te invitó a unirte a Base44",signUpFreeCredits:"¡Regístrate y obtén 10 créditos gratis!",signUpBaseDayCredits:"¡Regístrate y obtén 44 créditos gratis!",letsBuild:"¡Construyamos algo increíble juntos!",registrationFailed:"Error en el registro. Por favor, intenta de nuevo.",failedValidateReferral:"Error al validar el código de referido",completeVerification:"Por favor completa la verificación",weakPassword:"Contraseña débil"},yj={title:"Restablece tu contraseña",subtitle:"Ingresa el correo electrónico con el que te registraste y te enviaremos un enlace para restablecer tu contraseña.",backToLogin:"Volver al inicio de sesión",loginEmail:"Correo de inicio de sesión",emailPlaceholder:"ej., nombre@email.com",sending:"Enviando...",verifyEmail:"Verificar correo",invalidEmail:"Correo electrónico inválido",failedSendReset:"Error al enviar el enlace de restablecimiento. Por favor, intenta de nuevo."},kj={title:"Revisa tu correo",subtitle:"Hemos enviado instrucciones para restablecer tu contraseña a <strong>{{email}}</strong>.",backToReset:"Volver a restablecer contraseña",checkInfo:"Por favor, revisa tu correo para el enlace de restablecimiento de contraseña.",mayTakeMinutes:"Puede tardar unos minutos en llegar.",goToSignIn:"Ir a iniciar sesión",didntGetEmail:"¿No recibiste el correo?",resending:"Reenviando...",resendEmail:"Reenviar correo",emailNotFound:"Correo electrónico no encontrado. Por favor, regresa e intenta de nuevo.",newResetSent:"Nuevo correo de restablecimiento enviado. Por favor, revisa tu bandeja de entrada.",failedResendEmail:"Error al reenviar el correo. Por favor, intenta de nuevo."},wj={title:"Establecer nueva contraseña",subtitle:"Ingresa tu nueva contraseña para Base44",newPasswordLabel:"Nueva contraseña",newPasswordPlaceholder:"Ingresa tu nueva contraseña",confirmPasswordLabel:"Confirmar nueva contraseña",confirmPasswordPlaceholder:"Confirma tu nueva contraseña",resetting:"Restableciendo...",resetButton:"Restablecer contraseña",backToLogIn:"Volver al inicio de sesión",invalidToken:"Token de restablecimiento inválido o faltante. Por favor, solicita un nuevo restablecimiento de contraseña.",passwordsMismatch:"Las contraseñas no coinciden. Por favor, intenta de nuevo.",weakPassword:"Por favor, crea al menos una contraseña de fortaleza media.",resetSuccess:"¡Contraseña restablecida exitosamente! Redirigiendo al inicio de sesión...",resetSuccessLogin:"¡Contraseña restablecida exitosamente! Por favor, inicia sesión con tu nueva contraseña.",failedReset:"Error al restablecer la contraseña. Por favor, intenta de nuevo.",invalidOrExpiredToken:"Token de restablecimiento inválido o expirado"},Aj={verifyTitle:"Verifica tu identidad",verification:{chooseMethod:"Elige un método de autenticación",authenticatorApp:"Aplicación de autenticación",smsMessage:"Mensaje SMS",recoveryCode:"Código de recuperación",continue:"Continuar",backToLogin:"Volver al inicio de sesión",chooseAnotherMethod:"Elegir otro método",verifyViaText:"Verificar por mensaje de texto",verifyViaApp:"Verificar por aplicación de autenticación",enterRecoveryCode:"Ingresa el código de recuperación",rememberDevice:"Recordar este dispositivo por 30 días",verifying:"Verificando...",verify:"Verificar",useRecoveryCode:"Usar código de recuperación",sendingCodeTo:"Enviando código a {{phone}}…",enterCodeSentTo:"Ingresa el código enviado a {{phone}}",enterCodeFromApp:"Ingresa el código de tu aplicación de autenticación",yourPhone:"tu teléfono",didntReceiveCode:"¿No recibiste el código?",resendIn:"Reenviar en {{seconds}}s",resend:"Reenviar",enterCompleteRecoveryCode:"Por favor, ingresa el código de recuperación completo",enterCompleteCode:"Por favor, ingresa el código completo de 6 dígitos",verificationFailed:"La verificación falló. Por favor, intenta de nuevo.",failedSendCode:"Error al enviar el código. Por favor, intenta reenviar."}},Sj={buildingApp:"Construyendo tu app",verifyEmailSubtitle:"Verifica tu correo para continuar",signUpSubtitle:"Regístrate para verla cobrar vida",loginSubtitle:"Inicia sesión para verla cobrar vida"},Cj={completeVerification:"Por favor completa la verificación de seguridad"},Dj={title:"Verifica tu correo",subtitle:"Enviamos un código de verificación a {{email}}",verificationCode:"Código de verificación",fillAllFields:"Por favor, completa todos los campos.",enterCodeSent:"Ingresa el código de verificación enviado a tu correo",verifying:"Verificando...",verifyEmail:"Verificar correo",wrongEmail:"¿Correo incorrecto? Cámbialo",didntReceiveCode:"¿No recibiste el código?",resendEmail:"Reenviar correo",emailVerifiedLogin:"¡Correo verificado exitosamente! Ya puedes iniciar sesión.",emailVerifiedContinue:"¡Correo verificado exitosamente! Por favor, inicia sesión para continuar.",invalidCode:"Código de verificación inválido. Por favor, intenta de nuevo.",verificationFailed:"La verificación falló. Por favor, intenta de nuevo.",newCodeSent:"Nuevo código de verificación enviado a tu correo.",failedResendCode:"Error al reenviar el código de verificación. Por favor, intenta de nuevo."},Tj={login:vj,register:bj,forgotPassword:yj,checkEmail:kj,resetPassword:wj,mfa:Aj,authModal:Sj,turnstile:Cj,otp:Dj},Ej={notFound:"Perfil no encontrado",notFoundDescription:"El perfil de builder @{{username}} no existe."},Pj={edit:"Editar",done:"Listo",cancel:"Cancelar",appCount_one:"{{count}} App",appCount_other:"{{count}} Apps",joined:"Se unió en {{date}}",namePlaceholder:"Tu nombre",displayNameLabel:"Nombre visible",usernameLabel:"Nombre de usuario",changeUsername:"Cambiar nombre de usuario",saveChanges:"Guardar cambios",partnerBadge:"Base44 Partner"},_j={label:"Bio",placeholder:"Escribe una breve biografía sobre ti...",emptyPlaceholder:"Cuéntales a los visitantes sobre ti — agrega una breve biografía.",hint:"Máx. 220 caracteres",maxChars:"Máx. {{max}} caracteres"},xj={viewTitle:"Apps",appsHeader:"Apps ({{count}})",appsHeaderEmpty:"Apps",featuredCounter_one:"{{count}} destacada",featuredCounter_other:"{{count}} destacadas",editHint:"Selecciona qué apps aparecen en tu perfil público.",noPublishedApps:"No se encontraron apps publicadas. ¡Publica una app primero!",noPublishedAppsTitle:"Sin apps publicadas",noPublishedAppsDescription:"Aún no has publicado ninguna app. Ve a tu espacio de trabajo para finalizar un borrador y publicarlo para mostrarlo en tu perfil.",viewMyApps:"Ver mis apps",untitled:"Sin título",updated:"¡Apps fijadas actualizadas!",updateFailed:"No se pudieron actualizar las apps fijadas",manageApps:"Administrar apps",chooseTitle:"Elegir apps para mostrar",chooseDescription:"Selecciona hasta {{max}} apps publicadas para mostrar en tu perfil público",selectAll:"Seleccionar todo",deselectAll:"Deseleccionar todo",saveChanges:"Guardar",searchApps:"Buscar apps...",publicBadge:"Pública",privateBadge:"Privada",showMore:"Mostrar más",showLess:"Mostrar menos",maxReached:"Máximo {{max}} apps permitidas",close:"Cerrar",noSearchResults:"Ninguna app coincide con tu búsqueda",updatedRecently:"actualizado recientemente",selectAllCount:"Seleccionar todo ({{count}})",deselectAllCount:"Deseleccionar todo ({{count}})"},Ij={editTooltip:"Editar enlaces sociales",addLinks:"Agregar enlaces sociales",addLink:"Agregar enlace",cancelTooltip:"Cancelar",removeTooltip:"Eliminar",label:"Redes sociales",hint:"Agrega hasta 6 enlaces sociales",linkLabel:"Enlace",addCustomLink:"Agregar enlace personalizado",pastePlaceholder:"Pega la URL aquí",enterUsernameOrUrl:"Ingresa tu nombre de usuario o la URL completa del perfil",movedTo:"Movido a {{platform}}",addedAsCustom:"Agregado como enlace personalizado",fieldOccupied:"Parece un enlace de {{platform}} — ese campo ya tiene una URL",customSlotsFull:"Parece un enlace de {{platform}}. Elimina un enlace personalizado para agregarlo."},Rj={profileUpdated:"¡Perfil actualizado!",profileUpdateFailed:"No se pudo actualizar el perfil",usernameClaimed:"¡Nombre de usuario obtenido!",usernameClaimFailed:"No se pudo obtener el nombre de usuario",loadFailed:"No se pudo cargar el perfil",invalidImageType:"Sube una imagen válida (JPG, PNG, GIF o WebP)",imageTooLarge:"La imagen debe ser menor a 5 MB",avatarUpdated:"¡Imagen de perfil actualizada!",avatarUploadFailed:"No se pudo subir la imagen",avatarRemoveFailed:"No se pudo eliminar la imagen"},zj={title:"¿Descartar cambios?",description:"Tienes cambios sin guardar que se perderán.",confirm:"Descartar"},Mj={title:"Cambiar nombre de usuario",placeholder:"nombre de usuario",checking:"Verificando...",available:"¡Disponible!",notAvailable:"No disponible",urlWarning:"Tu URL de perfil cambiará a /@{{username}}. Los enlaces anteriores dejarán de funcionar.",cancel:"Cancelar",claim:"Obtener nombre de usuario",tryInstead:"Prueba:"},Nj={locationLabel:"Ubicación",locationPlaceholder:"p. ej. Madrid, España",showEmailLabel:"Mostrar el email de tu cuenta"},Fj={title:"Actualizar imagen de portada",description:"Elige uno de nuestros degradados o sube tu propia imagen",uploadFile:"Subir imagen personalizada",orUseTemplate:"O usa una plantilla",cancel:"Cancelar",saveChanges:"Guardar cambios",updated:"¡Imagen de portada actualizada!",updateFailed:"No se pudo actualizar la imagen de portada",uploadFailed:"No se pudo subir la imagen",dragToReposition:"Arrastra para reposicionar",replaceImage:"Reemplazar imagen",reposition:"Reposicionar"},Lj={title:"Actividad",mon:"Lun",wed:"Mié",fri:"Vie",less:"Menos",more:"Más",messages_one:"{{count}} prompt",messages_other:"{{count}} prompts",founderMode:"Founder mode",noActivity:"Sin actividad",onDate:"el {{date}}",showOnProfile:"Mostrar en el perfil"},jj={customize:"Personaliza tu perfil",title:"Aún no hay apps públicas",description:"Tu perfil es el mejor lugar para compartir tu trabajo con la comunidad de Base44. Selecciona de tus apps publicadas para mostrarlas aquí, o comienza un nuevo proyecto para aumentar tu actividad.",anonDescription:"Este builder aún no ha hecho públicas ninguna de sus apps. Vuelve más tarde para ver su actividad más reciente, o explora lo que otros creadores están construyendo.",startCreating:"Empezar a crear",chooseFromApps:"Elegir de mis apps"},Oj={page:Ej,header:Pj,bio:_j,pinnedApps:xj,social:Ij,toast:Rj,discardDialog:zj,usernameDialog:Mj,details:Nj,coverImage:Fj,activity:Lj,emptyState:jj},Bj=JSON.parse(`{"title":"Agentes IA","beta":"Beta","subtitle":"Crea agentes IA en tu app usando la infraestructura de agentes IA de Base44","disabled":"Deshabilitado","setupAgents":"Configurar agentes","enableAgents":"Habilitar agentes","turnOnToggle":"Activa el interruptor para permitir la creación de agentes","addFirstAgent":"Agrega tu primer Agente","creditsUsed":"{{credits}} créditos utilizados","creditsUsedTooltip":"Créditos de integración mensuales utilizados","askChatToCreate":"Pídele al chat que cree un agente para ti. Describe qué rol debe tener el agente y qué tareas debe realizar.","defineInConfig":"Define tus agentes en archivos de configuración locales y sincronízalos con tu app usando el CLI de Base44.","viewDocumentation":"Ver documentación","noAgentsYet":"Aún No Hay Agentes","promptChatToCreate":"Pídele al chat que cree tu primer agente IA","agentsTab":"Agentes","conversationsTab":"Conversaciones","searchConversations":"Buscar conversaciones...","filterAll":"Todos","filterMine":"Míos","filterUsers":"Usuarios","noConversationsYet":"Aún no hay conversaciones","noConversationsMatchSearch":"No hay conversaciones que coincidan con tu búsqueda","tryDifferentSearch":"Intenta con un término de búsqueda diferente","goToAgentsTab":"Ve a la pestaña de Agentes para iniciar una conversación","conversationStarted":"Conversación iniciada","agentConfiguration":"Configuración del Agente","guidelines":"Directrices","tools":"Herramientas","whatsapp":"WhatsApp","toolsAndCapabilities":"Herramientas y Capacidades","descriptionLabel":"Descripción","systemPromptDesc":"Este es el prompt del sistema que define el comportamiento del agente","briefDescription":"Breve descripción de lo que hace este agente...","instructions":"Instrucciones","instructionsDesc":"Directrices y reglas específicas que el agente debe seguir","detailedInstructions":"Instrucciones detalladas para el agente...","availableTools":"Herramientas Disponibles","configureTools":"Configura qué herramientas y datos puede acceder este agente","add":"Agregar","allEntitySlotsUsed":"Todos los Espacios de Entidad Usados","addEntityTool":"Agregar Herramienta de Entidad","entityToolDesc":"Operaciones de base de datos y acceso CRUD","allFunctionSlotsUsed":"Todos los Espacios de Función Usados","addBackendFunction":"Agregar Función Backend","backendFunctionDesc":"Lógica backend personalizada e integraciones","noToolsConfigured":"No hay herramientas configuradas","addToolsDesc":"Agrega herramientas de entidad o funciones backend para darle capacidades al agente","entityTool":"Herramienta de Entidad","selectEntity":"Seleccionar entidad","allowedOperations":"Operaciones permitidas","deleteWarning":"Cuidado, los datos eliminados por el agente no se pueden restaurar","backendFunction":"Función Backend","selectBackendFunction":"Seleccionar función backend","functionDescription":"Descripción de la Función","describeFunction":"Describe cuándo y cómo debe usarse esta función...","whatsappIntegration":"Integración con WhatsApp","whatsappDesc":"Conecta tu agente a WhatsApp para una comunicación fluida","testChat":"Chat de Prueba","addWhatsapp":"Agrega WhatsApp a Tu App","whatsappEnableDesc":"Habilita el acceso a WhatsApp para tus usuarios con un solo comando","addWhatsappButton":"Agrega un botón de WhatsApp para el {{agent}}","sendToChat":"Enviar al Chat","fullChatCapabilities":"Capacidades Completas de Chat","fullChatDesc":"Todas las funciones del chat web funcionan perfectamente en WhatsApp, incluyendo herramientas y acceso a datos","voiceMediaSupport":"Soporte de Voz y Multimedia","voiceMediaDesc":"Los usuarios pueden enviar notas de voz e imágenes para una interacción natural","customNumbers":"Números Personalizados","customNumbersDesc":"Conecta tus propios números de WhatsApp Business","easyUiIntegration":"Integración de UI Sencilla","easyUiDesc":"Agrega un botón de WhatsApp a tu app con un simple comando de chat","welcomeMessage":"Mensaje de Bienvenida","welcomeMessageDesc":"Crea un saludo cálido que presente a tu agente y establezca expectativas","charCount":"{{count}}/500","editAgent":"Editar Agente","edit":"Editar","startChat":"Iniciar Chat","chat":"Chat","functionCount":"{{count}} función(es)","noDescriptionProvided":"No se proporcionó descripción","entities":"Entidades:","activeConversation":"Conversación activa","readOnlyConversation":"Conversación de solo lectura","startConversation":"Inicia tu conversación","typeMessageBelow":"Escribe un mensaje abajo para comenzar","typeYourMessage":"Escribe tu mensaje...","cancel":"Cancelar","saving":"Guardando...","save":"Guardar","commandAddedToChat":"Comando agregado al chat. Presiona Enter para enviar.","failedToSaveAgentConfiguration":"Error al guardar la configuración del agente","promptAddedToChat":"Prompt agregado al chat","unableToLoadSuggestions":"No se pudieron cargar las sugerencias. Inténtalo más tarde.","createAgent":"Crear agente","createAgentTitle":"Crear un agente","createAgentDescription":"Pide al chat que cree un agente para ti. Describe qué rol debe tener el agente y qué tareas debe realizar.","manageAgentsAndConversations":"Gestionar agentes y conversaciones","skills":"Habilidades","skillsEnabledLimit":"Puedes habilitar hasta {{count}} habilidades por agente.","appSkillsTitle":"Habilidades de Aplicación","appSkillsDescription":"Habilidades de instrucción reutilizables para agentes en esta aplicación.","addSkill":"Añadir Habilidad","noAppSkillsYet":"Aún no hay habilidades de aplicación. Crea una para reutilizarla entre agentes en esta aplicación.","workspaceSkillsTitle":"Habilidades de Espacio de Trabajo","workspaceSkillsDescription":"Habilidades compartidas de este espacio de trabajo. Actívalas para habilitarlas en este agente.","loadingWorkspaceSkills":"Cargando habilidades de espacio de trabajo...","noWorkspaceSkillsAvailable":"No hay habilidades compartidas de espacio de trabajo disponibles actualmente.","manageWorkspaceSkills":"Gestionar habilidades de espacio de trabajo","workspaceSkillSource":"espacio de trabajo","appSkillSource":"aplicación","unavailable":"no disponible","addAppSkill":"Añadir Habilidad de Aplicación","editAppSkill":"Editar {{name}}","skillName":"Nombre de habilidad","skillNameHint":"Usa letras minúsculas, números y guiones.","skillNameInvalid":"El nombre debe ser alfanumérico en minúsculas con guiones, sin guiones al inicio/final (ej. 'code-review', 'sql-expert').","skillDescription":"Descripción","skillInstructions":"Instrucciones","enableForCurrentAgent":"Habilitar para el agente actual","enableForCurrentAgentDescription":"Esto cambia el estado actual del editor y se guarda con el agente.","createSkill":"Crear Habilidad","saveChanges":"Guardar Cambios","workspaceSkillUnavailableDescription":"Esta habilidad de espacio de trabajo ya no está habilitada o disponible.","appSkillUnavailableDescription":"Esta habilidad de aplicación ya no existe en la biblioteca de habilidades de la aplicación.","skillValidationRequired":"Se requiere nombre, descripción e instrucciones","skillCreated":"Habilidad creada","skillUpdated":"Habilidad actualizada","failedToSaveSkill":"Error al guardar la habilidad","skillSavedButAssignmentsFailed":"La habilidad se guardó, pero no se pudo adjuntar al agente","skillSavedButAssignmentsRefreshDelayed":"El editor no pudo actualizarse automáticamente. Recarga para verificar el estado más reciente.","skillSavedButSyncFailed":"La habilidad se guardó, pero falló la sincronización del estado del agente","skillSavedButSyncRefreshDelayed":"La habilidad se guardó, pero el editor no pudo actualizarse automáticamente. Recarga para verificar el estado más reciente.","skillSavedStateRefreshed":"La habilidad se guardó. El editor se actualizó para coincidir con el estado guardado más reciente.","skillSavedRefreshDelayed":"La habilidad se guardó, pero el editor no pudo actualizarse automáticamente. Recarga para verificar el estado más reciente.","skillDeleted":"Habilidad eliminada","skillDeletedRefreshDelayed":"La habilidad se eliminó, pero el editor no pudo actualizarse automáticamente. Recarga para verificar el estado más reciente.","failedToDeleteSkill":"Error al eliminar la habilidad","skillLimitReached":"Este agente ya tiene el número máximo de habilidades habilitadas.","skillTemplatePickerTitle":"Elige una habilidad inicial","startFromScratch":"Empezar desde cero","startFromScratchDescription":"Crea una habilidad personalizada con tus propias instrucciones.","useTemplate":"Usar plantilla","skillTemplates":{"refundPolicy":{"description":"Plantilla para reglas de reembolso, elegibilidad y qué detalles debe recopilar el agente antes de escalar."},"supportEscalation":{"description":"Plantilla para cuándo pasar a soporte humano y qué resumen debe preparar el agente."},"pricingAndPlans":{"description":"Plantilla para explicar planes, ciclos de facturación, mejoras y cuándo derivar solicitudes enterprise."},"brandVoice":{"description":"Plantilla para tono, estilo de escritura y reglas de comunicación para que el agente suene acorde a la marca."}},"memory":"Memoria","memoryTitle":"Memoria del agente","memorySubtitle":"Habilita la memoria a largo plazo para que tu agente recuerde información entre conversaciones","enableMemory":"Habilitar memoria","enableMemoryDesc":"Cuando está habilitado, el agente puede guardar y recuperar información entre conversaciones","memoryScope":"Alcance de la memoria","memoryScopeDesc":"Elige qué tipos de recuerdos puede crear el agente","memoryScopeGlobalAndUser":"Global y por usuario","memoryScopeGlobalAndUserDesc":"El agente puede guardar recuerdos compartidos y personales","memoryScopeGlobal":"Solo global","memoryScopeGlobalDesc":"Recuerdos compartidos entre todos los usuarios","memoryScopeUser":"Solo por usuario","memoryScopeUserDesc":"Recuerdos específicos para cada usuario","memoryInstructions":"Instrucciones de memoria","memoryInstructionsDesc":"Guía al agente sobre cuándo guardar recuerdos y qué incluir","memoryInstructionsPlaceholder":"Ej., Guarda recuerdos globales para actualizaciones de productos, anuncios de la empresa y conocimiento compartido. Guarda recuerdos de usuario para preferencias personales como estilo de comunicación, tono e intereses específicos.","savedMemories":"Recuerdos guardados","refresh":"Actualizar","noMemoriesYet":"Aún no hay recuerdos guardados","noMemoriesDesc":"Los recuerdos aparecerán aquí cuando el agente los guarde durante las conversaciones","memoryItemDeleted":"Recuerdo eliminado","memoryDeleteFailed":"Error al eliminar el recuerdo","defaultDescription":"Predeterminado: {{description}}"}`),Uj={writing:"Escribiendo",wrote:"Escrito",reading:"Leyendo",read:"Leído",deleting:"Eliminando",deleted:"Eliminado",editing:"Editando",edited:"Editado",creating:"Creando",created:"Creado",updating:"Actualizando",updated:"Actualizado",update:"Actualizar",delete:"Eliminar",importing:"Importando",imported:"Importado",import:"Importar",searching:"Buscando",searched:"Buscado",searchingForBugs:"Buscando errores...",searchedBugs:"Búsqueda de errores completada",install:"Instalar",installing:"Instalando",installed:"Instalado",analyzing:"Analizando",running:"Ejecutando",failed:"Falló",run:"Ejecutar",settingSecrets:"Configurando secretos",setSecret:"Secreto configurado",setSecrets:"Configurar secretos",testing:"Probando",checking:"Verificando",tested:"Probado",checked:"Verificado",fetching:"Obteniendo",fetched:"Obtenido",waitingForApproval:"Esperando aprobación...",searchedDocsFor:"Documentación buscada para",searchingDocsFor:"Buscando en documentación para",searchedFor:"Buscado",searchingFor:"Buscando",foundResult_one:"{{count}} resultado encontrado",foundResult_other:"{{count}} resultados encontrados",toggling:"Alternando",toggled:"Alternado",listing:"Listando",listed:"Listado",approvalRequired:"Aprobación requerida",approve:"Aprobar",approving:"Aprobando...",reject:"Rechazar",rejected:"rechazado",previousApproval:"Esta solicitud de aprobación es de un mensaje anterior",query:"Consulta:",updateWith:"Actualizar con:",importComplete:"Importación completa",importingData:"Importando datos...",percentComplete:"{{percent}}% completado",recordsProgress:"{{current}} / {{total}} registros",preparing:"Preparando...",otherToolsAfterApproval:"Otras herramientas se ejecutarán después de la aprobación",countPackages:"{{num}} paquetes:",updateAllEntityRecords:"Actualizar todos los registros de <entity>{{entityName}}</entity>",updateEntityRecordsMatching:"Actualizar registros de <entity>{{entityName}}</entity> que coinciden con:",deleteAllEntityRecords:"Eliminar todos los registros de <entity>{{entityName}}</entity>",deleteEntityRecordsMatching:"Eliminar registros de <entity>{{entityName}}</entity> que coinciden con:",importDataFromInto:"Importar datos de <file>{{fileName}}</file> en <entity>{{entityName}}</entity>",importDataFromSheetInto:"Importar datos de <file>{{fileName}}</file> (hoja: <sheet>{{sheetName}}</sheet>) en <entity>{{entityName}}</entity>",countRecordsIntoEntity:"{{num}} registros en <entity>{{entityName}}</entity>",dataIntoEntity:"datos en <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} registros <entity>{{entityName}}</entity>",allEntityRecords:"todos los registros de <entity>{{entityName}}</entity>",entityRecords:"registros de <entity>{{entityName}}</entity>",grepSearching:'Buscando "{{pattern}}"...',grepSearchComplete:"Búsqueda completada",grepFoundResults_one:"Se encontró {{count}} resultado",grepFoundResults_other:"Se encontraron {{count}} resultados",grepInFiles_one:"en {{count}} archivo",grepInFiles_other:"en {{count}} archivos"},qj={agents:Bj,tools:Uj},Vj={title:"Automatizaciones",subtitle:"Construye y gestiona automatizaciones en tu app.",newAutomation:"Nueva Automatización",chooseAutomation:"Elige una automatización",selectHowStarts:"Selecciona cómo se iniciará esta automatización.",scheduled:"Programada",scheduledDescription:"Ejecuta esta automatización en un horario recurrente o en un momento específico.",dataEvent:"Evento de datos",dataEventDescription:"Ejecuta esta automatización cuando un registro se crea, actualiza o elimina.",connector:"Conector",connectorDescription:"Ejecuta esta automatización cuando una integración conectada envía un evento.",connectorBetaTooltip:"Este conector es gratuito durante la beta.",beta:"Beta",connectorNewAutomation:"Nueva automatización de conector",connectorIntegrationType:"Integración",connectorSelectIntegration:"Seleccionar una integración",connectorNoIntegrations:"No hay integraciones conectadas",connectorNoIntegrationsHint:"Para habilitar la automatización, primero necesitas crear una integración.",connectorCreateIntegration:"Crear integración",connectorCreateNewIntegration:"Crear nueva integración",connectorEvents:"Eventos",connectorSelectEvents:"Seleccionar eventos a escuchar",connectorSelectEvent:"Seleccionar un evento",connectorAvailableEvents:"Eventos disponibles ({{count}})",connectorType:"Conector",allEvents:"todos los eventos",deleteAutomation:"¿Eliminar automatización?",deleteAutomationDesc:'Esto eliminará permanentemente "{{name}}" y todo su historial de ejecución. Esta acción no se puede deshacer.',delete:"Eliminar",deleting:"Eliminando...",cancel:"Cancelar",copyOutput:"Copiar resultado",scheduledType:"Programada",dataEventType:"Evento de datos",someRunsFailed:"Algunas ejecuciones fallaron",reviewLogsOrFix:"Revisa los registros o deja que la IA corrija los errores.",fixing:"Corrigiendo...",fixWithAI:"Corregir con IA",failedToGetErrorContext:"Error al obtener el contexto del error",logsTab:"Registros",noLogsYet:"Aún no hay registros",back:"Volver",close:"Cerrar",saving:"Guardando...",save:"Guardar",active:"Activa",archived:"Archivada",archivedAutomations:"Automatizaciones archivadas",nameAndDescription:"Nombre y descripción",typeColumn:"Tipo",lastRun:"Última ejecución",failed:"Fallida",loading:"Cargando...",editAutomation:"Editar automatización",runNow:"Ejecutar ahora",archive:"Archivar",duplicate:"Duplicar",unlockAutomations:"Desbloquear automatizaciones",unlockAutomationsDesc:"Para ejecutar automatizaciones en tu app, necesitas funciones backend habilitadas. Mejora tu plan para habilitar funciones backend y comenzar a usar automatizaciones.",enableBackendFunctions:"Habilita funciones backend para comenzar",enableBackendFunctionsDesc:"Las automatizaciones ejecutan funciones backend según un horario o cuando cambian los datos. Activa las funciones backend en Configuración para usar automatizaciones.",openSettings:"Abrir configuración",createBackendFunction:"Crea una función backend para agregar automatizaciones",createBackendFunctionDesc:"Para crear una automatización, primero necesitas una función backend en tu código. Escribe una función backend en tu código o pídele ayuda al chat.",noAutomationsYet:"Aún no hay automatizaciones",noAutomationsDesc:"Crea una automatización para ejecutar tareas automáticamente en tu app.",noArchivedAutomations:"No hay automatizaciones archivadas",noArchivedDesc:"Las automatizaciones que archives o que alcancen su fecha de finalización aparecerán aquí.",runAutomation:"Ejecutar Automatización",selectRecord:"Selecciona un registro de <entity>{{entity}}</entity> para ejecutar la automatización.",searchRecords:"Buscar registros de {{entity}}...",noRecordsFound:"No se encontraron registros de {{entity}}.",noRecordsMatch:'Ningún registro coincide con "{{query}}"',recordsCount:"{{filtered}} de {{total}} registros",totalRecords:"{{total}} registros",running:"Ejecutando...",automationName:"Nombre de la automatización",describeAutomation:"Describe qué hace esta automatización.",functionToRun:"Función a ejecutar",selectFunction:"Selecciona una función backend de tu código. La función recibirá los datos de la entidad cuando se active la automatización.",noBackendFunctions:"No hay funciones backend disponibles",selectAFunction:"Seleccionar una función",runsWhen:"Se ejecuta cuando",noItems:"Sin elementos",selectItem:"Seleccionar elemento",is:"Es",selectEvent:"Seleccionar evento",automationNameRequired:"El nombre de la automatización es requerido.",selectEntity:"Por favor, selecciona una entidad.",selectEventType:"Por favor, selecciona al menos un tipo de evento.",selectFunctionRequired:"Por favor, selecciona una función a ejecutar.",newDataAutomation:"Nueva automatización de datos",details:"Detalles",logsWillAppearAfterFire:"Los registros aparecerán aquí después de que se active esta automatización.",selectFunctionFromCode:"Selecciona una función backend de tu código. Para agregar o editar una función, actualízala en tu código o pídele ayuda al chat.",recurring:"Recurrente",oneTime:"Una Vez",repeatsEvery:"Se repite cada",minute:"Minuto",hour:"Hora",day:"Día",week:"Semana",month:"Mes",startAt:"Inicia en",at:"A las",repeatsOn:"Se repite el",repeatsOnDay:"Se repite el día",ends:"Finaliza",never:"Nunca",on:"El",after:"Después de",occurrences:"ocurrencias",runOn:"Ejecutar el",atTime:"A la hora",oneTimeDateRequired:"Los horarios de una sola vez requieren que se especifique una fecha.",oneTimeTimeRequired:"Los horarios de una sola vez requieren que se especifique una hora.",oneTimePastError:"La fecha y hora del horario de una sola vez no pueden estar en el pasado.",minMinutesInterval:"El intervalo mínimo para horarios basados en minutos es {{min}} minutos.",selectDayForWeekly:"Por favor, selecciona al menos un día para el horario semanal.",monthlyDayRequired:"Los horarios mensuales requieren que se seleccione un día del mes.",endDateRequired:"La fecha de finalización es requerida cuando 'Finaliza' está configurado como 'El'.",endDatePast:"La fecha de finalización no puede estar en el pasado.",occurrenceCountMin:"El número de ocurrencias debe ser al menos 1.",newScheduledAutomation:"Nueva automatización programada",logsWillAppearAfterRun:"Los registros aparecerán aquí después de que se ejecute esta automatización.",description:"Descripción",nameField:"Nombre",typeField:"Tipo",automationUpdated:"Automatización actualizada correctamente",automationCreated:"Automatización creada correctamente",failedToSave:"Error al guardar la automatización",functionArgs:"Argumentos (JSON)",functionArgsPlaceholder:'{"key": "value"}',functionArgsTooltip:"Objeto JSON opcional que se pasa a la función como argumentos adicionales.",functionArgsInvalidJson:"Los argumentos deben ser JSON válido.",advanced:"Avanzado",triggerConditions:"Condiciones de activación",conditionsSetByAI:"Las condiciones son configuradas por el constructor de IA y no se pueden editar manualmente.",conditionsSummaryError:"No se pudo cargar el resumen de condiciones.",connectorNoManualIntegrations:"No hay integraciones disponibles para creación manual",connectorNoManualIntegrationsHint:"Algunas integraciones requieren condiciones de activación y solo se pueden crear a través del constructor de IA.",suggestedForYou:"Sugerencias para ti",basedOnYourContext:"Basado en el contexto de tu app",createFromScratch:"Crear desde cero"},$j={automations:Vj},Wj={title:"Integraciones",myIntegrations:"Mis integraciones",browse:"Explorar",payments:"Pagos",failedToLoad:"Error al cargar las conexiones de la app",successfullySwitched:"Cuenta cambiada exitosamente a {{name}}",cancelled:"Cancelado",connectionCancelled:"La conexión de la app fue cancelada",disconnected:"{{name}} ha sido desconectado",failedToDisconnect:"Error al desconectar la conexión de la app",stripeRemoved:"La integración de Stripe ha sido eliminada",wixPaymentsDisconnected:"Wix Payments ha sido desconectado",integrationRemoved:"{{name}} ha sido eliminado",failedToRemove:"Error al eliminar la integración",connectedAccountsWarning:"Las cuentas conectadas pueden exponer datos sensibles a cualquier persona con acceso.",unlockFeature:"Desbloquear esta función",unlockFeatureDesc:"Esta función solo está disponible en el plan Builder o superior. Mejora tu plan para seguir trabajando sin límites",upgradeToUseConnector:"Mejorar plan para usar la función",access:"Acceso a {{name}}",disconnectAccount:"¿Desconectar Cuenta?",disconnectDesc:"Se revocará el acceso de <bold>{{email}}</bold> en <bold>{{name}}</bold>.<br/>El registro de integración se conservará para una futura reconexión.",disconnecting:"Desconectando...",disconnect:"Desconectar",removeIntegration:"¿Eliminar Integración?",removeDesc:"<bold>{{name}}</bold> será eliminado permanentemente de esta app.<br/>Para crear una conexión nuevamente, necesitarás configurarla desde cero.",removing:"Eliminando...",remove:"Eliminar",cancel:"Cancelar",reject:"Rechazar",new:"Nuevo",done:"Listo",success:"Éxito",error:"Error",setupIntegrations:"Configurar Integraciones",setupIntegrationsDesc:"Conecta fácilmente tu app a conectores como Google Calendar, Google Drive, Slack, Notion, Salesforce, HubSpot y más.",setupIntegrationsChat:"Solo describe lo que quieres conectar en el chat y se configurará por ti.",viewAccess:"Ver Acceso",connecting:"Conectando...",switchAccount:"Cambiar cuenta",reconnect:"Reconectar",disconnectAccount2:"Desconectar cuenta",use:"Usar",examplePrompts:"Prompts de ejemplo",clickPromptToAdd:"Haz clic en un prompt para agregarlo a tu chat.",unableToLoadSuggestions:"No se pudieron cargar las sugerencias. Por favor, intenta de nuevo más tarde.",requiresBackendFunctions:"Esta integración requiere funciones backend, una función disponible solo en el plan Builder y superior. ",seePlans:"Ver Planes",promptAddedToChat:"Prompt agregado al chat. Presiona Enter para enviar.",connectors:"Conectores",connectorsDesc:"Conecta tu app a servicios populares con conexiones OAuth rápidas.",searchConnectors:"Buscar conectores",noSearchResults:"Sin resultados para tu búsqueda",noSearchResultsDesc:"Prueba con otras palabras clave o revisa la ortografía. También puedes ordenar por nombre o agregados recientemente.",sort:{title:"Ordenar",mostUsed:"Más usados",recentlyAdded:"Agregados recientemente",az:"A-Z",za:"Z-A"},revoked:"Revocado",connectionLost:"Se perdió la conexión — por favor reconecta",configModal:{connectTo:"Conectar a {{name}}",configureConnection:"Configura tu conexión a {{name}}",loadingConfig:"Cargando configuración...",retryHint:"Puedes intentarlo de nuevo.",connect:"Conectar",connecting:"Conectando...",validationRequired:"{{name}} es obligatorio",validationInvalid:"{{name}} no es válido",fetchError:"No se pudo cargar la configuración.",retry:"Reintentar"},wixPayments:{title:"Wix Payments",live:"Activo",disconnected:"Desconectado",acceptingPayments:"Aceptando pagos",integrationDisconnected:"Integración desconectada",openingWixPayments:"Abriendo Wix Payments...",popupBlocked:"Wix Payments fue bloqueado por tu navegador. Usa el enlace de abajo para abrir manualmente el panel de pagos.",errors:{noUrl:"No se pudo obtener la URL de Wix Payments. Inténtalo de nuevo.",fetchFailed:"No se pudo abrir Wix Payments. Inténtalo de nuevo.",invalidRedirect:"No se pudo abrir Wix Payments. Inténtalo de nuevo."},openDashboard:"Abrir panel de pagos",managePayments:"Administrar pagos",disconnect:"Desconectar",disconnectIntegration:"¿Desconectar integración?",disconnectDesc:"<bold>Wix Payments</bold> será desconectado de esta app.<br/>Puedes reconectarlo más tarde desde el chat.",disconnecting:"Desconectando...",disconnectButton:"Desconectar",enterNamePrompt:"Por favor, ingresa tu nombre para continuar:",firstNamePlaceholder:"Nombre",lastNamePlaceholder:"Apellido"},stripe:{unableToClaimSandbox:"No se pudo reclamar el sandbox",sandboxExpired:"El sandbox puede haber expirado o ya fue reclamado. Por favor, actualiza la página.",failedGetClaimUrl:"Error al obtener la URL de reclamación",pleaseTryAgain:"Por favor, intenta de nuevo o actualiza la página.",pendingSetup:"Configuración Pendiente",completeSetupGuide:"Completa la guía de configuración para aceptar pagos reales",live:"Activo",stripe:"Stripe",loadingStripe:"Cargando...",acceptingPayments:"Aceptando pagos reales",accountDetails:"Detalles de la cuenta de Stripe",hideGuide:"Ocultar Guía",showGuide:"Mostrar Guía",goToStripe:"Ir a Stripe",aboutIntegration:"Sobre la Integración",aboutStripeIntegration:"Sobre la Integración de Stripe",stripeDesc:"Stripe te permite aceptar pagos, enviar transferencias y gestionar tu negocio en línea. Esta integración te permite:",acceptCards:"Aceptar tarjetas de crédito y otros métodos de pago",createProducts:"Crear productos y suscripciones",manageCustomers:"Gestionar clientes y facturación",close:"Cerrar",tryTestPayment:"Prueba un pago de prueba",claimSandbox:"Reclama tu sandbox de Stripe",addLiveKeys:"Agrega tus claves API en vivo desde Stripe",copiedCard:"¡Copiado!",testCardCopied:"Número de tarjeta de prueba copiado al portapapeles.",failedToCopy:"Error al copiar",copyManually:"Por favor copia manualmente: 4242 4242 4242 4242",keysSaved:"Claves API guardadas exitosamente.",failedSaveKeys:"Error al guardar las claves API. Por favor, intenta de nuevo.",movedOutOfTestMode:"Has salido del modo de prueba.",noNeedTestPayments:"Ya no necesitas ejecutar pagos de prueba.",useTestCard:"Usa esta tarjeta de prueba para simular una compra:",testCardNumber:"4242 4242 4242 4242",anyFutureExpiry:", cualquier fecha de vencimiento futura, cualquier CVC de 3 dígitos.",publishAndOpen:"Publica tu app y ábrela en una nueva pestaña para probar la experiencia de pago",copyCardNumber:"Copiar Número de Tarjeta",connectStripeDesc:"Conéctate a tu cuenta de Stripe existente o crea una nueva para comenzar a aceptar pagos reales.",claimAndGoLive:"Reclamar y Activar",copyLiveKeys:"Copia tus claves en vivo Publishable y Secret desde tu <link>Panel de Stripe</link> para completar la configuración y habilitar pagos reales en tu app.",publishableKey:"Clave Publishable",secretKey:"Clave Secret",enterValue:"Ingresa valor",savingKeys:"Guardando...",saveApiKeys:"Guardar claves API",completeStepInStripe:"Para completar este paso, reclama el sandbox y finaliza la configuración en Stripe"}},Gj={title:"Integraciones de la App",subtitle:"Conecta tu app a servicios de terceros y amplía su funcionalidad.",integrationCatalog:"Catálogo de Integraciones",payments:"Pagos",zapier:"Zapier",couldNotLoad:"No se pudieron cargar los detalles de la integración. Por favor, intenta de nuevo.",loadingDetails:"Cargando detalles...",backToCatalog:"Volver al Catálogo",integrationAdded:"Integración Agregada (Marcador)",wouldBeAdded:"{{name}} se agregaría a tu app. Valores secretos registrados.",requiresConfiguration:"Requiere Configuración",requiresSecrets:"Esta integración requiere {{count}} valor(es) secreto(s) a configurar.",addToApp:"Agregar a la App",paymentProcessing:"Procesamiento de Pagos",paymentProcessingDesc:"Acepta pagos en tu app con procesadores de pago populares. ¡Próximamente!",leadingPaymentPlatform:"Plataforma de pagos líder",globallyRecognized:"Pagos reconocidos globalmente",configurePayment:"Configura proveedores de pago para habilitar suscripciones, compras únicas y más en tu aplicación.",zapierIntegration:"Integración con Zapier",zapierDesc:"Conecta tu app con miles de otros servicios a través de Zapier.",automateWithZapier:"Automatiza con Zapier",linkBase44:"Conecta Base44 a tus apps favoritas como Slack, Google Sheets, Mailchimp y más.",exploreOnZapier:"Explorar Base44 en Zapier",configureIntegration:"Configurar {{name}}",configureDesc:"Esta integración requiere algunos valores secretos para configurarse. Estos se almacenan de forma segura y cifrada.",saveAndAdd:"Guardar y Agregar Integración"},Hj={title:"Habilidades",description:"Agrega habilidades para moldear cómo la IA construye tus apps.",manage:"Gestionar"},Yj=JSON.parse('{"title":"Conectores","connectorsForAppUsers":"Conectores para usuarios de la app","connectorsForAppUsersDesc":"Configura conectores para que los usuarios de la app puedan vincular sus cuentas personales a las apps de este workspace.","connectorsForAppUsersDialogDesc":"Permite a los usuarios de la app conectar sus cuentas personales a las apps de este workspace.","addConnector":"Agregar conector","browseConnectors":"Explorar conectores","noConnectorsYet":"Aún no hay conectores","noConnectorsYetDesc":"Agrega conectores para que los usuarios de la app puedan vincular sus cuentas personales.","view":"Ver","edit":"Editar","connections":"Conexiones","addConnection":"Agregar conexión","viewConnector":"Ver conector","connectorName":"Nombre del conector","connector":"Conector {{name}}","examplePrompts":"Prompts de ejemplo","back":"Atrás","configureConnection":"Configurar tu conexión","configureConnectionDesc":"Proporciona tu ID de cliente, secreto y permisos.","connectorNameDesc":"Ingresa un nombre corto para identificar este conector","clientId":"ID del cliente","clientSecret":"Secreto del cliente","clientSecrets":"Secretos del cliente","scopes":"Alcances","scopesDesc":"Ingresa los alcances que necesita tu app. Escribe cada alcance en una línea separada.","scopesPlaceholder":"Ingresa alcances, uno por línea","scopesPlaceholderExample":"ej.\\nhttps://www.googleapis.com/auth/calendar.readonly\\nemail","connectionConfig":"Configuración de conexión","cancel":"Cancelar","close":"Cerrar","addingConnector":"Agregando...","savingConnector":"Guardando...","saveChanges":"Guardar cambios","deleteConnector":"Eliminar conector","deleteConfirm":"¿Eliminar {{name}}? Esta acción no se puede deshacer.","deleting":"Eliminando...","addConnectionTitle":"Agregar conexión {{name}}","editConnectionTitle":"Editar conexión {{name}}","connectorReadOnly":"Conector {{name}}","readOnlyDesc":"Vista de solo lectura de los detalles del conector","builtInConnectors":"Conectores integrados","promptExamples":"Ejemplos de prompts para comenzar","adminOnlyTooltip":"Solo los administradores o propietarios del workspace pueden conectar integraciones para usuarios de la app","settingUp":"Configurando conector...","configured":"Conector configurado","setUp":"Configurar conector de usuario de app {{type}}","setUpGeneric":"Configurar conector de usuario de app","connecting":"Conectando...","connect":"Conectar","reject":"Rechazar","workspaceLevelNote":"Esta integración estará accesible a nivel de workspace y se aplicará a todas las aplicaciones creadas dentro de ese workspace.","previousMessage":"Esta configuración de conector es de un mensaje anterior","toastErrorTitle":"Error","toastCreated":"Conector creado","toastCreateFailed":"Error al crear el conector","toastDuplicateName":"Ya existe un conector con este nombre en este workspace","toastUpdated":"Conector actualizado","toastUpdateFailed":"Error al actualizar el conector","toastDeleted":"Conector eliminado","toastDeleteFailed":"Error al eliminar el conector","configFetchFailed":"No se pudo cargar la configuración de conexión. Es posible que falten campos obligatorios.","retry":"Reintentar","toastLoadFailed":"Error al cargar los conectores OAuth","namePlaceholder":"ej. Marketing {{label}}","clientIdPlaceholder":"Ingresa el ID de cliente OAuth","clientSecretPlaceholderNew":"Ingresa el nuevo secreto del cliente","clientSecretPlaceholder":"Ingresa el secreto de cliente OAuth","extraDetails":{"googlecalendar":{"longDescription":"Conéctate a Google Calendar para permitir que los usuarios de tu app vean, creen y gestionen eventos del calendario. Sincroniza horarios, automatiza la creación de reuniones a partir de envíos de formularios y crea flujos de trabajo de programación.","examplePrompt0":"Sincronizar próximas reuniones en un panel dentro de la app.","examplePrompt1":"Crear eventos de calendario a partir de envíos de formularios.","examplePrompt2":"Mostrar una vista de agenda diaria para el usuario conectado.","examplePrompt3":"Enviar recordatorios antes de los próximos eventos."},"slack":{"longDescription":"Conéctate a Slack para compartir mensajes y crear lienzos directamente para simplificar la colaboración y aumentar la productividad. Busca y recupera mensajes, canales, hilos, archivos y usuarios, dándole a Claude el contexto para agilizar tu trabajo.","examplePrompt0":"Sincronizar nuevos usuarios de la app a un canal de Slack.","examplePrompt1":"Enviar actualizaciones de estado de compilación a #devops.","examplePrompt2":"Publicar errores de la app en el canal #alertas.","examplePrompt3":"Notificar al equipo sobre nuevos comentarios de clientes."},"salesforce":{"longDescription":"Conéctate a Salesforce para acceder a contactos, prospectos, oportunidades y objetos personalizados. Permite a los usuarios de tu app ver y actualizar sus datos de CRM, rastrear negocios y automatizar flujos de trabajo de ventas.","examplePrompt0":"Mostrar un panel de oportunidades abiertas.","examplePrompt1":"Crear un nuevo prospecto a partir de un envío de formulario.","examplePrompt2":"Sincronizar actualizaciones de contactos de vuelta a Salesforce.","examplePrompt3":"Notificar al equipo cuando se cierra un negocio."},"hubspot":{"longDescription":"Conéctate a HubSpot para gestionar contactos, empresas, negocios y campañas de marketing. Permite a los usuarios de tu app sincronizar sus datos de CRM, rastrear interacciones y automatizar flujos de trabajo de marketing.","examplePrompt0":"Mostrar una lista de negocios recientes en la app.","examplePrompt1":"Agregar nuevos contactos desde formularios de registro.","examplePrompt2":"Sincronizar resultados de campañas de email en un panel.","examplePrompt3":"Actualizar etapas de negocios desde la app."},"notion":{"longDescription":"Conéctate a Notion para acceder a páginas, bases de datos y contenido del workspace. Permite a los usuarios de tu app leer y actualizar su workspace de Notion, sincronizar datos estructurados y automatizar flujos de trabajo de contenido.","examplePrompt0":"Traer listas de tareas desde una base de datos de Notion.","examplePrompt1":"Crear nuevas páginas a partir de envíos de formularios.","examplePrompt2":"Sincronizar actualizaciones de estado de proyectos a Notion.","examplePrompt3":"Mostrar contenido de Notion dentro de la app."},"slackbot":{"longDescription":"Conecta un Bot de Slack para publicar mensajes como un bot con marca personalizada con nombre e ícono propios. Responde a menciones de la app, usa comandos de barra y automatiza flujos de trabajo centrados en el bot en tu workspace de Slack.","examplePrompt0":"Publicar resúmenes diarios de standup en #general.","examplePrompt1":"Responder a comandos de barra con datos de la app.","examplePrompt2":"Enviar alertas automatizadas cuando las tareas están atrasadas.","examplePrompt3":"Notificar a los canales cuando llegan nuevos pedidos."},"googledrive":{"longDescription":"Conéctate a Google Drive para subir, organizar y gestionar archivos. Permite a los usuarios de tu app guardar documentos generados, respaldar datos y acceder a sus archivos de Drive directamente desde tu app.","examplePrompt0":"Guardar informes generados en una carpeta compartida de Drive.","examplePrompt1":"Subir archivos enviados por usuarios a Google Drive.","examplePrompt2":"Listar archivos recientes de una carpeta específica.","examplePrompt3":"Respaldar exportaciones de datos de la app en Drive automáticamente."},"gmail":{"longDescription":"Conéctate a Gmail para enviar, leer y gestionar correos electrónicos de forma programática. Permite a los usuarios de tu app automatizar flujos de trabajo de correo, leer mensajes de la bandeja de entrada y enviar correos personalizados desde su propia cuenta.","examplePrompt0":"Enviar un correo de confirmación después del envío de un formulario.","examplePrompt1":"Mostrar los últimos mensajes de la bandeja de entrada del usuario.","examplePrompt2":"Responder automáticamente a correos que cumplan ciertos criterios.","examplePrompt3":"Redactar y enviar correos personalizados de difusión."},"googlesheets":{"longDescription":"Conéctate a Google Sheets para leer, escribir y actualizar datos de hojas de cálculo. Permite a los usuarios de tu app sincronizar registros, importar datos desde hojas y exportar datos de la app a sus hojas de cálculo.","examplePrompt0":"Importar datos de productos desde una hoja de Google.","examplePrompt1":"Exportar informes diarios de ventas a una hoja de cálculo.","examplePrompt2":"Sincronizar envíos de formularios a una hoja de seguimiento.","examplePrompt3":"Leer datos de precios desde una hoja de cálculo compartida."},"googleslides":{"longDescription":"Conéctate a Google Slides para crear y editar presentaciones. Permite a los usuarios de tu app generar presentaciones desde plantillas, agregar contenido dinámico y automatizar la creación de presentaciones.","examplePrompt0":"Generar una presentación de propuesta a partir de datos de un formulario.","examplePrompt1":"Agregar una nueva diapositiva con métricas semanales.","examplePrompt2":"Crear presentaciones a partir de plantillas de informes.","examplePrompt3":"Actualizar el contenido de las diapositivas con los datos más recientes."},"googledocs":{"longDescription":"Conéctate a Google Docs para crear, leer y editar documentos. Permite a los usuarios de tu app generar contratos, completar plantillas y gestionar documentos directamente desde tu app.","examplePrompt0":"Generar un contrato a partir de una plantilla.","examplePrompt1":"Crear notas de reunión a partir de datos de un formulario.","examplePrompt2":"Completar una plantilla de documento con los datos del usuario.","examplePrompt3":"Agregar nuevo contenido a un documento existente."},"googlebigquery":{"longDescription":"Conéctate a Google BigQuery para ejecutar consultas SQL y analizar grandes conjuntos de datos. Permite a los usuarios de tu app consultar su almacén de datos, crear paneles y obtener analíticas dentro de tu app.","examplePrompt0":"Consultar datos de ventas y mostrarlos en un gráfico.","examplePrompt1":"Extraer analíticas de usuarios desde tablas de BigQuery.","examplePrompt2":"Ejecutar un informe programado desde los datos del almacén.","examplePrompt3":"Mostrar los productos con mejor rendimiento a partir de resultados de consultas."},"linkedin":{"longDescription":"Conéctate a LinkedIn para acceder a datos de perfil y compartir publicaciones. Permite a los usuarios de tu app publicar actualizaciones, obtener perfiles profesionales y automatizar flujos de trabajo de redes sociales en LinkedIn.","examplePrompt0":"Publicar actualizaciones de la empresa en LinkedIn automáticamente.","examplePrompt1":"Obtener detalles del perfil del usuario conectado.","examplePrompt2":"Compartir publicaciones de blog en LinkedIn desde la app.","examplePrompt3":"Mostrar información del perfil de LinkedIn en un panel."},"tiktok":{"longDescription":"Conéctate a TikTok para acceder a información del perfil, estadísticas de seguidores y datos de videos. Permite a los usuarios de tu app rastrear su rendimiento en TikTok y explorar sus videos publicados.","examplePrompt0":"Mostrar cantidad de seguidores y estadísticas del perfil.","examplePrompt1":"Listar los videos más recientes del usuario en TikTok.","examplePrompt2":"Mostrar métricas de rendimiento de videos en un panel.","examplePrompt3":"Rastrear el crecimiento de seguidores a lo largo del tiempo."},"discord":{"longDescription":"Conéctate a Discord para enviar mensajes, gestionar servidores e interactuar con gremios y canales. Permite a los usuarios de tu app automatizar notificaciones, publicar actualizaciones e integrarse con su comunidad de Discord.","examplePrompt0":"Enviar notificaciones de pedidos a un canal de Discord.","examplePrompt1":"Publicar alertas de la app en un canal #notificaciones.","examplePrompt2":"Listar canales disponibles en un servidor de Discord.","examplePrompt3":"Notificar al equipo cuando un nuevo usuario se registra."},"wix":{"longDescription":"Conéctate a Wix para acceder a datos del sitio, gestionar contenido e interactuar con soluciones empresariales de Wix como Tiendas, Reservas y CRM. Permite a los usuarios de tu app sincronizar productos, pedidos y datos de clientes.","examplePrompt0":"Sincronizar productos de la tienda Wix a la app.","examplePrompt1":"Traer pedidos recientes de Wix Stores.","examplePrompt2":"Mostrar disponibilidad de reservas desde Wix Bookings.","examplePrompt3":"Gestionar contactos del CRM de Wix desde tu app."},"github":{"longDescription":"Conéctate a GitHub para acceder a repositorios, gestionar issues y pull requests, y automatizar flujos de trabajo de desarrollo. Permite a los usuarios de tu app rastrear cambios en el código, crear issues y agilizar su proceso de desarrollo.","examplePrompt0":"Listar issues abiertos de un repositorio.","examplePrompt1":"Crear un nuevo issue a partir de un formulario de reporte de bugs.","examplePrompt2":"Mostrar pull requests recientes en un panel.","examplePrompt3":"Rastrear actividad de commits entre repositorios."},"wrike":{"longDescription":"Conéctate a Wrike para gestionar proyectos, tareas y colaboración en equipo. Permite a los usuarios de tu app crear y actualizar tareas, rastrear el progreso de proyectos y coordinar el trabajo entre equipos.","examplePrompt0":"Crear tareas a partir de envíos de formularios.","examplePrompt1":"Mostrar cronogramas de proyectos en un panel.","examplePrompt2":"Actualizar el estado de tareas desde dentro de la app.","examplePrompt3":"Mostrar carga de trabajo del equipo y asignaciones de tareas."},"box":{"longDescription":"Conéctate a Box para subir, gestionar y compartir archivos y carpetas. Permite a los usuarios de tu app almacenar documentos de forma segura, organizar archivos y colaborar en contenido en Box.","examplePrompt0":"Subir documentos generados a una carpeta de Box.","examplePrompt1":"Listar archivos en un directorio compartido de Box.","examplePrompt2":"Descargar archivos de Box dentro de la app.","examplePrompt3":"Compartir un enlace de archivo de Box con miembros del equipo."},"clickup":{"longDescription":"Conéctate a ClickUp para gestionar tareas, proyectos y flujos de trabajo del equipo. Permite a los usuarios de tu app crear tareas, actualizar estados y rastrear el progreso de proyectos directamente desde tu app.","examplePrompt0":"Crear tareas de ClickUp a partir de envíos de formularios.","examplePrompt1":"Mostrar el estado del tablero de tareas en un panel.","examplePrompt2":"Actualizar prioridades de tareas desde la app.","examplePrompt3":"Listar tareas atrasadas del sprint actual."},"google_analytics":{"longDescription":"Conéctate a Google Analytics para acceder a datos de tráfico web, comportamiento de usuarios y rendimiento de marketing. Permite a los usuarios de tu app ver informes de analíticas y rastrear métricas clave desde dentro de tu app.","examplePrompt0":"Mostrar vistas de página y sesiones en un panel.","examplePrompt1":"Mostrar las principales fuentes de tráfico de la última semana.","examplePrompt2":"Rastrear tasas de conversión entre campañas.","examplePrompt3":"Obtener datos demográficos y de comportamiento de usuarios."},"outlook":{"longDescription":"Conéctate a Outlook para enviar y leer correos electrónicos, gestionar eventos del calendario y acceder al correo y calendario de Microsoft 365. Permite a los usuarios de tu app automatizar flujos de trabajo de correo y sincronizar su agenda.","examplePrompt0":"Enviar correos de seguimiento desde la app.","examplePrompt1":"Mostrar próximos eventos del calendario.","examplePrompt2":"Crear eventos de calendario a partir de envíos de formularios.","examplePrompt3":"Mostrar correos recientes en un panel."},"linear":{"longDescription":"Conéctate a Linear para crear y gestionar issues, proyectos y ciclos. Permite a los usuarios de tu app rastrear flujos de trabajo del equipo, organizar sprints y mantenerse al día con el progreso de ingeniería.","examplePrompt0":"Crear issues en Linear a partir de formularios de reporte de bugs.","examplePrompt1":"Mostrar issues del sprint activo en un panel.","examplePrompt2":"Actualizar el estado de issues desde dentro de la app.","examplePrompt3":"Rastrear el progreso del ciclo y la velocidad del equipo."},"dropbox":{"longDescription":"Conéctate a Dropbox para subir, descargar y gestionar archivos y carpetas. Permite a los usuarios de tu app almacenar archivos en la nube, sincronizar datos y acceder a su contenido de Dropbox desde tu app.","examplePrompt0":"Subir informes exportados a Dropbox.","examplePrompt1":"Listar archivos en una carpeta específica de Dropbox.","examplePrompt2":"Descargar archivos compartidos dentro de la app.","examplePrompt3":"Sincronizar respaldos de datos de la app a Dropbox."}},"builtIn":{"sendEmail":{"name":"Enviar correos","rowDescription":"Envía correos electrónicos a personas en tu app Base44 con nombres de remitente personalizables y contenido HTML enriquecido.","subtitle":"Envía correos electrónicos automatizados a tus usuarios directamente desde tu app.","longDescription":"Envía correos electrónicos automáticamente desde tu app como parte de flujos de trabajo o automatizaciones. Esta integración puede activarse desde flujos, funciones backend o agentes para enviar notificaciones como confirmaciones, alertas, resúmenes o enlaces de acceso a usuarios.","examplePrompt0":"Cuando un ticket de soporte se actualice a \\"resuelto\\", usa SendEmail para notificar al solicitante con un resumen de la resolución.","examplePrompt1":"Crea una automatización semanal que use SendEmail para enviar a los admins un resumen de nuevos pedidos y métricas clave.","examplePrompt2":"Agrega un flujo diario que use SendEmail para enviar a los admins un resumen de nuevos registros en esta app.","examplePrompt3":"Crea una automatización que use SendEmail para recordar a los usuarios 24 horas antes de su cita reservada."},"uploadFile":{"name":"Subir archivo","rowDescription":"Permite a las personas subir archivos a tu app. Usa la URL del archivo devuelta en otras integraciones o flujos de trabajo.","subtitle":"Permite a las personas subir archivos a tu app. Usa la URL del archivo devuelta en otras integraciones o flujos de trabajo.","longDescription":"Permite a los usuarios subir archivos a tu app y adjuntarlos a registros. Esta integración potencia componentes de carga para que puedas recopilar documentos, imágenes, recibos, contratos, capturas de pantalla, fotos de perfil, archivos CSV o hojas de cálculo, y almacenar solo la URL segura del archivo en tus datos.","examplePrompt0":"Agrega un campo de carga de archivos a este formulario usando Subir archivo y guarda la URL del archivo en el registro relacionado.","examplePrompt1":"Crea una página donde los usuarios puedan subir fotos de perfil con Subir archivo y almacenar la URL de la imagen en su entidad de usuario.","examplePrompt2":"Configura un área de carga para archivos CSV usando Subir archivo para que pueda importar esos archivos más tarde en mis tablas de datos."},"invokeLlm":{"name":"Invocar LLM","rowDescription":"Genera respuestas de IA usando modelos de lenguaje integrados, prompts, archivos y salidas estructuradas.","subtitle":"Genera respuestas de IA usando modelos de lenguaje integrados, prompts, archivos y salidas estructuradas.","longDescription":"Usa un modelo de lenguaje para generar respuestas a partir de prompts. Esta integración puede devolver salidas JSON estructuradas, analizar imágenes, usar archivos adjuntos como contexto y realizar búsquedas web cuando sea necesario. Se puede usar para potenciar agentes, flujos de trabajo y otras funciones impulsadas por IA en tu app.","examplePrompt0":"Genera respuestas de IA a partir de la entrada del usuario usando Invocar LLM y muestra la respuesta en esta página.","examplePrompt1":"Usa Invocar LLM para resumir mensajes de feedback largos en tres puntos clave almacenados en cada registro de Feedback.","examplePrompt2":"Agrega una función \\"reescribir este texto\\" que envíe el texto del usuario a Invocar LLM y devuelva una versión más clara y amigable.","examplePrompt3":"Usa Invocar LLM para clasificar cada ticket de soporte como \\"bug\\", \\"solicitud de función\\" o \\"pregunta\\" y guardar la etiqueta en el registro del ticket."},"generateImage":{"name":"Generar imagen","rowDescription":"Crea imágenes a partir de descripciones de texto detalladas. Devuelve una URL a la imagen generada.","subtitle":"Simplemente proporciona un prompt de texto describiendo la imagen que deseas, y devuelve una URL a la imagen generada.","longDescription":"Genera imágenes usando IA a partir de prompts de texto o flujos en tu app. Esta integración permite que tu app cree imágenes de portada, miniaturas, avatares, marcadores de producto o visuales de marketing simples bajo demanda sin conectar a un proveedor de imágenes externo.","examplePrompt0":"Usa Generar imagen para crear una imagen de producto predeterminada cuando se agrega un nuevo producto sin fotos.","examplePrompt1":"Agrega una función donde los usuarios puedan ingresar una descripción corta y Generar imagen devuelva una URL de imagen de portada guardada en su publicación.","examplePrompt2":"Crea un flujo que use Generar imagen para generar imágenes de avatar para nuevos usuarios basándose en su color o tema favorito."},"extractData":{"name":"Extraer datos de archivos subidos","rowDescription":"Extrae datos estructurados de archivos subidos (CSV, PNG, JPG, JPEG, PDF) usando esquemas JSON. Útil para importar datos en masa.","subtitle":"Extrae datos estructurados de archivos subidos (CSV, PNG, JPG, JPEG, PDF) usando esquemas JSON. Útil para importar datos en masa.","longDescription":"Extrae automáticamente datos estructurados de archivos subidos a tu app y almacénalos en tus entidades. Esta integración lee documentos y hojas de cálculo y convierte su contenido en campos estructurados que puedes usar en registros, informes o automatizaciones.","examplePrompt0":"Cuando alguien suba una factura PDF, usa Extraer datos para obtener el proveedor, monto total y fecha de vencimiento en una entidad de Facturas.","examplePrompt1":"Usa Extraer datos para leer un CSV de contactos y crear un registro de contacto por fila.","examplePrompt2":"Después de que un usuario suba una imagen de recibo, usa Extraer datos para extraer el comerciante, fecha y artículos en un registro estructurado de Gastos."},"whatsapp":{"name":"WhatsApp","rowDescription":"Conecta tu agente a WhatsApp para que las personas puedan enviar mensajes al agente de tu app directamente desde su teléfono, sin abrir la app.","subtitle":"Conecta tu agente a WhatsApp para que las personas puedan enviar mensajes al agente de tu app directamente desde su teléfono, sin abrir la app.","longDescription":"Conecta tu agente a WhatsApp para que las personas puedan enviar mensajes al agente de tu app directamente desde su teléfono. Usa esta integración para manejar soporte, recopilar datos o enviar actualizaciones por WhatsApp mientras el agente accede a los datos y flujos de trabajo de tu app en segundo plano.","examplePrompt0":"Conecta mi agente de soporte a WhatsApp para que los clientes puedan hacer preguntas ahí y el agente responda usando el conocimiento de mi app.","examplePrompt1":"Configura un flujo de WhatsApp donde los nuevos mensajes creen o actualicen registros en mi entidad de Contactos y el agente confirme los detalles.","examplePrompt2":"Cuando el estado de un pedido cambie a \\"enviado\\", haz que el agente envíe un mensaje de WhatsApp con el enlace de seguimiento e información clave del pedido."}}}'),Kj={title:"Conectores para usuarios de la app",description:"Configura conectores para que los usuarios de la app puedan vincular sus cuentas personales.",manage:"Gestionar"},Zj={connections:Wj,integrations:Gj,skillsBanner:Hj,oauthConnectors:Yj,oauthConnectorsBanner:Kj},Jj={importSuccessful:"Importación Exitosa",importSuccessfulMsg:"Se importaron {{count}} registros de {{name}} exitosamente",importFailed:"Importación Fallida",exportSuccessful:"Exportación Exitosa",exportSuccessfulMsg:"Entidades exportadas a CSV exitosamente",exportFailed:"Exportación Fallida",moveAllToTrash:"Mover Todos los Registros a la Papelera",moveAllToTrashConfirm:"¿Estás seguro de que quieres mover todos los registros a la papelera? Puedes restaurarlos después desde la papelera.",moveToTrash:"Mover a la Papelera",success:"Éxito",allMovedToTrash:"Todos los registros movidos a la papelera exitosamente",error:"Error",add:"Agregar",addItem:"Agregar elemento",import:"Importar",export:"Exportar",schema:"Esquema",recentlyDeleted:"Eliminados Recientemente",deleteAll:"Eliminar Todo",permissions:"Permisos",permissionsDesc:"Crea reglas para controlar quién puede leer y escribir registros. Múltiples reglas se combinan con lógica OR.",saveRules:"Guardar Reglas",permissionsIssueDetected:"Problema de permisos detectado",learnMoreAboutPermissions:"<a>Más información <icon/></a> sobre permisos y reglas de seguridad",customize:"Personalizar",apply:"Aplicar",checkingPermissions:"Verificando seguridad de permisos",failedCheckPermissions:"Error al verificar permisos",permissionsCheckPassed:"Verificación de permisos exitosa",recommendedRules:"Reglas recomendadas",editRecord:"Editar {{entity}}",addNewRecord:"Agregar Nuevo {{entity}}",test:"Prueba",production:"Producción",filters:"Filtros",schemaEditor:"Editor de Esquema",noRecordsFound:"No se encontraron registros",getStartedAdding:"Comienza agregando tu primer registro.",loadingEntity:"Cargando {{entity}}..."},Qj={production:"Producción",test:"Prueba"},Xj={back:"Volver",trashTitle:"{{entity}}: Papelera",test:"(Prueba)",production:"(Producción)",trashDescription:`Ver, restaurar o eliminar permanentemente elementos.
Los elementos se eliminan permanentemente después de 30 días.`,permanentlyDelete:"Eliminar Registro Permanentemente",permanentlyDeleteConfirm:"¿Estás seguro de que quieres eliminar permanentemente este registro? Esta acción no se puede deshacer.",deletePermanently:"Eliminar Permanentemente",restoreSelected:"Restaurar Registros Seleccionados",restoreSelectedConfirm:"¿Estás seguro de que quieres restaurar {{count}} registro(s) seleccionado(s)?",restore:"Restaurar",restoreAll:"Restaurar Todos los Registros",restoreAllConfirm:"¿Estás seguro de que quieres restaurar todos los registros en la papelera?",restoreAllBtn:"Restaurar Todo",deletedDate:"Fecha de Eliminación",actions:"Acciones",failedToLoad:"Error al cargar registros eliminados",tryAgain:"Intentar de Nuevo",loadingDeleted:"Cargando registros eliminados...",noDeletedRecords:"No se encontraron registros eliminados",restoreCount:"Restaurar {{count}} Seleccionados",restoring:"Restaurando..."},eO={data:Jj,toolbar:Qj,trash:Xj},tO=JSON.parse(`{"title":"Dominios","subtitle":"Compra, conecta y gestiona tus dominios.","learnMore":"Saber más","expired":"Expirado hace {{days}} días","expiresIn":"Expira en {{days}} días","lastChecked":"Última verificación: {{time}}","domainLinked":"Dominio vinculado","domainLinkedMsg":"El dominio ha sido vinculado a tu proyecto","errorLinkingDomain":"Error al vincular dominio","linking":"Vinculando...","linkDomain":"Vincular Dominio","checkStatus":"Verificar Estado","checking":"Verificando...","verifyDomain":"Verificar","verifying":"Verificando...","unlinkDomain":"Desvincular Dominio","unlinking":"Desvinculando...","unlinked":"Desvinculado","domainActive":"Dominio Activo","waitingDns":"Esperando Propagación DNS","verified":"Verificado","error":"Error","pending":"Pendiente","domainUnlinked":"Dominio desvinculado","domainUnlinkedMsg":"El dominio ha sido desvinculado de tu proyecto","errorUnlinkingDomain":"Error al desvincular dominio","domainDeleted":"Dominio eliminado","errorDeletingDomain":"Error al eliminar dominio","errorCheckingStatus":"Error al verificar estado","verificationInitiated":"Verificación iniciada","checkBackMinutes":"Por favor, vuelve a verificar en unos minutos","errorVerifyingDomain":"Error al verificar dominio","deleteDomain":"Eliminar Dominio","deleteConfirm":"¿Estás seguro de que quieres eliminar?","deleting":"Eliminando...","unlinkDialogDescription":"Este dominio fue comprado a través de Base44.\\n\\nPermanecerá listado en tus dominios pero ya no estará conectado a tu proyecto.","wantToUseDomain":"¿Quieres usar tu dominio?","customDomainsAvailable":"Los dominios personalizados están disponibles en nuestro plan Builder y superiores.<br/>Mejora tu plan para conectar tu dominio a esta app.","viewPlans":"Ver Planes","getNewDomain":"Obtener un nuevo dominio","getNewDomainDescription":"Dale a tu app un aspecto profesional con un dominio único.","suggestedForApp":"Sugerido para tu app: <bold>{{domain}}</bold>","suggestedForApp_prefix":"Sugerido para tu app:","buyNewDomain":"Comprar nuevo dominio","buyAnother":"Comprar otro","buyThisDomain":"Comprar este dominio","orConnectExisting":"O conecta un dominio existente que ya poseas","connectExistingDomain":"Conectar dominio existente","getYourCustomDomain":"Obtén tu dominio personalizado","upgradeDescription":"Los dominios personalizados están disponibles en el plan Builder y superiores.","upgradeYourPlan":"Mejora tu plan","processing":"Procesando...","loading":"Cargando...","domainLimitReached":"Límite de Dominios Alcanzado","domainLimitMsg":"Has alcanzado el máximo de {{max}} dominios para esta app ({{current}}/{{max}}).\\nPor favor, elimina algunos dominios antes de agregar nuevos.","noCustomDomainYet":"Aún no has conectado un dominio personalizado","connectDescription":"Conecta tu app de Base44 a tu propio dominio para destacar tu marca y hacer tu app fácil de encontrar y compartir.","buyDomain":"Comprar dominio","neverExpires":"Nunca expira","editUrl":"Editar URL","domainPurchased":"¡Dominio Comprado!","domainPurchasedMsg":"Tu dominio {{domain}} fue comprado exitosamente. Esperando a que aparezca en tus dominios...","domainPurchaseFailed":"Compra de Dominio Fallida","purchaseFailedMsg":"La compra falló para {{domain}}.","domainLimitReachedToast":"Límite de dominios alcanzado","domainLimitToastMsg":"Solo puedes tener hasta {{max}} dominios por app. Por favor, elimina algunos dominios primero.","domainAddedSuccessfully":"Dominio agregado exitosamente.","verifyToComplete":"Por favor, verifica tu dominio para completar la configuración.","failedToConnect":"Error al conectar tu dominio","connectYourDomain":"Conectar","builtInDomain":"URL integrada","customDomains":"Dominios personalizados","adminCanAdd":"Admin: puede agregar cualquier dominio","domainDisabled":"Dominio desactivado","domainEnabled":"Dominio activado","domainDisabledMsg":"El dominio ha sido desactivado y ya no servirá tráfico.","domainEnabledMsg":"El dominio ha sido reactivado y volverá a servir tráfico.","errorTogglingDomain":"Error al cambiar el estado del dominio","disabledBadge":"Desactivado","enableDomain":"Activar","disableDomain":"Desactivar","enableDomainTitle":"Activar dominio (admin)","disableDomainTitle":"Desactivar dominio (admin)","errorFetchingDomains":"Error al obtener dominios","cancel":"Cancelar","cannotPurchase":"No se puede comprar el dominio","domainPurchaseDisabled":"La compra de dominios está deshabilitada actualmente","entriNotReady":"Entri aún no está listo. Por favor, intenta de nuevo en un momento.","errorPurchasingDomain":"Error al comprar dominio","loadingEntri":"Cargando Entri...","addNewDomain":"Agregar Nuevo Dominio","enterDomainFormat":"Ingresa el nombre de tu dominio a continuación. Asegúrate de que siga el formato: app.ejemplo.com","enterDomainPlaceholder":"Ingresa dominio (ej., app.ejemplo.com)","invalidDomain":"Esto no parece un dominio válido.\\nIngresa un dominio válido, ej. ejemplo.com o app.ejemplo.com.","domainAlreadyConnected":"Este dominio ya está conectado a tu app.","configureDnsAtRegister":"Configurar DNS en el registrador","addDomain":"Agregar Dominio","adding":"Agregando...","domainConnectionNeeded":"Se necesita conexión de dominio","retryFromEmailSettings":"Por favor, reintenta desde la configuración de dominio de correo.","emailDomainSubmitted":"Dominio de correo enviado.","addDnsRecords":"Por favor, agrega los registros DNS a tu proveedor de dominio.","verificationMayTake48h":"La verificación puede tardar hasta 48 horas.","senderDetailsUpdated":"Datos del remitente actualizados.","editSenderDetails":"Editar datos del remitente","setSenderDetails":"Configura los datos de tu remitente","saveChanges":"Guardar Cambios","connectDomain":"Conectar Dominio","saving":"Guardando...","connecting":"Conectando...","usersWillGetEmails":"Tus usuarios recibirán correos con estos datos de remitente.","senderName":"Nombre del remitente","customAddress":"Dirección personalizada","noReply":"no-reply","noReplyEmailAddress":"no-reply@base44-apps.com","domain":"Dominio","copyToClipboard":"Copiar al portapapeles","addCnameRecord":"Agregar registro CNAME: ","wwwToDomain":"www → base44.onrender.com","addAnameRecord":"Agregar registro ANAME/ALIAS: ","emptyOrAtDomain":"vacío o @ → base44.onrender.com","ifNoAnameSupport":"Si tu proveedor DNS no soporta ANAME/ALIAS, usa un registro A:","aRecordIp":"@ → 216.24.57.1","removeAaaaRecords":"Elimina cualquier registro AAAA de tu dominio mientras configuras DNS. Los registros AAAA apuntan a una dirección IPv6, y Base44 usa IPv4. Estos registros pueden causar comportamiento inesperado para tu dominio personalizado.","dnsChangesNote":"Por favor ten en cuenta que, después de agregar registros DNS, puede tomar un tiempo para que los cambios se propaguen completamente por internet. Durante este tiempo, el dominio puede no funcionar correctamente.","addDnsRecordsFor":"1. Agrega estos registros DNS a tu proveedor de dominio para ","type":"Tipo","nameColumn":"Nombre","hostColumn":"Host","tabAnameAlias":"ANAME/ALIAS","tabARecord":"Registro A","addRecordsStepIntro":"Añade estos registros en el panel de tu proveedor para terminar la configuración:","removeAaaaShort":"Asegúrate de eliminar los registros AAAA (IPv6), ya que pueden bloquear las conexiones.","customDomainStep2Verify":"Cuando hayas actualizado todos los registros en el panel de tu proveedor, haz clic en «<bold>Verificar dominio</bold>». Los cambios de DNS pueden tardar hasta 48-78 horas en propagarse.","closeModal":"Cerrar","verifyDomainButton":"Verificar dominio","dnsTargetFallback":"base44.onrender.com","value":"Valor","onceConfiguredVerify":"2. Una vez configurado, haz clic en '<bold>Verificar</bold>' en la tarjeta del dominio de correo para verificar la configuración. Los cambios DNS pueden tardar hasta 48-78 horas en propagarse.","emailDnsChangesNote":"Por favor ten en cuenta que, después de agregar registros DNS, los cambios pueden tardar hasta 48 horas en propagarse. Durante este tiempo, los correos se enviarán desde la dirección de correo actual.","configureDnsForEmail":"Configurar DNS para dominio de correo","connectDomainDns":"Conecta tu dominio a través de tu proveedor DNS","followInstructions":"Sigue las instrucciones a continuación para configurar los registros DNS.","addRecordsInProvider":"Agrega estos registros en el panel de tu proveedor para completar la configuración.","done":"Listo","needHelp":"¿Necesitas ayuda? Crea un ticket en ","supportSystem":"sistema de soporte","urlUpdated":"URL actualizada","customUrlRemoved":"URL personalizada eliminada. Tu app ahora está disponible en {{url}}","appAvailableAt":"Tu app ahora está disponible en {{url}}","urlAlreadyTaken":"Esta URL ya está en uso. Prueba una de las sugerencias o ingresa otra URL.","urlAlreadyTakenNoSuggestions":"Esta URL ya está en uso. Por favor, intenta con otra URL.","suggestedAlternatives":"Alternativas disponibles:","urlReserved":"Esta URL está reservada. Por favor, intenta con otra.","urlInvalid":"Esta URL no es válida. Por favor, intenta con otra.","slugInvalidClient":"Esta URL no es válida. Usa solo letras minúsculas, números y guiones.","slugResetToDefault":"Slug restablecido al valor predeterminado","errorResettingSlug":"Error al restablecer slug","failedResetSlug":"Error al restablecer al slug predeterminado","editUrlTitle":"Editar URL","builtInDomainLabel":"URL integrada de Base44","resetToDefault":"Restablecer al valor predeterminado","urlEditingRequiresPlan":"La edición de URL requiere un plan starter. ","upgradeToPremium":"Mejorar a Premium","changing":"Cambiando...","change":"Cambiar","emailDomain":"Dominio de correo","sendingFromDefault":"Enviar desde el dominio predeterminado cuesta 1 crédito de integración por correo. Usar un dominio personalizado cuesta 2 créditos de integración.","useCustomDomain":"Usa tu dominio personalizado","sendingFrom":"Nombre del Remitente: {{name}}","connectDomainForCustom":"Conecta un dominio para usar una dirección de remitente personalizada.","buyADomain":"Comprar un dominio","dnsConfiguration":"Configuración DNS","pleaseWaitTryAgain":"Por favor, espera un momento e intenta de nuevo.","dnsConfigFailed":"La configuración DNS falló","dnsPleaseTryLater":"Por favor, intenta de nuevo más tarde.","verificationFailed":"La verificación falló","dnsNotVerified":"Los registros DNS aún no se han verificado. Por favor, revisa tu configuración DNS e intenta de nuevo.","domainVerificationFailed":"La verificación del dominio falló","couldntVerifyDns":"No pudimos verificar tus registros DNS. Por favor, revísalos e intenta de nuevo.","completeSetup":"Completar Configuración","opening":"Abriendo...","cancelling":"Cancelando...","connectionFailed":"La conexión falló","retry":"Reintentar","retrying":"Reintentando...","couldntCompleteDns":"No se pudo completar la configuración DNS. Por favor, intenta de nuevo.","couldntConnectEmail":"No se pudo conectar el dominio al proveedor de correo. Por favor, intenta de nuevo.","pendingVerification":"Verificación pendiente","emailBeingVerified":"Tu dirección de correo está siendo verificada.","makeSureDnsCorrect":"Asegúrate de que los registros DNS se hayan agregado correctamente a tu proveedor de dominio.","verify":"Verificar","notConfigured":"No Configurado","active":"Activo","editSenderDetailsAction":"Editar Datos del Remitente","detachCustomDomain":"Desconectar dominio personalizado","suspended":"Suspendido","disabled":"Deshabilitado","blocked":"Bloqueado","propagationBlocked":"Propagación Bloqueada","propagationBlockedTooltip":"La propagación DNS puede tardar. Compara tus registros DNS con nuestras instrucciones si algo sigue fallando.","pendingConnection":"Conexión pendiente","completeSetupToSend":"Completa la configuración para empezar a enviar correos desde tu dominio. Los correos actualmente se envían desde ","emailCurrentlySentFrom":"Tu dirección de correo está siendo verificada. Los correos actualmente se envían desde ","dnsNotVerifiedYet":"Los registros DNS aún no han sido verificados. Asegúrate de que estén configurados correctamente y luego haz clic en 'Verificar'.","couldntConnectMakeSure":"No se pudo conectar el dominio al proveedor de correo. Asegúrate de que los registros DNS se hayan agregado correctamente a tu proveedor de dominio e intenta de nuevo.","base44Domain":"Dominio Base44","maxDomainsReached":"Se alcanzó el máximo de {{max}} dominios para esta app","viewDnsRecords":"Ver registros DNS","upgradeBannerText":"Los dominios personalizados requieren un plan Builder o superior. Actualiza para habilitarlos.","upgradeToUseDomain":"Actualiza tu plan para usar este dominio.","emailDomainPurchasedOnly":"La configuración del dominio de correo actualmente solo está disponible para dominios comprados a través de Base44.","save":"Guardar","urlHint":"Usa solo letras minúsculas, números y guiones","copyUrl":"Copiar URL","builtInUrlTooltip":"Tu app siempre estará disponible en esta URL.","builderPlanRequired":"Esta característica está disponible en nuestro plan Builder y superiores.","somethingWentWrong":"Algo salió mal","failedToGetPurchaseConfig":"No se pudo obtener la configuración de compra","errorEnablingEmail":"Error al habilitar correo","failedToEnableEmail":"No se pudo habilitar el correo","errorUpdatingSenderDetails":"Error al actualizar datos del remitente","failedToUpdateSenderDetails":"No se pudieron actualizar los datos del remitente","errorReplacingDomain":"Error al reemplazar dominio","failedToReplaceDomain":"No se pudo reemplazar el dominio","failedToAddDomain":"No se pudo agregar el dominio","processingPurchase":"Procesando compra...","subscriptionRequired":"Suscripción Requerida"}`),aO={domains:tO},nO={title:"Explorador de registros",subtitle:"Monitorea los registros del sistema de tu aplicación.",refresh:"Actualizar",loadingLogs:"Cargando registros...",pleaseWait:"Por favor espera mientras obtenemos tus registros",failedToLoad:"Error al cargar registros",errorFetching:"Hubo un error al obtener los registros. Por favor, intenta de nuevo.",noLogsMatchFilters:"Ningún registro coincide con tus filtros",tryAdjusting:"Intenta ajustar tus filtros",noLogsFound:"No se encontraron registros",logsWillAppear:"Los registros aparecerán aquí cuando ocurra actividad",tryAgain:"Intentar de nuevo",resetFilters:"Restablecer filtros",details:"Detalles",outputs:"Resultados",errorTab:"Error",noAdditionalDetails:"No hay detalles adicionales disponibles.",clearFilters:"Limpiar filtros",filterByEmail:"Filtrar por correo...",errorsOnly:"Solo errores",allEvents:"Todos los Eventos",typeColumn:"Tipo",userColumn:"Usuario",timestamp:"Marca de tiempo"},iO={title:"Analíticas",publishToCollect:"Publica tu app para comenzar a recopilar datos."},rO={title:"Documentación API",subtitle:"Referencia completa de la API de tu app. Usa la especificación OpenAPI con cualquier cliente API o herramienta de documentación.",downloadSpec:"Descargar especificación OpenAPI",copyForLLM:"Copiar para IA",copyForLLMTooltip:"Copiar documentación Markdown amigable para IA al portapapeles",copied:"¡Copiado!",codeExamplesIn:"Ejemplos de código en:",authTitle:"Autenticación",authDescription:"Todas las solicitudes API requieren un encabezado api_key. Puedes encontrar tu clave API en tu perfil de usuario, o recuperarla programáticamente con User.me() en el SDK de la app.",sdkAuthDescription:"Instala el SDK de Base44 e inicializa el cliente con el ID de tu app. El SDK gestiona la autenticación y proporciona métodos tipados para todas las operaciones de entidades y funciones backend.",entitiesTitle:"Endpoints de Entidades",schema:"Esquema",endpoints:"Endpoints",copyAll:"Copiar todo",copyEntity:"Copiar entidad",functionsTitle:"Funciones Backend",functionsDescription:"Invoca tus funciones backend desplegadas vía HTTP. Cada función acepta cualquier payload JSON y devuelve la respuesta de la función.",agentTitle:"Agente de App",agentDescription:"Interactúa con el agente de IA de tu app a través de conversaciones. Crea una conversación, envía mensajes y recibe respuestas del agente.",copy:"Copiar",parameters:"Parámetros",loading:"Cargando documentación de la API...",error:"Error al cargar la documentación de la API. Inténtalo de nuevo."},oO={logs:nO,analytics:iO,api:rO},sO={error:"Error",appStillLoading:"La app aún está cargando... nombre no actualizado",appNameEmpty:"El nombre de la app no puede estar vacío",removedFromFavorites:"Eliminado de favoritos",addedToFavorites:"Agregado a favoritos",removedDescription:"App eliminada de tu lista de favoritos",addedDescription:"App agregada a tu lista de favoritos",descriptionUpdated:"Descripción actualizada",descriptionUpdatedMsg:"La descripción de tu app ha sido actualizada exitosamente",failedUpdateDescription:"Error al actualizar la descripción de la app",openApp:"Abrir App",shareApp:"Compartir App",winFreeCredits:"¡gana créditos gratis!",appVisibility:"Visibilidad de la App",controlAccess:"Controla quién puede acceder a tu aplicación",inviteUsers:"Invitar usuarios",growUserBase:"Haz crecer tu base de usuarios invitando a otros",copyLink:"Copiar enlace",copied:"¡Copiado!",sendInvites:"Enviar invitaciones",paymentsViaStripe:"Pagos con Stripe",pendingSetup:"Configuración Pendiente",completeSetupGuide:"Completa la guía de configuración para aceptar pagos reales",live:"Activo",testModeMessage:"Aún estás en modo de prueba. Completa la configuración para empezar a recibir pagos.",readyForPayments:"Tu app está lista para aceptar pagos con Stripe.",continueSetup:"Continuar Configuración",payments:"Pagos",poweredByWix:"Proporcionado por Wix",manage:"Gestionar",openingWixPayments:"Abriendo Wix Payments...",wixPaymentsErrors:{noUrl:"No se pudo obtener la URL de Wix Payments. Inténtalo de nuevo.",fetchFailed:"No se pudo abrir Wix Payments. Inténtalo de nuevo.",invalidRedirect:"No se pudo abrir Wix Payments. Inténtalo de nuevo."},disconnected:"Desconectado",wixPaymentsDashboardError:"No se pudo abrir el panel de Wix Payments",platformBadge:"Insignia de Plataforma",badgeVisible:'La insignia "Editar con Base44" es actualmente visible en tu app.',hideBadge:"Ocultar Insignia",editAppNameAccessibilityLabel:"Editar título",editAppDescription:"Editar Descripción de la App",descriptionPrompt:"Proporciona una breve descripción del propósito y funcionalidad de tu app.",describeYourApp:"Describe tu app...",cancel:"Cancelar",save:"Guardar",created:"Creado {{time}}"},lO={overview:sO},cO={title:"Seguridad de la App",subtitle:"Configura políticas de seguridad a nivel de fila para controlar quién puede acceder a los datos de tu app",scanIssues:"Escanear problemas",scanTime:"El escaneo normalmente toma unos minutos en completarse",scanning:"Escaneando",startSecurityCheck:"Verificación de seguridad",scanResults:"Resultados del Escaneo",rlsRecommendations:"Recomendaciones RLS",rlsRecommendationsFound:"{{count}} recomendación(es) RLS encontrada(s),",viewRecommendations:"Ver recomendaciones",noRlsRecommendations:"No se encontraron recomendaciones RLS",secrets:"Secretos",exposedSecretsFound:"{{count}} secreto(s) expuesto(s) encontrado(s)",noExposedSecrets:"No se encontraron secretos expuestos",backendFunctions:"Funciones Backend",unauthenticatedFunctions:"{{count}} función(es) backend sin autenticación encontrada(s)",noUnauthenticatedFunctions:"No se encontraron funciones backend sin autenticación",dataEntities:"Entidades de Datos",entitiesCount:"{{count}} entidades",scanComplete:"Escaneo de seguridad completado",reviewFindings:"Revisa los hallazgos a continuación.",scanFailed:"Escaneo de seguridad fallido",ruleSaved:"Regla guardada para {{entity}}",ruleSavedMsg:"La regla recomendada ha sido guardada.",failedToSaveRule:"Error al guardar regla",createAccess:"Acceso de Creación",readAccess:"Acceso de Lectura",updateAccess:"Acceso de Actualización",deleteAccess:"Acceso de Eliminación",removeAllRules:"Eliminar Todas las Reglas de Seguridad",removeAllRulesConfirm:"Esto eliminará todas las reglas de seguridad para esta entidad, permitiendo que todos los usuarios accedan a todos los registros. ¿Estás seguro de que quieres continuar?",removeAllRulesBtn:"Eliminar Todas las Reglas",securityRules:"Reglas de Seguridad: {{entity}}",securityRulesTitle:"Reglas de Seguridad",securityRulesDesc:"Crea reglas para controlar quién puede leer y escribir registros. Múltiples reglas se combinan con lógica OR.",publicAccess:"Acceso Público",publicAccessDesc:"Actualmente todos los usuarios pueden acceder a todos los registros en esta entidad. No hay restricciones de acceso.",createAccessRules:"Crear Reglas de Acceso",create:"Crear",read:"Leer",update:"Actualizar",deleteAction:"Eliminar",crudRules:"Reglas de {{crud}}",addRule:"Agregar Regla",generatedRules:"Reglas de {{crud}} Generadas (JSON)",saveSecurityRules:"Guardar Reglas de Seguridad",crudAccessRules:"Reglas de acceso de {{crud}}",configurePermissions:"Configurar permisos para cada acción",generatedJsonPreview:"JSON Generado (Vista previa)",saveRules:"Guardar Reglas",rlsRecommendation:"Recomendación RLS",dismiss:"Descartar",applyFixes:"Aplicar Correcciones",restricted:"Restringido",public:"Público",fullAccess:"Todos los usuarios tienen acceso completo",createLabel:"Crear:",readLabel:"Leer:",updateLabel:"Actualizar:",deleteLabel:"Eliminar:",noRestrictions:"Sin Restricciones",allUsersCanAccess:"Todos los usuarios pueden acceder a los registros",creatorOnly:"Solo el Creador",creatorOnlyDesc:"Los usuarios solo pueden acceder a los registros que crearon",entityUserComparison:"Comparación de Campo Entidad-Usuario",entityUserComparisonDesc:"Compara un campo en esta entidad con una propiedad del usuario",entityField:"Campo de Entidad",fieldInEntity:"Campo en la entidad para comparar",userField:"Campo de Usuario",fieldFromUser:"Campo del usuario para comparar",userPropertyCheck:"Verificación de Propiedad de Usuario",userPropertyCheckDesc:"Verifica si una propiedad del usuario coincide con un valor específico",userProperty:"Propiedad de Usuario",selectUserProperty:"Seleccionar propiedad de usuario",userRole:"Rol de Usuario",userEmail:"Correo del Usuario",fullName:"Nombre Completo",requiredValue:"Valor Requerido",selectRole:"Seleccionar rol",adminRole:"Admin",userRoleOption:"Usuario",noRestrictionsLabel:"Sin restricciones",creatorOnlyLabel:"Solo el creador",adminOnlyLabel:"Solo admin",filePath:"Archivo: {{path}}",severityCritical:"Crítico",severityHigh:"Alto",securityScanLabel:"Escaneo de Seguridad",upToDate:"Actualizado",upToDateTooltip:"No se han realizado cambios que afecten la seguridad desde la última verificación",outOfDate:"Desactualizado",outOfDateTooltip:"Se han realizado cambios que afectan la seguridad desde la última verificación. Ejecuta un nuevo escaneo de seguridad.",runSecurityScan:"Ejecutar Escaneo de Seguridad",securityPageTitle:"Seguridad",securityPageSubtitle:"Gestiona tus permisos y reglas de seguridad. <a>Más información <icon/></a>",issuesDetails:"Detalles de problemas",rlsIssuesTitle_one:"{{count}} Problema de RLS",rlsIssuesTitle_other:"{{count}} Problemas de RLS",rlsIssuesSubtitle:"Habilita la seguridad a nivel de fila para proteger tus datos",exposedSecretsTitle_one:"{{count}} Secreto Expuesto",exposedSecretsTitle_other:"{{count}} Secretos Expuestos",exposedSecretsSubtitle:"Asegura y rota cualquier secreto expuesto para mantener tu aplicación y datos seguros.",unauthBackendTitle_one:"{{count}} Función Backend sin Autenticación",unauthBackendTitle_other:"{{count}} Funciones Backend sin Autenticación",unauthBackendSubtitle:"Protege los endpoints de tareas backend con autenticación.",noIssuesFound:"No se encontraron problemas. La seguridad de tu app se ve bien, pero revísala regularmente para mantenerte protegido.",recommendedRulesLabel:"Reglas recomendadas:",fix:"Corregir",fixAll:"Corregir Todo",missingRlsRules:"{{entity}} no tiene reglas RLS",customizeSuggestion:"Personalizar sugerencia",goToEntityPage:"Ir a la página de la entidad",ruleColumnHeader:"Regla",allUsers:"Todos los usuarios",fieldComparison:"Comparación de Campo",noScanTitle:"Comprueba la seguridad de tu app",noScanDescription:"Revisa tu configuración, identifica posibles riesgos y aprende cómo fortalecer la protección de tu app",checkSecurity:"Verificar seguridad",back:"Volver",cancel:"Cancelar"},dO={title:"Secretos de la Aplicación",secretDeleted:"Secreto eliminado",errorDeletingSecret:"Error al eliminar secreto",secretUpdated:"Secreto actualizado",errorUpdatingSecret:"Error al actualizar secreto",newSecretValue:"Nuevo valor del secreto",save:"Guardar",cancel:"Cancelar",addSecret:"Agregar Secreto",addNewSecret:"Agregar Nuevo Secreto",addNewSecretDescription:"Ingresa el nombre y valor de tu secreto a continuación. Los secretos se cifran y almacenan de forma segura.",secretName:"Nombre del Secreto",secretNamePlaceholder:"Ingresa nombre del secreto (ej. API_KEY)",secretNameNoSpaces:"El nombre del secreto no puede contener espacios. Usa guiones bajos (ej. API_KEY).",secretValue:"Valor del Secreto",secretValuePlaceholder:"Ingresa valor del secreto",adding:"Agregando...",aboutSecretsManagement:"Sobre la Gestión de Secretos",secretsDescription:"Los secretos son variables de entorno que contienen información sensible como claves API, tokens y contraseñas. Se cifran en reposo y se inyectan de forma segura en tu aplicación en tiempo de ejecución.",secretsBullet1:"Los secretos son usados por tus funciones backend para acceder a servicios externos",secretsBullet2:"Todos los secretos se cifran y almacenan de forma segura",secretsBullet3:"Puedes agregar, actualizar o eliminar secretos según sea necesario para tu aplicación",needHelp:"¿Necesitas ayuda?",supportSystem:"Abre un ticket de soporte",configuredSecrets:"Secretos Configurados",noSecretsYet:"No hay secretos configurados aún. Agrega tu primer secreto para comenzar.",secretAddedSuccessfully:"Secreto agregado exitosamente",errorCreatingSecret:"Error al crear secreto",errorFetchingSecrets:"Error al obtener secretos"},uO={security:cO,secrets:dO},pO={mainPage:"Página Principal",mainPageDesc:"Establece la página de inicio predeterminada para tu app",selectMainPage:"Seleccionar página principal",appVisibility:"Visibilidad de la App",controlAccess:"Controla quién puede acceder a tu aplicación",platformBadge:"Insignia de Plataforma",platformBadgeDesc:'Muestra u oculta la insignia "Editar con Base44" en tu app.',onlyForPaying:"Disponible solo para usuarios con suscripción.",upgradeNow:"Mejorar ahora",visible:"Visible",hidden:"Oculto",hideEntityCreator:"Ocultar Creador de Entidad",hideEntityCreatorDesc:'Oculta quién creó cada registro en las tablas de datos de tu app. Cuando se habilita, el campo "creado por" no se mostrará a los usuarios.',aiAgents:"Agentes IA",aiAgentsDesc:"Crea agentes IA en tu app usando la infraestructura de agentes IA de Base44",aiAgentsEnabled:"Agentes IA Habilitados",aiAgentsEnabledDesc:"Tu app ahora tiene acceso a la infraestructura de agentes IA de Base44. Puedes crear agentes inteligentes que ayuden a los usuarios con diversas tareas, respondan preguntas e interactúen con los datos de tu app. Usa el chat para construir y configurar tus agentes.",testData:"Datos de Prueba",testDataDesc:"Usa datos de prueba para probar cambios de forma segura sin afectar los datos en producción.",onlyForBuilder:"Disponible solo para el plan Builder y superiores.",testDataVersionNote:"Para usar esto, necesitarás una versión más reciente de tu app. Solo haz cualquier cambio — envía un mensaje a la IA, modifica algo de código o usa el editor visual — y estarás listo.",cloneApp:"Clonar App",cloneAppDesc:"Crea un duplicado de esta app",githubConnectionIssue:"Problema de conexión con GitHub. Por favor, reconecta para clonar esta app.",cantCloneOldInfra:`No puedes clonar una app en la infraestructura antigua.
Actualiza la infraestructura para clonar tu app.`,createCopy:"Crear Copia",backendFunctions:"Funciones Backend",backendFunctionsDesc:"Habilita funcionalidad del lado del servidor - Recomendado para desarrolladores",activating:"Activando...",activated:"Activado",activate:"Activar",upgradePlan:"Mejorar Plan",dangerZone:"Zona de Peligro",dangerZoneDesc:"Acciones irreversibles que afectan tu app",deleteApp:"Eliminar App",deleteAppDesc:"Elimina permanentemente esta app y todos sus datos",adminControls:"Controles de Admin",adminControlsDesc:"Gestionar disponibilidad de la app",unblockApp:"Desbloquear App",blockApp:"Bloquear App",appLogo:"Logo de la App",editLogo:"Editar Logo",appDescription:"Descripción de la App",saveDescription:"Guardar Descripción",describeYourApp:"Describe tu app..."},mO={editAppLogo:"Editar Logo de la App",uploadLogo:"Subir Logo",generateLogo:"Generar Logo",dragAndDrop:"Arrastra y suelta o haz clic para subir",clickToUpload:"Haz clic para subir o arrastra y suelta",pngJpgLimit:"PNG, JPG hasta 5MB",upload:"Subir",whatShouldLook:"¿Cómo debería verse tu logo?",generating:"Generando...",generateNew:"Generar nuevo logo",cancel:"Cancelar",save:"Guardar",logoPrompt:"Prompt de Generación de Logo",describeLogo:"Describe cómo quieres que se vea tu logo",uploading:"Subiendo...",selectImage:"Seleccionar Imagen"},gO={removeListingConfirm:"¿Estás seguro de que quieres eliminar esta publicación? Esta acción la eliminará de las Plantillas de Apps.",listingRemoved:"Publicación eliminada del catálogo exitosamente",appTemplates:"Plantillas de Apps",listedFor:"Publicado por ${{price}} - {{sales}} ventas - {{status}}",manageTemplate:"Gestiona tu publicación de plantilla",shareTemplate:"Comparte tu plantilla con la comunidad para que otros puedan descubrirla y usarla.",manageListing:"Gestionar Publicación",publishToTemplates:"Publicar en Plantillas de Apps",seeOnTemplates:"Ver en Plantillas de Apps",removingListing:"Eliminando...",removeFromTemplates:"Eliminar de Plantillas de Apps",salesRevenue:"{{sales}} ventas - ${{revenue}} ingresos",publishedToTemplates:"Publicado en Plantillas de Apps",rejectedReason:"Razón de Rechazo: {{reason}}"},hO={public:"Público",private:"Privado",workspace:"Espacio de Trabajo",requireLogin:"Requiere inicio de sesión para acceder"},fO={notAvailableOnMobile:"La gestión de {{feature}} no está disponible en dispositivos móviles",loginFromDesktop:"Por favor, inicia sesión desde un navegador de escritorio",okay:"Entendido",domains:"dominios",security:"seguridad",code:"código",apiFeature:"API",templates:"plantillas"},vO={settings:pO,logo:mO,catalog:gO,visibility:hO,desktop:fO},bO={title:"Usuarios",subtitle:"Gestiona los usuarios de la app y sus roles",inviteUser:"Invitar Usuario",schema:"Esquema",searchByEmailOrName:"Buscar por correo o nombre",pendingRequests:"Solicitudes pendientes",userSchemaEditor:"Editor de Esquema de Usuario",editUser:"Editar Usuario",loadingUsers:"Cargando usuarios...",noUsersFound:"No se encontraron usuarios",noPendingRequests:"No hay solicitudes pendientes",noPendingRequestsDesc:"Actualmente no hay solicitudes de acceso esperando aprobación",inviteYourFirstUser:"Invita a tu primer usuario",getStartedByInviting:"Comienza invitando a tu primer usuario a la app.",tryAdjustingSearch:"Intenta ajustar tu búsqueda o filtros para encontrar lo que buscas.",moreActions:"Más acciones",resendInvitation:"Reenviar invitación",cancelInvite:"Cancelar invitación",editUserAction:"Editar usuario",changeOwner:"Cambiar propietario",makeAppOwner:"Hacer propietario de la app",resendOwnershipRequest:"Reenviar solicitud de propiedad",cancelOwnershipRequest:"Cancelar solicitud de propiedad",changeRole:"Cambiar rol",selectNewRole:"Selecciona un nuevo rol para {{name}}:",back:"Volver",manageInvitation:"Gestionar invitación",approve:"Aprobar",reject:"Rechazar",unknown:"Desconocido",admin:"Admin",user:"Usuario",allRoles:"todos los roles",name:"Nombre",owner:"Propietario",pendingOwnership:"Propiedad pendiente",role:"Rol",email:"Correo electrónico",hasntLoggedIn:"{{role}} aún no ha iniciado sesión en la app.",userRemovedSuccess:"Usuario eliminado exitosamente",failedCancelInvitation:"Error al cancelar la invitación",userLoggedInSinceRefresh:"Este usuario ha iniciado sesión desde tu última actualización. Actualiza la página para ver su estado actualizado antes de intentar de nuevo.",failedRemoveUser:"Error al eliminar usuario",subscriptionRequired:"Suscripción Requerida",onlyPayingCanAdmin:"Solo los usuarios con suscripción pueden hacer administradores a otros usuarios.",upgradeSubscription:"Mejora tu suscripción",toContinue:"para continuar.",userUpdatedSuccess:"Usuario actualizado exitosamente",userApprovedSuccess:"Usuario aprobado exitosamente",failedApproveRequest:"Error al aprobar la solicitud de acceso",invitationRejected:"Invitación rechazada",failedDenyRequest:"Error al rechazar la solicitud de acceso",invitationResentSuccess:"Invitación reenviada exitosamente",failedResendInvitation:"Error al reenviar la invitación",emailSent:"Correo enviado",ownershipTransferResent:"La invitación de transferencia de propiedad ha sido reenviada.",transferCancelled:"Transferencia cancelada",ownershipTransferCancelled:"La transferencia de propiedad ha sido cancelada.",failedCancelTransfer:"Error al cancelar la transferencia",cancelInviteAction:"Cancelar invitación",removeUser:"Eliminar usuario",failedApproveUser:"Error al aprobar usuario",success:"Éxito",error:"Error",save:"Guardar",deleteConfirm:"¿Estás seguro de que quieres eliminar este registro?",deleteFailed:"Error al eliminar"},yO={users:bO},kO="Contenido social",wO="Obtén un plan de promoción social y contenido listo para publicar.",AO="Cargando contenido social",SO={title:"Algo salió mal",description:"Ocurrió un error inesperado. Por favor, actualiza la página.",tryAgain:"Intentar de nuevo"},CO={emptyTitle:"Promociona tu app en redes sociales",emptyDescription:"Analizaremos tu app y crearemos publicaciones listas para compartir en redes sociales.",getStarted:"Crear mi plan de contenido",learnMore:"Más información",emptyCheck1:"Define lo que quieres lograr",emptyCheck2:"Elige los mejores canales para tu app",emptyCheck3:"Obtén ideas de posts personalizadas listas para compartir",analyzingBase:"Analizando tu app",analyzingDescription:"Conociendo tu app: qué hace, para quién es y cómo promocionarla.",combiningBase:"Creando tu estrategia de contenido",combiningDescription:"Estamos dando forma a tu mensaje y eligiendo los canales adecuados para tu lanzamiento.",planStep1:"Aplicando tu estrategia",planStep2:"Adaptando contenido para cada plataforma",planStep3:"Escribiendo los textos de los posts",planStep4:"Creando imágenes para tus publicaciones",stepOf:"Paso {{current}} de {{total}}"},DO={letsGo:"¡Vamos!",next:"Siguiente",back:"Atrás",creatingPlan:"Creando tu contenido...",creatingPlanBase:"Creando tu contenido",strategyReady:"Estrategia sugerida"},TO={emptyTitle:"¿Listo para promocionar tu app?",emptyDescription:"Responde las preguntas para personalizar tu contenido.",generateNewPlan:"Generar nuevo plan",downloadContent:"Descargar contenido",downloading:"Descargando...",startFresh:"Empezar de nuevo"},EO={copy:"Copiar",copied:"Copiado",copiedToClipboard:"Copiado al portapapeles",failedToCopy:"Error al copiar",cancel:"Cancelar",save:"Guardar",imageGenerationFailed:"Error al generar la imagen",retryImage:"Intentar de nuevo",download:"Descargar imagen",expandImage:"Ver tamaño completo",close:"Cerrar",regenerateImage:"Regenerar imagen",imageRefinePlaceholder:"¿Qué te gustaría cambiar?",imageAlt:"Visual de la publicación",share:"Compartir",editPostTitle:"Editar publicación",descriptionLabel:"Descripción",imageLabel:"Imagen",improveWithAI:"Mejorar con IA",refineInputPlaceholder:"¿Qué te gustaría cambiar?",saveChanges:"Guardar cambios"},PO={handle:"tuperfil",displayName:"Tu Nombre"},_O={reviewTitle:"Revisa tu estrategia sugerida",goalLabel:"Tu objetivo",approachLabel:"Enfoque sugerido",strategyLabel:"La estrategia",showMore:"Ver más",showLess:"Ver menos",platformsLabel:"Plataformas objetivo",platformsDescription:"Hemos preseleccionado las mejores plataformas para tu negocio.",editSelection:"Editar selección",selectPlatforms:"Elige tus plataformas",maxPlatforms:"Hasta 3 plataformas",toneLabel:"Adaptar tu tono (opcional)",toneDescription:"Pega el enlace de tu perfil social y adaptaremos los posts a tu tono.",generatePosts:"Generar posts"},xO={resetTitle:"¿Generar nuevo plan?",resetDescription:"Generaremos un plan completamente nuevo para ti. Tus publicaciones y ediciones actuales serán reemplazadas y no se podrán recuperar.",cancel:"Cancelar",resetConfirm:"Generar nuevo plan",upgradeTitle:"No hay suficientes créditos de integración",upgradeDescription:"No tienes suficientes créditos de integración para esta acción. Mejora tu plan para obtener más.",upgradeAction:"Mejorar plan"},IO={sendFailed:"Algo salió mal",sendFailedDescription:"No se pudo contactar con la IA. Por favor, inténtalo de nuevo.",postUpdated:"Publicación actualizada",postUpdateFailed:"Error al actualizar la publicación",postRefined:"Publicación refinada",refineFailed:"No se pudo refinar la publicación",refineFailedDescription:"La IA no pudo aplicar los cambios. Inténtalo de nuevo.",imageGenerated:"¡Imagen generada!",imageGenerateFailed:"No se pudo generar la imagen",imageGenerateFailedDescription:"Algo salió mal con la generación. Inténtalo de nuevo.",planReset:"Contenido reiniciado - listo para empezar de nuevo",planResetFailed:"Error al reiniciar",insufficientCredits:"Créditos de integración insuficientes",insufficientCreditsDescription:"Se acabaron tus créditos de integración. Mejora tu plan para obtener más.",downloadPartial:"No se pudo descargar todo el contenido",downloadPartialDescription:"Algunas imágenes no se pudieron descargar. Inténtalo de nuevo."},RO={pageTitle:kO,pageSubtitle:wO,loadingBase:AO,errorBoundary:SO,wizard:CO,steps:DO,toolbox:TO,post:EO,mock:PO,strategy:_O,dialog:xO,toast:IO},zO={overview:"Resumen",users:"Usuarios",data:"Datos",analytics:"Analíticas",domains:"Dominios",integrations:"Integraciones",security:"Seguridad",code:"Código",agents:"Agentes",automations:"Automatizaciones",logs:"Registros",api:"API",settings:"Configuración",appSettings:"Configuración de App",authentication:"Autenticación",appTemplate:"Plantilla de App",secrets:"Secretos",backToEditor:"Volver al Editor",codeFiles:"Archivos de código",search:"Buscar...",clearSearch:"Borrar búsqueda",virality:"Contenido social"},MO="Cargando datos de la app...",NO="Papelera: {{entityName}}",FO={issuesFound:"Problemas Encontrados",inComponent:"En el componente {{componentName}}:",resolving:"Resolviendo...",resolveWithAI:"Resolver con IA",noCreditDeduction:"Esta acción no descontará créditos de tu cuenta."},LO={loadingCheckpoint:"Cargando código del checkpoint...",errorFetchingFiles:"Error al obtener archivos",backToPreview:"Volver a la Vista Previa"},jO={letsBuild:"Construyamos Tu App",tellMeCreate:"Dime qué te gustaría crear usando el chat",loadingApp:"Cargando tu app",buildingPreview:"Construyendo vista previa",previewPreparing:"La vista previa de tu app se está preparando.",mayTakeMoment:"Esto puede tardar un momento.",previewUnavailable:"Vista previa no disponible",previewCouldntLoad:"No se pudo cargar la vista previa de esta versión.",retryBuild:"Reintentar build",buildingIdea:"Construyendo tu idea",didYouKnow:"¿Sabías que?",packagePending:"Instalación de Paquete Pendiente",approvePackage:"Por favor, aprueba la instalación del paquete npm en el chat para continuar",loadingPreview:"Cargando vista previa…",refreshPreview:"Actualizar vista previa",capture:{verbDiscovering:"Descubriendo",verbDesigning:"Diseñando",verbBuilding:"Construyendo",verbPolishing:"Puliendo",verbUnveiling:"Revelando",verbStudying:"Estudiando",verbExtracting:"Extrayendo",verbReimagining:"Reimaginando",verbRefining:"Refinando",stageAnalyzingDesign:"Analizando diseño",stageExtractingColorsAndFonts:"Extrayendo colores y fuentes",stageBuildingPages:"Construyendo páginas",stageCreatingComponents:"Creando componentes",stageRefiningDetails:"Refinando detalles",stageAlmostThere:"Casi listo",stageStudyingDesignLanguage:"Estudiando el lenguaje de diseño",stageExtractingColorsAndTypography:"Extrayendo colores y tipografía",stageCraftingYourPages:"Creando tus páginas únicas",stageApplyingDesignInspiration:"Aplicando la inspiración de diseño",stageRefiningLookAndFeel:"Refinando la apariencia",yourSite:"tu sitio",aSiteInspiredBy:"un sitio inspirado en <site>{{siteName}}</site>",progress:"Progreso"},figma:{verbFetching:"Obteniendo",verbExtracting:"Extrayendo",verbProcessing:"Procesando",verbTransforming:"Transformando",verbBuilding:"Construyendo",stageReadingDesign:"Leyendo tu diseño de Figma",stageProcessingStructure:"Procesando estructura del diseño",stageHandlingAssets:"Gestionando recursos y generando código",stageApplyingAI:"Aplicando transformación de diseño con IA",stageCompiling:"Compilando y finalizando tu app",yourFigmaDesign:"tu diseño de Figma",defaultName:"Importar de Figma"}},OO={canvas:"Canvas",dashboard:"Panel",preview:"Vista Previa",exitSplitScreen:"Salir del modo de pantalla dividida para vista previa",versionHistory:"Historial de versiones",moreOptions:"Más opciones",filesUsedInPage:"Archivos usados en esta página",seeAllFiles:"Ver todos los archivos",activityMonitor:"Monitor de actividad",exportAsZip:"Exportar proyecto como ZIP",helpCenter:"Centro de Ayuda",actAsUser:"Actuar como usuario",viewAppNewTab:"Vista previa de la versión actual",refreshPreview:"Actualizar vista previa",refresh:"Actualizar",switchToDesktop:"Cambiar a vista de escritorio",switchToMobile:"Cambiar a vista móvil",showChatPanel:"Mostrar panel de chat",hideChatPanel:"Ocultar panel de chat",turnOffTestData:"Desactivar datos de prueba",turnOnTestData:"Activar datos de prueba",shareApp:"Compartir app",shareInviteUsers:"Compartir e invitar usuarios",moreActions:"Más Acciones",inviteCollaborators:"Invitar colaboradores",viewOnly:"Solo lectura",viewOnlyAccess:"Tienes acceso de solo lectura a esta app",upgradeInfraTooltip:"Tu app está lista para una actualización rápida<br/>a la nueva infraestructura.",appOverview:"Resumen de la App",myApp:"Mi App",production:"Producción",test:"Prueba",gitHub:"GitHub",gitHubConnection:"Conexión GitHub",collaborators:"Colaboradores",collaboratorDisplayYou:"{{name}} (Tú)",collaboratorUnknown:"Desconocido",addCollaborator:"Agregar colaborador",saving:"Guardando...",savedAgo:"Guardado hace {{time}}",unsavedChanges_one:"{{count}} cambio sin guardar",unsavedChanges_other:"{{count}} cambios sin guardar",theme:"Tema",themeTitle:"Tema",themeDescription:"Estos colores y fuentes componen tu tema. Los cambios se aplican en todas partes.",themeColors:"Colores",themeFonts:"Fuentes",noThemeColors:"No se encontraron colores de tema",themeSaveChanges:"Guardar y Aplicar",themeCancel:"Cancelar",colorPickerCustom:"Personalizado",colorPickerPalette:"Paleta",fontPickerSearch:"Buscar fuentes...",fontPickerBrandFonts:"Fuentes de marca",fontPickerAllFonts:"Todas las fuentes",fontPickerNoResults:"No se encontraron fuentes",fontPickerSelectFont:"Seleccionar fuente"},BO={desktop:"Escritorio",tablet:"Tableta",mobile:"Móvil",isAvailable:"está disponible",getDomain:"Obtener dominio",connectDomain:"Conectar un dominio personalizado",undo:"Deshacer",redo:"Rehacer",fullscreen:"Pantalla completa",breakpoints:"Puntos de interrupción",splitView:"Vista dividida",exitSplitView:"Salir de vista dividida",exitPreview:"Salir de vista previa"},UO={upgrade:"Mejorar",upgradePlan:"Mejorar plan",percentOff:"{{percent}}% de descuento",limitedTimeOffer:"Oferta de bienvenida por tiempo limitado",getDiscountOff:"Obtén {{discount}} de descuento en planes anuales seleccionados"},qO={viewingVersionHistory:"Viendo Historial de Versiones",buildInProgress:"Build en progreso...",retryBuildToEnable:"Reintentar build para habilitar esta vista",viewApp:"Ver App",viewCode:"Ver Código",restoring:"Restaurando...",restoreThisVersion:"Restaurar Esta Versión",publishing:"Publicando...",publishThisVersion:"Publicar Esta Versión",exit:"Salir",back:"Atrás",publish:"Publicar",restore:"Restaurar",latest:"Más reciente"},VO={actAs:"Actuar como",actingAs:"Estás actuando como",searchUser:"Buscar un usuario específico",anonymousGuest:"Invitado Anónimo",you:"Tú",warningChanges:"Cualquier cambio que hagas se reflejará en los datos del usuario.",carefulChanges:"- ten cuidado, los cambios aquí afectan a este usuario",exitMode:"Salir del modo",noUsersYet:"Aún no tienes usuarios",addOrInvite:"Agrega o invita usuarios para ver cómo funciona tu app para ellos",invite:"Invitar",usersCount:"Usuarios ({{count}})",noMatchingUsers:"No se encontraron usuarios",trySearching:"Intenta buscar por nombre o rol"},$O={pressEnterNavigate:"Presiona Enter para navegar"},WO={publishApp:"Publicar app",publish:"Publicar",publishing:"Publicando...",disabledUntilUpdate:"La publicación está deshabilitada hasta que completes la actualización de infraestructura.",currentlyDisabled:"La publicación está deshabilitada actualmente",codeNotGenerated:"La publicación se habilitará una vez que tu app esté lista",visualEditsSaveWarning:"Algunas ediciones visuales no pudieron guardarse antes de la publicación",republishApp:"Republicar aplicación",lastPublished:"Última publicación {{time}}"},GO={whatToChange:"¿Qué te gustaría cambiar?",whatToDiscuss:"¿Qué te gustaría discutir?",saveChangesBeforeTyping:"Guarda los cambios antes de escribir",exitEditModeToContinue:"Sal del modo Edición antes de escribir",fetchingFromGitHub:"Obteniendo de GitHub...",viewOnlyAccess:"Tienes acceso de solo lectura",zeroCreditsRemaining:"0 créditos restantes",visualEdit:"Editar",visualEditDisabledAgentRunning:"La edición visual no está disponible mientras el agente está en ejecución",edit:"Editar",discuss:"Discutir",ask:"Editar elemento",editData:"Editar datos",discussMode:"Modo Discusión",discussModeDescription:"Chatea con la IA sobre cualquier tema sin hacer cambios en el código. Usa 0.3 créditos por solicitud.",thought:"Pensó",thoughtWithDuration:"Pensó <duration>durante {{duration}}</duration>",planningNextSteps:"Planificando próximos pasos...",signUpToStartBuilding:"Regístrate para empezar a construir...",suggestions:"Sugerencias",latestMessages:"Mensajes recientes",aiModel:"Modelo de IA",aiControls:"Controles de IA",uploadFile:"Subir desde computadora",uploadFileMobile:"Subir desde dispositivo",addFromGoogleDrive:"Subir desde Google Drive",connectorRequestFailed:"No se pudo enviar la solicitud del conector. Por favor, inténtalo de nuevo.",designingYourWebsite:"diseñando tu sitio web...",speechToText:"Reconocimiento de voz",processingAudio:"Procesando audio...",clickToStopRecording:"Clic para detener la grabación"},HO={dialogTitle:"Paleta de comandos del constructor",dialogDescription:"Busca páginas, archivos, entidades, vistas y acciones rápidas dentro del editor.",searchPlaceholder:"Buscar páginas, archivos, entidades, vistas y acciones rápidas...",emptyTitle:"No hay coincidencias",emptyDescription:"Prueba con el nombre de una página, la ruta de un archivo, el nombre de una entidad, una vista del editor o una acción rápida como datos de prueba.",homeSubtitle:"Inicio",navigationSubtitle:"Panel de control",viewSubtitle:"Vista del editor",entityDataSubtitle:"Datos",entityCodeSubtitle:"Código",integrationsSubtitle:"Integraciones",domainSubtitle:"Dominio personalizado",collaboratorsSubtitle:"Colaboradores",helpSubtitle:"Centro de ayuda",publishSubtitle:"Desplegar y compartir",publishNowSubtitle:"Publicar los últimos cambios",versionHistorySubtitle:"Historial de versiones",securitySubtitle:"Seguridad",testDataSubtitle:"Cambiar a datos de prueba",productionDataSubtitle:"Cambiar a datos de producción",backToWorkspace:"Volver al Workspace",switchToPreview:"Cambiar a Vista previa",switchToDashboard:"Cambiar a Panel de control",switchToCode:"Cambiar a Código",switchToCanvas:"Cambiar a Canvas",openEntityData:"Abrir datos de {{entityName}}",openEntityCode:"Abrir código de {{entityName}}",addIntegration:"Añadir integración",addDomain:"Añadir dominio",inviteCollaborator:"Invitar colaborador",getHelp:"Obtener ayuda",publishMyApp:"Publicar mi aplicación",publishNow:"Publicar ahora",versionHistory:"Ver historial de versiones",startSecurityCheck:"Iniciar verificación de seguridad",turnOnTestData:"Activar datos de prueba",turnOffTestData:"Desactivar datos de prueba",groups:{navigate:"Navegar",views:"Vistas",files:"Archivos",entities:"Entidades",actions:"Acciones"}},YO="Vista desconocida",KO="Editor de App",ZO="Beta",JO={title:"Invitar colaboradores",subtitle:"Da acceso a otras personas para editar esta app.",emailPlaceholder:"Ingresa correos, separados por comas",removeIneligible:"Eliminar usuarios no elegibles",appCollaborators:"Colaboradores de la app",you:"(Tú)",owner:"Propietario",moreActions:"Más acciones",makeAppOwner:"Hacer propietario de la app",removeCollaborator:"Eliminar colaborador",resendOwnershipRequest:"Reenviar solicitud de propiedad",getOwnershipLink:"Obtener enlace de propiedad",cancelOwnershipRequest:"Cancelar solicitud de propiedad",ownershipTooltip:"El nuevo propietario debe aceptar la transferencia a través del correo de invitación. La invitación expira en 7 días. Recibirás un correo cuando la transferencia esté completa.",removeTitle:"¿Eliminar este colaborador de tu app?",removeDescription:"Eliminar este colaborador revocará inmediatamente su acceso al editor y le impedirá realizar cambios en la app.",removeAccessOnly:"Solo eliminar acceso de colaborador",removeAccessOnlyDesc:"El usuario seguirá apareciendo en la lista de usuarios",removeEntirely:"Eliminar completamente de la app",removeEntirelyDesc:"El usuario también será eliminado de la lista de usuarios",cancel:"Cancelar",enterEmail:"Por favor ingresa una dirección de correo",invalidEmail:"Correo inválido",invalidEmails:"Una o más direcciones de correo no son válidas, por favor revísalas e intenta de nuevo.",cannotInviteOwner:"No puedes invitar al propietario de esta app",alreadyExists:"El colaborador ya existe.",alreadyExist:"Los colaboradores ya existen.",invitationSent:"Invitación de colaborador enviada exitosamente",invitationsSent:"{{count}} invitaciones de colaboradores enviadas exitosamente",removedFromApp:"Colaborador eliminado de la app",accessRemoved:"Acceso de colaborador eliminado",ownershipResent:"Solicitud de propiedad reenviada exitosamente",ownershipLinkCopied:"Enlace de propiedad copiado al portapapeles",ownershipCancelled:"Solicitud de propiedad cancelada",failedToSendInvitation:"No se pudo enviar la invitación",failedToRemoveCollaborator:"No se pudo eliminar al colaborador",failedToResendOwnership:"No se pudo reenviar la solicitud de propiedad",failedToGetOwnershipLink:"No se pudo obtener el enlace de propiedad",failedToCancelOwnership:"No se pudo cancelar la solicitud de propiedad",creditsWarning:"Todos los colaboradores consumen créditos del espacio de trabajo.",notWorkspaceMember:"No es miembro del espacio de trabajo",notMemberDescription_one:"<bold>{{emails}}</bold> no es miembro de este espacio de trabajo.",notMemberDescription_other:"<bold>{{emails}}</bold> no son miembros de este espacio de trabajo.",addAsGuest:"Añadir como invitado",addAsGuestDescription:"El usuario será añadido como invitado con acceso solo a esta app.",addToWorkspace:"Añadir al espacio de trabajo",addToWorkspaceDescription:"Ir a la configuración del espacio de trabajo para añadir como miembro completo.",guestBadge:"Invitado",emailListOverflow:"{{first}} y {{count}} más",pendingInvitationWarning_one:"Este usuario ya tiene una invitación pendiente como miembro del espacio de trabajo. Añadirlo como invitado la reemplazará.",pendingInvitationWarning_other:"{{count}} de estos usuarios ya tienen invitaciones pendientes como miembros del espacio de trabajo. Añadirlos como invitados las reemplazará."},QO={title:"Se han agotado tus créditos de integración",description:"Esto puede afectar a los usuarios de tu app para realizar ciertas acciones.",upgradeLink:"Mejora tu plan para obtener más créditos",dismiss:"Cerrar banner"},XO={gathering:"Recopilando",gathered:"Recopilado",connectorsInformation:"información de conectores",write:"Escribir",writing:"Escribiendo",wrote:"Escrito",generatingImage:"Generando imagen",generatedImage:"Imagen generada",reading:"Leyendo",read:"Leído",deleting:"Eliminando",deleted:"Eliminado",editing:"Editando",edited:"Editado",edit:"Editar",creating:"Creando",created:"Creado",updating:"Actualizando",updated:"Actualizado",update:"Actualizar",delete:"Eliminar",importing:"Importando",imported:"Importado",import:"Importar",searching:"Buscando",searched:"Buscado",searchingForBugs:"Buscando errores...",searchedBugs:"Búsqueda de errores completada",install:"Instalar",installing:"Instalando",installed:"Instalado",analyzing:"Analizando",running:"Ejecutando",failed:"Falló",run:"Ejecutar",settingSecrets:"Configurando secretos",setSecret:"Secreto configurado",setSecrets:"Configurar secretos",testing:"Probando",checking:"Verificando",tested:"Probado",checked:"Verificado",fetching:"Obteniendo",fetched:"Obtenido",waitingForApproval:"Esperando aprobación...",searchedDocsFor:"Documentación buscada para",searchingDocsFor:"Buscando en documentación para",searchedFor:"Buscado",searchingFor:"Buscando",foundResult_one:"{{count}} resultado encontrado",foundResult_other:"{{count}} resultados encontrados",toggling:"Alternando",toggled:"Alternado",listing:"Listando",listed:"Listado",approvalRequired:"Aprobación requerida",changesPending_one:"{{count}} cambio pendiente",changesPending_other:"{{count}} cambios pendientes",approve:"Aprobar",approving:"Aprobando...",reject:"Rechazar",rejected:"rechazado",rejecting:"Rechazando...",approveCount:"Aprobar ({{count}})",rejectAll:"Rechazar todo",previousApproval:"Esta solicitud de aprobación es de un mensaje anterior",query:"Consulta:",updateFallback:"Actualizar {{entityName}}",updateFallbackSingle:"Establecer {{fieldName}} a {{fieldValue}} en {{entityName}}",updateFallbackMultiple:"Establecer {{fieldName}} a {{fieldValue}} (+{{extraFields}} más) en {{entityName}}",deleteFallback:"Eliminar registros de {{entityName}}",updateWith:"Actualizar con:",importComplete:"Importación completa",importingData:"Importando datos...",percentComplete:"{{percent}}% completado",recordsProgress:"{{current}} / {{total}} registros",preparing:"Preparando...",otherToolsAfterApproval:"Otras herramientas se ejecutarán después de la aprobación",loadingConfig:"Cargando configuración...",fetchConfigError:"No se pudo cargar la configuración.",retry:"Reintentar",countPackages:"{{num}} paquetes:",updateAllEntityRecords:"Actualizar todos los registros de <entity>{{entityName}}</entity>",updateEntityRecordsMatching:"Actualizar registros de <entity>{{entityName}}</entity> que coinciden con:",deleteAllEntityRecords:"Eliminar todos los registros de <entity>{{entityName}}</entity>",deleteEntityRecordsMatching:"Eliminar registros de <entity>{{entityName}}</entity> que coinciden con:",importDataFromInto:"Importar datos de <file>{{fileName}}</file> en <entity>{{entityName}}</entity>",importDataFromSheetInto:"Importar datos de <file>{{fileName}}</file> (hoja: <sheet>{{sheetName}}</sheet>) en <entity>{{entityName}}</entity>",countRecordsIntoEntity:"{{num}} registros en <entity>{{entityName}}</entity>",dataIntoEntity:"datos en <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} registros <entity>{{entityName}}</entity>",allEntityRecords:"todos los registros de <entity>{{entityName}}</entity>",entityRecords:"registros de <entity>{{entityName}}</entity>",grepSearching:'Buscando "{{pattern}}"...',grepSearchComplete:"Búsqueda completada",grepFoundResults_one:"Se encontró {{count}} resultado",grepFoundResults_other:"Se encontraron {{count}} resultados",grepInFiles_one:"en {{count}} archivo",grepInFiles_other:"en {{count}} archivos"},e1={chatOnlyDescription:"Esta configuración ahora solo está disponible a través del chat.",description:"Establece la página de inicio predeterminada para tu app",chatHint:"Para cambiar esto, escribe en el chat:",prompt:"Cambia la página principal a {PageName}",placeholder:"Página principal",copiedToast:"Copiado al portapapeles"},t1={confirmMessage:"¿Estás seguro de que quieres despublicar esta aplicación? Ya no será accesible para los usuarios hasta que la publiques nuevamente.",successTitle:"Éxito",successDescription:"Aplicación despublicada exitosamente",errorTitle:"Error",errorDescription:"Error al despublicar la aplicación",description:"Poner tu aplicación fuera de línea. Puedes volver a publicarla en cualquier momento.",unpublishing:"Despublicando...",button:"Despublicar"},a1={title:"Eliminar app",description:"Esta acción <strong>no se puede</strong> deshacer. Se eliminará permanentemente la app <strong>{{appSlug}}</strong> y todos sus datos.",descriptionSimple:"Se eliminará permanentemente <strong>{{displayName}}</strong>.<br/>Todos los datos, historial, usuarios, dominios e integraciones de la app serán eliminados de forma irreversible. <danger>Esta acción no se puede deshacer.</danger>",confirmLabel:"Para confirmar, escriba <strong>{{appSlug}}</strong> a continuación:",cancel:"Cancelar",deleteButton:"Eliminar esta app",deleting:"Eliminando...",successTitle:"Éxito",successDescription:"App eliminada exitosamente",errorTitle:"Error",errorDescription:"No se pudo eliminar la app"},n1={using:"Usando habilidad {{name}}",failed:"Error al usar la habilidad {{name}}",used:"Habilidad {{name}} usada"},i1={thinkingIdeas:"{{agentName}} está pensando en ideas...",ideasFrom:"Ideas de {{agentName}}"},r1="Creando automatización...",o1="Error al crear la automatización",s1="Automatización",l1=JSON.parse(`{"sidebar":{"chat":"Chat","continueOnWhatsApp":"Continuar en WhatsApp","continueOnTelegram":"Continuar en Telegram","continueOnLine":"Continuar en LINE","continueOnIMessage":"Continuar en iMessage","imessage":"iMessage","brain":"Cerebro","integrations":"Integraciones","knowledge":"Conocimiento","memory":"Memoria","payments":"Pagos","tasks":"Tareas","artifacts":"Artefactos","settings":"Configuración","secretsAndKeys":"Secretos y claves","security":"Seguridad","credits":"Créditos","whatsapp":"WhatsApp","telegram":"Telegram","line":"LINE","files":"Archivos","uploadFile":"Subir archivo","refreshFiles":"Actualizar archivos","searchFiles":"Buscar archivos...","filesFolders":"{{fileCount}} archivos · {{folderCount}} carpetas","toolsPermission":"Permisos de herramientas","apiDocs":"API","channels":"Canales","feedback":"Dejar comentarios","agentSettings":"Configuración del agente","dangerZone":"Zona de peligro"},"filePanel":{"source":"Fuente","preview":"Vista previa","save":"Guardar","saveAndRedeploy":"Guardar y redesplegar","fileSaved":"Archivo guardado","functionRedeployed":"Función guardada y redesplegada","failedToSaveFile":"Error al guardar el archivo","failedToRedeploy":"Error al redesplegar la función","failedToReadFile":"Error al leer el archivo"},"modelPicker":{"automatic":"Automático","automaticDescription":"Se asigna el mejor modelo de IA para cada solicitud","manual":"Manual","manualDescription":"Selecciona un modelo de IA específico.","manualCreditNote":"El uso de créditos puede variar según el modelo","manualDisabledDescription":"Selecciona un modelo de IA específico ({{models}}). Disponible en el plan Builder y superiores.","builderPlus":"Builder+","upgradeToSelect":"Mejora tu plan para seleccionar un modelo de IA"},"chat":{"loadingAgent":"Cargando agente...","agentNotFound":"Agente no encontrado","waitingForAuth":"Esperando token de autenticación...","anErrorOccurred":"Ocurrió un error","aiModelUpdated":"Modelo de IA actualizado","failedToUpdateModel":"Error al actualizar el modelo de IA","hideSidebar":"Ocultar barra lateral","showSidebar":"Mostrar barra lateral","darkMode":"Cambiar a modo oscuro","lightMode":"Cambiar a modo claro","dropFileHere":"Arrastra el archivo aquí","imagesDocsAndMore":"Imágenes, documentos y más","loadPreviousMessages":"Cargar mensajes anteriores","somethingWentWrong":"Algo salió mal","retry":"Reintentar","chatFromApp":"Chatea conmigo desde una app que ya usas","attachFile":"Adjuntar archivos","typeMessage":"Escribe un mensaje...","toggleLiveBrowser":"Alternar navegador en vivo","noActiveBrowser":"No hay sesión de navegador activa","stopGenerating":"Detener generación","suggestions":"Sugerencias","liveBrowser":"Navegador en vivo","fullScreen":"Pantalla completa","exitFullScreen":"Salir de pantalla completa","closeBrowser":"Cerrar navegador","live":"En vivo","expandBrowser":"Expandir navegador","failedToStartConversation":"No se pudo iniciar la conversación — intenta enviar un mensaje manualmente.","failedToLoadConversation":"Error al cargar la conversación","failedToUploadFile":"Error al subir el archivo","tooManyFiles":"Puedes adjuntar hasta {{max}} archivos por mensaje","failedToSendMessage":"Error al enviar el mensaje","failedToStopAgent":"Error al detener el agente","queued":"En cola ({{count}})","queueFull":"La cola de mensajes está llena. Espere a que el agente termine.","failedToEditQueued":"Error al editar el mensaje en cola","failedToDeleteQueued":"Error al eliminar el mensaje en cola","deleteMessage":"Eliminar mensaje","failedToDeleteMessage":"Error al eliminar el mensaje","today":"Hoy","yesterday":"Ayer","thinking":"Pensando...","you":"Tú","failedToSubmitToolInput":"Error al enviar la entrada de la herramienta","whatsInImage":"¿Qué hay en esta imagen?","heresAFile":"Aquí tienes un archivo: {{fileName}}","heresAFileAndMore":"Aquí tienes un archivo: {{fileName}} (+{{count}} más)","heresFiles":"Aquí tienes {{count}} archivos","whatsInTheseImages":"¿Qué hay en estas {{count}} imágenes?","creditsRunningLow":"Te estás quedando sin créditos.","purchaseMoreCredits":"Comprar más créditos →","saleDiscount":"Obtén {{discount}} de descuento en planes anuales seleccionados","limitedTimeOffer":"Oferta por tiempo limitado","upgradePlan":"Mejorar plan","reply":"Responder","copyMessage":"Copiar","copied":"Copiado"},"files":{"uploaded":"{{fileName}} subido","failedToUpload":"Error al subir {{fileName}}","failedToRead":"Error al leer {{fileName}}"},"dashboard":{"title":"Panel","subtitle":"Resumen de tu agente.","created":"Creado el {{date}}","memories":"Memorias","filesLabel":"Archivos","folders":"Carpetas","agentMemory":"Memoria del agente","noMemoriesYet":"Aún no hay memorias","noMemoriesDescription":"Tu agente almacenará información aprendida aquí mientras chateas."},"creditsTab":{"title":"Créditos","description":"El uso de créditos y los detalles de facturación aparecerán aquí."},"settingsTab":{"settings":"Configuración","secrets":"Secretos","security":"Seguridad","creditCard":"Tarjeta de crédito"},"agentSettingsTab":{"title":"Configuración del agente","subtitle":"Configura cómo opera tu agente.","cloneTitle":"Clonar agente","cloneDescription":"Crea una copia de este agente con toda su configuración, entidades y funciones de backend.","cloneButton":"Clonar agente"},"clonePage":{"back":"Volver","title":"Clonar agente","subtitle":"Elige qué incluir en el agente clonado.","optionChat":"Historial de chat","optionChatDesc":"Copiar el historial de conversación del constructor al nuevo agente.","optionSkills":"Habilidades","optionSkillsDesc":"Copiar funciones backend, integraciones y configuraciones de herramientas.","optionTasks":"Tareas","optionTasksDesc":"Copiar automatizaciones (programadas, basadas en entidades y conectores).","optionSecrets":"Claves API","optionSecretsDesc":"Copiar secretos y claves API almacenados al nuevo agente.","cloneButton":"Clonar agente","cloning":"Clonando...","cloneError":"Error al clonar el agente"},"securityTab":{"title":"Seguridad","subtitle":"Ejecuta un escaneo de seguridad para detectar posibles vulnerabilidades.","scanning":"Escaneando...","runScan":"Ejecutar escaneo de seguridad","noIssues":"No se encontraron problemas","agentSecure":"Tu agente parece seguro.","severityCount":"Severidad {{severity}}","idleMessage":"Haz clic en \\"Ejecutar escaneo de seguridad\\" para verificar tu agente en busca de vulnerabilidades.","scanFailed":"El escaneo de seguridad falló"},"secretsTab":{"title":"Secretos","subtitle":"Variables de entorno disponibles para las funciones backend de tu agente.","noSecrets":"Aún no hay secretos","addSecret":"Agregar un secreto","secretNamePlaceholder":"SECRET_NAME","valuePlaceholder":"valor","add":"Agregar","secretSaved":"Secreto {{name}} guardado","failedToSave":"Error al guardar el secreto","secretDeleted":"Secreto {{name}} eliminado","failedToDelete":"Error al eliminar el secreto","failedToLoad":"Error al cargar los secretos"},"billingTab":{"title":"Tarjeta de crédito del agente","subtitle":"Uso y facturación de tu agente.","monthlyUsage":"Uso mensual","extraCredits":"+{{count}} créditos extra disponibles","pastDue":"Pago vencido","pastDueDescription":"Actualiza tu método de pago para evitar interrupciones del servicio.","goodStanding":"Cuenta al día","currentPeriod":"Período actual:","nextPeriod":"El próximo período comienza:","manageBilling":"Gestionar facturación","failedToLoad":"Error al cargar los datos de uso","unableToLoad":"No se pudieron cargar los datos de facturación"},"apiDocsTab":{"title":"Referencia de la API","subtitle":"Usa la API REST para interactuar con tu agente de forma programática. Crea conversaciones, envía mensajes y administra la memoria desde cualquier aplicación.","baseUrl":"URL base","authentication":"Autenticación","authDescription":"Incluye tu clave API en el encabezado de la solicitud:","authAlternative":"También puedes pasarla como parámetro de consulta:","quickStart":"Inicio rápido","quickStartDescription":"Sigue estos pasos para empezar a chatear con tu agente a través de la API:","step1CreateConversation":"1. Crear una conversación","step2SendMessage":"2. Enviar un mensaje","step3ListConversations":"3. Listar conversaciones","endpoints":"Endpoints de la API","requestBody":"Cuerpo de la solicitud","listConversationsDesc":"Lista todas las conversaciones del usuario autenticado","listConversationsNote":"Devuelve las conversaciones ordenadas por fecha de creación. Admite paginación mediante parámetros de consulta.","getConversationDesc":"Obtén una conversación específica con todos los mensajes","createConversationDesc":"Crea una nueva conversación con el agente","sendMessageDesc":"Envía un mensaje y obtén la respuesta del agente","sendMessageNote":"El agente procesará el mensaje y devolverá su respuesta. La longitud máxima del mensaje es de 8000 caracteres.","deleteMessageDesc":"Elimina un mensaje específico de una conversación","listMemoryDesc":"Lista los elementos de memoria del agente","deleteMemoryDesc":"Elimina un elemento de memoria específico","responseFormat":"Formato de respuesta","responseFormatDescription":"Las conversaciones se devuelven como objetos JSON que contienen un array de mensajes:","rateLimits":"Límites de tasa","rateLimitsDescription":"Las solicitudes a la API están limitadas por usuario. Si superas el límite, recibirás un código de estado 429. Espera un momento y vuelve a intentarlo.","errorCodes":"Códigos de error","error401":"No autorizado - clave API inválida o ausente","error403":"Prohibido - no tienes acceso a este recurso","error400":"Solicitud incorrecta - entrada inválida (p. ej. mensaje demasiado largo)","error404":"No encontrado - la conversación o el recurso no existe","copy":"Copiar"},"toolsPermissionTab":{"title":"Permisos de herramientas","subtitle":"Permitir que operaciones específicas se ejecuten sin requerir tu confirmación.","warning":"Cuando está habilitado, el agente realizará estas acciones por su cuenta. Tus reglas de seguridad de datos siguen aplicando.","updateData":"Actualizar datos","updateDataDescription":"Permitir que el agente actualice registros sin preguntar primero.","deleteData":"Eliminar datos","deleteDataDescription":"Permitir que el agente elimine registros sin preguntar primero.","failedToSave":"Error al guardar la configuración","effectNote":"La configuración se aplica de inmediato. Las respuestas de la IA no siempre siguen las reglas a la perfección.","connectorRulesTitle":"Reglas de conectores","connectorRulesSubtitle":"Indica al agente qué puede y qué no puede hacer con cada servicio.","connectorRulePlaceholder":"p. ej., Solo leer correos, nunca enviar ni eliminar","loadingConnectors":"Cargando conectores...","saveRules":"Guardar","rulesSaved":"Reglas de conectores guardadas"},"knowledgeTab":{"noFiles":"Aún no hay archivos de conocimiento","noFilesDescription":"Comienza a chatear con tu agente para construir su identidad y conocimiento","identity":"Identidad"},"memoryTab":{"title":"Memoria","subtitle":"Lo que tu agente sabe sobre ti y tus conversaciones.","emptyTitle":"Aún no hay nada","emptyDescription":"Mientras chateas, tu agente construirá memoria automáticamente — contexto de mensajes recientes, resúmenes de sesiones y datos clave.","addEntry":"Añadir","saveEntry":"Guardar","cancelEdit":"Cancelar","titlePlaceholder":"¿Qué debería recordar el agente?","contentPlaceholder":"Añadir más detalle (opcional)","saved":"Memoria actualizada","failedToSave":"Error al actualizar","factsHeading":"Hechos guardados","factsDescription":"Hechos clave que persisten en todas las conversaciones.","noMemories":"Sin hechos guardados","noMemoriesDescription":"Los hechos importantes se extraen automáticamente de las conversaciones, o puedes añadirlos manualmente.","shortTermHeading":"Memoria a corto plazo","shortTermDescription":"Contexto de la conversación actual, actualizado cada ~10 mensajes.","shortTermUpdated":"Actualizado","shortTermDeleted":"Eliminado","deleteShortTermConfirm":"¿Eliminar este contexto? El agente perderá esta parte del historial de conversación.","longTermHeading":"Sesiones diarias","longTermDescription":"Un resumen de las conversaciones de cada día.","longTermDeleted":"Eliminado","deleteLongTermConfirm":"¿Eliminar la sesión de este día? El agente perderá acceso a este historial de conversación.","messages":"{{count}} msjs","emptyTranscript":"Transcripción vacía","noText":"(sin texto)","usedTools":"Usado: {{tools}}"},"telegramTab":{"title":"Telegram","connected":"Tu bot de Telegram está conectado y activo.","notConnected":"Conecta un bot de Telegram para que los usuarios chateen con tu agente.","connectedBot":"Bot conectado","botName":"Nombre del bot","username":"Nombre de usuario","status":"Estado","active":"Activo","verifyBanner":"Haz clic en el botón de abajo para verificar tu identidad en Telegram. Esto asegura que solo tú puedas usar este bot.","verifyOnTelegram":"Verificar en Telegram","openTelegram":"Abrir en Telegram","scanQr":"Escanea el código QR con tu teléfono para abrir el bot en Telegram.","disconnect":"Desconectar","disconnectConfirm":"¿Desconectar este bot de Telegram? Los usuarios ya no recibirán respuestas.","disconnected":"Bot de Telegram desconectado","failedToDisconnect":"Error al desconectar","howItWorks":"Cómo funciona","step1":"Los usuarios abren tu bot en Telegram y envían /start para comenzar.","step2":"Cada mensaje de texto es procesado por tu agente.","step3":"La respuesta del agente se envía en el chat de Telegram."},"telegramSetup":{"connectTitle":"Conectar Telegram","connectDescription":"Crea un bot de Telegram para tu agente con un solo clic. Se configurará y estará listo para chatear automáticamente.","autoCreateButton":"Conectar bot de Telegram","autoWaitingTitle":"Esperando la creación del bot...","autoWaitingDescription":"Confirma el bot en Telegram y configuraremos todo automáticamente.","autoTimeoutError":"Se agotó el tiempo para crear el bot. Inténtalo de nuevo o usa la configuración manual.","autoExpiredError":"No se pudo crear el bot. Inténtalo de nuevo.","cancel":"Cancelar","alreadyHaveBot":"Ya tengo un token de bot","pasteTokenTitle":"Conectar con token","manualInstructions":"Crea un bot con @BotFather en Telegram y pega el token aquí.","tokenPlaceholder":"Pega el token del bot...","tokenExtracted":"Token extraído","tokenNotFound":"No se encontró un token válido","connectBot":"Conectar","connecting":"Conectando...","successTitle":"¡Bot conectado!","openTelegram":"Abrir en Telegram","failedToConnect":"Error al conectar el bot"},"whatsappTab":{"title":"WhatsApp","subtitle":"Permite a los usuarios chatear con tu agente por WhatsApp.","connectTitle":"Conectar WhatsApp","connectDescription":"Haz clic en el botón de abajo para abrir WhatsApp y activar la conexión. Recibirás un código de activación para enviar al número de WhatsApp del agente.","openWhatsApp":"Abrir WhatsApp","scanQr":"Escanea el código QR con tu teléfono para abrir la conversación en WhatsApp.","howItWorks":"Cómo funciona","step1":"Haz clic en \\"Abrir WhatsApp\\" — esto abre WhatsApp con un código de activación prellenado.","step2":"Envía el código de activación para iniciar la conexión.","step3":"Una vez conectado, cualquier mensaje que envíes en WhatsApp será procesado por tu agente."},"lineTab":{"title":"LINE","subtitle":"Chatea con tu agente en LINE.","connectTitle":"Conectar vía LINE","connectDescription":"Genera un código de activación, escanea el QR con tu teléfono para agregar el bot y envía el código.","generateCode":"Generar código de activación","scanQrLabel":"Escanear con LINE","scanQrHint":"Abre LINE en tu teléfono y escanea este código QR para agregar el bot.","activationCodeLabel":"Código de activación","sendCodeHint":"Después de agregar el bot, envía este código como mensaje para activar.","generating":"Generando...","regenerate":"Generar un nuevo código","codeCopied":"¡Código copiado!","codeExpiry":"Expira en 30 minutos","failedToGenerate":"Error al conectar con LINE","howItWorks":"Cómo funciona","step1":"Haz clic en \\"Generar código de activación\\" para obtener tu código y QR.","step2":"Escanea el código QR con LINE en tu teléfono para agregar el bot como amigo.","step3":"Envía el código de activación como mensaje al bot para conectar."},"imessageTab":{"title":"iMessage","subtitle":"Chat with your agent via iMessage.","connectTitle":"Connect via iMessage","connectDescription":"Click the button below and iMessage will open with the activation code ready to send.","connectButton":"Connect via iMessage","manualFallback":"Didn't open automatically? Send the code manually:","phoneNumberLabel":"Text this number","activationCodeLabel":"Activation code","codeCopied":"Code copied!","codeExpiry":"Expires in 30 minutes","failedToGenerate":"Failed to generate iMessage code","capacityTitle":"iMessage temporarily unavailable","capacityMessage":"iMessage is experiencing unusually high demand right now. Please check back in a few hours — we're working on expanding capacity.","howItWorks":"How it works","step1":"Click \\"Connect via iMessage\\" — your Messages app will open with the activation code pre-filled.","step2":"Send the message and your agent is connected. That's it!"},"pluginsTab":{"builtInServices":"Servicios integrados","builtInSubtitle":"Capacidades de la plataforma disponibles para tu agente por defecto.","base44Backend":"Base44 Backend","alwaysActive":"Siempre activo","base44Description":"Base de datos, funciones, almacenamiento de archivos y automatizaciones","dataEntities":"Datos y entidades","dataEntitiesTool1":"Crear, leer, actualizar, eliminar y filtrar registros de entidades","dataEntitiesTool2":"Seguridad a nivel de fila","backendFunctions":"Funciones backend","backendFunctionsTool1":"Desplegar y llamar funciones serverless de Deno","backendFunctionsTool2":"Gestionar secretos de entorno","fileStorage":"Almacenamiento de archivos","fileStorageTool1":"Subir archivos públicos y privados","fileStorageTool2":"Crear URLs de descarga firmadas","automationsLabel":"Automatizaciones","automationsTool1":"Programar trabajos CRON","automationsTool2":"Triggers de cambio de entidad","connectors":"Conectores","connectorsSubtitle":"Conecta tu agente con las apps y servicios que ya usas.","addConnector":"Agregar conector","close":"Cerrar","noConnectors":"Sin conectores. Agrega uno para dar a tu agente acceso a servicios externos.","connected":"Conectado","available":"Disponibles ({{count}})","allConnected":"Todos los conectores ya están conectados.","revoked":"Revocado","disconnectedStatus":"Desconectado","active":"Activo","switchAccount":"Cambiar cuenta","reconnect":"Reconectar","disconnect":"Desconectar","remove":"Eliminar","connect":"Conectar","connectorConnected":"Conector conectado","connectionCancelled":"Conexión cancelada","connectorDisconnected":"Conector desconectado","failedToDisconnect":"Error al desconectar","connectorRemoved":"Conector eliminado","failedToRemove":"Error al eliminar","openAuthLinkManually":"Abrir enlace de autorización manualmente","connecting":"Conectando...","mcpPlugins":"Plugins MCP","mcpSubtitle":"Conexiones MCP que amplían las capacidades de tu agente.","cancel":"Cancelar","addPlugin":"Agregar plugin","noPlugins":"Sin plugins conectados","noPluginsDescription":"Agrega un servidor MCP para dar nuevas herramientas a tu agente.","failedToLoad":"Error al cargar plugins","failedToToggle":"Error al alternar plugin","pluginDeleted":"Plugin eliminado","failedToDelete":"Error al eliminar plugin","pluginAdded":"Plugin agregado","pluginNamePlaceholder":"Nombre del plugin","mcpUrlPlaceholder":"URL del servidor MCP (https://...)","foundTools":"{{count}} herramientas encontradas","connectionTestFailed":"Prueba de conexión fallida","connectedTools":"Conectado — {{count}} herramientas disponibles","connectionFailed":"Conexión fallida","test":"Probar","save":"Guardar","failedToCreate":"Error al crear plugin","enabled":"Habilitado","disabled":"Deshabilitado","toolsCount":"Herramientas ({{count}})","noTools":"Sin herramientas disponibles","toolsFound":"{{count}} herramientas encontradas","testFailed":"Prueba fallida","connectedChatMessage":"Acabo de conectar {{name}} desde el panel de integraciones. ¿Qué puedo hacer con esto?","connectedReadOnlyChatMessage":"Acabo de conectar {{name}} en modo solo lectura desde el panel de integraciones. Solo puede leer datos, no crear ni modificar nada. ¿Qué puedo hacer con esto?","accessModeChangedMessage":"Acabo de cambiar {{name}} al modo {{mode}}. Tenlo en cuenta para futuras acciones.","disconnectedChatMessage":"Acabo de desconectar {{name}} desde el panel de integraciones.","readOnly":"Solo lectura","fullAccess":"Puede gestionar","switchToReadOnly":"Cambiar a solo lectura","switchToFullAccess":"Cambiar a gestionar","searchConnectors":"Buscar conectores...","noSearchResults":"No se encontraron conectores","noSearchResultsDesc":"Prueba con palabras clave diferentes o borra la búsqueda.","noConnectorsYet":"Aún no hay conectores conectados.","base44Official":"Base44 Official","setUp":"Configurar","loadMore":"Cargar {{count}} más","showAll":"Mostrar todos ({{count}})","moreIcons":"+{{count}} más","sort":{"title":"Ordenar","mostUsed":"Más utilizados","recentlyAdded":"Añadidos recientemente","az":"A-Z","za":"Z-A"}},"paymentsTab":{"title":"Pagos","stripeName":"Stripe","description":"Acepta pagos de tus clientes con Stripe.","notConnected":"Stripe no está conectado","connectedDescription":"Enlaces de pago, productos y proceso de pago disponibles.","setupPrompt":"Pide a tu agente en el chat que configure los pagos con Stripe. Te guiará en el proceso.","askInChat":"Preguntar en el chat","sandboxMode":"Sandbox","liveMode":"En vivo","testCard":"Número de tarjeta de prueba","claimAndGoLive":"Reclamar y pasar a producción","remove":"Quitar integración","removeConfirm":"¿Estás seguro?","confirmRemove":"Sí, quitar","cancel":"Cancelar","removed":"Integración de Stripe eliminada","removeFailed":"Error al eliminar la integración de Stripe","loadFailed":"Error al cargar el estado de pago","setupMessage":"Configura los pagos con Stripe para mi agente"},"integrationsTab":{"tabSkills":"Skills","tabConnectors":"Connectors","skillsTitle":"Skills","skillsSubtitle":"Reusable instructions that give your agent specialized abilities.","addSkill":"Add Skill","noSkills":"No skills yet","noSkillsHint":"Add a skill to teach your agent new capabilities.","installed":"Instalado"},"automationsTab":{"title":"Automatizaciones","subtitle":"Tareas programadas y webhooks.","noAutomations":"Aún no hay automatizaciones","trySuggestions":"Prueba una de las ideas de arriba o pregunta en el chat.","askAgent":"Pide a tu agente en el chat que configure una.","scheduled":"Programada","entityTriggered":"Por cambio de entidad","webhooks":"Webhooks","active":"Activa","paused":"Pausada","details":"Detalles","runNow":"Ejecutar ahora","pause":"Pausar","activate":"Activar","delete":"Eliminar","trigger":"Disparador","instructions":"Instrucciones","taskId":"ID de tarea","parameters":"Parámetros","runHistory":"Historial de ejecución","totalRuns":"{{count}} en total","succeeded":"{{count}} exitosas","failedRuns":"{{count}} fallidas","lastRun":"Última ejecución:","created":"Creado el {{date}}","runsStats":"{{total}} ejecuciones · {{succeeded}} exitosas · {{failed}} fallidas","failedToToggle":"Error al alternar automatización","archive":"Archivar","automationArchived":"Automatización archivada","failedToArchive":"Error al archivar automatización","automationDeleted":"Automatización eliminada","failedToDelete":"Error al eliminar automatización","automationTriggered":"Automatización ejecutada","failedToRun":"Error al ejecutar automatización","failedToLoad":"Error al cargar automatizaciones","consumesCredits":"Consume créditos de mensajes","agentRunsWhenTriggered":"El agente responde al activarse","agentNameRunsWhenTriggered":"{{name}} responde al activarse","creditsUsed":"{{credits}} créditos utilizados","totalCredits":"Total de créditos: {{credits}}","trackingSince":"desde {{date}}","executionLogs":"Registros de ejecución","noLogs":"Aún no hay registros","status":{"success":"éxito","running":"en ejecución","failed":"fallido"},"archived":"Archivadas","noArchivedAutomations":"No hay automatizaciones archivadas","archivedDescription":"Las automatizaciones que archives aparecerán aquí.","restore":"Restaurar","automationRestored":"Automatización restaurada","failedToRestore":"Error al restaurar automatización"},"identity":{"updated":"Identidad actualizada","failedToSave":"Error al guardar la identidad","avatar":"Avatar","emoji":"Emoji","setEmoji":"Usar","uploadImage":"Subir imagen","changeImage":"Cambiar","removeImage":"Eliminar imagen","useEmoji":"Usar emoji","name":"Nombre del agente","agentNamePlaceholder":"Nombre del agente","userName":"Tu nombre","userNameDisplay":"Tu nombre: {{name}}","userNamePlaceholder":"Tu nombre","userNameHint":"Cómo te llama el agente","description":"Descripción","descriptionPlaceholder":"¿Qué hace este agente?","unnamedAgent":"Agente sin nombre","cancel":"Cancelar","save":"Guardar","edit":"Editar","rawIdentity":"IDENTITY.md (texto sin formato)","editInEditor":"Editar en el editor","entry":"{{count}} entrada","entries":"{{count}} entradas"},"knowledgeEditor":{"fileUpdated":"El archivo fue actualizado externamente","fileModified":"{{name}} fue modificado. Recarga para ver los cambios.","reload":"Recargar","saved":"{{label}} guardado","failedToSave":"Error al guardar","unsavedChanges":"Tienes cambios sin guardar. ¿Descartarlos?","rawText":"Texto sin formato","readOnly":"Solo lectura","editAnyway":"Editar de todos modos","edit":"Editar","save":"Guardar","startWriting":"Comienza a escribir..."},"knowledgeFiles":{"title":"Archivos de conocimiento","uploading":"Subiendo {{count}} archivo(s)...","new":"Nuevo","fileNamePlaceholder":"nombre-del-archivo","mdExtension":".md","enterFileName":"Ingresa un nombre de archivo","fileExists":"Ya existe un archivo con este nombre","failedToCreate":"Error al crear archivo","unsupportedType":"Tipo de archivo no soportado","failedToUpload":"Error al subir {{name}}","renamedTo":"Renombrado a {{name}}","failedToRename":"Error al renombrar archivo","failedToLoadFile":"Error al cargar archivo","deleteConfirm":"¿Eliminar \\"{{name}}\\"? Esto no se puede deshacer.","failedToDelete":"Error al eliminar archivo","dropOrUpload":"Arrastra archivos aquí o haz clic para subir","supportedTypes":"Documentos, imágenes, CSVs, archivos de código y más","dropOrBrowse":"Arrastra archivos o","browse":"buscar"},"artifacts":{"description":"Pequeñas mini apps para comenzar. Para aplicaciones completas, construye en Base44.","buildFullApp":"Construir una aplicación completa","title":"Artefactos","pageCount_one":"{{count}} página","pageCount_other":"{{count}} páginas","empty":"Aún no hay artefactos","emptyDescription":"Pide a tu agente que cree una mini app y aparecerá aquí."},"feedbackModal":{"thankYou":"¡Gracias!","thankYouSubtitle":"Tu opinión nos ayuda a mejorar.","title":"¿Cómo es tu experiencia?","subtitle":"Tu opinión define lo que construimos a continuación.","submitError":"No se pudo enviar la opinión. Inténtalo de nuevo.","placeholder":"Cuéntanos lo que piensas...","sending":"Enviando...","sendFeedback":"Enviar opinión","ratingBad":"Malo","ratingPoor":"Pobre","ratingOkay":"Regular","ratingGood":"Bueno","ratingAmazing":"Me encanta","openSupportTicket":"Abrir un ticket de soporte"},"dangerZoneTab":{"title":"Zona de peligro","subtitle":"Acciones irreversibles para este agente.","deleteTitle":"Eliminar este agente","deleteDescription":"Eliminará permanentemente este agente y todos sus datos, conversaciones, archivos e integraciones. Esta acción no se puede deshacer.","deleteButton":"Eliminar este agente","deleteSuccess":"Agente eliminado correctamente","deleteFailed":"Error al eliminar el agente"}}`),c1={live:"Live",offScreen:"Fuera de pantalla",waiting:"Esperando...",loading:"Cargando...",previewTitle:"Vista previa: {{pageName}}"},d1={main:"principal"},u1={title:"Eliminar agente",description:"Esto eliminará permanentemente <strong>{{displayName}}</strong>.<br/>Todos los datos del agente, conversaciones, archivos e integraciones se borrarán permanentemente. <danger>Esta acción no se puede deshacer.</danger>",cancel:"Cancelar",deleteButton:"Eliminar este agente",deleting:"Eliminando..."},p1={title:"Comparte tu app",subtitle:"Comparte un enlace por correo o en redes sociales",sendInviteLabel:"Enviar invitación",sendInvitation_one:"Enviar invitación",sendInvitation_other:"Enviar invitaciones",invalidEmailsError:"Una o más direcciones de correo no son válidas. Por favor, verifícalas e inténtalo de nuevo.",workspaceIneligibleError:"Prueba invitar usuarios de tu espacio de trabajo en su lugar.",nonWorkspaceIneligibleError:"Algunas direcciones de correo no son elegibles para ser invitadas.",removeIneligibleUsers:"Eliminar usuarios no elegibles",inviteSuccessToast:"Invitación de usuario enviada correctamente",inviteErrorToast:"Error al enviar las invitaciones",copyLink:"Copiar enlace",sendInvitationSection:"Enviar invitación",inviteEmailPlaceholder:"Ingresa una dirección de correo",inviteButton:"Invitar",shareLiveAppLink:"Compartir enlace de la app en vivo",shareLiveAppLinkDesc:"Cualquier persona con el enlace puede ver tu app en vivo, según la configuración de visibilidad de tu app.",linkCopied:"Enlace copiado",enterEmailError:"Por favor, ingresa una dirección de correo",cannotInviteOwner:"No puedes invitar al propietario de esta app",inviteSuccess_one:"Invitación enviada correctamente",inviteSuccess_other:"{{count}} invitaciones enviadas correctamente",inviteFailedToSend:"Error al enviar la invitación",role_admin:"Admin",role_user:"Usuario"},m1={sidebar:zO,loading:MO,trash:NO,errors:FO,codeView:LO,loader:jO,toolbar:OO,header:BO,upgrade:UO,checkpoints:qO,viewAs:VO,pages:$O,publish:WO,chat:GO,builderCommandPalette:HO,unknownView:YO,appEditor:KO,beta:ZO,collaborators:JO,integrationsBanner:QO,tools:XO,mainPage:e1,unpublishApp:t1,deleteApp:a1,skillTool:n1,automations:i1,create_automation:r1,create_automation_error:o1,automation_fallback_name:s1,agentEditor:l1,canvasPage:c1,canvasToolbar:d1,deleteAgent:u1,new:"Nuevo",shareModal:p1},g1={title:"¿Qué vas a crear a continuación?",titleMobile:`Hola, ¿Qué vas a
crear a continuación?`,subtitle:"Describe abajo la idea de tu app o inspírate con nuestras",subtitleTemplatesLink:"plantillas"},h1={title:"Apps recientes"},f1={title:"Superagentes recientes"},v1={placeholder:"Describe la app que quieres crear...",placeholderPlanMode:"Dile a Base lo que quieres",placeholderViewer:"Los lectores no pueden crear apps",placeholderWithUrl:"Agrega una descripción (opcional)...",captureFullMode:"Crear un sitio como este",captureDesignMode:"Crear un nuevo sitio inspirado en este diseño para...",uploadFile:"Subir desde computadora",uploadFileMobile:"Subir desde dispositivo",captureFromUrlDescription:"Crear un punto de partida 1:1",createFromUrl:"Iniciar desde URL",aiModel:"Modelo de IA",selectAiModel:"Seleccionar modelo de IA",addFromGoogleDrive:"Subir desde Google Drive",modelPicker:{automatic:"Automático",automaticDescription:"Se selecciona el mejor modelo de IA para cada solicitud",new:"Nuevo",manual:"Manual",builderPlus:"Builder+",manualDescription:"Selecciona un modelo de IA específico ({{models}}). Disponible en el plan Builder o superior.",upgradeToSelect:"Mejora tu plan para seleccionar un modelo de IA"},speechToText:"Reconocimiento de voz",processingAudio:"Procesando audio...",clickToStopRecording:"Clic para detener la grabación"},b1={exploreTemplates:"Explorar plantillas de la comunidad",discoverDescription:"Descubre una colección curada de aplicaciones creadas por nuestra comunidad.",failedToLoadCatalog:"Error al cargar los elementos del catálogo",showingItems:"Mostrando {{displayed}} de {{total}} elementos",searchApps:"Buscar apps",viewAllTemplates:"Ver todas las plantillas",allCategories:"Todas",priceAll:"Todas las plantillas",priceFree:"Solo gratuitas",pricePaid:"Solo de pago",pageTitle:"Plantillas de apps",pageSubtitle:"Explora una colección curada de aplicaciones creadas por nuestra comunidad.",tabs:{community:"Comunidad",workspace:"Espacio de trabajo",myTemplates:"Mis plantillas"},categories:{marketingAndSales:"Marketing y ventas",operations:"Operaciones",dataAndAnalytics:"Datos y análisis",contentGeneration:"Generación de contenido",hrAndLegal:"RR. HH. y legal",finance:"Finanzas",education:"Educación",community:"Comunidad",lifestyleAndHobbies:"Estilo de vida y hobbies",gamesAndEntertainment:"Juegos y entretenimiento","Marketing & Sales":"Marketing y ventas",Operations:"Operaciones","Data & Analytics":"Datos y análisis","Content Generation":"Generación de contenido","HR & Legal":"RRHH y legal",Finance:"Finanzas",Education:"Educación",Community:"Comunidad","Lifestyle & Hobbies":"Estilo de vida y aficiones","Games & Entertainment":"Juegos y entretenimiento"},sort:{popular:"Popular",newest:"Más recientes",oldest:"Más antiguas"},languagePlaceholder:"Idioma",pricePlaceholder:"Precio",noAppsFound:"No se encontraron apps",adjustSearchOrFilters:"Intenta ajustar tu búsqueda o filtros",templateNotFound:"Plantilla no encontrada o no disponible.",viewAllCommunityTemplates:"Ver todas las plantillas de la comunidad",loadingMore:"Cargando más elementos...",viewDetails:"Ver detalles",workspaceBadge:"Espacio de trabajo",purchasedBadge:"Comprado",free:"Gratis",unknownUser:"Usuario desconocido",private:"Privado",howTo:{title:"Cómo compartir tu app con la comunidad",intro:"Sigue estos sencillos pasos:",step1Title:"Abre el builder de tu app",step1Desc:"Navega a una app que hayas creado o a la que tengas acceso de administrador",step2Title:"Ve a la configuración del catálogo",step2Path:"Espacio de trabajo → Configuración → Plantillas de apps → Gestionar listado",step3Title:"Publica tu listado",step3Desc:"Agrega una descripción, capturas de pantalla y configura la visibilidad de tu listado",tipFull:"<bold>Consejo:</bold> ¡Asegúrate de que tu app esté desplegada y tenga una descripción atractiva para atraer más usuarios!"},modal:{close:"Cerrar",prevScreenshot:"Captura anterior",nextScreenshot:"Captura siguiente",screenshotAlt:"Captura {{index}}",goToScreenshot:"Ir a la captura {{index}}",createdBy:"por {{creatorName}}",unknownCreator:"Desconocido",usages_one:"{{count}} uso",usages_other:"{{count}} usos",private:"Privado",workspaceTemplate:"Plantilla del workspace",clonePurchase:"Clonar compra",processing:"Procesando...",purchaseFor:"Comprar por ${{price}}",useTemplate:"Usar plantilla",viewApp:"Ver app",paymentInfo:"El pago va íntegramente al creador",backendFunctionsEnabled:"Funciones backend habilitadas",usesIntegrations:"Usa integraciones",aboutThisApp:"Acerca de esta app",noDescription:"Sin descripción disponible",termsOfUse:"Términos de uso",success:"Éxito",error:"Error",purchaseFailed:"Error en la compra",failedToPurchase:"No se pudo iniciar la compra",listingApproved:"Listado de app aprobado exitosamente",approveListingFailed:"No se pudo aprobar el listado",listingDeclined:"Listado de app rechazado exitosamente",declineListingFailed:"No se pudo rechazar el listado",pendingUpdate:"Actualización pendiente de revisión",codeChangesPending:"Cambios de código de la app pendientes",metadataChanges:"Cambios en los metadatos del listado:",manageListing:"Gestionar listado",approveUpdate:"Aprobar actualización",declineUpdate:"Rechazar actualización",approveListing:"Aprobar listado",declineListing:"Rechazar listado",approving:"Aprobando...",declining:"Rechazando...",cloneAsAdmin:"Clonar como admin"}},y1={subscriptionOverdue:"Pago de suscripción vencido",overdueMessage:"Tu pago de suscripción está vencido. El acceso a algunas funciones está limitado actualmente. Por favor, actualiza tu método de pago para recuperar el acceso completo.",goToBilling:"Ir a Facturación",creditLimitReached:"Has alcanzado el límite de este mes. Para seguir creando apps",upgradePlan:"mejorar tu plan"},k1={viewerAccess:"Tienes acceso de lector y no puedes crear apps. Contacta al administrador de tu workspace para actualizar a Editor."},w1={fillApiKeys:"Por favor, completa todas las claves API requeridas antes de enviar.",createAppFailed:"Error al crear la app. Por favor, intenta de nuevo."},A1={title:"Iniciar desde URL",description:"Usa cualquier sitio web como punto de partida para tu nuevo sitio.",urlLabel:"URL del sitio web",urlPlaceholder:"ej., www.ejemplo.com",errorEmpty:"Por favor, ingresa una URL",errorInvalid:"Ingresa una URL de sitio web válida, como www.ejemplo.com",errorTooLong:"La URL es demasiado larga. Por favor, usa una URL más corta.",modeFull:"Contenido y diseño",modeFullDescription:"Crear un sitio similar.",modeDesign:"Solo diseño",modeDesignDescription:"Crear un nuevo sitio con el mismo estilo.",modeContent:"Solo contenido",legalNotice:"Solo usa URLs donde tengas derechos sobre el contenido.",cancel:"Cancelar",add:"Agregar",learnMore:"Aprende sobre la creación desde una URL",capturedUrl:"URL capturada",appReady:"¡Tu app está lista! Ahora puedes personalizarla o agregar nuevas funciones.",banner:{headline:"Creando tu app",headlineDesign:"Creando tu app",subtitle:"Esto puede tardar un poco más de lo habitual - estamos haciendo que valga la pena.",activity:{msg1:"Conociendo el sitio...",msg2:"Estudiando el diseño y la estética...",msg3:"Armando las piezas...",msg4:"Creando algo especial...",msg5:"Trabajando en ello...",msg6:"Buscando la perfección...",msg7:"Espera, vienen cosas geniales..."}}},S1={count:"Integraciones: {{count}}",loading:"Cargando integración...",selectedIntegrations:"Integraciones Seleccionadas:"},C1={menuItem:"Conectores",dialogTitle:"Conectores",dialogDescription:"Conecta herramientas y fuentes de datos para potenciar tu app.",search:"Buscar",add:"Agregar",added:"Agregado",remove:"Eliminar",noResults:"No se encontraron conectores",suggestionCardTitle:"Ayúdame a entender tu solicitud de integración para:",choosePrompt:"Elige una opción para continuar.",somethingElse:"Algo más",cancel:"Cancelar",send:"Enviar",connectTo:"Conectar a <name>{{name}}</name>",upgradeToConnect:"Mejora tu plan para conectar {{name}} a tu app.",connecting:"Conectando {{names}}…",cancelled:"cancelado",subtitles:{stripe:"Vende productos o suscripciones y cobra en línea.",salesforce:"Automatiza y sincroniza registros de CRM.",slack:"Envía mensajes y gestiona Slack como usuario.",slackbot:"Publica como bot de marca en tu workspace de Slack.",notion:"Organiza y sincroniza conocimiento o datos de proyectos.",googlecalendar:"Gestiona tu agenda y eventos del calendario.",googledrive:"Exporta y respalda archivos generados por la app.",gmail:"Automatiza el envío de correos y la gestión del buzón.",googlesheets:"Sincroniza y gestiona datos de hojas de cálculo.",googleslides:"Genera y gestiona presentaciones.",googledocs:"Gestiona y automatiza la creación de documentos.",googlebigquery:"Consulta y sincroniza datos de analítica.",hubspot:"Sincroniza datos de CRM y automatiza el marketing.",linkedin:"Comparte actualizaciones y accede a perfiles profesionales.",tiktok:"Consulta estadísticas de tu perfil y explora tus videos.",discord:"Notifica canales e integra tu comunidad de Discord.",wix:"Accede a los datos de tu sitio Wix y herramientas de negocio.",github:"Gestiona repositorios, issues y pull requests.",gitlab:"Gestiona proyectos, MRs y pipelines de CI/CD.",bamboohr:"Directorio de empleados y gestión de RRHH.",wrike:"Planificación de proyectos y coordinación de equipos.",box:"Gestión segura de contenido en la nube.",clickup:"Organiza proyectos y rastrea el trabajo del equipo.",google_analytics:"Analiza el tráfico web y el comportamiento de usuarios.",outlook:"Correo electrónico y calendario.",linear:"Seguimiento de incidencias y gestión de proyectos.",dropbox:"Almacena y sincroniza archivos en la nube.",google_search_console:"SEO y analítica de búsqueda.",google_classroom:"Educación y gestión de cursos.",airtable:"Bases de datos y hojas de cálculo flexibles.",splitwise:"Divide gastos y gestiona cuentas grupales.",microsoft_teams:"Chat en equipo, canales y reuniones.",share_point:"Gestión de documentos y colaboración.",one_drive:"Almacenamiento de archivos en la nube.",typeform:"Formularios, encuestas y recopilación de datos."}},D1={label:"Plan",tooltip:"Activa el modo Plan para que la IA cree un plan detallado antes de crear tu app."},T1="Ver todo",E1="Error",P1={menuLabel:"Importar desde Figma",title:"Generar desde un frame de Figma",description:"Pega el enlace de tu frame para generar una app basada en tu diseño.",labelUrl:"Enlace del frame de Figma",placeholderUrl:"ej., https://www.figma.com/frame-link",urlHelp:"Usa un enlace a un frame, no a un archivo o página.",learnPrepare:"Aprende a preparar tu frame de Figma",connectTitle:"Conectar con Figma",connectDescription:"Permite acceso a tu cuenta de Figma para importar tu diseño.",connectButton:"Conectar con Figma",connectedToFigma:"Conectado a Figma",errorMissingUrl:"Ingresa una URL de un frame de Figma",errorNotFigmaUrl:"Ingresa una URL de un frame de Figma",errorNotFrameUrl:"Ingresa una URL de un frame, no de un archivo o página.",errorRateLimit:"La API de Figma está temporalmente ocupada. Por favor intenta de nuevo en unos minutos.",errorForbidden:"Conexión de Figma inválida o expirada. Por favor reconecta tu cuenta de Figma.",errorNotFound:"Archivo de Figma no encontrado. Por favor verifica la URL y asegúrate de tener acceso.",errorGeneric:"No se puede acceder a este diseño de Figma. Por favor verifica la URL e intenta de nuevo.",validating:"Verificando...",switchAccount:"Cambiar cuenta de Figma",cancel:"Cancelar",generate:"Generar",viewerCannotGenerate:"Tienes acceso de solo lectura y no puedes crear aplicaciones. Contacta al administrador de tu workspace para actualizar a Editor.",figmaFile:"Archivo Figma",justNow:"Justo ahora",importingMessage:"Genera una app basada en tu diseño desde este frame de Figma."},_1={connectFailed:"Error al conectar Figma. Por favor intenta de nuevo.",popupBlocked:"Popup bloqueado. Por favor permite popups e intenta de nuevo.",disconnected:"Figma desconectado",disconnectFailed:"Error al desconectar Figma. Por favor intenta de nuevo."},x1={capturing:"Capturando...",figmaDescription:"Analizando el sistema de diseño de Figma. Extrayendo estructura, tipografía y tokens de color para construir tu app."},I1={webApp:"Apps",aiAgent:"Superagentes",recentApps:"Apps recientes",templates:"Plantillas",favoritesComingSoon:"Favoritos próximamente"},R1={new:"Nuevo",message:"Di hola a tu verdadero Agente Personal",cta:"Pruébalo ahora"},z1={greeting:"Hola {{name}},",greetingGeneric:"Hola,",title:"Crea tu propio Agente Personal de IA",createTitle:"Crea tu propio Superagente",newBadge:"Nuevo",subtitle:"Tu agente de IA que ejecuta tareas, se conecta con tus herramientas y trabaja para ti las 24 horas",cta:"Crea tu Superagente",creating:"Creando...",continueHero:{heading:"Continúa donde lo dejaste",continueBtn:"Continuar con {{name}}",or:"O",createNew:"Crear un nuevo superagente",activeAgo:"Activo {{time}}",you:"Tú"},features:{hassleFree:{title:"Sin complicaciones",desc:"Sin Docker, sin servidores, sin configuración. Solo ejecuta tu Superagente."},alwaysOn:{title:"Siempre activo",desc:"Ejecuta tareas y automatizaciones para ti, las 24 horas."},actions:{title:"Toma acciones reales",desc:"Maneja tareas, envía actualizaciones y reacciona automáticamente."},remembers:{title:"Recuerda todo",desc:"Mantiene un registro de tus objetivos, preferencias y contexto."},everywhere:{title:"Vive donde estás",desc:"Funciona en WhatsApp, Telegram, Slack y tu navegador."},secure:{title:"Seguro por defecto",desc:"Acceso solo a lo que tú permites."}},untitled:"Agente sin título",active:"Activo",noDescription:"Sin descripción disponible",edited:"Editado {{time}}",updated:"Actualizado {{time}}",failedToCreate:"No se pudo crear el agente. Por favor, inténtalo de nuevo.",errorPage:{title:"Vaya, algo salió mal",descriptionLine1:"Hubo un problema técnico de nuestra parte.",descriptionLine2:"Vuelve a la página de creación de agentes e inténtalo de nuevo",goToAgents:"Ir a Agentes →"}},M1={edited:"Editado {{time}}",updated:"Actualizado {{time}}",updatedRecently:"Actualizado recientemente"},N1={emptyTitle:"Todavía no has creado ninguna app.",emptySubtitle:"¡Crea tu primera app usando el formulario de arriba!"},F1={dialogTitle:"Navegación rápida",dialogDescription:"Accede a apps, plantillas, facturación y la configuración del Workspace desde la página principal.",searchPlaceholder:"Buscar apps, ajustes, plantillas, facturación...",searching:"Buscando apps del Workspace...",emptyTitle:"No hay coincidencias",emptyDescription:"Prueba con el nombre de una app, una sección de ajustes o una página como facturación o plantillas.",allApps:"Todas las apps",backToWorkspace:"Volver al Workspace",templates:"Plantillas",billing:"Facturación",groups:{apps:"Apps",navigate:"Páginas",workspace:"Espacio de trabajo",account:"Cuenta"},subtitles:{favoriteApp:"App favorita",recentApp:"App reciente",page:"Página"}},L1={label:"¿Qué te gustaría crear?",more:"Más",moreIdeas:"Más ideas",categories:{CRM:"CRM","Dev productivity":"Productividad para desarrolladores",Educational:"Educativo","Content Generation and Editing":"Generación y edición de contenido","Personal Finance":"Finanzas personales","Health and Wellness":"Salud y bienestar",Productivity:"Productividad","Travel Planning":"Planificación de viajes",Entertainment:"Entretenimiento",Environmental:"Medio ambiente","Home Management":"Gestión del hogar","Creative Tools":"Herramientas creativas",Tasks:"Tareas","CRM & Sales":"CRM y ventas",Portfolio:"Portafolio",Finance:"Finanzas","Scheduling & Booking":"Agenda y reservas",eCommerce:"eCommerce","Construction & Trade":"Construcción y oficios","Events & Community":"Eventos y comunidad",Wellness:"Bienestar","Operations & Logistics":"Operaciones y logística","Tasks & Workflows":"Tareas y flujos","Content & Sites":"Contenido y sitios",Booking:"Reservas","E-commerce":"E-Commerce",Projects:"Proyectos",Operations:"Operaciones"}},j1={hero:g1,recentApps:h1,recentAgents:f1,chat:v1,catalog:b1,billing:y1,permissions:k1,validation:w1,urlCapture:A1,integrations:S1,connectors:C1,planMode:D1,viewAll:T1,error:E1,figmaDialog:P1,figmaOAuth:_1,statusBanner:x1,tabs:I1,tryAgentBanner:R1,agent:z1,appCard:M1,appsList:N1,commandPalette:F1,ideas:L1},O1={title:"Integraciones",subtitle:"Descubre integraciones prediseñadas que te permiten conectarte a APIs, servicios y herramientas para ampliar las capacidades de tu app."},B1={placeholder:"Buscar integraciones..."},U1={title:"No se encontraron integraciones coincidentes",description:"Intenta ajustar tu búsqueda o los filtros."},q1={title:"Conectores",subtitle:"Conexiones OAuth rápidas con servicios populares, respaldadas por Base44."},V1={howToUse:"Cómo usar",dialog:{getStarted:"Comenzar",navigateInstruction:"Ve a la pestaña de Integraciones de tu app para conectar {{name}} y obtener prompts personalizados.",upgradeNotice:"Esta integración requiere funciones de backend, disponibles únicamente en el plan Builder o superior. <seePlansLink>Ver planes</seePlansLink>"}},$1={stripe:"Vende productos o suscripciones y cobra en línea.",salesforce:"Automatiza y sincroniza registros de CRM.",slack:"Envía mensajes y gestiona Slack como usuario.",slackbot:"Publica como un bot personalizado en tu workspace de Slack.",notion:"Organiza y sincroniza conocimiento o datos de proyectos.",googlecalendar:"Gestiona tu agenda y eventos de calendario.",googledrive:"Exporta y respalda archivos generados por tu app.",gmail:"Automatiza el envío de correos y la gestión de la bandeja de entrada.",googlesheets:"Sincroniza y gestiona datos en hojas de cálculo.",googleslides:"Genera y gestiona presentaciones.",googledocs:"Gestiona y automatiza la creación de documentos.",googlebigquery:"Consulta y sincroniza datos analíticos.",googletasks:"Gestiona listas de tareas pendientes.",googlemeet:"Videoconferencias y reuniones.",hubspot:"Sincroniza datos de CRM y automatiza el marketing.",linkedin:"Comparte actualizaciones y accede a perfiles profesionales.",tiktok:"Monitorea estadísticas de tu perfil y navega por tus videos.",discord:"Publica en canales e intégrate con tu comunidad de Discord.",wix:"Accede a los datos del sitio Wix y herramientas de negocio.",github:"Gestiona repositorios, issues y pull requests.",gitlab:"Gestiona proyectos, MRs y pipelines de CI/CD.",bamboohr:"Directorio de empleados y gestión de RRHH.",wrike:"Planificación de proyectos y coordinación de equipos.",box:"Gestión segura de contenidos en la nube.",clickup:"Organiza proyectos y realiza seguimiento del trabajo en equipo.",google_analytics:"Monitorea el tráfico web e insights de usuarios.",outlook:"Correo electrónico y calendario.",linear:"Seguimiento de issues y gestión de proyectos.",dropbox:"Almacena y sincroniza archivos en la nube.",google_search_console:"SEO y analítica de búsqueda.",google_classroom:"Educación y gestión de cursos.",airtable:"Bases de datos y hojas de cálculo flexibles.",splitwise:"División de gastos y facturas grupales.",microsoft_teams:"Chat de equipo, canales y reuniones.",share_point:"Gestión de documentos y colaboración.",one_drive:"Almacenamiento de archivos en la nube.",typeform:"Formularios, encuestas y recopilación de datos.",hugging_face:"Inferencia de IA y repositorios de modelos.",calendly:"Programación automática de citas.",contentful:"CMS headless y gestión de contenidos.",supabase:"Explora esquemas, lee datos y consulta el estado del proyecto (solo lectura)."},W1={page:O1,search:B1,emptyState:U1,connectors:q1,connector:V1,catalog:$1},G1={title:"Launchpad",subtitle:"Descubre y explora apps creadas por la comunidad",shareApp:"Comparte tu app",allApps:"Todas las apps",noAppsFound:"No se encontraron apps",noAppsHint:"Intenta limpiar los filtros o buscar otra cosa.",noAppsEmpty:"¡Sé el primero en publicar una app en Launchpad!",clearFilters:"Limpiar filtros",goToFirstPage:"Ir a la primera página",retry:"Reintentar",publishedToast:"¡Tu app ya está en vivo en Launchpad!"},H1={placeholder:"Buscar apps en Launchpad..."},Y1={all:"Todas"},K1={title:"Tendencias ahora"},Z1={title:"Apps destacadas",empty:"Aún no hay apps destacadas para este período.",thisWeek:"Esta semana",thisMonth:"Este mes",allTime:"Todo el tiempo"},J1={live:"En vivo",someone:"Alguien",sentences:{vote:"{{user}} acaba de votar por {{app}}",like:"{{user}} acaba de dar like a {{app}}",publish:"{{user}} acaba de publicar {{app}}",default:"{{user}} acaba de interactuar con {{app}}"}},Q1={signInPrompt:"Inicia sesión para publicar tu app en Launchpad.",signIn:"Iniciar sesión",back:"Atrás",next:"Siguiente",publish:"Publicar",publishing:"Publicando...",stepOf:"Paso {{current}} de {{total}}",successToast:"¡Tu app ya está en vivo en Launchpad!",failedDefault:"Error al publicar. Por favor, inténtalo de nuevo.",categoriesLoadFailed:"Error al cargar las categorías. Cierra y vuelve a intentarlo.",categoriesRetry:"Reintentar",steps:{selectApp:"Seleccionar app",details:"Detalles",preview:"Vista previa"},appPicker:{chooseApp:"Elige qué app te gustaría publicar en Launchpad.",searchPlaceholder:"Buscar tus apps...",loadFailed:"No se pudieron cargar tus apps.",tryAgain:"Reintentar",noApps:"Aún no tienes ninguna app.",noAppsForQuery:"No se encontraron apps para «{{query}}»",loadMore:"Cargar más"},preview:{caption:"Así se verá tu app en el grid de Launchpad:",creatorFallback:"Tú"},categoryPicker:{count:"{{current}}/{{max}} categorías seleccionadas"},validation:{nameRequired:"El nombre de la app es obligatorio",descriptionRequired:"La descripción corta es obligatoria",descriptionTooLong:"Máx. {{max}} caracteres",categoriesRequired:"Selecciona al menos 1 categoría",screenshotsRequired:"Sube al menos 1 captura de pantalla"}},X1={uploadFailed:"Algunas capturas de pantalla no se pudieron subir. Por favor, inténtalo de nuevo.",uploading:"Subiendo...",addImage:"Agregar imagen",count:"{{current}}/{{max}} capturas de pantalla. Arrastra para reordenar."},eB={previous:"Anterior",next:"Siguiente",pageOf:"Página {{page}} de {{totalPages}}"},tB={justNow:"ahora mismo",minutesAgo:"hace {{count}} min",hoursAgo:"hace {{count}} h",daysAgo:"hace {{count}} d"},aB={appName:"Nombre de la app",shortDescription:"Descripción breve",shortDescriptionPlaceholder:"Una breve descripción de lo que hace tu app",longDescription:"Descripción detallada",longDescriptionPlaceholder:"Cuenta más sobre tu app...",optional:"Opcional",categories:"Categorías",screenshots:"Capturas de pantalla",generateWithAi:"Generar con IA",aiComingSoon:"Generación con IA próximamente"},nB={tryApp:"Probar App",share:"Compartir",shareToast:"Enlace copiado al portapapeles.",shareError:"Error al compartir",about:"Acerca de",moreByCreator:"Más de {{name}}",backToLaunchpad:"Volver a Launchpad",notFound:"App no encontrada",notFoundHint:"Esta app pudo haber sido eliminada o despublicada.",loadFailed:"Error al cargar los detalles de la app.",unknownCreator:"este creador"},iB={title:"Comentarios",placeholder:"Escribe un comentario...",submit:"Publicar",submitting:"Publicando...",empty:"Aún no hay comentarios. ¡Sé el primero!",loadMore:"Cargar más comentarios",deleteFailed:"Error al eliminar el comentario.",postFailed:"Error al publicar el comentario.",signInToComment:"Inicia sesión para dejar un comentario",anonymous:"Anónimo"},rB={likeFailed:"Error al actualizar el like.",voteFailed:"Error al actualizar el voto.",selfVoteError:"No puedes votar por tu propia app."},oB={loadFailed:"Error al cargar los datos de Launchpad. Por favor, inténtalo de nuevo.",browseFailed:"Error al cargar las apps. Por favor, inténtalo de nuevo.",topAppsFailed:"Error al cargar las apps destacadas. Por favor, inténtalo de nuevo.",categoriesFailed:"Error al cargar las categorías.",refreshFailed:"Error al actualizar — por favor, recarga la página."},sB={page:G1,search:H1,categories:Y1,trending:K1,topApps:Z1,liveActivity:J1,publish:Q1,screenshots:X1,pagination:eB,relativeTime:tB,fillDetails:aB,detail:nB,comments:iB,engagement:rB,errors:oB},lB={title:"Apps",allAgentsTitle:"Todos los agentes",createNewApp:"Crear nueva app",createNewAgent:"Crear nuevo agente",tabRecents:"Recientes",tabFavorites:"Favoritos",tabAllApps:"Todas las apps",tabAllAgents:"Todos los agentes",searchPlaceholder:"Buscar apps",gridView:"Vista de cuadrícula",listView:"Vista de lista",appTypeLabel:"Tipo de app",appTypeApps:"Apps",appTypeAgents:"Agentes",tableHeaderName:"Nombre",tableHeaderDescription:"Descripción",tableHeaderActions:"Acciones",folderActionAddApps:"Agregar apps",folderActionRename:"Renombrar",folderActionDelete:"Eliminar",filterOwnedByMe:"De mi propiedad",filterMyAppsPersonal:"Mis apps (espacio de trabajo personal)",filterAllPlatform:"Todas las apps (en toda la plataforma)",filterMyAppsWorkspace:"Mis apps en el espacio de trabajo {{workspaceName}}",filterAllAppsWorkspace:"Todas las apps en el espacio de trabajo {{workspaceName}}",addNewFolder:"Agregar nueva carpeta",sortLastUpdated:"Última actualización",sortLastCreated:"Última creación",sortNameAsc:"Nombre (A-Z)",sortNameDesc:"Nombre (Z-A)",filterCreatedByMe:"Creado por mí",filterCreatedByAnyone:"Creado por cualquiera",filterAllPlatformApps:"Todas las apps de la plataforma",filterMyApps:"Mis apps en {{workspaceName}}",planModeDescription:"Esta aplicación está actualmente en modo de planificación y aún no ha sido creada.",noDescription:"Sin descripción",byCreator:"Por {{name}}",createdAgo:"Creado {{timeAgo}}",untitledPlan:"Plan sin título",tableHeaderApp:"App",tableHeaderLastUpdated:"Última actualización",tableHeaderCreatedBy:"Creado por",emptyFolderTitle:"Aún no se han agregado apps",emptyFolderMessage:"Las apps aparecerán aquí una vez que las agregues",addExistingApps:"Agregar apps existentes",emptyFavoritesTitle:"Aún no tienes apps favoritas",emptyFavoritesMessage:"Marca una app con estrella para agregarla aquí.",emptyRecentsTitle:"Sin actividad reciente",emptyRecentsMessage:"Las apps que abras aparecerán aquí.",emptySearchTitle:"No se encontraron apps",emptySearchMessage:"No se encontraron apps que coincidan con tus criterios.",clearFilters:"Limpiar filtros",previous:"Anterior",next:"Siguiente",failedToUpdateStar:"No se pudo marcar como favorito",failedToUpdateFavorite:"No se pudo actualizar el favorito",pleaseRetry:"Por favor, inténtalo de nuevo",folderCreated:"Carpeta creada",folderRenamed:"Carpeta renombrada",folderDeleted:"Carpeta eliminada",folderUpdated:"Carpeta actualizada",filter:"Filtrar"},cB={showAll:"Ver todo",appCount_one:"{{count}} app",appCount_other:"{{count}} apps",addApps:"Agregar apps",rename:"Renombrar",delete:"Eliminar",cancel:"Cancelar",save:"Guardar",saving:"Guardando...",create:"Crear",deleting:"Eliminando...",createFirstFolder:"Crear tu primera carpeta",createNewFolder:"Crear nueva carpeta",renameFolder:"Renombrar carpeta",folderVisibilityDescription:"La organización de carpetas es visible para tu espacio de trabajo.",folderNamePlaceholder:"Nombre de la carpeta",visibility:"Visibilidad",scopeWorkspace:"Espacio de trabajo",scopePersonal:"Personal",personalScopeHint:"Solo visible para ti",deleteFolder:"Eliminar carpeta",deleteFolderDescription:'¿Estás a punto de eliminar "{{name}}"? Las apps de esta carpeta no se eliminarán, solo la carpeta.',manageFolders:"Administrar carpetas",manageFoldersDescription:"Agregar o eliminar esta app de carpetas.",searchFoldersPlaceholder:"Buscar carpetas...",createNewFolderButton:"Crear nueva carpeta",noFoldersMatchSearch:"Ninguna carpeta coincide con tu búsqueda",noFoldersYet:"Aún no hay carpetas",allFolders:"Todas las carpetas",searchFolders:"Buscar carpetas",scopeFilterAll:"Todas",sortNameAsc:"Nombre A–Z",sortNameDesc:"Nombre Z–A",sortMostApps:"Más apps",sortFewestApps:"Menos apps",noFoldersFound:"No se encontraron carpetas",noFoldersMatchCriteria:"Ninguna carpeta coincide con tus criterios de búsqueda.",clearSearch:"Limpiar búsqueda",manageAppsInFolder:"Administrar apps en la carpeta",manageAppsDescription:'Agregar o eliminar apps en "{{name}}".',searchAppsPlaceholder:"Buscar apps...",noAppsMatchSearch:"Ninguna app coincide con tu búsqueda",noAppsFound:"No se encontraron apps",loadMore:"Cargar más",appUpdatedAgo:"Actualizado {{timeAgo}}",saveWithCount:"{{label}} ({{count}})",operationFailed:"Operación fallida. Por favor, inténtalo de nuevo."},dB={viewLiveApp:"Ver app en vivo",share:"Compartir",rename:"Renombrar",cloneApp:"Clonar app",appSettings:"Configuración de app",delete:"Eliminar",appDeleted:"App eliminada",appDeletedDescription:'"{{name}}" ha sido eliminada',failedToDelete:"Error al eliminar la app",failedToDeleteDescription:"Ocurrió un error al eliminar la app",manageFolders:"Administrar carpetas",removeFromFolder:"Eliminar de la carpeta",goToAppSettings:"Ir a configuración de app",deleteApp:"Eliminar app",deleteAppTitle:'¿Eliminar "{{name}}"?',deleteAppDescription:"Esto eliminará permanentemente esta app y todos sus datos. Esta acción no se puede deshacer.",appRemovedFromFolder:"App eliminada de la carpeta",failedToRemoveFromFolder:"Error al eliminar la app de la carpeta",addedToFolders_one:"App agregada a {{count}} carpeta",addedToFolders_other:"App agregada a {{count}} carpetas",removedFromFolders_one:"App eliminada de {{count}} carpeta",removedFromFolders_other:"App eliminada de {{count}} carpetas",failedToUpdateFolders:"Error al actualizar carpetas",foldersUpdated:"{{added}} y {{removed}}",removeFromFavorites:"Quitar de favoritos",addToFavorites:"Añadir a favoritos"},uB={title:"Renombrar app",description:"El nombre de la app es visible para usted y sus usuarios.",inputPlaceholder:"Ingrese el nombre de la app",urlUpdateNote:"Cambiar el nombre de la app también actualizará la URL de la app.",cancel:"Cancelar",save:"Guardar",saving:"Guardando...",nameRequired:"El nombre de la app es obligatorio",enterDifferentName:"Por favor, ingrese un nombre diferente",successTitle:"App renombrada",successDescription:'App renombrada a "{{name}}"',successDescriptionUrlFailed:'App renombrada a "{{name}}", pero no se pudo actualizar la URL.',failedTitle:"Error al renombrar la app",failedDescription:"Ocurrió un error al renombrar la app"},pB="Cargando...",mB="(Copia)",gB={cloningTitle:"Clonando {{appName}}",cloningDescription:"Esto puede tardar unos momentos. Lo encontrarás en la página Apps una vez que esté lista",goToApps:"Ir a Apps",confirmingPurchaseTitle:"Confirmando tu compra...",confirmingPurchaseSubtitle:"Esto suele tardar solo unos segundos",errorTitle:"Error",goBack:"Volver",cloneNotAllowedTitle:"Clonación no permitida",cloneNotAllowedDescription:"Esta app requiere funciones de backend. Necesitas estar en el nivel Builder o superior para clonarla.",configureSecrets:"Configurar secretos",cloneTitle:"Clonar {{name}}",cloneButton:"Clonar {{name}}",cloningButton:"Clonando {{name}}...",defaultAppName:"App",preparing:"Preparando...",errorCloningApp:"Ocurrió un error al clonar la app",errorFetchingRequirements:"Ocurrió un error al obtener los requisitos de clonación",errorPurchaseTimeout:"La confirmación de tu compra está tardando más de lo esperado. Revisa tu correo electrónico para confirmar, o contacta al soporte si el problema persiste.",errorVerifyPurchase:"No se pudo verificar la compra. Por favor, inténtalo de nuevo."},hB={userApps:lB,folders:cB,appActions:dB,renameApp:uB,loading:pB,copySuffix:mB,remixPage:gB},fB={title:"Base44 App Templates Marketplace - Términos de Servicio",lastUpdated:"Última actualización: 18 de noviembre de 2025"},vB={header:fB},bB={home:"Inicio",allApps:"Todas las Apps",apps:"Apps",integrations:"Integraciones",appTemplates:"Plantillas de Apps",hirePartner:"Contratar un Partner",affiliates:"Afiliados",docsSupport:"Docs y Soporte",admins:"Admins",referFriends:"Referir Amigos",language:"Idioma",startBuilding:"Empezar a crear"},yB={title:"Crear un espacio de trabajo",subtitle:"Empieza a colaborar con los miembros de tu espacio de trabajo",back:"Volver",formTitle:"Información del espacio de trabajo",nameLabel:"Nombre del espacio de trabajo",namePlaceholder:"Ingresa el nombre de tu espacio de trabajo",nameHint:"Elige un nombre que represente tu espacio de trabajo",nameRequiredError:"El nombre del espacio de trabajo es obligatorio",createFailedError:"Error al crear el espacio de trabajo",limitReachedError:"Límite de espacios de trabajo alcanzado. Puedes crear un máximo de 3 espacios de trabajo.",cancelButton:"Cancelar",createButton:"Crear espacio de trabajo",creatingButton:"Creando espacio de trabajo...",whatHappensNext:{title:"¿Qué pasa después?",ownerPermissions:"Serás el propietario del espacio de trabajo con permisos de gestión completos",inviteMembers:"Puedes invitar a miembros del espacio de trabajo y gestionar licencias",accessDashboard:"Accede al panel de tu espacio de trabajo para comenzar"}},kB={workspace:"Workspace",backToWorkspace:"Volver a {{workspaceName}}",settings:"Configuración",inviteMembers:"Invitar miembros",myWorkspaces:"Mis Workspaces",createWorkspace:"Crear un Workspace",noWorkspacesFound:"No se encontraron workspaces",accountSettings:"Configuración de Cuenta",apiKey:"Clave API",helpSupport:"Ayuda y Soporte",becomeAffiliate:"Ser Afiliado",defaultUser:"Usuario",defaultUserInitial:"U",referFriend:"Referir a un Amigo",giftCards:"Tarjetas de Regalo",sendGiftCard:"Enviar tarjeta regalo",notifications:"Notificaciones",logOut:"Cerrar sesión",aboutApp:"Sobre la app",upgradePlan:"Mejorar Plan",winCredits:"Ganar créditos gratis",pricingPlans:"Planes de precios",documentation:"Documentación",getHelp:"Obtener ayuda",memberCount_one:"{{count}} miembro",memberCount_other:"{{count}} miembros",myProfile:"Mi perfil",viewProfile:"Ver perfil",failedToLoadProfile:"No se pudo cargar el perfil",user:"Usuario"},wB={ariaLabel:"Menú del agente",agentFallback:"Agente"},AB={integrationCredits:"Créditos de integraciones",monthlyCredits:"Créditos Mensuales",messageCredits:"Créditos de mensajes",dailyCredits:"Créditos Diarios",giftCardCredits:"Créditos de Regalo",renewsAt:"Se renueva el {{date}}",giftCardTooltip:"Los créditos de tarjeta de regalo se usan antes que los créditos de tu plan.",percentUsed:"{{percent}}% usado",messagesRemaining_one:"{{count}} mensaje restante",messagesRemaining_other:"{{count}} mensajes restantes",upgradeYourPlan:"Mejorar tu plan",getMoreOutOfYourApps:"Saca más provecho de tus apps",upgradeYourPlanToPro:"Mejora tu plan a Pro",redeemDescription:"Una vez canjeados, los créditos se aplicarán a tu espacio de trabajo.",creditsRemaining_one:"{{count}} crédito restante",creditsRemaining_other:"{{count}} créditos restantes"},SB={label:"Comunidad",appTemplates:"Plantillas de Apps",appTemplatesDesc:"Empieza más rápido con plantillas de la comunidad.",hirePartner:"Contratar un Partner",hirePartnerDesc:"Encuentra Partners y comienza a colaborar.",spotlight:"Destacados",spotlightDesc:"Explora aplicaciones destacadas.",affiliateProgram:"Programa de Afiliados",affiliateProgramDesc:"Conviértete en afiliado de Base44.",joinUsOn:"Únete a nosotros en"},CB=JSON.parse(`{"title":"Configuración","lockedFeature":{"includedInPlan":"Incluido en el plan {{plan}} y superiores","includedInPlanExact":"Incluido en el plan {{plan}}","viewPlans":"Ver planes","talkToSales":"Hablar con ventas","authSecurity":{"title":"Controla el acceso al workspace","body":"Esencial para industrias reguladas y organizaciones enfocadas en seguridad","ssoAccess":"Usa inicio de sesión único (SSO) para reducir riesgos de contraseñas","domainVerification":"Controla quién puede unirse con verificación de dominio","ipWhitelisting":"Permite el acceso solo desde direcciones IP de confianza"},"integrations":{"title":"Configura una vez, usa en todo tu workspace","body":"Para equipos que estandarizan APIs y herramientas externas en sus apps.","configureOnce":"Configura integraciones API una vez para todas las apps y compañeros","sharedAccess":"Cualquiera en tu workspace puede usar las herramientas conectadas al instante","consistentConnections":"Mantén las conexiones externas consistentes en todas las apps"},"appsConfiguration":{"title":"Define visibilidad de apps y reglas SSO","body":"Para equipos que gestionan herramientas internas y apps sensibles.","publicAppControl":"Decide quién puede crear apps públicas en este workspace","defaultVisibility":"Establece la visibilidad inicial para nuevas apps","enforceSso":"Aplica SSO del workspace en todas las apps"},"analytics":{"title":"Ve cómo tu equipo usa Base44","body":"Para propietarios y admins de workspace que rastrean uso y adopción.","creditTracking":"Rastrea cómo se usan los créditos en tu equipo","activeUsers":"Ve qué compañeros están usando Base44 activamente","licenseUsage":"Entiende cuántas licencias están actualmente en uso"},"skills":{"title":"Dale a tu IA skills reutilizables","body":"Define un comportamiento de IA consistente que funcione en todas tus apps.","reusableInstructions":"Crea un conjunto de instrucciones personalizadas (un skill) que moldean cómo la IA construye tus apps","autoActivation":"Crea una vez, reutiliza en todas tus apps","teamConsistency":"Guía el tono, formato, lógica o cualquier comportamiento que quieras estandarizar"},"mcpConnections":{"title":"Conecta herramientas externas con MCP","body":"Trae datos en vivo de herramientas externas directamente a tus apps.","externalTools":"Dale a tu constructor de IA acceso a contexto en tiempo real mientras trabaja","customServers":"Conecta servidores MCP personalizados para usar en todas tus apps","extendCapabilities":"Accede a herramientas como Amplitude, Linear y más mientras desarrollas"}},"membersTitle":"Miembros","inviteMembers":"Invitar miembros","inviteByEmail":"Invitar por correo electrónico","bulkInviteCsv":"Invitación masiva (CSV)","close":"Cerrar","createInviteLink":"Crear enlace de invitación","manageInviteLinks":"Gestionar enlaces de invitación","backToMembers":"Volver a miembros","backToMenu":"Volver al menú de configuración","inviteLinks":{"title":"Enlaces de invitación","breadcrumb":"Enlaces de invitación","description":"Crea y gestiona enlaces de invitación para este workspace.","createInviteLink":"Crear enlace de invitación","noLinksYet":"Aún no hay enlaces de invitación","noLinksSubtitle":"Crea un enlace de invitación para compartir fácilmente el acceso a este workspace.","copyLink":"Copiar enlace","copyLinkLower":"Copiar enlace","deleteTooltip":"Eliminar enlace de invitación","deleteButton":"Eliminar","deleteLinkButton":"Eliminar enlace","deleteConfirmTitle":"¿Eliminar enlace de invitación?","deleteConfirmActive":"Las personas ya no podrán unirse usando este enlace. Esta acción no se puede deshacer.","deleteConfirmInactive":"Este enlace y su historial se eliminarán de este workspace.","copiedToClipboard":"Enlace de invitación copiado al portapapeles.","columnName":"Nombre","columnStatus":"Estado","columnUsage":"Uso","columnRole":"Rol","columnExpiration":"Fecha de expiración","columnDomains":"Dominios permitidos","statusActive":"Activo","statusRevoked":"Revocado","statusExpired":"Expirado","statusLimitReached":"Límite alcanzado","usageUnlimited":"Ilimitado","dialogTitle":"Crear enlace de invitación","dialogMobileTitle":"Crear enlace","linkName":"Nombre del enlace (Opcional)","linkNamePlaceholder":"ej., Incorporación de nuevos empleados","role":"Rol","selectRole":"Seleccionar rol","roleViewer":"Visor","roleEditor":"Editor","roleMember":"Miembro","expiration":"Expiración","selectExpiration":"Seleccionar expiración","nDays_one":"{{count}} día","nDays_other":"{{count}} días","never":"Nunca","maximumUses":"Usos máximos","selectLimit":"Seleccionar límite","unlimited":"Ilimitado","nUses_one":"{{count}} uso","nUses_other":"{{count}} usos","allowedDomains":"Dominios de correo permitidos (Opcional)","allowedDomainsPlaceholder":"ej., empresa.com, socio.org","domainsHelp":"Separa múltiples dominios con comas.","domainsError":"Entrada inválida. Usa dominios separados por comas (ej., empresa.com, socio.org)","securityWarning":"Cualquier persona con este enlace puede unirse a tu workspace y acceder a sus datos. Compártelo solo con personas de confianza.","advancedOptions":"Opciones avanzadas","cancel":"Cancelar","creating":"Creando...","create":"Crear","linkCreatedAndCopied":"Enlace de invitación creado y copiado.","manageInvitations":"Gestionar invitaciones"},"postPaymentInvite":{"title":"¡Todo listo!","description":"Tu plan está activo. Invita a tus amigos y colegas para empezar a construir juntos.","createInviteLink":"Crear enlace de invitación","inviteByEmail":"Invitar por correo electrónico","maybeLater":"Quizás más tarde","inviteLinkReady":"Enlace de invitación listo","subtitleNoDomain":"Cualquier persona con este enlace puede unirse como <bold>{{role}}</bold>","subtitleWithDomain":"Cualquier persona con un correo {{domains}} puede unirse como <bold>{{role}}</bold>","copied":"Copiado","manageInvitationsPrompt":"Puedes gestionar todos tus enlaces de invitación desde la página de configuración de <inviteLink>Enlaces de invitación</inviteLink>.","copyLink":"Copiar","close":"Cerrar","expires":"Expira {{time}}","remainingUses_one":"{{count}} uso restante","remainingUses_other":"{{count}} usos restantes"},"sections":{"workspace":"Workspace","integrations":"Integraciones","account":"Cuenta"},"creditUsage":{"pageDescription":"Monitorea tu consumo de créditos y patrones de uso.","currentPlan":"Actualmente estás en el Plan {{planName}}","overLimit":"Límite superado","updatePayment":"Actualizar pago","upgrade":"Mejorar","paymentOverdue":"Pago vencido","pastDueDescription":"El pago de tu suscripción está vencido. Los créditos y límites mostrados se basan en tu último plan pagado ({{plan}}).","tryAgain":"Reintentar","trying":"Intentando...","monthlyMessages":"Mensajes mensuales","workspaceTotal":"Total del espacio de trabajo","workspaceUsage":"Uso del espacio de trabajo","dailyMessages":"Mensajes diarios","loadError":"Error al cargar estadísticas de uso","portalError":"No se pudo abrir la gestión de pagos. Por favor, inténtalo de nuevo.","portalErrorTitle":"Error","creditsRenewIn":"Los créditos se renuevan en {{timeLeft}}","expired":"Expirado","dailyUsageTitle":"Uso diario (Mensajes)","noUsageData":"No hay datos de uso disponibles","messagesLabel":"mensajes","timeDaysHours":"{{days}}d : {{hours}}h","timeHoursMinutes":"{{hours}}h : {{minutes}}m","timeMinutes":"{{minutes}}m"},"basicInformation":{"pageTitle":"Información básica","pageSubtitleEditable":"Administra los detalles y la configuración de tu espacio de trabajo.","pageSubtitleReadOnly":"Ver detalles del espacio de trabajo. Solo los propietarios y administradores pueden editar.","loadingMessage":"Cargando información del espacio de trabajo...","workspaceNameLabel":"Nombre del espacio de trabajo","workspaceNamePlaceholder":"Ingresa el nombre del espacio de trabajo","workspaceDescriptionLabel":"Descripción del espacio de trabajo","workspaceDescriptionPlaceholder":"Describe tu espacio de trabajo...","workspaceNameEmptyErrorMessage":"El nombre del espacio de trabajo no puede estar vacío","cancelButton":"Cancelar","saveButton":"Guardar cambios","savingButton":"Guardando...","saveSuccessMessage":"¡Configuración del espacio de trabajo actualizada con éxito!","saveErrorMessage":"Error al actualizar la configuración del espacio de trabajo: {{error}}","unknownError":"Error desconocido"},"leaveWorkspace":{"title":"Salir del espacio de trabajo","description":"Si abandona este espacio de trabajo, perderá el acceso a todas las aplicaciones asociadas. La propiedad de sus aplicaciones se transferirá al propietario del espacio de trabajo.","button":"Salir del espacio de trabajo","soleOwnerNote":"No puede salir del espacio de trabajo porque es el único propietario.","successMessage":"Ha abandonado el espacio de trabajo.","workspaceNameFallback":"espacio de trabajo","dialog":{"title":"¿Salir de {{name}}?","confirmQuestion":"¿Está seguro de que desea salir de <bold>{{name}}</bold>?","transferWarning":"Sus aplicaciones en este espacio de trabajo se transferirán al propietario del espacio de trabajo y perderá el acceso.","cancelButton":"Cancelar","confirmButton":"Salir del espacio de trabajo"}},"menu":{"basicInformation":"Información básica","planAndBilling":"Plan y facturación","creditUsage":"Uso de créditos","members":"Miembros","seatsAndMembers":"Puestos y miembros","authAndSecurity":"Autenticación y seguridad","integrations":"Integraciones","appsConfiguration":"Configuración de apps","analytics":"Analíticas","accountSettings":"Configuración de cuenta","mcpConnections":"Conexiones MCP","skills":"Habilidades","connectors":"Conectores","manageSubscription":"Gestionar suscripción","secrets":"Secretos","dataResidency":"Residencia de datos"},"guests":{"tabMembers":"Miembros","tabGuests":"Invitados","title":"Invitados","infoBanner":"Los invitados son usuarios externos invitados a apps específicas. Consumen créditos del pool compartido del espacio de trabajo.","searchPlaceholder":"Buscar por correo o app...","columnGuest":"Invitados","columnApp":"App","columnInvitedBy":"Invitado por","columnCreditsUsed":"Créditos usados","pending":"Pendiente","promoteToEditor":"Promover a Editor","promoteToViewer":"Promover a Visor","removeFromWorkspace":"Eliminar del espacio de trabajo","emptyTitle":"Aún no hay invitados","emptySubtitle":"Los invitados se pueden añadir desde el flujo de invitación de colaboradores de la app.","noResults":"No se encontraron invitados","noResultsSubtitle":"Ningún invitado coincide con \\"{{searchTerm}}\\"","promoted":"{{email}} promovido a {{role}}","promoteFailed":"Error al actualizar el rol","setCreditLimit":"Establecer límite de créditos","upgradeForCreditLimit":"Actualiza al plan Enterprise para esta función","viewAppAccess":"Ver acceso a apps","removeMember":"Eliminar miembro","guestRole":"Invitado","appAccessTitle":"Acceso a apps de {{name}}","appAccessDescription":"Ver las apps a las que este invitado puede acceder en el espacio de trabajo.","appAccessLoading":"Cargando...","appAccessEmpty":"No se encontró acceso a apps.","appAccessColumnApp":"App","appAccessDone":"Listo"},"members":{"pageTitle":"Miembros","pageDescription":"Ver y gestionar los miembros y roles de este espacio de trabajo.","tableTitle":"Miembros ({{count}})","columnMembers":"Miembros","columnCreditsUsed":"Créditos utilizados","columnCreditsUsedWithLimit":"Créditos utilizados (de {{limit}})","columnCreditLimit":"Límite de créditos","columnRole":"Rol","roleOwner":"Propietario","roleAdmin":"Admin","roleEditor":"Editor","roleViewer":"Visor","pending":"Pendiente","expired":"Expirado","searchPlaceholder":"Buscar por nombre o correo...","searchPlaceholderMobile":"Buscar...","inviteMembers":"Invitar miembros","inviteByEmail":"Invitar miembros","bulkInvite":"Invitación masiva","setCreditLimit":"Establecer límite de créditos","removeMember":"Eliminar miembro","upgradeTooltip":"Actualiza al plan Enterprise para desbloquear esta función","default":"(predeterminado)","emptyTitle":"Aún no hay miembros","emptyTitleNoResults":"No se encontraron miembros","emptySubtitlePersonal":"Los espacios de trabajo personales solo te contienen a ti","emptySubtitleShared":"Comienza invitando a tu primer miembro","emptySubtitleNoResults":"Ningún miembro coincide con \\"{{searchTerm}}\\"","cantChangeOwnRole":"No puedes cambiar tu propio rol. Pide a un propietario del espacio de trabajo que lo actualice.","creditLimitTooltip":"Limita cuántos créditos puede usar cada miembro del pool del espacio de trabajo. Establece límites individualmente o distribúyelos equitativamente entre todos los miembros.","tableTitleFiltered":"Miembros ({{filteredCount}} de {{totalCount}})","clearSearch":"Borrar búsqueda"},"seatsAndMembers":{"pageTitle":"Puestos y miembros","pageDescription":"Administra los puestos del espacio de trabajo y los miembros del equipo.","emptyTitle":"Comienza con puestos del espacio de trabajo","emptyDescription":"Compra puestos para invitar miembros al espacio de trabajo y comenzar a colaborar.","buyFirstSeats":"Compra tus primeros puestos","planSeats":"Puestos {{planName}}","seatsUsage":"Uso de puestos","addSeats":"Agregar puestos","removeSeats":"Eliminar puestos","seatsAvailable_one":"{{count}} puesto disponible","seatsAvailable_other":"{{count}} puestos disponibles","buyMoreSeats":"Comprar más puestos","expandWorkspace":"Amplía el tamaño de tu espacio de trabajo","searchPlaceholder":"Buscar por correo, rol, estado o tipo de puesto (ej., starter, pro)...","searchTip":"Sugerencia: Busca tipos de puesto como \\"starter\\", \\"builder\\", \\"pro\\", \\"elite\\" o \\"sin puesto\\""},"inviteDialog":{"title":"Invitar miembros","emailAddress":"Correo electrónico","role":"Rol","cancel":"Cancelar","invite":"Invitar","inviting":"Invitando...","roleViewer":"Visor","roleEditor":"Editor","roleAdmin":"Admin","roleMember":"Miembro","errorNoEmail":"Por favor ingresa al menos una dirección de correo","errorInvalidEmail":"Una o más direcciones de correo son inválidas.","errorFallback":"Error al invitar usuarios","toastSingle":"Invitación enviada a {{email}}","toastMultiple":"{{count}} invitaciones enviadas con éxito"},"dataResidency":{"title":"Residencia de datos","tooltip":"Establece la región de almacenamiento de datos para las aplicaciones en este espacio de trabajo.","edit":"Editar","upgradeRequired":"Se requiere plan Elite o superior para configurar la residencia de datos.","appliesToNewApps":"Se aplica a las aplicaciones recién creadas. Las aplicaciones existentes mantienen su región actual.","editModal":{"title":"Residencia de datos del espacio de trabajo","description":"Elige dónde almacenar los datos de las aplicaciones que creas en este espacio de trabajo.","label":"Residencia de datos","appliesToNewApps":"Se aplica a las aplicaciones recién creadas. Las aplicaciones existentes mantienen su región de datos actual.","viewAllApps":"Ver residencia de datos de todas las aplicaciones del espacio de trabajo","cancel":"Cancelar","save":"Guardar","saving":"Guardando...","updateSuccess":"Residencia de datos actualizada correctamente","updateError":"Error al actualizar la residencia de datos: {{detail}}","unknownError":"Error desconocido"},"appsModal":{"title":"Residencia de datos de aplicaciones","description":"Ve dónde se almacenan los datos de cada aplicación en este espacio de trabajo.","appName":"Nombre de la aplicación","dataRegion":"Región de datos","loading":"Cargando...","noApps":"No hay aplicaciones en este espacio de trabajo.","migrationInfo":"¿Necesitas mover una aplicación a una región diferente? <a>Solicitar una migración.</a>","supportTitle":"Solicitud de migración de región de datos — {{name}}","supportContent":"Me gustaría migrar los datos de la aplicación a una región diferente.\\n\\nEspacio de trabajo: {{name}} ({{id}})\\nRegión predeterminada actual: {{region}}\\nRegión de destino: \\nAplicaciones a migrar: "}},"mcp":{"title":"Conexiones MCP","addMcp":"Añadir MCP","limitReached":"Has alcanzado el límite de {{max}} servidores MCP. Elimina uno para añadir una nueva conexión.","description":"Conecta servidores MCP personalizados para ampliar las capacidades de construcción de Base44 con herramientas y datos externos.","descriptionWithLink":"Conecta servidores MCP personalizados para ampliar las capacidades de construcción de Base44 con herramientas y datos externos. <a>Más información sobre MCP<icon/></a>","learnMore":"Más información sobre MCP","emptyTitle":"Aún no hay servidor MCP conectado","addCustomMcp":"Añadir MCP personalizado","aria":{"enableConnection":"Activar {{name}}","disableConnection":"Desactivar {{name}}","actionsFor":"Acciones para {{name}}"},"actions":{"editDetails":"Editar detalles","removeMcp":"Eliminar MCP"},"deleteConfirm":{"title":"Eliminar conexión MCP","description":"¿Estás seguro de que quieres eliminar \\"{{name}}\\"? Esta acción no se puede deshacer.","confirm":"Eliminar","cancel":"Cancelar"},"tools":{"availableTools_one":"{{count}} herramienta disponible","availableTools_other":"{{count}} herramientas disponibles","more":"+{{count}} más","showLess":"Mostrar menos","loadingTools":"Cargando herramientas..."},"addDialog":{"title":"Añadir servidor MCP personalizado","name":"Nombre","namePlaceholder":"ej. Mi servidor MCP","url":"URL","urlExists":"El servidor MCP ya existe.","authentication":"Autenticación","authNone":"No requerida","authNoneDescription":"Conectar sin credenciales","authOAuth":"OAuth","authOAuthDescription":"Autorizar en el siguiente paso","customHeaders":"Headers personalizados","optional":"opcional","headersDescription":"Añade headers que se enviarán con cada solicitud (ej. claves API)","headerName":"Nombre del header","headerValue":"Valor","addHeader":"Añadir header","connectionFailed":"Conexión fallida","serverReady":"El servidor MCP está listo para conectar.","serverReadyWithTools_one":"El servidor MCP está listo para conectar. 1 herramienta encontrada.","serverReadyWithTools_other":"El servidor MCP está listo para conectar. {{count}} herramientas encontradas.","toolsFound_one":"{{count}} herramienta encontrada.","toolsFound_other":"{{count}} herramientas encontradas.","oauthConfirmed":"Servidor confirmado. Haz clic en \\"Autorizar y añadir\\" para completar la autenticación OAuth.","test":"Probar","testAndAdd":"Probar y añadir","authorizeAndAdd":"Autorizar y añadir","cancel":"Cancelar","urlRequired":"Por favor, introduce una URL del servidor.","fieldsRequired":"Por favor, completa todos los campos obligatorios.","authRequired":"Se requiere autenticación para este servidor. Selecciona OAuth para continuar.","authNotRequired":"Este servidor no requiere OAuth. Intenta añadir sin OAuth.","testFailed":"La prueba de conexión ha fallado."},"editDialog":{"title":"Editar MCP conectado","enabled":"Activado","nameRequired":"Por favor, introduce un nombre.","changeInfo":"Para cambiar la URL o el método de autenticación, crea una nueva conexión MCP.","saveChanges":"Guardar cambios","removeMcp":"Eliminar MCP","cancel":"Cancelar"},"toast":{"added":"Conexión MCP añadida","addedDescription":"Conectado exitosamente al servidor MCP.","addedWithName":"Conexión \\"{{name}}\\" añadida exitosamente.","saved":"Cambios guardados","savedDescription":"Conexión MCP actualizada exitosamente."}},"skills":{"title":"Habilidades","addSkill":"Añadir habilidad","addSkillLower":"añadir habilidad","editSkill":"Editar habilidad","viewSkill":"Ver habilidad","deleteSkill":"Eliminar habilidad","limitReached":"Has alcanzado el límite de {{max}} habilidades. Elimina una para añadir una nueva.","description":"Crea conjuntos de instrucciones reutilizables que el constructor de IA puede activar durante las conversaciones.","emptyDescription":"Las habilidades son directrices guardadas que definen cómo la IA construye tus apps. Se activan cuando es necesario para seguir tus reglas y mejores prácticas automáticamente.","emptyDescriptionWithLink":"Las habilidades son directrices guardadas que definen cómo la IA construye tus apps. Se activan cuando es necesario para seguir tus reglas y mejores prácticas automáticamente. <a>Saber más</a>","learnMore":"Saber más","getStartedWithTemplate":"Empezar con una plantilla","viewMore":"Ver más","failedToLoadTemplates":"Error al cargar plantillas de habilidades","templatesUnavailable":"Las plantillas predefinidas pueden no estar disponibles.","failedToLoadTemplate":"Error al cargar la plantilla","form":{"skillName":"Nombre de la habilidad","namePlaceholder":"ej. brand-guidelines","nameRequired":"El nombre es obligatorio","nameMaxLength":"El nombre debe tener como máximo {{max}} caracteres","namePattern":"Solo minúsculas, números y guiones (ej. code-review)","nameExists":"Ya existe una habilidad con este nombre","description":"Descripción","descriptionHint":"Indica al agente cuándo usar esta habilidad. Lee esto para decidir si activarla.","descriptionPlaceholder":"ej. Aplica los colores de marca, tipografía y patrones de diseño en todas las páginas y componentes. Usar al crear nuevas páginas, actualizar estilos o cuando el usuario mencione la marca o el sistema de diseño.","instructions":"Instrucciones","instructionsHint":"Las reglas paso a paso que tu agente sigue cuando esta habilidad se activa. Escríbelo como si estuvieras entrenando a un nuevo miembro del equipo.","instructionsPlaceholder":"## Colores de Marca\\nPrimario: #1E40AF (navegación, botones)\\nAcento: #F59E0B (resaltados, CTAs)\\nFondo: #F8FAFC, Superficie: blanco\\n\\n## Tipografía\\nEncabezados: negrita, slate oscuro\\nCuerpo: text-sm text-slate-600\\nEspaciado consistente entre secciones\\n\\n## Patrones de Componentes\\n- Usar Card con sombra sutil para secciones de datos\\n- Siempre incluir estados de carga y vacíos\\n- Formularios: usar diálogos Sheet para crear/editar\\n- Tablas: filas alternas, columnas ordenables","reviewHint":"Refinado por IA. Siéntete libre de ajustar antes de guardar."},"dialog":{"reviewTitle":"Revisar tu habilidad","reviewSubtitle":"Comprueba la descripción e instrucciones antes de guardar. Puedes editarlo en cualquier momento.","pickerTitle":"Añadir habilidad o empezar desde cero","startFromScratch":"Empezar desde cero","cancel":"Cancelar","backToOriginal":"Volver al original","saveSkill":"Guardar habilidad","saveChanges":"Guardar cambios","refineAndReview":"Refinar y revisar","refineShort":"Refinar","close":"Cerrar","add":"Añadir","enabled":"Activado"},"toast":{"created":"Habilidad creada","createdDescription":"\\"{{name}}\\" se ha añadido.","failedToCreate":"Error al crear la habilidad","updated":"Habilidad actualizada","updatedDescription":"\\"{{name}}\\" se ha guardado.","failedToUpdate":"Error al actualizar la habilidad","refinedTooLong":"La habilidad refinada es demasiado larga","refinedTooLongDescription":"Intentamos condensarla pero el resultado sigue superando el límite de caracteres. Acorta el contenido e inténtalo de nuevo.","failedToPolish":"Error al refinar la habilidad","failedToLoad":"Error al cargar la habilidad","failedToLoadList":"Error al cargar las habilidades","retryLater":"Por favor, inténtalo más tarde.","retryAgain":"Por favor, inténtalo de nuevo.","removed":"Habilidad eliminada","removedDescription":"La habilidad ha sido eliminada."},"deleteConfirm":{"description":"¿Estás seguro de que quieres eliminar \\"{{name}}\\"? Esta acción no se puede deshacer.","confirm":"Eliminar","cancel":"Cancelar"},"aria":{"enableSkill":"Activar {{name}}","disableSkill":"Desactivar {{name}}","actionsFor":"Acciones para {{name}}"}},"secrets":{"title":"Secretos","description":"Gestiona credenciales y tokens de acceso para el acceso programático a tu workspace.","apiKeys":{"title":"Claves de API","description":"Crea y gestiona claves API para el acceso programático a tu workspace. Usa estas claves para transmitir registros de auditoría, conectar tu proveedor de identidad mediante SCIM o extraer datos del workspace a un sistema externo a través de la API de Monitorización.","createButton":"Crear clave de API","limitReached":"Has alcanzado el límite máximo de {{max}} claves de API. Elimina una clave existente para crear una nueva.","table":{"name":"Nombre","key":"Clave","createdBy":"Creado por","created":"Creado","lastUsed":"Último uso","status":"Estado","never":"Nunca"},"status":{"active":"Activo","disabled":"Desactivado"},"emptyState":{"title":"Aún no hay claves de API","description":"Las claves de API del workspace proporcionan acceso programático a las APIs del workspace (SIEM, SCIM, integraciones personalizadas)."},"actions":{"edit":"Editar","disableKey":"Desactivar clave","enableKey":"Activar clave","deleteKey":"Eliminar clave","actionsFor":"Acciones para {{name}}"},"sheet":{"editButton":"Editar","disableButton":"Desactivar","enableButton":"Activar"},"disableConfirm":{"title":"¿Desactivar clave de API?","description":"La clave de API <strong>\\"{{name}}\\"</strong> se desactivará inmediatamente. Las integraciones que usen esta clave dejarán de funcionar.","note":"Puedes reactivarla más tarde.","confirm":"Desactivar clave","cancel":"Cancelar"},"enableConfirm":{"title":"¿Activar clave de API?","description":"La clave de API <strong>\\"{{name}}\\"</strong> se reactivará. Las integraciones que usen esta clave volverán a funcionar.","confirm":"Activar clave","cancel":"Cancelar"},"deleteConfirm":{"title":"¿Eliminar clave de API?","description":"La clave de API <strong>\\"{{name}}\\"</strong> se eliminará permanentemente. Esta acción no se puede deshacer. Las integraciones que usen esta clave dejarán de funcionar inmediatamente.","confirm":"Eliminar clave","cancel":"Cancelar"},"toast":{"loadError":"Error al cargar las claves de API","loadErrorDescription":"Por favor, inténtalo de nuevo.","disabled":"Clave de API desactivada","disabledDescription":"\\"{{name}}\\" ha sido desactivada.","disableError":"Error al desactivar la clave de API","enabled":"Clave de API activada","enabledDescription":"\\"{{name}}\\" ha sido reactivada.","enableError":"Error al activar la clave de API","deleted":"Clave de API eliminada","deletedDescription":"\\"{{name}}\\" ha sido eliminada permanentemente.","deleteError":"Error al eliminar la clave de API","createError":"Error al crear la clave de API","updateError":"Error al actualizar la clave de API","copyError":"Error al copiar la clave de API","updated":"Clave de API actualizada","updatedDescription":"\\"{{name}}\\" ha sido guardada."},"createDialog":{"title":"Crear clave de API","titleReveal":"Clave de API creada","namePlaceholder":"ej. Integración SIEM","descriptionPlaceholder":"¿Para qué se usa esta clave?","cancelButton":"Cancelar","createButton":"Crear clave","creatingButton":"Creando...","warningMessage":"Copia esta clave ahora – no podrás verla de nuevo. Trátala como una contraseña: otorga acceso a los datos de tu workspace a través de la API.","yourApiKey":"Tu clave de API","doneButton":"Listo","copyAria":"Copiar clave de API"},"editDialog":{"title":"Editar clave de API","cancelButton":"Cancelar","saveButton":"Guardar","savingButton":"Guardando..."},"formFields":{"name":"Nombre","description":"Descripción","descriptionOptional":"(opcional)"}}},"authSecurity":{"title":"Autenticación y seguridad","description":"Configura los ajustes de autenticación y seguridad para tu espacio de trabajo.","sso":{"title":"Configuración de inicio de sesión único","configureTooltip":"Configura el SSO para tu espacio de trabajo","description":"Activa el SSO para simplificar la autenticación para los miembros de tu espacio de trabajo.","settingUp":"Configurando...","setUp":"Configurar","setUpConfiguration":"Configurar SSO","enforcedTooltip":"Este SSO está aplicado a todas las apps en el espacio de trabajo, lo que significa que lo usan automáticamente para autenticación. Para actualizar los ajustes de aplicación, ve a Configuración de Apps.","enforcedBadge":"Aplicado a las apps","setUpAction":"Configurar","configure":"Configurar","selectProvider":"Seleccionar proveedor SSO","cancelSetup":"Cancelar configuración","dismiss":"Cerrar","saving":"Guardando...","enableSSO":"Activar SSO","saveSSOSettings":"Guardar configuración SSO","notAvailableTitle":"No disponible","notAvailableDesc":"El inicio de sesión único (SSO) no está disponible para espacios de trabajo personales.","limitedAccessTitle":"Acceso limitado","limitedAccessDesc":"Solo los administradores del espacio de trabajo pueden configurar el SSO.","toast":{"error":"Error","failedToLoadSettings":"Error al cargar la configuración SSO","failedToLoadAppSettings":"Error al cargar la configuración de la app","ssoEnabled":"SSO activado","ssoEnabledDesc":"El inicio de sesión único ha sido activado para tu espacio de trabajo","ssoDisabled":"SSO desactivado","ssoDisabledDesc":"El inicio de sesión único ha sido desactivado","failedToUpdateStatus":"Error al actualizar el estado del SSO","success":"Éxito","settingsUpdated":"Configuración SSO actualizada correctamente","failedToUpdate":"Error al actualizar la configuración SSO"},"fields":{"client_id":"ID de cliente","client_secret":"Secreto del cliente","scope":"Scope","discovery_url":"URL de descubrimiento","tenant_id":"ID de inquilino","okta_domain":"Dominio de Okta","auth_endpoint":"Endpoint de autorización","token_endpoint":"Endpoint de token","userinfo_endpoint":"Endpoint de información del usuario","jwks_uri":"URI de JWKS","name":"Nombre del proveedor"},"autoGenerated":"(Generado automáticamente)","placeholders":{"client_id":"Ingresa el ID de cliente","client_secret":"Ingresa el secreto del cliente","scope":"Ingresa el scope","discovery_url":"Ingresa la URL de descubrimiento","tenant_id":"Tu ID de inquilino de Azure AD","okta_domain":"tu-empresa","auth_endpoint":"Ingresa el endpoint de autorización","token_endpoint":"Ingresa el endpoint de token","userinfo_endpoint":"Ingresa el endpoint de información del usuario","jwks_uri":"Ingresa la URI de JWKS","name":"Ingresa el nombre del proveedor"},"tooltips":{"clientId":"El ID de cliente OAuth proporcionado por tu proveedor de identidad","clientSecret":"El secreto de cliente OAuth proporcionado por tu proveedor de identidad (mantenlo confidencial)","scopeGeneral":"Scopes de OAuth a solicitar (openid, email, profile son los más comunes)","scopeGithub":"Scopes de OAuth a solicitar (user:email para GitHub)","discoveryUrlGoogle":"Endpoint de descubrimiento OIDC (preconfigurado para Google)","discoveryUrlMicrosoft":"Endpoint de descubrimiento OIDC generado automáticamente a partir de tu ID de inquilino","discoveryUrlOkta":"Endpoint de descubrimiento OIDC generado automáticamente a partir de tu dominio de Okta","discoveryUrlAdvanced":"URL del endpoint de descubrimiento OIDC (si es compatible con tu proveedor)","tenantId":"ID de inquilino de Azure AD. Portal Azure → Azure Active Directory → Información general","oktaDomain":"Tu nombre de dominio de Okta (p. ej., 'tu-empresa' de tu-empresa.okta.com)","authEndpointGithub":"Endpoint de autorización OAuth de GitHub (preconfigurado)","authEndpointGeneral":"URL del endpoint de autorización OAuth","tokenEndpointGithub":"Endpoint de token OAuth de GitHub (preconfigurado)","tokenEndpointGeneral":"URL del endpoint de token OAuth","userinfoEndpointGithub":"Endpoint de usuario de la API de GitHub (preconfigurado)","userinfoEndpointGeneral":"URL del endpoint de información del usuario OAuth","jwksUri":"URI del conjunto de claves web JSON para la verificación de tokens","providerName":"Nombre personalizado para tu proveedor SSO"},"providerFallback":"SSO de {{name}}","providers":{"advanced":"Configuración avanzada / manual"}},"domainVerification":{"title":"Verificación de dominio","label":"Dominio del espacio de trabajo","placeholder":"Agrega tu dominio","hint":"El dominio vinculado a tu espacio de trabajo","check":"Verificar","verified":"Verificado","checking":"Verificando","copyFailed":"No se pudo copiar al portapapeles","dnsTimedOut":"La verificación DNS ha expirado. Revisa tu configuración DNS e inténtalo de nuevo.","domainVerifiedSuccess":"¡Dominio verificado exitosamente!","enterDomainFirst":"Ingresa un dominio primero","domainSaved":"Dominio guardado. Agrega el registro DNS para verificar la propiedad.","configFailed":"No se pudo configurar la verificación de dominio","verificationReset":"La verificación de dominio ha sido restablecida","resetFailed":"No se pudo restablecer la verificación de dominio","addDnsRecords":"Agregar registros DNS para {{domain}}","dnsInstructions":"Inicia sesión en tu proveedor de dominio, ve a la configuración DNS y agrega este registro TXT.","type":"Tipo","hostName":"Host / Nombre","value":"Valor","dnsCheckNote":"La verificación DNS puede tardar unos minutos. Una vez que todo esté actualizado, verificaremos tu dominio automáticamente.","checkingDns":"Verificando tus registros DNS...","resetting":"Restableciendo...","reset":"Restablecer","copyLabel":"Copiar {{label}}"}}}`),DB={earnBonusCredits:"Gana créditos extra"},TB={apps:"Apps",superagents:"Superagentes",newAgent:"Nuevo Agente",emptyAgents:"Crea tu primer agente y ve tus conversaciones aquí.",allAgents:"Todos los Agentes",settings:"Configuración",inviteMembers:"Invitar miembros",allWorkspaces:"Todos los Espacios",org:"Organización",createNewWorkspace:"Crear nuevo espacio",recents:"Recientes",favorites:"Favoritos",noFavoritesYet:"Aún no hay favoritos",addAppsForQuickAccess:"Añade tus apps para acceso rápido",view_all:"Ver todo"},EB={pageTitle:"Comprar Tarjeta de Regalo Base44",pageSubtitle:"Regala el poder de crear. Envía una tarjeta de regalo a un amigo.",tabBuy:"Comprar Tarjeta de Regalo",tabPurchased:"Compradas",successTitle:"¡Tarjeta de regalo comprada con éxito!",successDescription:"El destinatario recibirá un correo con el código de la tarjeta de regalo.",successDescriptionPdf:"Revisa tu correo electrónico para obtener una tarjeta de regalo imprimible que puedes dar en persona.",dismissSuccess:"Cerrar mensaje de éxito",amount:"Monto",customAmount:"$ Personalizado",customAmountPlaceholder:"{{symbol}} Monto personalizado",customAmountError:"El monto debe ser entre {{min}} y {{max}}",creditsInfo:"Esta tarjeta de regalo incluye <strong>{{credits}} créditos de mensajes</strong> para crear apps",deliveryMethodTitle:"Elige el método de entrega",deliveryEmail:"Enviar correo al destinatario (inmediatamente después de la compra)",deliveryPdf:"Enviarme un correo (PDF para imprimir)",recipientTitle:"Para",recipientName:"Nombre",recipientNamePlaceholder:"Nombre del destinatario",recipientEmail:"Correo electrónico",recipientEmailPlaceholder:"Correo del destinatario",messageLabel:"Mensaje de la tarjeta de regalo (opcional)",messagePlaceholder:"Agregar un mensaje personal...",suggestMessage:"Sugerir un mensaje",suggestFallbackName:"amigo",messageCharCount:"{{count}}/300 caracteres",senderTitle:"De",senderName:"Tu nombre",senderNamePlaceholder:"Tu nombre",submitButton:"Continuar con la compra",submitting:"Procesando...",errorGeneric:"Algo salió mal",historyEmpty:"Aún no tienes tarjetas de regalo. ¡Compra una para un amigo!",historyTo:"Para {{name}}",historyCodeLabel:"Código de tarjeta de regalo",historyCopy:"Copiar",historyCopied:"Copiado",historyRedeemed:"Esta tarjeta de regalo ha sido canjeada",historyRedeemedOn:"Esta tarjeta de regalo fue canjeada el {{date}}",historySentTo:"Enviada a {{email}}",statusSent:"Enviada",statusRedeemed:"Canjeada",statusExpired:"Expirada",statusProcessing:"Procesando",statusPending:"Pendiente",statusRevoked:"Revocada",designTitle:"Elegir un diseño",historyActions:"Acciones",designClassic:"Clásico",designSunrise:"Amanecer",designOcean:"Océano",cardLabel:"Tarjeta de Regalo",cardCreditsLabel:"créditos de mensajes",cardFor:"Para {{name}}",cardDefaultName:"Tu Amigo",historyError:"No se pudieron cargar las tarjetas de regalo. Inténtalo de nuevo.",historyDateIssued:"Fecha de emisión",historyRecipient:"Destinatario",historyAmount:"Monto",historyStatus:"Estado",historyCode:"Código",historySenderDetails:"Detalles del remitente",historySentToYou:"Enviada a ti",historyViewCode:"Ver código",historyHideCode:"Ocultar código",historyDownloadPdf:"Descargar PDF",historyResend:"Reenviar",historyResendSuccess:"¡Correo de tarjeta de regalo reenviado con éxito!",historyResendError:"Error al reenviar el correo. Inténtalo de nuevo.",historyDownloadError:"Error en la descarga. Inténtalo de nuevo.",historyCredits:"créditos",emailInvalid:"Por favor ingresa una dirección de correo válida",buyGiftCard:"Comprar Tarjeta de Regalo",giftAndReferrals:"Regalos y Referencias",redeemTitle:"¡Has recibido una tarjeta de regalo!",redeemDescription:"Una vez canjeados, los créditos se aplicarán a tu espacio de trabajo.",redeemSelectWorkspace:"Seleccionar un espacio de trabajo",redeemBackToWorkspace:"Volver al espacio de trabajo",redeemCheckCreditUsage:"Ver uso de créditos",redeemErrorDescription:"Este código ya fue utilizado y no puede canjearse de nuevo. Si no sabes qué pasó, puedes revisar tus créditos o contactar al soporte.",redeemDefaultWorkspace:"este",error:"Error",redeemSuccess:"¡Tarjeta de regalo canjeada!",redeemSuccessDescription:"{{credits}} créditos añadidos a {{workspace}}.",redeemButton:"Canjear tarjeta de regalo",redeemNotNow:"Ahora no",redeemDocsLink:"Aprende cómo funcionan los créditos de tarjetas de regalo en <docsLink>nuestra documentación</docsLink>",redeemCouponDescription:"Canjéala para obtener {{amount}} de descuento en tu suscripción.",redeemCouponAppliedTitle:"¡Tarjeta de regalo aplicada!",redeemCouponReadyTitle:"¡Tarjeta de regalo lista para usar!",redeemCouponNoWorkspace:"No se seleccionó un espacio de trabajo",coupon:{title:"Canjear un cupón o tarjeta de regalo",description:"Ingresa tu código para agregar créditos a tu saldo.",placeholder:"Ingresa tu código",apply:"Aplicar",success:"¡Cupón aplicado con éxito!",invalidCode:"El código es inválido. Inténtalo de nuevo.",notFound:"Código de cupón no encontrado. Verifica el código e inténtalo de nuevo.",giftCardNotFound:"Tarjeta de regalo no encontrada. Verifica el código e inténtalo de nuevo.",redeemFailed:"No se pudo canjear la tarjeta de regalo. Inténtalo de nuevo."},errors:{invalidRecipientEmail:"Por favor, ingresa una dirección de correo electrónico válida",recipientEmailRequired:"El correo electrónico del destinatario es obligatorio",checkoutFailed:"No se pudo iniciar la compra. Inténtalo de nuevo.",confirmPurchaseFailed:"No se pudo confirmar la compra. Inténtalo de nuevo.",alreadyRedeemed:"Esta tarjeta de regalo ya fue canjeada",notAvailable:"Esta tarjeta de regalo no está disponible para canje",expired:"Esta tarjeta de regalo ha expirado",notWorkspaceMember:"No eres miembro del espacio de trabajo seleccionado",networkError:"Error de red. Por favor verifica tu conexión a internet e inténtalo de nuevo.",rateLimitExceeded:"Demasiados intentos. Inténtalo de nuevo más tarde.",permissionDenied:"Solo los propietarios del espacio de trabajo pueden canjear tarjetas de regalo. Pide a un propietario que aplique este código.",invalidPlanPrice:"Este plan no está disponible para el pago con tarjeta de regalo. Selecciona otro plan."},creditBanner:"Tienes {{amount}} de crédito de tarjeta de regalo en tu cuenta. Se aplicará a tu próxima factura automáticamente.",upgradeGiftCardWarning:"Tu plan actual fue adquirido con una tarjeta de regalo. El crédito de la tarjeta de regalo no se transfiere en cambios de plan — se te cobrará el precio prorrateado."},PB={back:"Volver"},_B="Cargando...",xB={message:"Conectado como <strong>{{email}}</strong> — no coincide con la cuenta esperada.",switchAccount:"Cambiar cuenta",dismiss:"Cerrar banner"},IB={topBar:bB,createWorkspacePage:yB,workspaceMenu:kB,agentEditorMenu:wB,credits:AB,community:SB,workspaceSettings:CB,referralCta:DB,sidebar:TB,giftCards:EB,common:PB,loading:_B,userMismatch:xB},RB={notifications:"Notificaciones",latestNews:"Últimas noticias"},zB={loading:"Cargando...",loadingMore:"Cargando más...",errorLoading:"Error al cargar las notificaciones",noNotifications:"Aún no hay notificaciones",noMoreNotifications:"No hay más notificaciones",noNews:"Aún no hay noticias"},MB={markAllAsRead:"Marcar todo como leído",readMore:"Leer más",showLess:"Ver menos",upgrade:"Actualizar",percentOff:"{{percent}}% de descuento"},NB={tabs:RB,states:zB,actions:MB},FB="Plan y facturación",LB="Gestionar suscripción",jB={planAndBilling:"Plan y facturación"},OB={details:"Detalles de la suscripción",cancelPlan:"Cancelar plan",cancelling:"Cancelando...",explorePlans:"Explorar planes",reactivatePlan:"Reactivar plan",reactivating:"Reactivando...",upgradePlan:"Mejorar plan",updatePayment:"Actualizar pago",managePlan:"Gestionar plan",yourPlan:"Tu plan",creditsPerMonth:"Créditos por mes",price:"Precio",nextBillingDate:"Próxima fecha de facturación",highlights:"Destacados del plan",cancelChange:"Cancelar cambio",cancelTooltip:"Para cancelar tu suscripción, primero cancela el cambio a un plan inferior programado",currentlyUsing:"Estás usando el plan <bold>{{plan}}</bold>",subscriptionEndsOn:"Tu suscripción terminará el {{date}}",subscriptionRenewsOn:"Tu suscripción se renueva el {{date}}",noActiveSubscription:"Sin suscripción activa",keepSubscription:"¿Quieres mantener tu suscripción? Haz clic en <manageLink>Gestionar plan</manageLink> y cancela el cambio.",planChangeNotice:"Tu plan cambiará a {{plan}} al final de tu ciclo de facturación actual.",cancelOnDate:"Tu plan está programado para cancelarse el {{date}}. Reactiva para mantener tus créditos y funciones actuales.",cancelNoDate:"Tu suscripción está programada para cancelarse. Reactiva para mantener tus créditos y funciones actuales.",free:"Gratuito",monthly:"mensual",yearly:"anual",subscriptionCancelled:"Suscripción cancelada",staysActiveUntil:"Todo permanece activo hasta {{date}}",creditsFormat:"{{messageCredits}} mensaje | {{integrationCredits}} integración",priceFormat:"{{amount}} {{symbol}}/{{period}}"},BB={privateApps:"Aplicaciones privadas",inAppCodeEditing:"Edición de código en la aplicación",unlimitedApps:"Aplicaciones ilimitadas",removeBase44Badge:"Eliminar insignia de Base44",connectDomain:"Conectar un dominio",backendFunctions:"Funciones de backend",github2WaySync:"Sincronización bidireccional con Github",customOAuth:"OAuth personalizado desde Google Console",aiModelSelection:"Selección de modelo de IA",stripeIntegration:"Integración con Stripe",customEmailDomain:"Dominio de correo personalizado",appStoreFileDownloads:"Descargas de archivos de la tienda de aplicaciones"},UB={title:"Pago vencido",description:"El pago de tu suscripción está vencido. Actualiza tu método de pago para restaurar el acceso completo a las funciones de tu plan.",tryAgain:"Intentar de nuevo",trying:"Procesando..."},qB={title:"Método de pago",manage:"Gestionar",noPaymentMethod:"No hay método de pago registrado",default:"Predeterminado",expires:"Vence {{month}}/{{year}}"},VB={title:"Información de facturación",manage:"Gestionar",name:"Nombre",email:"Correo electrónico",billingAddress:"Dirección de facturación",noInformation:"No hay información de facturación disponible"},$B={title:"Historial de facturación",noHistory:"No hay historial de facturación disponible",loading:"Cargando historial de facturación...",loadError:"Error al cargar los datos de facturación",planDescription:"Plan {{plan}}",downloadInvoice:"Descargar factura"},WB={managingBillingFor:"Gestionando la facturación de <bold>{{name}}</bold>",subscriptionRenewsOn:"La suscripción del espacio de trabajo se renueva el {{date}}",noActiveSubscription:"Sin suscripción activa en el espacio de trabajo",manage:"Gestionar",defaultName:"espacio de trabajo",addSeats:"Añadir licencias",loadError:"Error al cargar el historial de facturación del espacio de trabajo",workspaceSeats:"Licencias del espacio de trabajo",contactAdmin:{title:"Plan del espacio de trabajo",subtitle:"Gestionado por tu espacio de trabajo",body:"¿Necesitas más créditos? Contacta al administrador de tu espacio de trabajo para mejorar el plan de tu equipo."}},GB={portalError:"No se pudo abrir el portal de facturación. Inténtalo más tarde o contacta con el soporte.",paymentPortalError:"No se pudo abrir la gestión de pagos. Por favor, inténtalo de nuevo.",scheduleCancelSuccess:"Programación de suscripción cancelada correctamente",scheduleCancelError:"Error al cancelar la programación de suscripción. Por favor, inténtalo más tarde.",subscriptionCancelError:"Error al cancelar la suscripción. Por favor, inténtalo de nuevo."},HB={title:FB,manageSubscription:LB,breadcrumb:jB,subscription:OB,features:BB,pastDue:UB,paymentMethod:qB,billingInformation:VB,billingHistory:$B,workspace:WB,toasts:GB},YB={title:"Hablemos",subtitle:"Conéctese con nuestro equipo para ver cómo Base44 puede ayudar a su organización.",form:{firstName:"Nombre*",lastName:"Apellido*",workEmail:"Correo corporativo*",companyWebsite:"Sitio web de la empresa*",role:"Cargo*",discussion:"¿Qué le gustaría comentar?",submit:"Enviar"},success:{title:"¡Gracias por ponerse en contacto!",description:"Hemos recibido su mensaje y nuestro equipo le responderá en un plazo de 24 horas. ¡Estaremos encantados de acompañarle en su camino con Base44!"}},KB={iso27001:{title:"ISO 27001",subtitle:"Gestión de seguridad ISO"},soc2:{title:"SOC 2 Tipo II",subtitle:"SOC para organizaciones de servicios"},gdpr:{title:"RGPD",subtitle:"Reglamento de protección de datos y privacidad"}},ZB={fiveApps:"5 apps",unlimitedCollaborators:"Colaboradores ilimitados",userAnalytics:"Analíticas de usuario",aiAgents:"Agentes de IA",limitedDb:"Base de datos limitada a 512 MB",unlimitedApps:"Apps ilimitadas",unlimitedNumberOfApps:"Número ilimitado de apps",connectDomain:"Conectar un dominio",connectorsIntegrations:"Conectores e integraciones",backendFunctions:"Funciones de backend",scaledUserAnalytics:"Analíticas de usuario escaladas",privateApps:"Apps privadas",flexibleAiModelControl:"Control flexible del modelo de IA",removeBase44Branding:"Eliminar la marca de Base44",inAppCodeEditing:"Edición de código en la app",inAppCodeEdits:"Edición de código en la app",freeDomainOneYear:"Dominio gratuito por 1 año",creditsToShare:"25 créditos para compartir con un amigo",githubTwoWayIntegration:"Integración bidireccional con GitHub",githubIntegration:"Integración con GitHub",earlyAccessBeta:"Acceso anticipado a funciones beta",premiumSupport:"Soporte Premium",sso:"SSO",prioritySupport:"Soporte prioritario",workspacePublishingControls:"Controles de publicación del espacio de trabajo",workspaceTemplates:"Plantillas del espacio de trabajo",ipWhitelisting:"Lista de IPs permitidas",workspaceUsageAnalytics:"Analíticas de uso del espacio de trabajo",userRolesPermissions:"Roles y permisos de usuario",dataTrainingOptOut:"Exclusión del entrenamiento de datos",scim:"SCIM",creditConsumptionControl:"Control del consumo de créditos",dedicatedAccountManager:"Gestor de cuenta dedicado",dedicatedSolutionEngineer:"Ingeniero de soluciones dedicado",enterpriseSupport:"Soporte empresarial",customSecurityCapabilities:"Capacidades de seguridad personalizadas",customDatabaseStorage:"Almacenamiento de base de datos personalizado",customRateLimits:"Límites de tasa personalizados",tailoredOnboarding:"Incorporación y capacitación personalizadas",workspaceMonitoringApi:"API de monitoreo del espacio de trabajo"},JB={unlimitedApps:"Apps ilimitadas",unlimitedCollaboratorsSharedCredits:"Colaboradores ilimitados con créditos compartidos",customDomain:"Dominio personalizado",removeBase44Branding:"Eliminar marca Base44",builtInIntegrations:"Integraciones incorporadas",automations:"Automatizaciones",chooseAiModel:"Elige tu modelo de IA",inAppCodeEditing:"Edición de código en la app",twoWayGithubSync:"Sincronización bidireccional con GitHub",privateTemplates:"Plantillas privadas",earlyAccessNewFeatures:"Acceso anticipado a nuevas funciones",prioritySupport:"Soporte prioritario"},QB={choosePlan:"Elige el plan ideal para ti",usage:"Uso",back:"Volver",chooseBillingCycleUpgrade:"Elige tu ciclo de facturación para actualizar a {{planName}}",selectBillingCycle:"Elige un ciclo de facturación para tu plan {{planName}}",viewBilling:"Ver facturación",seePricing:"Ver precios"},XB={desktop:"Base44 es parte de <wixLogo/> - En el que confían más de 250 millones de personas en todo el mundo",mobile:{line1:"Base44 es parte de <wixLogo/>",line2:"En el que confían más de 250 millones de personas en todo el mundo"}},eU={badge:{recommended:"Recomendado",popular:"Popular",mostPopular:"Más popular",currentPlan:"Plan actual",discountOff:"{{discount}} de descuento"},button:{processing:"Procesando...",notAvailable:"No disponible",manageSubscription:"Gestionar suscripción",managePlan:"Gestionar plan",currentPlan:"Plan actual",upgradePlan:"Mejorar plan",upgradeTo:"Mejorar a {{planName}}",downgradeTo:"Reducir a {{planName}}",downgradePlan:"Reducir plan",switchPlan:"Cambiar plan",subscribeTo:"Suscribirse a {{planName}}",bookDemo:"Reservar demo",getPlan:"Obtener {{planName}}"},credits:{monthly:"Créditos mensuales",integration:"Créditos de integración",monthlyLower:"créditos mensuales",integrationLower:"créditos de integración",messageCredits:"créditos de mensajes",perMonth:"/mes",sharedAcrossUsers:"Compartido entre usuarios ilimitados",messageShort:"mensajes",integrationShort:"integración"},features:{highlights:"Aspectos destacados del plan:",allInBusinessPlus:"Todo en Business más:",allInBuilderPlus:"Todo en Builder más:",unlimitedAgents:"Número ilimitado de agentes"},free:{dailyCredits:"{{dailyCredits}} créditos diarios (hasta {{monthlyMax}}/mes)",integrationCredits:"{{amount}} créditos de integración"},enterprise:{description:"Gobernanza, escalabilidad y soporte de nivel empresarial, con un modelo de <bold>precio personalizado</bold> y una cantidad de créditos personalizada."}},tU={offTiers:"Niveles con 30% de descuento",currentPlan:"Plan actual",popular:"Popular",messageCredits:"créditos de mensajes",integrationCredits:"créditos de integración",perMonth:"/mes",placeholder:"Seleccionar créditos",footer:{cantFind:"¿No encuentras un plan que se adapte?",contactUs:"Contáctanos"}},aU={button:{cancel:"Cancelar",confirmUpgrade:"Confirmar mejora",confirmDowngrade:"Confirmar reducción",confirmSwitch:"Confirmar cambio",processing:"Procesando...",continue:"Continuar"},upgrade:{title:"Confirmar mejora de suscripción",upgradeDescription:"Estás a punto de mejorar al plan {{planName}} por <price/>. Tu suscripción se actualizará inmediatamente y se te cobrará un importe proporcional por el resto de tu ciclo de facturación.",upgradeDescriptionYearly:"Estás a punto de mejorar al plan anual {{planName}} por <price/>. Tu suscripción se actualizará inmediatamente y se te cobrará un importe proporcional por el resto de tu ciclo de facturación.",upgradeDescriptionShort:"Estás a punto de mejorar al plan {{planName}} por <price/>. Tu suscripción se actualizará inmediatamente y se te cobrará un importe proporcional."},downgrade:{title:"Confirmar reducción de suscripción",description:"Estás a punto de reducir al plan {{planName}} por {{price}}/mes. Este cambio entrará en vigor al final de tu ciclo de facturación actual."},switch:{title:"Cambiar plan",switchDescription:"Al cambiar al plan {{planName}} se actualizarán tus funciones disponibles y se establecerán tus límites mensuales en <bold>{{messageCredits}} créditos de mensajes y {{integrationCredits}} créditos de integración.</bold>",nextBillingDate:"Estos cambios entrarán en vigor el {{date}}, al inicio de tu próximo ciclo de facturación.",nextBillingCycle:"Estos cambios entrarán en vigor al inicio de tu próximo ciclo de facturación."},manageSubscription:{title:"Gestionar tu suscripción",description:"Elige cómo quieres gestionar tu suscripción a {{planName}}.",upgradeToYearly:"Mejorar a facturación anual",upgradeToYearlySavings:"Ahorra y obtén un dominio gratis + 25 créditos para compartir",upgradeToYearlySavingsStarter:"Ahorra y obtén 25 créditos para compartir",managePayments:"Gestionar pagos",managePaymentsDescription:"Actualizar método de pago, ver facturas y más",managePaymentsDescriptionAlt:"Actualizar método de pago, ver facturas y más"},upgradeToYearly:{titleV1:"Confirmar mejora de suscripción",titleV2:"Mejorar plan",descriptionV2:"Al mejorar, se te cobrará un importe proporcional por el tiempo restante de tu plan actual. A partir de tu próxima fecha de facturación, se te cobrará el precio completo del plan de {{price}} × 12 meses.",benefitsTitle:"🎁 Ventajas anuales",freeDomain:"Dominio gratuito durante un año",shareCredits:"25 créditos para compartir con amigos",betterValue:"Mejor valor con facturación anual"}},nU={title:"Preguntas frecuentes",whatIsBase44:{question:"¿Qué es Base44?",answer:{description:"Base44 es una plataforma impulsada por IA que te permite crear aplicaciones de software personalizadas sin necesidad de programar. Utiliza procesamiento de lenguaje natural para entender tus requisitos y generar software funcional basado en tus descripciones.",accessibility:"Nuestra plataforma está diseñada para ser fácil de usar y accesible para usuarios no técnicos, permitiéndote crear aplicaciones poderosas a través de simples conversaciones con nuestra IA."}},freePlan:{question:"¿Qué incluye el plan gratuito?",answer:{allowances:"El plan gratuito te ofrece una asignación diaria de 5 mensajes y un límite mensual de 25 mensajes en total. También obtienes 100 créditos de integración para experimentar con diversas integraciones como autenticación, base de datos y análisis.",coreAccess:"Con el plan gratuito, tienes acceso a todos los tipos de integración principales, lo que te permite crear aplicaciones completamente funcionales con autenticación de usuarios, almacenamiento de datos y más, todo sin costo."}},integrationCredits:{question:"¿Qué son los créditos de integración?",answer:{definition:"Los créditos de integración se utilizan para acceder a las diversas integraciones de Base44 dentro de tu aplicación.",capabilities:"Estas integraciones mejoran la funcionalidad de tu app, incluyendo LLMs, carga de archivos, comprensión de imágenes, generación de imágenes, envío de correos electrónicos, envío de SMS, consultas de bases de datos y muchas más. El número de créditos de integración en tu plan determina cuántas de estas solicitudes puedes realizar por mes.",expiration:"Los créditos no utilizados expiran al final de tu ciclo de facturación mensual (en tu fecha de restablecimiento).",learnMore:"Obtén más información sobre cómo se usan los créditos en la Base de Conocimiento."}},appTypes:{question:"¿Qué tipos de aplicaciones puedo crear con Base44?",answer:{examples:"Base44 es versátil y puede utilizarse para crear una amplia variedad de aplicaciones, entre otras: productos SaaS completamente funcionales, herramientas de backoffice, aplicaciones de productividad personal, portales para clientes y herramientas de automatización de procesos de negocio.",prototyping:"También puedes usarlo para prototipado rápido y creación de MVPs, permitiéndote validar tus ideas rápidamente sin invertir en costosos recursos de desarrollo."}},ownership:{question:"¿Quién es el propietario de las aplicaciones creadas con Base44?",answer:{yourProperty:"Entre tú y Base44, todas las aplicaciones y contenido generado a través de nuestra plataforma se considerarán de tu propiedad. No reclamamos ningún derecho de propiedad sobre lo que crees usando Base44.",intellectualProperty:"Tu propiedad intelectual es tuya, y eres libre de usar, modificar, distribuir o vender las aplicaciones generadas según lo permita la ley."}},deployment:{question:"¿Cómo se despliegan las aplicaciones de Base44?",answer:{instantAccess:"Con Base44, el despliegue es increíblemente simple. Tus aplicaciones son utilizables y compartibles de inmediato tan pronto como las creas. Simplemente usa y comparte la URL de tu app con otros.",noHosting:"No es necesario realizar pasos separados de alojamiento o despliegue, lo que hace que sea increíblemente fácil poner en marcha tu aplicación rápidamente."}},planLimits:{question:"¿Qué sucede si alcanzo los límites de mi plan?",answer:{limitations:"Cuando alcances tu límite diario de mensajes, deberás esperar hasta el día siguiente para enviar más mensajes. Si alcanzas tu límite mensual, no podrás enviar mensajes adicionales ni realizar solicitudes de integración hasta el inicio de tu próximo ciclo de facturación.",upgradeOption:"Para evitar interrupciones en el desarrollo y uso de tu app, puedes actualizar a un plan de nivel superior con límites aumentados en cualquier momento desde tu panel de facturación."}}},iU={pendingChange:{title:"Cambio de suscripción pendiente",message:"Tienes un cambio de suscripción al plan {{tierName}} programado para entrar en vigor al final de tu ciclo de facturación actual.",subMessage:'Nota: Para cancelar tu suscripción, primero cancela este cambio y luego usa "gestionar pagos" para cancelar.',cancelChange:"Cancelar cambio",cancelling:"Cancelando..."},cancellation:{title:"Cancelación de suscripción programada",message:"Tu suscripción finalizará el {{endDate}}. Hasta entonces, tienes acceso completo a todas las funciones.",subMessage:"¿Quieres mantener tu suscripción? Puedes reactivarla con un solo clic.",managePayments:"Gestionar pagos",processing:"Procesando..."}},rU={currentPlan:"Tu plan actual es {{displayName}},",withCredits:"con {{messageCredits}} créditos de mensajes y {{integrationCredits}} créditos de integración."},oU={title:"Beneficios de Base44:",responsiveVisualEditor:"Editor visual responsivo",builtInBackend:"Backend integrado",userManagement:"Gestión de usuarios"},sU={title:"Pago de suscripción vencido",tryAgain:"Intentar de nuevo",trying:"Intentando...",updatePaymentMethod:"Actualizar método de pago",description:"Tu último pago no se procesó. Inténtalo de nuevo o actualiza tu método de pago para restaurar el acceso completo a tu plan."},lU={error:"Error",success:"Éxito",checkoutError:"No se pudo crear la sesión de pago. Por favor, inténtalo más tarde.",subscriptionUpdated:"Suscripción actualizada",downgradeScheduled:"Tu suscripción ha sido programada para reducirse al final de tu ciclo de facturación.",upgradeSuccess:"Tu suscripción ha sido actualizada exitosamente. Los cambios se reflejarán en breve.",updateError:"No se pudo actualizar la suscripción. Por favor, inténtalo más tarde.",portalError:"No se pudo abrir el portal de facturación. Por favor, inténtalo más tarde.",scheduleCancelSuccess:"Programación de suscripción cancelada exitosamente",scheduleCancelError:"No se pudo cancelar la programación de suscripción. Por favor, inténtalo más tarde.",paymentPortalError:"No se pudo abrir la gestión de pagos. Por favor, inténtalo de nuevo."},cU={loadError:"No se pudo cargar la información de facturación del espacio de trabajo",loadErrorAlert:"No se pudo cargar la información de facturación del espacio de trabajo. Por favor, inténtalo más tarde.",seatTypePlan:"Plan {{seatType}}",currentPlanContact:"Actualmente estás en el plan {{seatType}}. Para hacer cambios, contacta a tu {{adminType}} del espacio de trabajo.",workspaceOwner:"Propietario del espacio de trabajo:",workspaceAdmin:"Administrador del espacio de trabajo:",viewerAccess:"Acceso de visualización",viewerAccessDescription:"Actualmente tienes acceso de visualización en este espacio de trabajo. Para obtener un asiento con acceso completo, contacta a tu {{adminType}} del espacio de trabajo.",adminAccessMessage:"<strong>Acceso de administrador:</strong> Visita el <a>panel del espacio de trabajo</a> para gestionar asientos, facturación y miembros del equipo.",adminTypes:{owner:"propietario",administrator:"administrador"}},dU={loadError:"No se pudo cargar la información del espacio de trabajo. Por favor, inténtalo más tarde.",workspacePlan:"Plan del espacio de trabajo:",renews:"Se renueva:",workspaceOwner:"Propietario del espacio de trabajo",contactOwner:"Para cambios de facturación o preguntas sobre la suscripción, contacta al propietario de tu espacio de trabajo.",ownerLabel:"Propietario del espacio de trabajo:",adminAccessMessage:"<strong>Acceso de administrador:</strong> Visita la página de <a>miembros del espacio de trabajo</a> para gestionar miembros.",billingManagedByOwner:"La facturación es gestionada por el propietario de tu espacio de trabajo. Contacta al propietario indicado arriba para cualquier pregunta relacionada con la facturación.",roles:{owner:{title:"Propietario",description:"Acceso completo a facturación, configuración y gestión de miembros del espacio de trabajo."},admin:{title:"Administrador",description:"Puede gestionar la configuración y los miembros del espacio de trabajo, pero no puede modificar la facturación."},editor:{title:"Editor",description:"Puede crear y editar apps dentro de este espacio de trabajo."},viewer:{title:"Visualizador",description:"Puede ver apps en este espacio de trabajo con acceso de solo lectura."},member:{title:"Miembro",description:"Miembro del equipo con acceso a las apps del espacio de trabajo."},guest:{title:"Invitado",description:"Colaborador externo con acceso a apps específicas en este espacio de trabajo."}}},uU={title:"Seguridad y cumplimiento",iso:{title:"ISO/IEC 27001",subtitle:"Gestión de seguridad ISO/IEC"},soc2:{title:"SOC 2 Type II",subtitle:"SOC para organizaciones de servicios"},gdpr:{title:"GDPR",subtitle:"Regulación de protección de datos y privacidad"}},pU={title:"Base44 para Empresas",subtitle:"Empodera a grandes organizaciones para construir soluciones que se adapten perfectamente a sus equipos, de forma segura y escalable",contactUs:"Contáctanos",features:{onboarding:{title:"Incorporación y Formación",description:"Planes de incorporación personalizados combinados con formación en vivo y recursos, diseñados para ayudar a administradores y usuarios finales a adoptar la plataforma rápidamente."},accountTeam:{title:"Equipo de Cuenta Dedicado",description:"Trabaja con un gestor de cuentas y un ingeniero de soluciones designados, que brindan orientación directa, escalaciones y alineación de hoja de ruta."},prioritySupport:{title:"Soporte prioritario, garantizado",description:"Obtén asistencia prioritaria garantizada y tiempos de respuesta definidos a través de un canal de soporte dedicado."},capabilities:{title:"Capacidades de Nivel Empresarial",description:"Funciones de seguridad, cumplimiento, gestión y monitoreo que proporcionan el control y la flexibilidad necesarios a escala."}}},mU={yearly:"Anual",monthly:"Mensual",yearlyInline:"anual",monthlyInline:"mensual",monthlyCredits:"Créditos mensuales",integrationCredits:"Créditos de integración",priceSuffixYearly:" × 12 meses",priceSuffixMonthly:" / cada mes",off:"DTO.",save:"AHORRA",discountBadge:"{{discount}} DTO.",saveBadge:"AHORRA {{amount}}",planNotFound:"Precios del plan no disponibles. Por favor vuelve e inténtalo de nuevo.",upgradeDialogTitle:"Confirmar mejora de suscripción",upgradeDialogDescription:"Estás a punto de mejorar al plan {{planName}} por <price/>/mes. Tu suscripción se actualizará inmediatamente y se te cobrará un monto prorrateado por el resto de tu ciclo de facturación.",noteMonthlyExcludes:"NOTA: La suscripción mensual no incluye:",whatsIncluded:"Qué incluye el plan {{period}}",chooseYearly:"Elige una suscripción <yearlyLink>anual</yearlyLink> para aprovechar al máximo tu plan premium",yearlyFeatures:{discount:"Disfruta de un descuento especial y ahorra dinero",freeDomain:"Dominio gratuito por 1 año",shareCredits:"Recibe 25 créditos para compartir con un amigo"},monthlyFeatures:{discount:"Descuento especial y ahorros",freeDomain:"Dominio gratuito por 1 año",shareCredits:"25 créditos para compartir con un amigo"},planNotAvailable:"Precios del plan no disponibles. Por favor, inténtalo de nuevo.",goBack:"Volver",continueToCheckout:"Continuar al pago",confirmSubscriptionUpgrade:"Confirmar mejora de suscripción",upgradeDescription:"Estás a punto de mejorar al plan {{planName}} por <strikethrough>{{originalPrice}}</strikethrough>{{price}}/mes. Tu suscripción se actualizará inmediatamente y se te cobrará un monto prorrateado por el resto de tu ciclo de facturación.",cancel:"Cancelar",confirmUpgrade:"Confirmar mejora",processing:"Procesando...",studentDiscountFootnote:"La oferta se aplica al primer año (12 meses) de un nuevo plan Starter. Uso único por usuario; el descuento no puede reactivarse después de la cancelación."},gU={bannerTitle:"¿Eres estudiante o profesor? Obtén hasta {{percent}}% de descuento en el plan Starter",bannerSubtitle:"Verifica tu correo universitario para desbloquear precios con descuento",verifiedWith:"Verificado con {{email}} - hasta {{percent}}% de descuento",starterPlan:"Plan Starter",active:"Activo",dialogTitle:"Descuento estudiantil",surveyTitle:"Cuéntanos sobre ti",alreadyActiveDesc:"Tu descuento estudiantil ya está activo.",emailStepDesc:"Verifica tu correo universitario para desbloquear precios estudiantiles.",codeStepDesc:"Enviamos un código de 6 dígitos a {{email}}",surveyStepDesc:"Solo unas pocas preguntas rápidas para completar tu verificación.",benefitDiscount:"Hasta {{percent}}% de descuento",benefitDiscountDetail:"en el plan Starter",benefitAccess:"Acceso completo",benefitAccessDetail:"a todas las funciones de Starter",benefitClaimOnce:"Canjear una vez",benefitClaimOnceDetail:"usar en cualquier momento en Starter",alreadyApplied:"Tu descuento estudiantil ya está aplicado",alreadyAppliedDesc:"Verificado con {{email}}. Los precios con descuento se muestran en los planes elegibles arriba.",gotIt:"Entendido",emailPlaceholder:"tu@universidad.edu",emailHint:"Aceptamos .edu, .ac.uk, .ac.il y otros dominios universitarios.",sending:"Enviando...",sendCode:"Enviar código de verificación",codePlaceholder:"Ingresa el código de 6 dígitos",verifying:"Verificando...",verifyCode:"Verificar código",changeEmail:"Cambiar correo",resendCooldown:"Reenviar código ({{seconds}}s)",resendCode:"Reenviar código",role:"Rol",student:"Estudiante",teacher:"Profesor",intendedUseLabel:"¿Para qué planeas usar Base44?",intendedUsePlaceholder:"ej.: Proyecto de clase, herramienta de investigación, tesis...",fieldOfStudy:"¿Cuál es tu campo de estudio?",fieldOfTeaching:"¿Cuál es tu campo de enseñanza?",selectField:"Selecciona un campo de estudio...",searchFields:"Buscar campos...",other:"Otro",specifyField:"Por favor especifica...",graduationDate:"Fecha esperada de graduación",month:"Mes",year:"Año",activating:"Activando...",verifyingEmail:"Verificando correo...",activateDiscount:"Activar descuento",errorNoEmail:"Por favor ingresa tu dirección de correo universitario.",errorInvalidEmail:"Por favor ingresa una dirección de correo válida.",errorSendFailed:"Error al enviar el código de verificación. Por favor intenta de nuevo.",errorEmailAlreadyClaimed:"Este correo universitario ya está vinculado a otra cuenta.",errorNoCode:"Por favor ingresa el código de 6 dígitos de tu correo.",errorInvalidCode:"Código inválido o expirado. Por favor intenta de nuevo.",errorNoIntendedUse:"Por favor cuéntanos para qué planeas usar Base44.",errorNoField:"Por favor selecciona tu campo de estudio.",errorNoFieldOther:"Por favor especifica tu campo de estudio.",errorNoGraduation:"Por favor selecciona tu fecha esperada de graduación.",toastActivatedTitle:"Descuento estudiantil activado",toastActivatedDesc:"Tus precios estudiantiles ahora están aplicados a los planes elegibles. Desplázate hacia arriba para ver los precios actualizados.",errorActivateFailed:"Error al activar el descuento. Por favor intenta de nuevo.",toastResentTitle:"Código reenviado",toastResentDesc:"Se ha enviado un nuevo código de verificación a tu correo.",errorResendFailed:"Error al reenviar el código. Por favor espera un momento e intenta de nuevo."},hU="Tu plan actual fue adquirido con una tarjeta de regalo. El crédito de la tarjeta de regalo no se transfiere en cambios de plan — se te cobrará el precio prorrateado.",fU={title:"Compra exitosa",redirecting:"Redirigiendo a la app en {{seconds}}s...",button:"Volver a la app"},vU={modal:YB,certificates:KB,features:ZB,borderTag:JB,header:QB,messageLabel:XB,card:eU,dropdown:tU,dialog:aU,faq:nU,notices:iU,manageSubscription:rU,benefits:oU,overduePayment:sU,toasts:lU,workspaceBilling:cU,workspaceRoles:dU,security:uU,enterprise:pU,periodSelector:mU,studentDiscount:gU,upgradeGiftCardWarning:hU,returnToApp:fU},bU="Invita amigos y gana créditos",yU="Invita amigos y gana créditos",kU="Invita y gana créditos",wU="Comparte tu enlace y gana {{credits}} créditos cuando tus amigos publiquen su primera app",AU={title:"¡Increíble! Has alcanzado el máximo de referidos",description:"Puedes referir hasta {{maxReferrals}} amigos en total",extra:"({{extra}} adicionales no ganarán créditos)"},SU={tryAgain:"Intentar de nuevo",copied:"¡Copiado al portapapeles!",copyButton:"Copiar",copiedButton:"Copiado"},CU={title:"Cómo funciona",shareLink:"Comparte tu enlace de referido único con amigos",signupBonus:"Ellos obtienen <bold>{{credits}} créditos</bold> cuando se registran",publishReward:"Tú ganas <bold>{{credits}} créditos</bold> cuando publican su primera app"},DU="Tus referidos ({{current}}/{{max}})",TU={registered:"Registrado",earned:"Ganado"},EU={back:"Volver",close:"Cerrar",srTitle:"Programa de referidos",baseDayBadge:"Base44 Day",creditsCount:"{{credits}} créditos",earnCredits:"Gana {{credits}} créditos",termsAndConditions:"Términos y condiciones",termsDescription:"Términos y condiciones del programa de referidos"},PU={title:"Términos y condiciones",eligibility:{title:"Elegibilidad",newUsersOnly:"Solo los nuevos usuarios pueden unirse a través de esta oferta de referido. Las cuentas existentes no están incluidas.",shareResponsibly:"Te pedimos que compartas tu enlace de referido de manera responsable. Publicarlo en lugares irrelevantes o de spam puede llevar a la eliminación del programa."},credits:{title:"Créditos de referido",earnOnPublish:"Ganas {{credits}} créditos cuando un amigo referido publica su primera app",bonusOnSignup:"Los amigos referidos reciben {{credits}} créditos de bonificación al registrarse",maxPerAccount:"Máximo de 5 referidos exitosos por cuenta",noCashValue:"Los créditos no tienen valor en efectivo y no pueden transferirse"},restrictions:{title:"Restricciones",voidFraudulent:"Base44 se reserva el derecho de anular referidos fraudulentos",nonTransferable:"Los códigos de referido no son transferibles"},footer:"Base44 se reserva el derecho de modificar o terminar este programa de referidos en cualquier momento. Los cambios serán comunicados a través de la plataforma."},_U={title:bU,titleDesktop:yU,titleMobile:kU,subtitle:wU,maxReached:AU,link:SU,howItWorks:CU,yourReferrals:DU,status:TU,dialog:EU,terms:PU},xU={title:"Spotlight",subtitle:"Explora aplicaciones y sitios web destacados creados con Base44",loading:"Cargando Spotlight…",errorMessage:"No se pudo cargar Spotlight. Por favor, inténtalo más tarde.",empty:"Aún no hay apps en Spotlight."},IU={title:"Error",description:"No se pudieron cargar las apps de Spotlight."},RU={label:"Spotlight del día",byCreator:"por {{creator}}",screenshotAlt:"Captura de pantalla de {{appName}}",logoAlt:"Logo de {{appName}}"},zU={"beautifully-designed":"Diseño excepcional","loved-by-the-community":"Adorado por la comunidad",saas:"SaaS",education:"Educación","e-commerce":"Comercio electrónico",websites:"Sitios web"},MU={screenshotAlt:"Captura de pantalla de {{appName}}",logoAlt:"Logo de {{appName}}",viewDetailsLabel:"Ver detalles",viewDetailsAriaLabel:"Ver detalles de {{appName}}"},NU={backButton:"Spotlight",byCreator:"Por {{creator}}",iframeTitle:"Vista previa de {{appName}}",previewNotAvailable:"Vista previa no disponible"},FU={ariaLabel:"Enviar tu app a Spotlight",heading:"¿Quieres que tu app aparezca aquí?",description:"Muestra lo que has construido en Base44. Envíalo a Spotlight e inspira a la comunidad.",buttonText:"ENVÍA TU APP"},LU={title:"Enviar tu app a Spotlight",selectAppSubtitle:"Elige la app que quieres nominar para la página de Spotlight.",detailsSubtitle:"Cuéntanos por qué tu app debería aparecer en la página de Spotlight.",back:"Atrás",cancel:"Cancelar",next:"Siguiente",searchPlaceholder:"Buscar apps...",aboutLabel:"Sobre esta app",aboutPlaceholder:"Cuéntanos algo interesante sobre tu app – funciones especiales, trucos ingeniosos o cualquier cosa que la comunidad debería descubrir",screenshotLabel:"Captura de pantalla <optional>(opcional)</optional>",screenshotHint:"PNG, JPG o WebP — mín. 800×450 px, hasta 2 MB",submit:"Enviar",submitting:"Enviando…",submitError:"No se pudo enviar la solicitud de Spotlight.",successAlreadyInSpotlight:"Ya está en Spotlight",successRequestReceived:"Solicitud recibida",successDescription:'Revisaremos "{{appName}}" para Spotlight. Te responderemos pronto.'},jU={viewApp:"Ver App",share:"Compartir",upvote:"Votar",alreadyUpvoted:"Ya votaste",thankYouForVote:"¡Gracias por tu voto!",voteError:"No se pudo registrar el voto",voteErrorDescription:"Por favor, inténtalo más tarde.",linkShared:"Enlace compartido",linkCopied:"Enlace copiado al portapapeles",shareError:"No se pudo compartir"},OU={label:"¿Sabías que?"},BU={editedAgo:"editado {{timeAgo}}",editedRecently:"Editado recientemente",noAppsFound:"No se encontraron apps",noAppsAvailable:"No hay apps disponibles",loadMore:"Cargar más apps",loading:"Cargando…"},UU={page:xU,fetchError:IU,featured:RU,sections:zU,card:MU,detailModal:NU,submitBanner:FU,requestModal:LU,actions:jU,didYouKnow:OU,appPicker:BU},qU={page:{title:"Ayuda y Soporte",subtitle:"Obtén la ayuda que necesitas para crear aplicaciones increíbles con BASE44"},getStarted:"Comenzar",cards:{documentation:{title:"Documentación",description:"Explora guías completas, tutoriales, preguntas frecuentes y mejores prácticas para construir con Base44."},discord:{title:"Comunidad de Discord",description:"Conéctate con otros desarrolladores y obtén ayuda instantánea de nuestra activa comunidad."},supportTicket:{title:"Abrir Ticket de Soporte",description:"Envía un ticket de soporte detallado y obtén asistencia personalizada."}},appContext:{title:"Soporte Específico de la App",description:"Las solicitudes de soporte estarán asociadas con la app <appId>{{appId}}</appId>"},quickActions:{title:"Acciones Rápidas",subtitle:"Gestiona tu experiencia de soporte",myTickets:{title:"Mis Tickets de Soporte",description:"Ver y gestionar tus tickets de soporte existentes"},communityForum:{title:"Foro de la Comunidad",description:"Nuestra recién creada comunidad de Reddit"}}},VU={fallbackTitle:"Conversación de soporte",appLink:"App"},$U={title:"Mis tickets de soporte",backToSupport:"Volver al soporte",showingTicketsForApp:"Mostrando tickets para la App: <app>{{appId}}</app>",filteredByApp:"Filtrado por App: <app>{{appId}}</app>"},WU={title:"Enviar ticket de soporte",titleResume:"Enviar un ticket de soporte"},GU={helpMessage:"¿Necesitas ayuda inmediata? <normal>Consulta nuestra </normal><docsLink>documentación</docsLink><normal> o únete a nuestra </normal><discordLink>comunidad de Discord</discordLink>."},HU={heading:"¿Continuar con tu solicitud de soporte?",description:"Anteriormente comenzaste a crear un ticket de soporte.",chooseHowToProceed:"Elige cómo deseas continuar:",continueWhereLeftOff:"Continuar donde lo dejaste",continueWhereLeftOffDesc:"Restaura tus entradas anteriores y continúa desde el último paso.",startNewTicket:"Iniciar un nuevo ticket",startNewTicketDesc:"Descarta el borrador e inicia una nueva solicitud de soporte.",continue:"Continuar"},YU={tellUsAboutYourIssue:"Cuéntanos sobre tu problema",whatTypeOfIssue:"¿Qué tipo de problema estás experimentando?",selectApp:"Selecciona la aplicación relacionada con tu problema"},KU={instruction:"Por favor, comparte qué estabas haciendo, qué salió mal y cómo podemos reproducirlo.",descriptionLabel:"Descripción",descriptionPlaceholder:`Ejemplo:
• Lo que intentabas hacer
• Lo que ocurrió en su lugar
• Cualquier mensaje de error
• Pasos para reproducirlo (si es relevante)`,attachmentsLabel:"Adjuntos",viewApp:"Ver app",dragAndDropFiles:"Arrastra y suelta archivos aquí",dropFilesHere:"Suelta los archivos aquí",browseFiles:"Examinar archivos",uploading:"Subiendo...",unsupportedFileType:'El tipo de archivo "{{type}}" no es compatible. Tipos admitidos: jpg, jpeg, png, pdf.',invalidFile:"Archivo no válido",failedToUpload:"Error al subir el archivo"},ZU={analyzingIssue:"Analizando tu problema...",categoryFullDescription:"Parece que tu problema cae en una de estas categorías.<br/>Selecciona la que mejor se adapte — nos ayuda a guiarte hacia la solución correcta."},JU={authentication:"Autenticación",billing:"Facturación",bug_report:"Reporte de error",domain:"Dominio",integrations_and_backend_functions:"Integraciones y Backend",chat_issues:"Problemas de chat",security:"Seguridad",social_post_bonus_credits:"Créditos de bonificación por publicación social",superagent:"Superagente",other:"Otro"},QU={searchPlaceholder:"Buscar aplicaciones...",addAppLink:"Agregar enlace de app",addAppLinkPlaceholder:"p. ej., https://your-app-url.com o https://yourapp.base44.app",invalidUrl:"Por favor, introduce una URL válida que comience con http:// o https://",noAppsFound:"No se encontraron apps",noAppsAvailable:"No hay apps disponibles",loadingMore:"Cargando...",loadMore:"Cargar más apps",edited:"editado {{time}}"},XU={loading:"Cargando conversación...",errorTitle:"Error al cargar la conversación",noConversationTitle:"Conversación no encontrada",noConversationMessage:"Esta conversación no existe o no tienes acceso a ella.",tryAgain:"Intentar de nuevo",ticketFallbackTitle:"Ticket de soporte",categoryFallback:"General",closeTicket:"Cerrar ticket",closing:"Cerrando...",aiAssistantInfo:"Asistente de IA · Puede cometer errores",talkToSpecialist:"Hablar con un especialista de soporte",handledBySpecialist:"Atendido por un especialista de soporte",notifyWhenResponds:"Notificarme cuando el soporte responda",ticketResolvedTitle:"Este ticket ha sido resuelto",ticketResolvedMessage:"Por favor, crea un nuevo ticket para soporte adicional",conversationClosed:"Esta conversación está cerrada",aiHandlingTicket:"El agente de IA está gestionando este ticket. Haz clic en <bold>Tomar control</bold> para responder manualmente.",typeResponse:"Escribe tu respuesta...",typeMessage:"Escribe tu mensaje...",failedLoadConversation:"No se pudo cargar la conversación. Por favor, inténtalo de nuevo.",ticketAlreadyResolved:"Este ticket ha sido resuelto. Por favor, crea un nuevo ticket para soporte adicional.",failedCloseTicket:"No se pudo cerrar el ticket. Por favor, inténtalo de nuevo.",failedEscalate:"No se pudo escalar el ticket. Por favor, inténtalo de nuevo.",confirmCloseTicket:"¿Estás seguro de que quieres cerrar este ticket? Se marcará como resuelto.",premiumSupportTier:"Soporte Premium",standardSupportTier:"Soporte Estándar",premiumSupportMessage:"Soporte offline, respuesta prioritaria en 48h",standardSupportMessage:"Soporte offline, respuesta en 48h",templates:{label:"Plantillas rápidas",less:"Menos"},draft:{title:"Respuesta sugerida por IA",collapse:"Contraer",viewAll:"Ver todo",use:"Usar"},escalateModal:{title:"Solicitar soporte humano",description:"Tu ticket será transferido a nuestro equipo de soporte para una respuesta personalizada.",cancel:"Cancelar",requesting:"Solicitando...",requestButton:"Solicitar soporte humano"}},eq={supportTeam:"Equipo de soporte",attachedFile:"Archivo adjunto",translatedFrom:"Traducido de {{language}}",internalNote:"Nota interna",emptyTitle:"Inicia la conversación",emptyMessage:"Envía un mensaje para comenzar tu conversación de soporte",translating:"Traduciendo...",showingTranslations:"Mostrando traducciones",translateToEnglish:"Traducir al inglés",confirmDeleteMessage:"¿Estás seguro de que quieres eliminar este mensaje?",failedDeleteMessage:"No se pudo eliminar el mensaje. Por favor, inténtalo de nuevo.",failedTranslate:"No se pudieron traducir los mensajes. Por favor, inténtalo de nuevo.",attachedContent:"Contenido adjunto",videoNotSupported:"Tu navegador no admite la reproducción de video.",noteBy:"por {{name}}",adminFallback:"Admin",events:{unknownActor:"Alguien",statusChange:"{{actor}} cambió el estado a {{status}}",unassigned:"{{actor}} quitó la asignación del ticket",assigned:"{{actor}} asignó a {{assignee}}",reassigned:"{{actor}} reasignó a {{assignee}}",escalated:"{{actor}} escaló el ticket",removedEscalation:"{{actor}} eliminó la escalada",categoryChange:"{{actor}} cambió la categoría a {{category}}",labelChangeAdded:"{{actor}} añadió {{labels}}",labelChangeRemoved:"{{actor}} eliminó {{labels}}",labelChangeBoth:"{{actor}} añadió {{added}} y eliminó {{removed}}",updated:"{{actor}} actualizó el ticket",markedAbusive:"{{actor}} marcó el contenido como abusivo",clearedAbusive:"{{actor}} eliminó la marca de contenido abusivo"}},tq={uploading:"Subiendo...",uploadFiles:"Subir archivos",fileTypeError:"Por favor, solicita soporte para tipos de archivo adicionales en <link>feedback.base44.com</link>"},aq={open:"Abiertos",closed:"Cerrados",all:"Todos"},nq={open:"Abierto",resolved:"Resuelto"},iq={noOpenTickets:"Sin tickets abiertos",noClosedTickets:"Sin tickets cerrados",noTickets:"Sin tickets",descriptionOpen:"No tienes tickets de soporte abiertos en este momento.",descriptionClosed:"No se encontraron tickets cerrados.",descriptionAll:"Aún no has enviado ningún ticket de soporte."},rq={appLabel:"App: {{appId}}",dateNotAvailable:"No disponible"},oq={loadingTitle:"Error al cargar los tickets",loadingFailed:"No se pudieron cargar los tickets de soporte. Por favor, inténtalo de nuevo.",ticketLimitTitle:"Límite de tickets alcanzado",ticketLimitDescription:"Hay más tickets de los que se pueden cargar. Solo se cargaron los 1000 tickets más recientes."},sq={free:"Gratis"},lq={cancel:"Cancelar",back:"Atrás",skip:"Omitir",continue:"Continuar",submitting:"Enviando...",refresh:"Actualizar",newTicket:"Nuevo ticket",createNewTicket:"Crear nuevo ticket",tryAgain:"Intentar de nuevo",bannedAlert:"Su acceso a Base44 Support ha sido restringido debido a una violación de los Términos de Uso de Base44 Support. Consulte el correo electrónico que le enviamos para obtener más detalles."},cq={descriptionRequired:"Por favor, añade una descripción",descriptionTooShort:"Por favor, añade un poco más de detalle. El mínimo es de 20 caracteres.",appRequired:"Elige una de tus apps o añade un enlace para que sepamos dónde ocurre el problema.",submissionFailed:"No se pudo enviar tu ticket de soporte. Por favor, inténtalo de nuevo."},dq={dailyLimitReached:"Límite diario alcanzado",somethingWentWrong:"Algo salió mal",dailyLimitMessage:"Límite diario de conversaciones de soporte superado. Puedes crear hasta {{limit}} conversaciones por día con tu suscripción actual.",tryAgain:"Intentar de nuevo",cancel:"Cancelar",close:"Cerrar"},uq={help:qU,sidebar:VU,page:$U,modal:WU,footer:GU,resumeStep:HU,steps:YU,tellUsAboutYourIssue:KU,whatTypeOfIssue:ZU,categories:JU,selectApp:QU,chat:XU,messages:eq,input:tq,tabs:aq,status:nq,emptyState:iq,ticketCard:rq,errors:oq,tiers:sq,actions:lq,validation:cq,submissionError:dq},pq={sectionTitle:"Paramètres du compte",sectionDescription:"Gérez vos préférences et paramètres personnels de compte.",heading:"Compte",email:{label:"E-mail",placeholder:"Aucun e-mail défini"},fullName:{label:"Nom complet",placeholder:"Entrez votre nom complet",profileHint:"C'est ainsi que vous apparaîtrez sur votre <profileLink>profil</profileLink> public Base44."},phoneNumber:{label:"Numéro de téléphone",placeholder:"Entrez votre numéro de téléphone",smsConsent:"En entrant votre numéro de téléphone, vous acceptez de recevoir des notifications SMS de notre part."},defaultAgents:{label:"Agents par défaut",toggleLabel:"Activer les agents pour les nouvelles applications par défaut",description:"Lorsqu'activé, les nouvelles applications auront automatiquement les agents activés, leur permettant d'exécuter des tâches autonomes et d'utiliser des outils."},defaultTestData:{label:"Données de test par défaut",toggleLabel:"Activer les données de test pour les nouvelles applications par défaut",description:"Lorsqu'activé, les nouvelles applications démarrent avec les données de test activées pour que vous puissiez tester les modifications en toute sécurité sans affecter les données en direct.",upgradeRequired:"Cette fonctionnalité nécessite le plan Builder ou supérieur.",seePlans:"Voir les plans"},apiKey:{label:"Clé API",copyTitle:"Copier la clé API",copied:"Copié !",regenerate:"Régénérer",regenerating:"Régénération...",regenShort:"Regen.",regenShortLoading:"Regen...",description:"Votre clé API donne accès à votre espace de travail. Ne la partagez pas avec d'autres.",notGenerated:"Pas encore générée — cliquez sur Régénérer"},backofficeApiKey:{title:"Clé API du backoffice",description:"Utilisez cette clé pour authentifier les requêtes programmatiques auprès du service backoffice. Elle ne fonctionne pas sur le service de plateforme. Gardez-la secrète.",yourKey:"Votre clé API du backoffice",copySuccess:"Clé API copiée",copyError:"Échec de la copie de la clé API",regenSuccess:"Clé API du backoffice régénérée",regenError:"Échec de la régénération : {{error}}",warning:"La régénération invalide immédiatement la clé précédente. Les clients qui l'utilisent devront être mis à jour.",existsPlaceholder:"•••••••••••••••••• (clé existante — seul le hash est stocké ; régénérez pour en voir une nouvelle)",showOnceWarning:"Copiez cette clé maintenant. Elle n'est affichée qu'une seule fois et ne peut pas être récupérée plus tard."},unsavedChanges:"Modifications non enregistrées",discard:"Abandonner",save:"Enregistrer",saving:"Enregistrement...",saveSuccess:"Paramètres du compte mis à jour avec succès !",saveError:"Impossible de mettre à jour les paramètres du compte : {{error}}",unknownError:"Erreur inconnue",apiKeyCopySuccess:"Clé API copiée dans le presse-papiers !",apiKeyCopyError:"Impossible de copier la clé API",apiKeyRegenSuccess:"Clé API régénérée avec succès !",apiKeyRegenError:"Impossible de régénérer la clé API : {{error}}"},mq={title:"Authentification à deux facteurs",description:"Ajoutez une couche de protection supplémentaire lors de la connexion. Un code vous sera demandé à chaque connexion.",twoFactorEnabled:"L'authentification à deux facteurs est activée.",statsLine:"{{used}}/{{total}} codes de récupération utilisés · {{devices}} appareils de confiance",totp:{name:"Application d'authentification",description:"Utilisez une application comme Google Authenticator ou Duo pour générer des codes de connexion sécurisés.",setupTitle:"Configurer votre application d'authentification",scanQr:"Scannez le code QR avec votre application d'authentification",cantScan:"Impossible de scanner le code ? Entrez-le manuellement :",enterCodeTitle:"Entrez un code de votre application d'authentification",enterDigitCode:"Entrez le code à 6 chiffres",codesRefresh:"Les codes sont actualisés toutes les 30 secondes.",qrCodeAlt:"Code QR pour la configuration de l'application d'authentification",enabled:"Application d'authentification activée",disabled:"Application d'authentification désactivée"},sms:{name:"Messages texte",description:"Recevez des codes de connexion envoyés sur votre téléphone par SMS.",enterPhone:"Entrez votre numéro de téléphone",phoneLabel:"Numéro de téléphone",phonePlaceholder:"(555) 000-0000",verificationWillBeSent:"Un code de vérification sera envoyé à ce numéro pour confirmer qu'il vous appartient.",verifyPhone:"Vérifier votre numéro de téléphone",codeSentTo:"Un code à 6 chiffres a été envoyé au {{phone}}",standardRates:"Des frais de messagerie et de données standard peuvent s'appliquer.",invalidPhone:"Numéro de téléphone invalide. Veuillez vérifier le numéro et réessayer.",enabled:"MFA par SMS activé",disabled:"Messages texte désactivés"},recovery:{saveTitle:"Enregistrez vos codes de récupération",saveDescription:"Conservez ces codes de récupération dans un endroit sûr. Vous en aurez besoin si vous perdez l'accès à votre téléphone ou à votre application d'authentification.",eachCodeOnce:"Chaque code de récupération ne peut être utilisé qu'une seule fois. Conservez-les dans un endroit sûr et accessible.",eachCodeOnceShort:"Chaque code de récupération ne peut être utilisé qu'une seule fois.",copyAll:"Tout copier",download:"Télécharger",copied:"Copié",enterRecoveryCode:"Entrez le code de récupération"},disable:{title:"Désactiver l'authentification à deux facteurs",turnOff:"Désactiver l'authentification à deux facteurs ?",turnOffDescription:"Pour continuer, vous devrez vérifier avec un code envoyé sur votre téléphone ou un code de récupération.",verifyWithPhone:"Vérifier avec un code envoyé sur votre téléphone",verifyWithApp:"Entrez un code de votre application d'authentification",enterRecoveryToDisable:"Entrez l'un de vos codes de récupération pour désactiver l'authentification à deux facteurs.",useRecoveryCode:"Utiliser un code de récupération",verifyViaApp:"Vérifier via l'application",verifyAndDisable:"Vérifier et désactiver"},regenerate:{title:"Régénérer les codes de récupération",trustedDevicesCount_one:"{{count}} appareil de confiance",trustedDevicesCount_other:"{{count}} appareils de confiance",codesUsed:"{{used}}/{{total}} codes de récupération utilisés",descriptionChoose:"Choisissez une méthode de vérification pour régénérer vos codes de récupération. Cela invalidera tous les codes existants.",descriptionSms:"Nous enverrons un code de vérification sur votre téléphone pour confirmer.",descriptionSmsVerify:"Entrez un code de vérification pour régénérer vos codes de récupération. Cela invalidera tous les codes existants.",descriptionTotpVerify:"Entrez un code de vérification pour régénérer vos codes de récupération. Cela invalidera tous les codes existants.",verifyWithApp:"Entrez un code de votre application d'authentification",verifyWithSms:"Vérifier avec un code envoyé sur votre téléphone",smsMethodLabel:"Message SMS",enterCodeLabel:"Entrez le code à 6 chiffres",helperTotp:"Ouvrez votre application d'authentification pour obtenir le code",helperSms:"Entrez le code envoyé sur votre téléphone",verifyAndRegenerate:"Vérifier et régénérer",enterCode:"Entrer le code"},reauth:{title:"Vérifiez votre identité",description:"Par sécurité, confirmez votre identité avant d'ajouter {{method}} comme méthode de connexion.",actionTotp:"Entrez le code à 6 chiffres de votre application d'authentification.",actionSms:"Entrez le code envoyé au {{phone}}."},common:{enable:"Activer",enabled:"Activé",cancel:"Annuler",close:"Fermer",back:"Retour",done:"Terminé",verify:"Vérifier",sendCode:"Envoyer le code",regenerate:"Régénérer",regenerateRecoveryCodes:"Régénérer les codes de récupération",disable:"Désactiver",continue:"Continuer",fullCodeError:"Entrez le code complet à 6 chiffres",fullRecoveryError:"Entrez le code de récupération complet",enterVerificationCode:"Entrez un code de vérification",didntReceive:"Vous n'avez pas reçu de code ?",resendIn:"Renvoyer dans {{seconds}}s",resend:"Renvoyer",verificationSent:"Code de vérification envoyé",failedToSetup:"Échec de la configuration de l'authentification",failedToSendCode:"Échec de l'envoi du code",failedToResend:"Échec du renvoi",invalidCode:"Code invalide",lockedOut:"Trop de tentatives échouées. Réessayez dans {{minutes}} min.",lockedOutShort:"Temporairement verrouillé ({{minutes}} min)"}},gq={section:{title:"Supprimer le compte",description:"Supprimez votre compte ainsi que toutes les données, paramètres et activités associés.",accessNote:"Vous aurez accès à votre compte pendant 1 semaine après avoir demandé la suppression.",deleteButton:"Supprimer le compte",enterpriseTooltip:"La suppression de compte n'est pas disponible pour les utilisateurs d'entreprise. Veuillez contacter l'administrateur de votre organisation."},pendingRequest:{willBeDeleted:"Votre compte, abonnement, applications et espaces de travail seront supprimés dans <bold>{{daysRemaining}} jours</bold> ({{formattedEnd}}) et ce sera définitif à partir de cette date. Jusque-là, vous pouvez annuler la suppression.",processing:"Suppression en cours de traitement...",cancelButton:"Annuler la demande",renewalWarning:"Si votre abonnement doit être renouvelé pendant ces {{daysRemaining}} jours, le renouvellement aura quand même lieu à moins que vous n'annuliez l'abonnement manuellement avant la date de renouvellement"},toast:{submitSuccess:"Demande de suppression soumise. Nous l'examinerons et la traiterons après la période de grâce de 7 jours.",submitError:"Impossible de soumettre la demande de suppression. Veuillez réessayer.",cancelSuccess:"Demande de suppression annulée avec succès.",cancelError:"Impossible d'annuler la demande. Veuillez réessayer.",preflightError:"Impossible de vérifier le statut du compte. Veuillez réessayer."},dialog:{title:"Supprimer votre compte",description:"Cela planifiera la suppression définitive de votre compte et de toutes les données associées.",whatWillBeDeleted:"Ce qui sera supprimé :",itemAccountProfile:"Votre compte et profil",itemAllApps:"Toutes les applications que vous avez créées",itemAllData:"Toutes les données stockées dans vos applications",itemUploadedFiles:"Fichiers et médias téléchargés",gracePeriodNote:"Vous aurez 7 jours pour annuler cette demande. Après cela, notre équipe examinera et traitera votre suppression sous peu.",subscriptionNote:"L'annulation d'abonnement est définitive et sans remboursement",cancelButton:"Annuler",deleteButton:"Supprimer le compte"},subscriptions:{dialogTitle:"Annulez vos abonnements avant de supprimer votre compte",warning:"Vous avez encore des abonnements actifs. Veuillez d'abord les annuler.",listLabel:"Abonnements actifs :",personalPlan:"Plan personnel",planAndBilling:"Plan et facturation",yearly:"annuel",monthly:"mensuel",cancelFirst:"Annulez tous les abonnements ci-dessus, puis revenez ici pour supprimer votre compte.",closeButton:"Fermer",manageButton:"Gérer les abonnements"},workspaceOwner:{titleStep1:"Vous possédez des espaces de travail",titleStep2:"Confirmer la suppression de l'espace de travail",memberCount_one:"{{count}} membre",memberCount_other:"{{count}} membres",warningOwner_one:"Vous êtes actuellement propriétaire de l'espace de travail suivant. Si vous continuez, toutes les applications de cet espace de travail seront définitivement supprimées et tous les membres perdront l'accès.",warningOwner_other:"Vous êtes actuellement propriétaire des espaces de travail suivants. Si vous continuez, toutes les applications de ces espaces de travail seront définitivement supprimées et tous les membres perdront l'accès.",leaveWorkspaces_one:"Vous quitterez également cet espace de travail et perdrez l'accès :",leaveWorkspaces_other:"Vous quitterez également ces espaces de travail et perdrez l'accès :",confirmInstructions:"Saisissez le nom de chaque espace de travail ci-dessous pour confirmer la suppression. Cette action est irréversible.",typeToConfirm:'Saisissez <bold>"{{name}}"</bold> pour confirmer',deleteAnyway:"Supprimer quand même",deleteAccount:"Supprimer le compte",cancel:"Annuler"},memberInfo:{title_one:"Vous quitterez cet espace de travail",title_other:"Vous quitterez ces espaces de travail",description_one:"La suppression de votre compte vous retirera de l'espace de travail suivant. Vous perdrez l'accès à toutes les applications et données de l'espace de travail.",description_other:"La suppression de votre compte vous retirera des espaces de travail suivants. Vous perdrez l'accès à toutes les applications et données des espaces de travail.",cancel:"Annuler",continueWithDeletion:"Continuer la suppression"}},hq={title:"Compte GitHub",addAccount:"Ajouter votre compte GitHub",unlockWithBuilder:"Débloquez cette fonctionnalité avec le plan Builder.",loading:"Chargement...",connecting:"Connexion...",reconnect:"Reconnecter",connectionLost:"La connexion à GitHub a été perdue. Veuillez reconnecter votre compte GitHub pour continuer.",connected:"Connecté",connectedDescription:"Votre compte GitHub est connecté",disconnect:"Déconnecter",tryAgain:"Réessayer",connectGitHub:"Connecter GitHub",disconnectDialog:{title:"Se déconnecter de GitHub ?",accountDescription:"La déconnexion de votre compte GitHub n'affectera pas les applications connectées.<br/>Vous n'aurez qu'à reconnecter votre compte si vous souhaitez connecter ou reconnecter un dépôt.",repoDescription:"Cette action déconnectera l'application du dépôt {{repoName}}.",repoDescriptionNoName:"Cette action déconnectera l'application du dépôt GitHub.",repoDetail1:"Votre dépôt GitHub restera inchangé — il ne sera pas supprimé ni retiré.",repoDetail2:"Vous pourrez continuer à travailler sur votre application comme avant, mais GitHub ne sera plus la source de vérité pour votre code, et la synchronisation bidirectionnelle sera désactivée.",disconnectingProgress:"Déconnexion… Cela peut prendre quelques minutes.",cancel:"Annuler",disconnect:"Déconnecter",disconnecting:"Déconnexion…"}},fq={title:"Google Drive",connected:"Connecté",connectedDescription:"Votre Google Drive est connecté",disconnectedDescription:"Connectez votre Google Drive pour importer des fichiers",connect:"Connecter",connecting:"Connexion...",disconnect:"Déconnecter",disconnecting:"Déconnexion...",loading:"Chargement...",connectTitle:"Se connecter à Google Drive",connectDescription:"Autorisez l'accès pour utiliser les fichiers de Google Drive comme contexte de chat IA.",benefitImport:"Importez des Documents, Feuilles de calcul et Présentations depuis votre Google Drive",benefitChoose:"Choisissez quels fichiers utiliser à chaque fois",benefitSecure:"Le contenu sélectionné est stocké en toute sécurité pour une utilisation dans votre application",connectButton:"Connecter Google Drive",cancel:"Annuler",privacyNote:"Seuls les fichiers que vous sélectionnez sont accessibles.",disconnectAnytime:"Vous pouvez vous déconnecter à tout moment dans les paramètres du compte."},vq={title:"Paramètres du chat",sendMessageShortcut:"Raccourci d'envoi de message",insertNewLineShortcut:"Raccourci de nouvelle ligne",soundPreferences:"Préférences sonores",browserNotifications:"Notifications du navigateur",notificationsHelpText:"Notifications activées mais vous ne les recevez pas ? <docLink>Consulter la documentation</docLink>",notificationOptions:{onFirstPromptOnly:"Uniquement au premier prompt",onEveryPromptCompletion:"À chaque fin de prompt",disableNotificationSounds:"Désactiver les sons de notification",disableBrowserNotifications:"Désactiver les notifications du navigateur"}},bq={account:pq,mfa:mq,deleteAccount:gq,github:hq,googleDrive:fq,chatSettings:vq},yq={title:"Demander l'accès à {{appName}}",subtitleDefault:"Demandez l'accès ou basculez vers un compte qui possède déjà les permissions nécessaires.",subtitleRequested:"Vous serez notifié par e-mail lorsque votre demande sera approuvée.",requestAccess:"Demander l'accès",requestSubmitted:"Demande envoyée",loggedInAs:"Vous êtes connecté en tant que {{email}}",switchAccount:"Changer de compte",errorMessage:"Une erreur est survenue. Veuillez réessayer ou changer de compte.",tooManyAttempts:"Trop de tentatives. Veuillez réessayer plus tard.",backToLogin:"Retour à la connexion"},kq={title:"Accès restreint",subtitle:"Vous devez être membre de cet espace de travail pour accéder à l'application."},wq={accessRequired:yq,workspaceRestricted:kq},Aq={title:"Bienvenue sur Base44",loginWithGoogle:"Se connecter avec Google",loginWithGithub:"Se connecter avec GitHub",loggingIn:"Connexion en cours...",or:"Ou",emailLabel:"E-mail",emailPlaceholder:"Entrez votre adresse e-mail",edit:"Modifier",lastUsed:"Dernière utilisation",ssoEnabled:"Le SSO est activé pour <strong>{{workspace}}</strong>",ssoClickBelow:"Cliquez ci-dessous pour continuer avec la connexion de votre organisation",passwordLabel:"Mot de passe",forgotPassword:"Mot de passe oublié ?",passwordPlaceholder:"Entrez votre mot de passe",checkingAuth:"Vérification de la méthode d'authentification...",checking:"Vérification...",continue:"Continuer",continueWithSSO:"Continuer avec {{provider}}",logIn:"Se connecter",noAccount:"Vous n'avez pas de compte ?",signUp:"S'inscrire",verifyEmailFirst:"Veuillez vérifier votre e-mail avant de vous connecter. Consultez votre e-mail pour le code de vérification.",resendVerificationCode:"Renvoyer le code de vérification",enterEmailFirst:"Veuillez d'abord entrer votre adresse e-mail",invalidEmail:"Veuillez entrer une adresse e-mail valide",ssoError:"Erreur de configuration SSO. Veuillez réessayer.",invalidCredentials:"Adresse e-mail ou mot de passe invalide",loginFailed:"Échec de la connexion. Veuillez réessayer.",failedResendVerification:"Échec du renvoi du code de vérification. Veuillez réessayer.",passwordResetRequired:"Pour des raisons de sécurité, vous devez réinitialiser votre mot de passe avant de vous connecter. Consultez votre e-mail pour un lien de réinitialisation.",resetLinkSent:"Un lien de réinitialisation du mot de passe a été envoyé à votre adresse e-mail.",resendResetLink:"Renvoyer le lien de réinitialisation",failedResendResetLink:"Impossible d'envoyer le lien de réinitialisation. Veuillez réessayer.",termsAndPrivacy:"<terms>Conditions d'utilisation</terms> et <privacy>Politique de confidentialité</privacy>."},Sq={title:"Créez votre compte",agreeToTerms:"En cliquant sur « S'inscrire », vous acceptez nos <terms>Conditions d'utilisation</terms> et notre <privacy>Politique de confidentialité</privacy>.",signUpWithGoogle:"S'inscrire avec Google",signUpWithGithub:"S'inscrire avec GitHub",signingUp:"Inscription en cours...",creatingAccount:"Création du compte...",signUpButton:"S'inscrire",alreadyHaveAccount:"Vous avez déjà un compte Base44 ?",logIn:"Se connecter",validatingReferral:"Validation du code de parrainage...",invalidReferral:"Code de parrainage invalide",youveBeenInvited:"Vous avez été invité !",invitedToJoin:"<strong>{{name}}</strong> vous a invité à rejoindre Base44",signUpFreeCredits:"Inscrivez-vous pour obtenir 10 crédits gratuits !",signUpBaseDayCredits:"Inscrivez-vous pour obtenir 44 crédits gratuits !",letsBuild:"Construisons quelque chose d'incroyable ensemble !",registrationFailed:"Échec de l'inscription. Veuillez réessayer.",failedValidateReferral:"Échec de la validation du code de parrainage",completeVerification:"Veuillez compléter la vérification",weakPassword:"Mot de passe faible"},Cq={title:"Réinitialisez votre mot de passe",subtitle:"Entrez l'adresse e-mail utilisée lors de votre inscription, et nous vous enverrons un lien pour réinitialiser votre mot de passe.",backToLogin:"Retour à la connexion",loginEmail:"E-mail de connexion",emailPlaceholder:"ex. : nom@email.com",sending:"Envoi en cours...",verifyEmail:"Vérifier l'e-mail",invalidEmail:"Adresse e-mail invalide",failedSendReset:"Échec de l'envoi du lien de réinitialisation. Veuillez réessayer."},Dq={title:"Vérifiez votre e-mail",subtitle:"Nous avons envoyé les instructions de réinitialisation du mot de passe à <strong>{{email}}</strong>.",backToReset:"Retour à la réinitialisation du mot de passe",checkInfo:"Veuillez vérifier votre e-mail pour le lien de réinitialisation du mot de passe.",mayTakeMinutes:"Cela peut prendre quelques minutes.",goToSignIn:"Aller à la connexion",didntGetEmail:"Vous n'avez pas reçu l'e-mail ?",resending:"Renvoi en cours...",resendEmail:"Renvoyer l'e-mail",emailNotFound:"Adresse e-mail introuvable. Veuillez revenir en arrière et réessayer.",newResetSent:"Nouvel e-mail de réinitialisation envoyé. Veuillez vérifier votre boîte de réception.",failedResendEmail:"Échec du renvoi de l'e-mail. Veuillez réessayer."},Tq={title:"Définir un nouveau mot de passe",subtitle:"Entrez votre nouveau mot de passe pour Base44",newPasswordLabel:"Nouveau mot de passe",newPasswordPlaceholder:"Entrez votre nouveau mot de passe",confirmPasswordLabel:"Confirmer le nouveau mot de passe",confirmPasswordPlaceholder:"Confirmez votre nouveau mot de passe",resetting:"Réinitialisation...",resetButton:"Réinitialiser le mot de passe",backToLogIn:"Retour à la connexion",invalidToken:"Jeton de réinitialisation invalide ou manquant. Veuillez demander une nouvelle réinitialisation de mot de passe.",passwordsMismatch:"Les mots de passe ne correspondent pas. Veuillez réessayer.",weakPassword:"Veuillez créer un mot de passe d'au moins force moyenne.",resetSuccess:"Mot de passe réinitialisé avec succès ! Redirection vers la connexion...",resetSuccessLogin:"Mot de passe réinitialisé avec succès ! Veuillez vous connecter avec votre nouveau mot de passe.",failedReset:"Échec de la réinitialisation du mot de passe. Veuillez réessayer.",invalidOrExpiredToken:"Jeton de réinitialisation invalide ou expiré"},Eq={verifyTitle:"Vérifiez votre identité",verification:{chooseMethod:"Choisissez une méthode d'authentification",authenticatorApp:"Application d'authentification",smsMessage:"Message SMS",recoveryCode:"Code de récupération",continue:"Continuer",backToLogin:"Retour à la connexion",chooseAnotherMethod:"Choisir une autre méthode",verifyViaText:"Vérifier par SMS",verifyViaApp:"Vérifier via l'application d'authentification",enterRecoveryCode:"Entrez le code de récupération",rememberDevice:"Se souvenir de cet appareil pendant 30 jours",verifying:"Vérification...",verify:"Vérifier",useRecoveryCode:"Utiliser un code de récupération",sendingCodeTo:"Envoi du code à {{phone}}…",enterCodeSentTo:"Entrez le code envoyé au {{phone}}",enterCodeFromApp:"Entrez le code de votre application d'authentification",yourPhone:"votre téléphone",didntReceiveCode:"Vous n'avez pas reçu de code ?",resendIn:"Renvoyer dans {{seconds}}s",resend:"Renvoyer",enterCompleteRecoveryCode:"Veuillez entrer le code de récupération complet",enterCompleteCode:"Veuillez entrer le code à 6 chiffres complet",verificationFailed:"Échec de la vérification. Veuillez réessayer.",failedSendCode:"Échec de l'envoi du code. Veuillez réessayer."}},Pq={buildingApp:"Construction de votre application",verifyEmailSubtitle:"Vérifiez votre e-mail pour continuer",signUpSubtitle:"Inscrivez-vous pour la voir prendre vie",loginSubtitle:"Connectez-vous pour la voir prendre vie"},_q={completeVerification:"Veuillez compléter la vérification de sécurité"},xq={title:"Vérifiez votre e-mail",subtitle:"Nous avons envoyé un code de vérification à {{email}}",verificationCode:"Code de vérification",fillAllFields:"Veuillez remplir tous les champs.",enterCodeSent:"Entrez le code de vérification envoyé à votre e-mail",verifying:"Vérification...",verifyEmail:"Vérifier l'e-mail",wrongEmail:"Mauvais e-mail ? Modifier",didntReceiveCode:"Vous n'avez pas reçu le code ?",resendEmail:"Renvoyer l'e-mail",emailVerifiedLogin:"E-mail vérifié avec succès ! Vous pouvez maintenant vous connecter.",emailVerifiedContinue:"E-mail vérifié avec succès ! Veuillez vous connecter pour continuer.",invalidCode:"Code de vérification invalide. Veuillez réessayer.",verificationFailed:"Échec de la vérification. Veuillez réessayer.",newCodeSent:"Nouveau code de vérification envoyé à votre e-mail.",failedResendCode:"Échec du renvoi du code de vérification. Veuillez réessayer."},Iq={login:Aq,register:Sq,forgotPassword:Cq,checkEmail:Dq,resetPassword:Tq,mfa:Eq,authModal:Pq,turnstile:_q,otp:xq},Rq={notFound:"Profil introuvable",notFoundDescription:"Le profil builder @{{username}} n'existe pas."},zq={edit:"Modifier",done:"Terminé",cancel:"Annuler",appCount_one:"{{count}} App",appCount_other:"{{count}} Apps",joined:"Inscrit en {{date}}",namePlaceholder:"Votre nom",displayNameLabel:"Nom affiché",usernameLabel:"Nom d'utilisateur",changeUsername:"Changer le nom d'utilisateur",saveChanges:"Enregistrer les modifications",partnerBadge:"Base44 Partner"},Mq={label:"Bio",placeholder:"Écrivez une courte bio sur vous...",emptyPlaceholder:"Présentez-vous aux visiteurs — ajoutez une courte bio.",hint:"Max. 220 caractères",maxChars:"Max. {{max}} caractères"},Nq={viewTitle:"Apps",appsHeader:"Apps ({{count}})",appsHeaderEmpty:"Apps",featuredCounter_one:"{{count}} mise en avant",featuredCounter_other:"{{count}} mises en avant",editHint:"Sélectionnez quelles apps apparaissent sur votre profil public.",noPublishedApps:"Aucune app publiée trouvée. Publiez d'abord une app !",noPublishedAppsTitle:"Aucune app publiée",noPublishedAppsDescription:"Vous n'avez pas encore publié d'apps. Rendez-vous dans votre espace de travail pour finaliser un brouillon et le publier afin de le présenter sur votre profil.",viewMyApps:"Voir mes apps",untitled:"Sans titre",updated:"Apps épinglées mises à jour !",updateFailed:"Impossible de mettre à jour les apps épinglées",manageApps:"Gérer les apps",chooseTitle:"Choisir les apps à afficher",chooseDescription:"Sélectionnez jusqu'à {{max}} apps publiées à afficher sur votre profil public",selectAll:"Tout sélectionner",deselectAll:"Tout désélectionner",saveChanges:"Enregistrer",searchApps:"Rechercher des apps...",publicBadge:"Publique",privateBadge:"Privée",showMore:"Afficher plus",showLess:"Afficher moins",maxReached:"Maximum {{max}} apps autorisées",close:"Fermer",noSearchResults:"Aucune app ne correspond à votre recherche",updatedRecently:"mis à jour récemment",selectAllCount:"Tout sélectionner ({{count}})",deselectAllCount:"Tout désélectionner ({{count}})"},Fq={editTooltip:"Modifier les liens sociaux",addLinks:"Ajouter des liens sociaux",addLink:"Ajouter un lien",cancelTooltip:"Annuler",removeTooltip:"Supprimer",label:"Réseaux sociaux",hint:"Ajoutez jusqu'à 6 liens sociaux",linkLabel:"Lien",addCustomLink:"Ajouter un lien personnalisé",pastePlaceholder:"Collez l'URL ici",enterUsernameOrUrl:"Entrez votre nom d'utilisateur ou l'URL complète du profil",movedTo:"Déplacé vers {{platform}}",addedAsCustom:"Ajouté comme lien personnalisé",fieldOccupied:"Cela ressemble à un lien {{platform}} — ce champ a déjà une URL",customSlotsFull:"Cela ressemble à un lien {{platform}}. Supprimez un lien personnalisé pour l'ajouter."},Lq={profileUpdated:"Profil mis à jour !",profileUpdateFailed:"Impossible de mettre à jour le profil",usernameClaimed:"Nom d'utilisateur obtenu !",usernameClaimFailed:"Impossible d'obtenir le nom d'utilisateur",loadFailed:"Impossible de charger le profil",invalidImageType:"Veuillez télécharger une image valide (JPG, PNG, GIF ou WebP)",imageTooLarge:"L'image doit faire moins de 5 Mo",avatarUpdated:"Photo de profil mise à jour !",avatarUploadFailed:"Impossible de télécharger l'image",avatarRemoveFailed:"Impossible de supprimer l'image"},jq={title:"Abandonner les modifications ?",description:"Vous avez des modifications non enregistrées qui seront perdues.",confirm:"Abandonner"},Oq={title:"Changer le nom d'utilisateur",placeholder:"nom d'utilisateur",checking:"Vérification...",available:"Disponible !",notAvailable:"Non disponible",urlWarning:"Votre URL de profil changera en /@{{username}}. Les anciens liens ne fonctionneront plus.",cancel:"Annuler",claim:"Obtenir le nom d'utilisateur",tryInstead:"Essayez :"},Bq={locationLabel:"Localisation",locationPlaceholder:"ex. Paris, France",showEmailLabel:"Afficher l'email de votre compte"},Uq={title:"Modifier l'image de couverture",description:"Choisissez l'un de nos dégradés ou téléchargez votre propre image",uploadFile:"Importer une image personnalisée",orUseTemplate:"Ou utiliser un modèle",cancel:"Annuler",saveChanges:"Enregistrer",updated:"Image de couverture mise à jour !",updateFailed:"Impossible de mettre à jour l'image de couverture",uploadFailed:"Impossible de télécharger l'image",dragToReposition:"Glisser pour repositionner",replaceImage:"Remplacer l'image",reposition:"Repositionner"},qq={title:"Activité",mon:"Lun",wed:"Mer",fri:"Ven",less:"Moins",more:"Plus",messages_one:"{{count}} prompt",messages_other:"{{count}} prompts",founderMode:"Founder mode",noActivity:"Aucune activité",onDate:"le {{date}}",showOnProfile:"Afficher sur le profil"},Vq={customize:"Personnaliser votre profil",title:"Pas encore d'apps publiques",description:"Votre profil est le meilleur endroit pour partager votre travail avec la communauté Base44. Sélectionnez parmi vos apps publiées pour les afficher ici, ou lancez un nouveau projet pour développer votre activité.",anonDescription:"Ce builder n'a pas encore rendu ses apps publiques. Revenez plus tard pour voir son activité récente, ou explorez ce que d'autres créateurs construisent.",startCreating:"Commencer à créer",chooseFromApps:"Choisir parmi mes apps"},$q={page:Rq,header:zq,bio:Mq,pinnedApps:Nq,social:Fq,toast:Lq,discardDialog:jq,usernameDialog:Oq,details:Bq,coverImage:Uq,activity:qq,emptyState:Vq},Wq=JSON.parse(`{"title":"Agents IA","beta":"Bêta","subtitle":"Intégrez des agents IA dans votre application grâce à l'infrastructure d'agents IA de Base44","disabled":"Désactivé","setupAgents":"Configurer les agents","enableAgents":"Activer les agents","turnOnToggle":"Activez le bouton pour permettre la création d'agents","addFirstAgent":"Ajoutez votre premier agent","creditsUsed":"{{credits}} crédits utilisés","creditsUsedTooltip":"Crédits d'intégration mensuels utilisés","askChatToCreate":"Demandez au chat de créer un agent pour vous. Décrivez le rôle que l'agent devrait avoir et les tâches qu'il devrait effectuer.","defineInConfig":"Définissez vos agents dans des fichiers de configuration locaux et synchronisez-les avec votre application à l'aide du CLI Base44.","viewDocumentation":"Voir la documentation","noAgentsYet":"Aucun agent pour le moment","promptChatToCreate":"Demandez au chat de créer votre premier agent IA","agentsTab":"Agents","conversationsTab":"Conversations","searchConversations":"Rechercher des conversations...","filterAll":"Tous","filterMine":"Les miennes","filterUsers":"Utilisateurs","noConversationsYet":"Aucune conversation pour le moment","noConversationsMatchSearch":"Aucune conversation ne correspond à votre recherche","tryDifferentSearch":"Essayez un autre terme de recherche","goToAgentsTab":"Allez dans l'onglet Agents pour démarrer une conversation","conversationStarted":"Conversation démarrée","agentConfiguration":"Configuration de l'agent","guidelines":"Directives","tools":"Outils","whatsapp":"WhatsApp","toolsAndCapabilities":"Outils et capacités","descriptionLabel":"Description","systemPromptDesc":"Ceci est le prompt système qui définit le comportement de l'agent","briefDescription":"Brève description de ce que fait cet agent...","instructions":"Instructions","instructionsDesc":"Directives et règles spécifiques que l'agent doit suivre","detailedInstructions":"Instructions détaillées pour l'agent...","availableTools":"Outils disponibles","configureTools":"Configurez les outils et les données auxquels cet agent peut accéder","add":"Ajouter","allEntitySlotsUsed":"Tous les emplacements d'entités utilisés","addEntityTool":"Ajouter un outil d'entité","entityToolDesc":"Opérations de base de données et accès CRUD","allFunctionSlotsUsed":"Tous les emplacements de fonctions utilisés","addBackendFunction":"Ajouter une fonction backend","backendFunctionDesc":"Logique backend personnalisée et intégrations","noToolsConfigured":"Aucun outil configuré","addToolsDesc":"Ajoutez des outils d'entité ou des fonctions backend pour donner des capacités à l'agent","entityTool":"Outil d'entité","selectEntity":"Sélectionner une entité","allowedOperations":"Opérations autorisées","deleteWarning":"Attention, les données supprimées par l'agent ne peuvent pas être restaurées","backendFunction":"Fonction backend","selectBackendFunction":"Sélectionner une fonction backend","functionDescription":"Description de la fonction","describeFunction":"Décrivez quand et comment cette fonction doit être utilisée...","whatsappIntegration":"Intégration WhatsApp","whatsappDesc":"Connectez votre agent à WhatsApp pour une communication fluide","testChat":"Chat de test","addWhatsapp":"Ajoutez WhatsApp à votre application","whatsappEnableDesc":"Activez l'accès WhatsApp pour vos utilisateurs avec une seule commande","addWhatsappButton":"Ajouter un bouton WhatsApp pour {{agent}}","sendToChat":"Envoyer au chat","fullChatCapabilities":"Toutes les capacités du chat","fullChatDesc":"Toutes les fonctionnalités du chat web fonctionnent parfaitement dans WhatsApp, y compris les outils et l'accès aux données","voiceMediaSupport":"Support voix et médias","voiceMediaDesc":"Les utilisateurs peuvent envoyer des notes vocales et des images pour une interaction naturelle","customNumbers":"Numéros personnalisés","customNumbersDesc":"Connectez vos propres numéros WhatsApp Business","easyUiIntegration":"Intégration UI facile","easyUiDesc":"Ajoutez un bouton WhatsApp à votre application avec une simple commande chat","welcomeMessage":"Message de bienvenue","welcomeMessageDesc":"Rédigez un accueil chaleureux qui présente votre agent et définit les attentes","charCount":"{{count}}/500","editAgent":"Modifier l'agent","edit":"Modifier","startChat":"Démarrer le chat","chat":"Chat","functionCount":"{{count}} fonction(s)","noDescriptionProvided":"Aucune description fournie","entities":"Entités :","activeConversation":"Conversation active","readOnlyConversation":"Conversation en lecture seule","startConversation":"Démarrez votre conversation","typeMessageBelow":"Tapez un message ci-dessous pour commencer","typeYourMessage":"Tapez votre message...","cancel":"Annuler","saving":"Enregistrement...","save":"Enregistrer","commandAddedToChat":"Commande ajoutée au chat. Appuyez sur Entrée pour envoyer.","failedToSaveAgentConfiguration":"Échec de l'enregistrement de la configuration de l'agent","promptAddedToChat":"Prompt ajouté au chat","unableToLoadSuggestions":"Impossible de charger les suggestions. Réessayez plus tard.","createAgent":"Créer un agent","createAgentTitle":"Créer un agent","createAgentDescription":"Demandez au chat de créer un agent pour vous. Décrivez le rôle que l'agent doit avoir et les tâches qu'il doit accomplir.","manageAgentsAndConversations":"Gérer les agents et les conversations","skills":"Compétences","skillsEnabledLimit":"Vous pouvez activer jusqu'à {{count}} compétences par agent.","appSkillsTitle":"Compétences d'Application","appSkillsDescription":"Compétences d'instruction réutilisables pour les agents dans cette application.","addSkill":"Ajouter Compétence","noAppSkillsYet":"Aucune compétence d'application pour le moment. Créez-en une pour la réutiliser entre les agents de cette application.","workspaceSkillsTitle":"Compétences d'Espace de Travail","workspaceSkillsDescription":"Compétences partagées de cet espace de travail. Activez-les pour les utiliser avec cet agent.","loadingWorkspaceSkills":"Chargement des compétences d'espace de travail...","noWorkspaceSkillsAvailable":"Aucune compétence partagée d'espace de travail n'est actuellement disponible.","manageWorkspaceSkills":"Gérer les compétences d'espace de travail","workspaceSkillSource":"espace de travail","appSkillSource":"application","unavailable":"non disponible","addAppSkill":"Ajouter Compétence d'Application","editAppSkill":"Modifier {{name}}","skillName":"Nom de compétence","skillNameHint":"Utilisez des lettres minuscules, des chiffres et des tirets.","skillNameInvalid":"Le nom doit être alphanumérique en minuscules avec des tirets, pas de tirets au début/fin (ex. 'code-review', 'sql-expert').","skillDescription":"Description","skillInstructions":"Instructions","enableForCurrentAgent":"Activer pour l'agent actuel","enableForCurrentAgentDescription":"Cela modifie l'état actuel de l'éditeur et est enregistré avec l'agent.","createSkill":"Créer Compétence","saveChanges":"Enregistrer les Modifications","workspaceSkillUnavailableDescription":"Cette compétence d'espace de travail n'est plus activée ou disponible.","appSkillUnavailableDescription":"Cette compétence d'application n'existe plus dans la bibliothèque de compétences de l'application.","skillValidationRequired":"Le nom, la description et les instructions sont requis","skillCreated":"Compétence créée","skillUpdated":"Compétence mise à jour","failedToSaveSkill":"Échec de l'enregistrement de la compétence","skillSavedButAssignmentsFailed":"La compétence a été enregistrée, mais son rattachement à l'agent a échoué","skillSavedButAssignmentsRefreshDelayed":"L'éditeur n'a pas pu se rafraîchir automatiquement. Rechargez pour vérifier l'état le plus récent.","skillSavedButSyncFailed":"La compétence a été enregistrée, mais la synchronisation de l'état de l'agent a échoué","skillSavedButSyncRefreshDelayed":"La compétence a été enregistrée, mais l'éditeur n'a pas pu se rafraîchir automatiquement. Rechargez pour vérifier l'état le plus récent.","skillSavedStateRefreshed":"Compétence enregistrée. L'éditeur a été rafraîchi pour correspondre au dernier état enregistré.","skillSavedRefreshDelayed":"Compétence enregistrée, mais l'éditeur n'a pas pu se rafraîchir automatiquement. Rechargez pour vérifier l'état le plus récent.","skillDeleted":"Compétence supprimée","skillDeletedRefreshDelayed":"La compétence a été supprimée, mais l'éditeur n'a pas pu se rafraîchir automatiquement. Rechargez pour vérifier l'état le plus récent.","failedToDeleteSkill":"Échec de la suppression de la compétence","skillLimitReached":"Cet agent a déjà atteint le nombre maximum de compétences activées.","skillTemplatePickerTitle":"Choisir une compétence de départ","startFromScratch":"Commencer de zéro","startFromScratchDescription":"Créez une compétence personnalisée avec vos propres instructions.","useTemplate":"Utiliser le modèle","skillTemplates":{"refundPolicy":{"description":"Modèle pour les règles de remboursement, l'éligibilité et les détails que l'agent doit collecter avant une escalade."},"supportEscalation":{"description":"Modèle indiquant quand transmettre au support humain et quel résumé l'agent doit préparer."},"pricingAndPlans":{"description":"Modèle pour expliquer les offres, la fréquence de facturation, les upgrades et quand orienter les demandes enterprise."},"brandVoice":{"description":"Modèle pour le ton, le style d'écriture et les règles de communication afin que l'agent reste fidèle à la marque."}},"memory":"Mémoire","memoryTitle":"Mémoire de l'agent","memorySubtitle":"Activez la mémoire à long terme pour que votre agent se souvienne des informations entre les conversations","enableMemory":"Activer la mémoire","enableMemoryDesc":"Lorsqu'elle est activée, l'agent peut sauvegarder et rappeler des informations entre les conversations","memoryScope":"Portée de la mémoire","memoryScopeDesc":"Choisissez quels types de souvenirs l'agent peut créer","memoryScopeGlobalAndUser":"Global et par utilisateur","memoryScopeGlobalAndUserDesc":"L'agent peut sauvegarder des souvenirs partagés et personnels","memoryScopeGlobal":"Global uniquement","memoryScopeGlobalDesc":"Souvenirs partagés entre tous les utilisateurs","memoryScopeUser":"Par utilisateur uniquement","memoryScopeUserDesc":"Souvenirs spécifiques à chaque utilisateur","memoryInstructions":"Instructions de mémoire","memoryInstructionsDesc":"Guidez l'agent sur quand sauvegarder des souvenirs et quoi inclure","memoryInstructionsPlaceholder":"Ex., Sauvegardez des souvenirs globaux pour les mises à jour produit, les annonces d'entreprise et les connaissances partagées. Sauvegardez des souvenirs utilisateur pour les préférences personnelles comme le style de communication, le ton et les intérêts spécifiques.","savedMemories":"Souvenirs sauvegardés","refresh":"Actualiser","noMemoriesYet":"Aucun souvenir sauvegardé","noMemoriesDesc":"Les souvenirs apparaîtront ici lorsque l'agent les sauvegardera pendant les conversations","memoryItemDeleted":"Souvenir supprimé","memoryDeleteFailed":"Échec de la suppression du souvenir","defaultDescription":"Par défaut : {{description}}"}`),Gq={writing:"Écriture",wrote:"Écrit",reading:"Lecture",read:"Lu",deleting:"Suppression",deleted:"Supprimé",editing:"Modification",edited:"Modifié",creating:"Création",created:"Créé",updating:"Mise à jour",updated:"Mis à jour",update:"Mettre à jour",delete:"Supprimer",importing:"Importation",imported:"Importé",import:"Importer",searching:"Recherche",searched:"Recherché",searchingForBugs:"Recherche de bugs...",searchedBugs:"Bugs recherchés",install:"Installer",installing:"Installation",installed:"Installé",analyzing:"Analyse",running:"Exécution",failed:"Échoué",run:"Exécuter",settingSecrets:"Configuration des secrets",setSecret:"Secret configuré",setSecrets:"Secrets configurés",testing:"Test",checking:"Vérification",tested:"Testé",checked:"Vérifié",fetching:"Récupération",fetched:"Récupéré",waitingForApproval:"En attente d'approbation...",searchedDocsFor:"Documentation recherchée pour",searchingDocsFor:"Recherche de documentation pour",searchedFor:"Recherché pour",searchingFor:"Recherche de",foundResult_one:"{{count}} résultat trouvé",foundResult_other:"{{count}} résultats trouvés",toggling:"Basculement",toggled:"Basculé",listing:"Listage",listed:"Listé",approvalRequired:"Approbation requise",approve:"Approuver",approving:"Approbation...",reject:"Rejeter",rejected:"rejeté",previousApproval:"Cette demande d'approbation provient d'un message précédent",query:"Requête :",updateWith:"Mettre à jour avec :",importComplete:"Importation terminée",importingData:"Importation des données...",percentComplete:"{{percent}}% terminé",recordsProgress:"{{current}} / {{total}} enregistrements",preparing:"Préparation...",otherToolsAfterApproval:"Les autres outils s'exécuteront après approbation",countPackages:"{{num}} packages :",updateAllEntityRecords:"Mettre à jour tous les enregistrements <entity>{{entityName}}</entity>",updateEntityRecordsMatching:"Mettre à jour les enregistrements <entity>{{entityName}}</entity> correspondant à :",deleteAllEntityRecords:"Supprimer tous les enregistrements <entity>{{entityName}}</entity>",deleteEntityRecordsMatching:"Supprimer les enregistrements <entity>{{entityName}}</entity> correspondant à :",importDataFromInto:"Importer les données de <file>{{fileName}}</file> dans <entity>{{entityName}}</entity>",importDataFromSheetInto:"Importer les données de <file>{{fileName}}</file> (feuille : <sheet>{{sheetName}}</sheet>) dans <entity>{{entityName}}</entity>",countRecordsIntoEntity:"{{num}} enregistrements dans <entity>{{entityName}}</entity>",dataIntoEntity:"données dans <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} enregistrements <entity>{{entityName}}</entity>",allEntityRecords:"tous les enregistrements <entity>{{entityName}}</entity>",entityRecords:"enregistrements <entity>{{entityName}}</entity>",grepSearching:'Recherche de "{{pattern}}"...',grepSearchComplete:"Recherche terminée",grepFoundResults_one:"{{count}} résultat trouvé",grepFoundResults_other:"{{count}} résultats trouvés",grepInFiles_one:"dans {{count}} fichier",grepInFiles_other:"dans {{count}} fichiers"},Hq={agents:Wq,tools:Gq},Yq={title:"Automatisations",subtitle:"Créez et gérez les automatisations de votre application.",newAutomation:"Nouvelle automatisation",chooseAutomation:"Choisir une automatisation",selectHowStarts:"Sélectionnez comment cette automatisation démarre.",scheduled:"Programmée",scheduledDescription:"Exécutez cette automatisation selon un calendrier récurrent ou à une heure précise.",dataEvent:"Événement de données",dataEventDescription:"Exécutez cette automatisation lorsqu'un enregistrement est créé, mis à jour ou supprimé.",connector:"Connecteur",connectorDescription:"Exécutez cette automatisation lorsqu'une intégration connectée envoie un événement.",connectorBetaTooltip:"Ce connecteur est gratuit pendant la bêta.",beta:"Bêta",connectorNewAutomation:"Nouvelle automatisation de connecteur",connectorIntegrationType:"Intégration",connectorSelectIntegration:"Sélectionner une intégration",connectorNoIntegrations:"Aucune intégration connectée",connectorNoIntegrationsHint:"Pour activer l'automatisation, vous devez d'abord créer une intégration.",connectorCreateIntegration:"Créer une intégration",connectorCreateNewIntegration:"Créer une nouvelle intégration",connectorEvents:"Événements",connectorSelectEvents:"Sélectionner les événements à écouter",connectorSelectEvent:"Sélectionner un événement",connectorAvailableEvents:"Événements disponibles ({{count}})",connectorType:"Connecteur",allEvents:"tous les événements",deleteAutomation:"Supprimer l'automatisation ?",deleteAutomationDesc:"Cela supprimera définitivement « {{name}} » et tout son historique d'exécution. Cette action est irréversible.",delete:"Supprimer",deleting:"Suppression...",cancel:"Annuler",copyOutput:"Copier la sortie",scheduledType:"Programmée",dataEventType:"Événement de données",someRunsFailed:"Certaines exécutions ont échoué",reviewLogsOrFix:"Examinez les journaux ou laissez l'IA corriger les erreurs.",fixing:"Correction...",fixWithAI:"Corriger avec l'IA",failedToGetErrorContext:"Échec de l'obtention du contexte d'erreur",logsTab:"Journaux",noLogsYet:"Aucun journal pour le moment",back:"Retour",close:"Fermer",saving:"Enregistrement...",save:"Enregistrer",active:"Actif",archived:"Archivé",archivedAutomations:"Automatisations archivées",nameAndDescription:"Nom et description",typeColumn:"Type",lastRun:"Dernière exécution",failed:"Échoué",loading:"Chargement...",editAutomation:"Modifier l'automatisation",runNow:"Exécuter maintenant",archive:"Archiver",duplicate:"Dupliquer",unlockAutomations:"Débloquer les automatisations",unlockAutomationsDesc:"Pour exécuter des automatisations dans votre application, vous avez besoin des fonctions backend activées. Mettez à niveau pour activer les fonctions backend et commencer à utiliser les automatisations.",enableBackendFunctions:"Activez les fonctions backend pour commencer",enableBackendFunctionsDesc:"Les automatisations exécutent des fonctions backend selon un calendrier ou lors de changements de données. Activez les fonctions backend dans les Paramètres pour utiliser les automatisations.",openSettings:"Ouvrir les paramètres",createBackendFunction:"Créez une fonction backend pour ajouter des automatisations",createBackendFunctionDesc:"Pour créer une automatisation, vous avez d'abord besoin d'une fonction backend dans votre code. Écrivez une fonction backend dans votre code ou demandez de l'aide dans le chat.",noAutomationsYet:"Aucune automatisation pour le moment",noAutomationsDesc:"Créez une automatisation pour exécuter des tâches automatiquement dans votre application.",noArchivedAutomations:"Aucune automatisation archivée",noArchivedDesc:"Les automatisations que vous archivez ou qui atteignent leur date de fin apparaîtront ici.",runAutomation:"Exécuter l'automatisation",selectRecord:"Sélectionnez un enregistrement <entity>{{entity}}</entity> pour exécuter l'automatisation.",searchRecords:"Rechercher des enregistrements {{entity}}...",noRecordsFound:"Aucun enregistrement {{entity}} trouvé.",noRecordsMatch:"Aucun enregistrement ne correspond à « {{query}} »",recordsCount:"{{filtered}} sur {{total}} enregistrements",totalRecords:"{{total}} enregistrements",running:"Exécution...",automationName:"Nom de l'automatisation",describeAutomation:"Décrivez ce que fait cette automatisation.",functionToRun:"Fonction à exécuter",selectFunction:"Sélectionnez une fonction backend de votre code. La fonction recevra les données de l'entité lorsque l'automatisation se déclenchera.",noBackendFunctions:"Aucune fonction backend disponible",selectAFunction:"Sélectionner une fonction",runsWhen:"S'exécute quand",noItems:"Aucun élément",selectItem:"Sélectionner un élément",is:"Est",selectEvent:"Sélectionner un événement",automationNameRequired:"Le nom de l'automatisation est requis.",selectEntity:"Veuillez sélectionner une entité.",selectEventType:"Veuillez sélectionner au moins un type d'événement.",selectFunctionRequired:"Veuillez sélectionner une fonction à exécuter.",newDataAutomation:"Nouvelle automatisation de données",details:"Détails",logsWillAppearAfterFire:"Les journaux apparaîtront ici après le déclenchement de cette automatisation.",selectFunctionFromCode:"Sélectionnez une fonction backend de votre code. Pour ajouter ou modifier une fonction, mettez-la à jour dans votre code ou demandez de l'aide dans le chat.",recurring:"Récurrent",oneTime:"Une seule fois",repeatsEvery:"Se répète tous les",minute:"Minute",hour:"Heure",day:"Jour",week:"Semaine",month:"Mois",startAt:"Début à",at:"À",repeatsOn:"Se répète le",repeatsOnDay:"Se répète le jour",ends:"Fin",never:"Jamais",on:"Le",after:"Après",occurrences:"occurrences",runOn:"Exécuter le",atTime:"À l'heure",oneTimeDateRequired:"Les calendriers uniques nécessitent une date spécifiée.",oneTimeTimeRequired:"Les calendriers uniques nécessitent une heure spécifiée.",oneTimePastError:"La date et l'heure du calendrier unique ne peuvent pas être dans le passé.",minMinutesInterval:"L'intervalle minimum pour les calendriers basés sur les minutes est de {{min}} minutes.",selectDayForWeekly:"Veuillez sélectionner au moins un jour pour le calendrier hebdomadaire.",monthlyDayRequired:"Les calendriers mensuels nécessitent la sélection d'un jour du mois.",endDateRequired:"La date de fin est requise lorsque « Fin » est défini sur « Le ».",endDatePast:"La date de fin ne peut pas être dans le passé.",occurrenceCountMin:"Le nombre d'occurrences doit être d'au moins 1.",newScheduledAutomation:"Nouvelle automatisation programmée",logsWillAppearAfterRun:"Les journaux apparaîtront ici après l'exécution de cette automatisation.",description:"Description",nameField:"Nom",typeField:"Type",automationUpdated:"Automatisation mise à jour avec succès",automationCreated:"Automatisation créée avec succès",failedToSave:"Échec de l'enregistrement de l'automatisation",functionArgs:"Arguments (JSON)",functionArgsPlaceholder:'{"key": "value"}',functionArgsTooltip:"Objet JSON optionnel passé à la fonction comme arguments supplémentaires.",functionArgsInvalidJson:"Les arguments doivent être du JSON valide.",advanced:"Avancé",triggerConditions:"Conditions de déclenchement",conditionsSetByAI:"Les conditions sont configurées par le constructeur IA et ne peuvent pas être modifiées manuellement.",conditionsSummaryError:"Impossible de charger le résumé des conditions.",connectorNoManualIntegrations:"Aucune intégration disponible pour la création manuelle",connectorNoManualIntegrationsHint:"Certaines intégrations nécessitent des conditions de déclenchement et ne peuvent être créées que via le constructeur IA.",suggestedForYou:"Suggestions pour vous",basedOnYourContext:"Basé sur le contexte de votre application",createFromScratch:"Créer à partir de zéro"},Kq={automations:Yq},Zq={title:"Intégrations",myIntegrations:"Mes intégrations",browse:"Parcourir",payments:"Paiements",failedToLoad:"Échec du chargement des connexions de l'application",successfullySwitched:"Compte basculé avec succès vers {{name}}",cancelled:"Annulé",connectionCancelled:"La connexion de l'application a été annulée",disconnected:"{{name}} a été déconnecté",failedToDisconnect:"Échec de la déconnexion de l'application",stripeRemoved:"L'intégration Stripe a été supprimée",wixPaymentsDisconnected:"Wix Payments a été déconnecté",integrationRemoved:"{{name}} a été supprimé",failedToRemove:"Échec de la suppression de l'intégration",connectedAccountsWarning:"Les comptes connectés peuvent exposer des données sensibles à toute personne ayant accès.",unlockFeature:"Débloquer cette fonctionnalité",unlockFeatureDesc:"Cette fonctionnalité est uniquement disponible sur le plan Builder ou supérieur. Mettez à niveau pour continuer à travailler sans limites",upgradeToUseConnector:"Mettre à niveau pour utiliser cette fonctionnalité",access:"Accès {{name}}",disconnectAccount:"Déconnecter le compte ?",disconnectDesc:"L'accès de <bold>{{email}}</bold> sur <bold>{{name}}</bold> sera révoqué.<br/>L'enregistrement d'intégration sera conservé pour une future reconnexion.",disconnecting:"Déconnexion...",disconnect:"Déconnecter",removeIntegration:"Supprimer l'intégration ?",removeDesc:"<bold>{{name}}</bold> sera définitivement supprimé de cette application.<br/>Pour recréer une connexion, vous devrez la configurer depuis le début.",removing:"Suppression...",remove:"Supprimer",cancel:"Annuler",reject:"Rejeter",new:"Nouveau",done:"Terminé",success:"Succès",error:"Erreur",setupIntegrations:"Configurer les intégrations",setupIntegrationsDesc:"Liez facilement votre application à des connecteurs comme Google Calendar, Google Drive, Slack, Notion, Salesforce, HubSpot et plus encore.",setupIntegrationsChat:"Décrivez simplement ce que vous souhaitez connecter dans le chat, et il le configurera pour vous.",viewAccess:"Voir l'accès",connecting:"Connexion...",switchAccount:"Changer de compte",reconnect:"Reconnecter",disconnectAccount2:"Déconnecter le compte",use:"Utiliser",examplePrompts:"Exemples de prompts",clickPromptToAdd:"Cliquez sur un prompt pour l'ajouter à votre chat.",unableToLoadSuggestions:"Impossible de charger les suggestions. Veuillez réessayer plus tard.",requiresBackendFunctions:"Cette intégration nécessite des fonctions backend, une fonctionnalité disponible uniquement sur le niveau Builder et supérieur. ",seePlans:"Voir les plans",promptAddedToChat:"Prompt ajouté au chat. Appuyez sur Entrée pour envoyer.",connectors:"Connecteurs",connectorsDesc:"Connectez votre application à des services populaires avec des connexions OAuth rapides.",searchConnectors:"Rechercher des connecteurs",noSearchResults:"Aucun résultat pour votre recherche",noSearchResultsDesc:"Essayez d'utiliser d'autres mots-clés ou vérifiez l'orthographe. Vous pouvez aussi trier par nom ou ajoutés récemment.",sort:{title:"Trier",mostUsed:"Plus utilisés",recentlyAdded:"Ajoutés récemment",az:"A-Z",za:"Z-A"},revoked:"Révoqué",connectionLost:"La connexion est perdue — veuillez reconnecter",configModal:{connectTo:"Se connecter à {{name}}",configureConnection:"Configurez votre connexion à {{name}}",loadingConfig:"Chargement de la configuration...",retryHint:"Vous pouvez réessayer.",connect:"Connecter",connecting:"Connexion...",validationRequired:"{{name}} est requis",validationInvalid:"{{name}} n'est pas valide",fetchError:"Impossible de charger la configuration.",retry:"Réessayer"},wixPayments:{title:"Wix Payments",live:"En ligne",disconnected:"Déconnecté",acceptingPayments:"Accepte les paiements",integrationDisconnected:"Intégration déconnectée",openingWixPayments:"Ouverture de Wix Payments...",popupBlocked:"Wix Payments a été bloqué par votre navigateur. Utilisez le lien ci-dessous pour ouvrir manuellement le tableau de bord des paiements.",errors:{noUrl:"Impossible d'obtenir l'URL de Wix Payments. Veuillez réessayer.",fetchFailed:"Impossible d'ouvrir Wix Payments. Veuillez réessayer.",invalidRedirect:"Impossible d'ouvrir Wix Payments. Veuillez réessayer."},openDashboard:"Ouvrir le tableau de bord",managePayments:"Gérer les paiements",disconnect:"Déconnecter",disconnectIntegration:"Déconnecter l'intégration ?",disconnectDesc:"<bold>Wix Payments</bold> sera déconnecté de cette application.<br/>Vous pouvez le reconnecter plus tard depuis le chat.",disconnecting:"Déconnexion...",disconnectButton:"Déconnecter",enterNamePrompt:"Veuillez entrer votre nom pour continuer :",firstNamePlaceholder:"Prénom",lastNamePlaceholder:"Nom de famille"},stripe:{unableToClaimSandbox:"Impossible de réclamer le sandbox",sandboxExpired:"Le sandbox a peut-être expiré ou déjà été réclamé. Veuillez rafraîchir la page.",failedGetClaimUrl:"Échec de l'obtention de l'URL de réclamation",pleaseTryAgain:"Veuillez réessayer ou rafraîchir la page.",pendingSetup:"Configuration en attente",completeSetupGuide:"Terminez le guide de configuration pour accepter les paiements réels",live:"En ligne",stripe:"Stripe",loadingStripe:"Chargement...",acceptingPayments:"Accepte les paiements réels",accountDetails:"Détails du compte Stripe",hideGuide:"Masquer le guide",showGuide:"Afficher le guide",goToStripe:"Aller sur Stripe",aboutIntegration:"À propos de l'intégration",aboutStripeIntegration:"À propos de l'intégration Stripe",stripeDesc:"Stripe vous permet d'accepter des paiements, d'envoyer des virements et de gérer votre activité en ligne. Cette intégration vous permet de :",acceptCards:"Accepter les cartes de crédit et autres méthodes de paiement",createProducts:"Créer des produits et des abonnements",manageCustomers:"Gérer les clients et la facturation",close:"Fermer",tryTestPayment:"Essayer un paiement test",claimSandbox:"Réclamez votre sandbox Stripe",addLiveKeys:"Ajoutez vos clés API live depuis Stripe",copiedCard:"Copié !",testCardCopied:"Numéro de carte test copié dans le presse-papiers.",failedToCopy:"Échec de la copie",copyManually:"Veuillez copier manuellement : 4242 4242 4242 4242",keysSaved:"Clés API enregistrées avec succès.",failedSaveKeys:"Échec de l'enregistrement des clés API. Veuillez réessayer.",movedOutOfTestMode:"Vous avez quitté le mode test.",noNeedTestPayments:"Plus besoin d'effectuer des paiements test.",useTestCard:"Utilisez cette carte test pour simuler un achat :",testCardNumber:"4242 4242 4242 4242",anyFutureExpiry:", toute date d'expiration future, tout CVC à 3 chiffres.",publishAndOpen:"Publiez votre application et ouvrez-la dans un nouvel onglet pour tester l'expérience de paiement",copyCardNumber:"Copier le numéro de carte",connectStripeDesc:"Connectez-vous à votre compte Stripe existant ou créez-en un nouveau pour commencer à accepter de vrais paiements.",claimAndGoLive:"Réclamer et passer en production",copyLiveKeys:"Copiez vos clés Publishable et Secret live depuis votre <link>Tableau de bord Stripe</link> pour terminer la configuration et activer les paiements réels dans votre application.",publishableKey:"Clé publique",secretKey:"Clé secrète",enterValue:"Entrez la valeur",savingKeys:"Enregistrement...",saveApiKeys:"Enregistrer les clés API",completeStepInStripe:"Pour terminer cette étape, réclamez le sandbox et terminez la configuration dans Stripe"}},Jq={title:"Intégrations de l'application",subtitle:"Connectez votre application à des services tiers et étendez ses fonctionnalités.",integrationCatalog:"Catalogue d'intégrations",payments:"Paiements",zapier:"Zapier",couldNotLoad:"Impossible de charger les détails de l'intégration. Veuillez réessayer.",loadingDetails:"Chargement des détails...",backToCatalog:"Retour au catalogue",integrationAdded:"Intégration ajoutée (provisoire)",wouldBeAdded:"{{name}} serait ajouté à votre application. Valeurs secrètes enregistrées.",requiresConfiguration:"Configuration requise",requiresSecrets:"Cette intégration nécessite {{count}} valeur(s) secrète(s) à configurer.",addToApp:"Ajouter à l'application",paymentProcessing:"Traitement des paiements",paymentProcessingDesc:"Acceptez des paiements dans votre application avec des processeurs de paiement populaires. Bientôt disponible !",leadingPaymentPlatform:"Plateforme de paiement de référence",globallyRecognized:"Paiements mondialement reconnus",configurePayment:"Configurez les fournisseurs de paiement pour activer les abonnements, les achats uniques et plus encore dans votre application.",zapierIntegration:"Intégration Zapier",zapierDesc:"Connectez votre application à des milliers d'autres services via Zapier.",automateWithZapier:"Automatisez avec Zapier",linkBase44:"Liez Base44 à vos applications favorites comme Slack, Google Sheets, Mailchimp et plus encore.",exploreOnZapier:"Explorer Base44 sur Zapier",configureIntegration:"Configurer {{name}}",configureDesc:"Cette intégration nécessite la configuration de certaines valeurs secrètes. Celles-ci sont stockées de manière sécurisée et chiffrée.",saveAndAdd:"Enregistrer et ajouter l'intégration"},Qq={title:"Compétences",description:"Ajoutez des compétences pour façonner la manière dont l'IA construit vos apps.",manage:"Gérer"},Xq=JSON.parse(`{"title":"Connecteurs","connectorsForAppUsers":"Connecteurs pour les utilisateurs d'apps","connectorsForAppUsersDesc":"Configurez des connecteurs pour que les utilisateurs d'apps puissent lier leurs comptes personnels aux apps de cet espace de travail.","connectorsForAppUsersDialogDesc":"Permettez aux utilisateurs d'apps de connecter leurs comptes personnels aux apps de cet espace de travail.","addConnector":"Ajouter un connecteur","browseConnectors":"Parcourir les connecteurs","noConnectorsYet":"Aucun connecteur pour l'instant","noConnectorsYetDesc":"Ajoutez des connecteurs pour que les utilisateurs d'apps puissent lier leurs comptes personnels.","view":"Voir","edit":"Modifier","connections":"Connexions","addConnection":"Ajouter une connexion","viewConnector":"Voir le connecteur","connectorName":"Nom du connecteur","connector":"Connecteur {{name}}","examplePrompts":"Exemples de prompts","back":"Retour","configureConnection":"Configurez votre connexion","configureConnectionDesc":"Fournissez votre ID client, secret et autorisations.","connectorNameDesc":"Entrez un nom court pour identifier ce connecteur","clientId":"ID client","clientSecret":"Secret client","clientSecrets":"Secrets client","scopes":"Portées","scopesDesc":"Entrez les portées dont votre app a besoin. Écrivez chaque portée sur une ligne séparée.","scopesPlaceholder":"Entrez les portées, une par ligne","scopesPlaceholderExample":"ex.\\nhttps://www.googleapis.com/auth/calendar.readonly\\nemail","connectionConfig":"Configuration de connexion","cancel":"Annuler","close":"Fermer","addingConnector":"Ajout en cours...","savingConnector":"Sauvegarde en cours...","saveChanges":"Sauvegarder les modifications","deleteConnector":"Supprimer le connecteur","deleteConfirm":"Supprimer {{name}} ? Cette action ne peut pas être annulée.","deleting":"Suppression en cours...","addConnectionTitle":"Ajouter une connexion {{name}}","editConnectionTitle":"Modifier la connexion {{name}}","connectorReadOnly":"Connecteur {{name}}","readOnlyDesc":"Vue en lecture seule des détails du connecteur","builtInConnectors":"Connecteurs intégrés","promptExamples":"Exemples de prompts pour commencer","adminOnlyTooltip":"Seuls les administrateurs ou propriétaires d'espace de travail peuvent connecter des intégrations pour les utilisateurs d'apps","settingUp":"Configuration du connecteur en cours...","configured":"Connecteur configuré","setUp":"Configurer le connecteur d'utilisateur d'app {{type}}","setUpGeneric":"Configurer le connecteur d'utilisateur d'app","connecting":"Connexion en cours...","connect":"Se connecter","reject":"Rejeter","workspaceLevelNote":"Cette intégration sera accessible au niveau de l'espace de travail et appliquée à toutes les applications créées dans cet espace de travail.","previousMessage":"Cette configuration de connecteur provient d'un message précédent","toastErrorTitle":"Erreur","toastCreated":"Connecteur créé","toastCreateFailed":"Échec de la création du connecteur","toastDuplicateName":"Un connecteur avec ce nom existe déjà dans cet espace de travail","toastUpdated":"Connecteur mis à jour","toastUpdateFailed":"Échec de la mise à jour du connecteur","toastDeleted":"Connecteur supprimé","toastDeleteFailed":"Échec de la suppression du connecteur","configFetchFailed":"Échec du chargement de la configuration de connexion. Des champs obligatoires peuvent être manquants.","retry":"Réessayer","toastLoadFailed":"Échec du chargement des connecteurs OAuth","namePlaceholder":"ex. Marketing {{label}}","clientIdPlaceholder":"Entrez l'ID client OAuth","clientSecretPlaceholderNew":"Entrez le nouveau secret client","clientSecretPlaceholder":"Entrez le secret client OAuth","extraDetails":{"googlecalendar":{"longDescription":"Connectez-vous à Google Calendar pour permettre aux utilisateurs de votre app de consulter, créer et gérer des événements de calendrier. Synchronisez les agendas, automatisez la création de réunions à partir de soumissions de formulaires et créez des workflows de planification.","examplePrompt0":"Synchroniser les réunions à venir sur un tableau de bord dans l'app.","examplePrompt1":"Créer des événements de calendrier à partir de soumissions de formulaires.","examplePrompt2":"Afficher une vue de l'agenda du jour pour l'utilisateur connecté.","examplePrompt3":"Envoyer des rappels avant les événements à venir."},"slack":{"longDescription":"Connectez-vous à Slack pour partager des messages et créer des canevas directement afin de simplifier la collaboration et augmenter la productivité. Recherchez et récupérez des messages, canaux, fils de discussion, fichiers et utilisateurs, donnant à Claude le contexte pour optimiser votre travail.","examplePrompt0":"Synchroniser les nouveaux utilisateurs de l'app dans un canal Slack.","examplePrompt1":"Envoyer les mises à jour de statut de build dans #devops.","examplePrompt2":"Publier les erreurs de l'app dans le canal #alertes.","examplePrompt3":"Notifier l'équipe lors d'un nouveau retour client."},"salesforce":{"longDescription":"Connectez-vous à Salesforce pour accéder aux contacts, prospects, opportunités et objets personnalisés. Permettez aux utilisateurs de votre app de consulter et mettre à jour leurs données CRM, de suivre les affaires et d'automatiser les workflows de vente.","examplePrompt0":"Afficher un tableau de bord des opportunités ouvertes.","examplePrompt1":"Créer un nouveau prospect à partir d'une soumission de formulaire.","examplePrompt2":"Synchroniser les mises à jour de contacts vers Salesforce.","examplePrompt3":"Notifier l'équipe quand une affaire est conclue."},"hubspot":{"longDescription":"Connectez-vous à HubSpot pour gérer les contacts, entreprises, affaires et campagnes marketing. Permettez aux utilisateurs de votre app de synchroniser leurs données CRM, de suivre l'engagement et d'automatiser les workflows marketing.","examplePrompt0":"Afficher une liste des affaires récentes dans l'app.","examplePrompt1":"Ajouter de nouveaux contacts à partir de formulaires d'inscription.","examplePrompt2":"Synchroniser les résultats de campagnes e-mail sur un tableau de bord.","examplePrompt3":"Mettre à jour les étapes des affaires depuis l'app."},"notion":{"longDescription":"Connectez-vous à Notion pour accéder aux pages, bases de données et contenus de l'espace de travail. Permettez aux utilisateurs de votre app de lire et mettre à jour leur espace Notion, de synchroniser des données structurées et d'automatiser les workflows de contenu.","examplePrompt0":"Récupérer les listes de tâches d'une base de données Notion.","examplePrompt1":"Créer de nouvelles pages à partir de soumissions de formulaires.","examplePrompt2":"Synchroniser les mises à jour de statut de projet vers Notion.","examplePrompt3":"Afficher le contenu Notion dans l'app."},"slackbot":{"longDescription":"Connectez un bot Slack pour publier des messages en tant que bot personnalisé avec un nom et une icône de marque. Répondez aux mentions de l'app, utilisez des commandes slash et automatisez des workflows centrés sur le bot dans votre espace de travail Slack.","examplePrompt0":"Publier des résumés quotidiens de standup dans #général.","examplePrompt1":"Répondre aux commandes slash avec les données de l'app.","examplePrompt2":"Envoyer des alertes automatiques quand des tâches sont en retard.","examplePrompt3":"Notifier les canaux quand de nouvelles commandes arrivent."},"googledrive":{"longDescription":"Connectez-vous à Google Drive pour télécharger, organiser et gérer des fichiers. Permettez aux utilisateurs de votre app d'enregistrer des documents générés, de sauvegarder des données et d'accéder à leurs fichiers Drive directement depuis votre app.","examplePrompt0":"Enregistrer les rapports générés dans un dossier Drive partagé.","examplePrompt1":"Télécharger les fichiers soumis par les utilisateurs vers Google Drive.","examplePrompt2":"Lister les fichiers récents d'un dossier spécifique.","examplePrompt3":"Sauvegarder automatiquement les exports de données de l'app sur Drive."},"gmail":{"longDescription":"Connectez-vous à Gmail pour envoyer, lire et gérer des e-mails de manière programmatique. Permettez aux utilisateurs de votre app d'automatiser les workflows d'e-mails, de lire les messages de la boîte de réception et d'envoyer des e-mails personnalisés depuis leur propre compte.","examplePrompt0":"Envoyer un e-mail de confirmation après une soumission de formulaire.","examplePrompt1":"Afficher les derniers messages de la boîte de réception de l'utilisateur.","examplePrompt2":"Répondre automatiquement aux e-mails correspondant à certains critères.","examplePrompt3":"Rédiger et envoyer des e-mails de prospection personnalisés."},"googlesheets":{"longDescription":"Connectez-vous à Google Sheets pour lire, écrire et mettre à jour les données de feuilles de calcul. Permettez aux utilisateurs de votre app de synchroniser les enregistrements, d'importer des données depuis des feuilles et d'exporter les données de l'app vers leurs feuilles de calcul.","examplePrompt0":"Importer les données produits depuis une feuille Google Sheets.","examplePrompt1":"Exporter les rapports de ventes quotidiens vers une feuille de calcul.","examplePrompt2":"Synchroniser les soumissions de formulaires vers une feuille de suivi.","examplePrompt3":"Lire les données tarifaires depuis une feuille de calcul partagée."},"googleslides":{"longDescription":"Connectez-vous à Google Slides pour créer et modifier des présentations. Permettez aux utilisateurs de votre app de générer des présentations à partir de modèles, d'ajouter du contenu dynamique et d'automatiser la création de présentations.","examplePrompt0":"Générer un pitch deck à partir des données d'un formulaire.","examplePrompt1":"Ajouter une nouvelle diapositive avec les métriques hebdomadaires.","examplePrompt2":"Créer des présentations à partir de modèles de rapports.","examplePrompt3":"Mettre à jour le contenu des diapositives avec les dernières données."},"googledocs":{"longDescription":"Connectez-vous à Google Docs pour créer, lire et modifier des documents. Permettez aux utilisateurs de votre app de générer des contrats, de remplir des modèles et de gérer des documents directement depuis votre app.","examplePrompt0":"Générer un contrat à partir d'un modèle.","examplePrompt1":"Créer des notes de réunion à partir des données d'un formulaire.","examplePrompt2":"Remplir un modèle de document avec les informations de l'utilisateur.","examplePrompt3":"Ajouter du nouveau contenu à un document existant."},"googlebigquery":{"longDescription":"Connectez-vous à Google BigQuery pour exécuter des requêtes SQL et analyser de grands ensembles de données. Permettez aux utilisateurs de votre app d'interroger leur entrepôt de données, de créer des tableaux de bord et d'intégrer des analyses dans votre app.","examplePrompt0":"Interroger les données de ventes et les afficher dans un graphique.","examplePrompt1":"Extraire les analyses utilisateur depuis les tables BigQuery.","examplePrompt2":"Exécuter un rapport planifié depuis les données de l'entrepôt.","examplePrompt3":"Afficher les produits les plus performants à partir des résultats de requêtes."},"linkedin":{"longDescription":"Connectez-vous à LinkedIn pour accéder aux données de profil et partager des publications. Permettez aux utilisateurs de votre app de publier des mises à jour, de récupérer des profils professionnels et d'automatiser les workflows de réseaux sociaux sur LinkedIn.","examplePrompt0":"Publier automatiquement les actualités de l'entreprise sur LinkedIn.","examplePrompt1":"Récupérer les détails du profil de l'utilisateur connecté.","examplePrompt2":"Partager des articles de blog sur LinkedIn depuis l'app.","examplePrompt3":"Afficher les informations du profil LinkedIn sur un tableau de bord."},"tiktok":{"longDescription":"Connectez-vous à TikTok pour accéder aux informations de profil, aux statistiques d'abonnés et aux données vidéo. Permettez aux utilisateurs de votre app de suivre leurs performances TikTok et de parcourir leurs vidéos publiées.","examplePrompt0":"Afficher le nombre d'abonnés et les statistiques du profil.","examplePrompt1":"Lister les vidéos TikTok les plus récentes de l'utilisateur.","examplePrompt2":"Afficher les métriques de performance vidéo sur un tableau de bord.","examplePrompt3":"Suivre la croissance des abonnés dans le temps."},"discord":{"longDescription":"Connectez-vous à Discord pour envoyer des messages, gérer des serveurs et interagir avec les guildes et les canaux. Permettez aux utilisateurs de votre app d'automatiser les notifications, de publier des mises à jour et de s'intégrer à leur communauté Discord.","examplePrompt0":"Envoyer des notifications de commande dans un canal Discord.","examplePrompt1":"Publier les alertes de l'app dans un canal #notifications.","examplePrompt2":"Lister les canaux disponibles d'un serveur Discord.","examplePrompt3":"Notifier l'équipe quand un nouvel utilisateur s'inscrit."},"wix":{"longDescription":"Connectez-vous à Wix pour accéder aux données du site, gérer le contenu et interagir avec les solutions business de Wix comme Stores, Bookings et CRM. Permettez aux utilisateurs de votre app de synchroniser les produits, commandes et données clients.","examplePrompt0":"Synchroniser les produits de la boutique Wix dans l'app.","examplePrompt1":"Récupérer les commandes récentes depuis Wix Stores.","examplePrompt2":"Afficher la disponibilité des réservations depuis Wix Bookings.","examplePrompt3":"Gérer les contacts Wix CRM depuis votre app."},"github":{"longDescription":"Connectez-vous à GitHub pour accéder aux dépôts, gérer les issues et pull requests et automatiser les workflows de développement. Permettez aux utilisateurs de votre app de suivre les modifications de code, de créer des issues et de rationaliser leur processus de développement.","examplePrompt0":"Lister les issues ouvertes d'un dépôt.","examplePrompt1":"Créer une nouvelle issue à partir d'un formulaire de rapport de bug.","examplePrompt2":"Afficher les pull requests récentes sur un tableau de bord.","examplePrompt3":"Suivre l'activité des commits à travers les dépôts."},"wrike":{"longDescription":"Connectez-vous à Wrike pour gérer les projets, les tâches et la collaboration d'équipe. Permettez aux utilisateurs de votre app de créer et mettre à jour des tâches, de suivre la progression des projets et de coordonner le travail entre les équipes.","examplePrompt0":"Créer des tâches à partir de soumissions de formulaires.","examplePrompt1":"Afficher les calendriers de projet sur un tableau de bord.","examplePrompt2":"Mettre à jour le statut des tâches depuis l'app.","examplePrompt3":"Afficher la charge de travail de l'équipe et les attributions de tâches."},"box":{"longDescription":"Connectez-vous à Box pour télécharger, gérer et partager des fichiers et dossiers. Permettez aux utilisateurs de votre app de stocker des documents en toute sécurité, d'organiser des fichiers et de collaborer sur du contenu dans Box.","examplePrompt0":"Télécharger les documents générés dans un dossier Box.","examplePrompt1":"Lister les fichiers d'un répertoire Box partagé.","examplePrompt2":"Télécharger des fichiers depuis Box dans l'app.","examplePrompt3":"Partager un lien de fichier Box avec les membres de l'équipe."},"clickup":{"longDescription":"Connectez-vous à ClickUp pour gérer les tâches, les projets et les workflows d'équipe. Permettez aux utilisateurs de votre app de créer des tâches, de mettre à jour les statuts et de suivre la progression des projets directement depuis votre app.","examplePrompt0":"Créer des tâches ClickUp à partir de soumissions de formulaires.","examplePrompt1":"Afficher le statut du tableau de tâches sur un tableau de bord.","examplePrompt2":"Mettre à jour les priorités des tâches depuis l'app.","examplePrompt3":"Lister les tâches en retard pour le sprint en cours."},"google_analytics":{"longDescription":"Connectez-vous à Google Analytics pour accéder aux données de trafic web, de comportement utilisateur et de performance marketing. Permettez aux utilisateurs de votre app de consulter les rapports d'analyse et de suivre les métriques clés depuis votre app.","examplePrompt0":"Afficher les pages vues et les sessions sur un tableau de bord.","examplePrompt1":"Afficher les principales sources de trafic de la semaine passée.","examplePrompt2":"Suivre les taux de conversion à travers les campagnes.","examplePrompt3":"Extraire les données démographiques et de comportement des utilisateurs."},"outlook":{"longDescription":"Connectez-vous à Outlook pour envoyer et lire des e-mails, gérer les événements de calendrier et accéder à la messagerie et au calendrier Microsoft 365. Permettez aux utilisateurs de votre app d'automatiser les workflows d'e-mails et de synchroniser leur agenda.","examplePrompt0":"Envoyer des e-mails de relance depuis l'app.","examplePrompt1":"Afficher les événements de calendrier à venir.","examplePrompt2":"Créer des événements de calendrier à partir de soumissions de formulaires.","examplePrompt3":"Afficher les e-mails récents sur un tableau de bord."},"linear":{"longDescription":"Connectez-vous à Linear pour créer et gérer les issues, projets et cycles. Permettez aux utilisateurs de votre app de suivre les workflows d'équipe, d'organiser les sprints et de rester informés de la progression de l'ingénierie.","examplePrompt0":"Créer des issues Linear à partir de formulaires de rapport de bugs.","examplePrompt1":"Afficher les issues du sprint actif sur un tableau de bord.","examplePrompt2":"Mettre à jour le statut des issues depuis l'app.","examplePrompt3":"Suivre la progression des cycles et la vélocité de l'équipe."},"dropbox":{"longDescription":"Connectez-vous à Dropbox pour télécharger, télécharger et gérer des fichiers et dossiers. Permettez aux utilisateurs de votre app de stocker des fichiers dans le cloud, de synchroniser des données et d'accéder à leur contenu Dropbox depuis votre app.","examplePrompt0":"Télécharger les rapports exportés vers Dropbox.","examplePrompt1":"Lister les fichiers d'un dossier Dropbox spécifique.","examplePrompt2":"Télécharger les fichiers partagés dans l'app.","examplePrompt3":"Synchroniser les sauvegardes de données de l'app vers Dropbox."}},"builtIn":{"sendEmail":{"name":"Envoyer des e-mails","rowDescription":"Envoyez des e-mails aux personnes dans votre app Base44 avec des noms d'expéditeur personnalisables et du contenu HTML enrichi.","subtitle":"Envoyez des e-mails automatisés à vos utilisateurs directement depuis votre app.","longDescription":"Envoyez des e-mails automatiquement depuis votre app dans le cadre de workflows ou d'automatisations. Cette intégration peut être déclenchée depuis des flux, des fonctions backend ou des agents pour envoyer des notifications telles que des confirmations, des alertes, des résumés ou des liens d'accès aux utilisateurs.","examplePrompt0":"Quand un ticket de support est mis à jour en « résolu », utilisez SendEmail pour notifier le demandeur avec un résumé de la résolution.","examplePrompt1":"Créez une automatisation hebdomadaire qui utilise SendEmail pour envoyer aux admins un résumé des nouvelles commandes et métriques clés.","examplePrompt2":"Ajoutez un flux quotidien qui utilise SendEmail pour envoyer aux admins un résumé des nouvelles inscriptions dans cette app.","examplePrompt3":"Créez une automatisation qui utilise SendEmail pour rappeler aux utilisateurs 24 heures avant leur rendez-vous réservé."},"uploadFile":{"name":"Télécharger un fichier","rowDescription":"Permettez aux utilisateurs de télécharger des fichiers dans votre app. Utilisez l'URL du fichier renvoyée dans d'autres intégrations ou workflows.","subtitle":"Permettez aux utilisateurs de télécharger des fichiers dans votre app. Utilisez l'URL du fichier renvoyée dans d'autres intégrations ou workflows.","longDescription":"Permettez aux utilisateurs de télécharger des fichiers dans votre app et de les joindre à des enregistrements. Cette intégration alimente les composants de téléchargement pour que vous puissiez collecter des documents, images, reçus, contrats, captures d'écran, photos de profil, fichiers CSV ou feuilles de calcul, et stocker uniquement l'URL sécurisée du fichier dans vos données.","examplePrompt0":"Ajoutez un champ de téléchargement de fichier à ce formulaire en utilisant Télécharger un fichier et enregistrez l'URL du fichier sur l'enregistrement associé.","examplePrompt1":"Créez une page où les utilisateurs peuvent télécharger des photos de profil avec Télécharger un fichier et stocker l'URL de l'image sur leur entité utilisateur.","examplePrompt2":"Configurez une zone de téléchargement pour les fichiers CSV en utilisant Télécharger un fichier afin que je puisse importer ces fichiers plus tard dans mes tables de données."},"invokeLlm":{"name":"Invoquer le LLM","rowDescription":"Générez des réponses IA en utilisant des modèles de langage intégrés, des prompts, des fichiers et des sorties structurées.","subtitle":"Générez des réponses IA en utilisant des modèles de langage intégrés, des prompts, des fichiers et des sorties structurées.","longDescription":"Utilisez un modèle de langage pour générer des réponses à partir de prompts. Cette intégration peut renvoyer des sorties JSON structurées, analyser des images, utiliser des fichiers joints comme contexte et effectuer des recherches web si nécessaire. Elle peut être utilisée pour alimenter des agents, des workflows et d'autres fonctionnalités pilotées par l'IA dans votre app.","examplePrompt0":"Générez des réponses IA à partir des entrées utilisateur en utilisant Invoquer le LLM et affichez la réponse sur cette page.","examplePrompt1":"Utilisez Invoquer le LLM pour résumer les longs messages de feedback en trois points clés stockés sur chaque enregistrement de Feedback.","examplePrompt2":"Ajoutez une fonctionnalité « réécrire ce texte » qui envoie le texte de l'utilisateur à Invoquer le LLM et renvoie une version plus claire et conviviale.","examplePrompt3":"Utilisez Invoquer le LLM pour classifier chaque ticket de support comme « bug », « demande de fonctionnalité » ou « question » et enregistrer l'étiquette sur le ticket."},"generateImage":{"name":"Générer une image","rowDescription":"Créez des images à partir de descriptions textuelles détaillées. Renvoie une URL vers l'image générée.","subtitle":"Fournissez simplement un prompt textuel décrivant l'image souhaitée, et il renvoie une URL vers l'image générée.","longDescription":"Générez des images à l'aide de l'IA à partir de prompts textuels ou de flux dans votre app. Cette intégration permet à votre app de créer des images de couverture, des miniatures, des avatars, des placeholders de produits ou des visuels marketing simples à la demande sans connecter un fournisseur d'images externe.","examplePrompt0":"Utilisez Générer une image pour créer une image produit par défaut quand un nouveau produit est ajouté sans photos.","examplePrompt1":"Ajoutez une fonctionnalité où les utilisateurs peuvent entrer une courte description et Générer une image renvoie une URL d'image de couverture enregistrée sur leur publication.","examplePrompt2":"Créez un flux qui utilise Générer une image pour générer des images d'avatar pour les nouveaux utilisateurs en fonction de leur couleur ou thème préféré."},"extractData":{"name":"Extraire des données de fichiers téléchargés","rowDescription":"Extrayez des données structurées de fichiers téléchargés (CSV, PNG, JPG, JPEG, PDF) à l'aide de schémas JSON. Utile pour l'importation en masse de données.","subtitle":"Extrayez des données structurées de fichiers téléchargés (CSV, PNG, JPG, JPEG, PDF) à l'aide de schémas JSON. Utile pour l'importation en masse de données.","longDescription":"Extrayez automatiquement des données structurées des fichiers téléchargés dans votre app et stockez-les dans vos entités. Cette intégration lit les documents et feuilles de calcul et transforme leur contenu en champs structurés que vous pouvez utiliser dans des enregistrements, rapports ou automatisations.","examplePrompt0":"Quand quelqu'un télécharge une facture PDF, utilisez Extraire des données pour récupérer le fournisseur, le montant total et la date d'échéance dans une entité Factures.","examplePrompt1":"Utilisez Extraire des données pour lire un CSV de contacts et créer un enregistrement de contact par ligne.","examplePrompt2":"Après qu'un utilisateur télécharge une image de reçu, utilisez Extraire des données pour extraire le commerçant, la date et les articles dans un enregistrement structuré de Dépenses."},"whatsapp":{"name":"WhatsApp","rowDescription":"Connectez votre agent à WhatsApp pour que les utilisateurs puissent envoyer des messages à l'agent de votre app directement depuis leur téléphone, sans ouvrir l'app.","subtitle":"Connectez votre agent à WhatsApp pour que les utilisateurs puissent envoyer des messages à l'agent de votre app directement depuis leur téléphone, sans ouvrir l'app.","longDescription":"Connectez votre agent à WhatsApp pour que les utilisateurs puissent envoyer des messages à l'agent de votre app directement depuis leur téléphone. Utilisez cette intégration pour gérer le support, collecter des données ou envoyer des mises à jour via WhatsApp pendant que l'agent accède aux données et workflows de votre app en arrière-plan.","examplePrompt0":"Connectez mon agent de support à WhatsApp pour que les clients puissent poser des questions là-bas et que l'agent réponde en utilisant les connaissances de mon app.","examplePrompt1":"Configurez un flux WhatsApp où les nouveaux messages créent ou mettent à jour des enregistrements dans mon entité Contacts et l'agent confirme les détails.","examplePrompt2":"Quand le statut d'une commande passe à « expédié », faites que l'agent envoie un message WhatsApp avec le lien de suivi et les informations clés de la commande."}}}`),e4={title:"Connecteurs pour les utilisateurs d'apps",description:"Configurez des connecteurs pour que les utilisateurs d'apps puissent lier leurs comptes personnels.",manage:"Gérer"},t4={connections:Zq,integrations:Jq,skillsBanner:Qq,oauthConnectors:Xq,oauthConnectorsBanner:e4},a4={importSuccessful:"Importation réussie",importSuccessfulMsg:"{{count}} enregistrements {{name}} importés avec succès",importFailed:"Échec de l'importation",exportSuccessful:"Exportation réussie",exportSuccessfulMsg:"Entités exportées en CSV avec succès",exportFailed:"Échec de l'exportation",moveAllToTrash:"Déplacer tous les enregistrements vers la corbeille",moveAllToTrashConfirm:"Êtes-vous sûr de vouloir déplacer tous les enregistrements vers la corbeille ? Vous pourrez les restaurer ultérieurement depuis la corbeille.",moveToTrash:"Déplacer vers la corbeille",success:"Succès",allMovedToTrash:"Tous les enregistrements ont été déplacés vers la corbeille avec succès",error:"Erreur",add:"Ajouter",addItem:"Ajouter un élément",import:"Importer",export:"Exporter",schema:"Schéma",recentlyDeleted:"Supprimés récemment",deleteAll:"Tout supprimer",permissions:"Permissions",permissionsDesc:"Créez des règles pour contrôler qui peut lire et écrire des enregistrements. Plusieurs règles sont combinées avec une logique OU.",saveRules:"Enregistrer les règles",permissionsIssueDetected:"Problème de permissions détecté",learnMoreAboutPermissions:"<a>En savoir plus <icon/></a> sur les permissions et les règles de sécurité",customize:"Personnaliser",apply:"Appliquer",checkingPermissions:"Vérification de la sécurité des permissions",failedCheckPermissions:"Échec de la vérification des permissions",permissionsCheckPassed:"Vérification des permissions réussie",recommendedRules:"Règles recommandées",editRecord:"Modifier {{entity}}",addNewRecord:"Ajouter un nouveau {{entity}}",test:"Test",production:"Production",filters:"Filtres",schemaEditor:"Éditeur de schéma",noRecordsFound:"Aucun enregistrement trouvé",getStartedAdding:"Commencez par ajouter votre premier enregistrement.",loadingEntity:"Chargement de {{entity}}..."},n4={production:"Production",test:"Test"},i4={back:"Retour",trashTitle:"{{entity}} : Corbeille",test:"(Test)",production:"(Production)",trashDescription:`Afficher, restaurer ou supprimer définitivement des éléments.
Les éléments sont définitivement supprimés après 30 jours.`,permanentlyDelete:"Supprimer définitivement l'enregistrement",permanentlyDeleteConfirm:"Êtes-vous sûr de vouloir supprimer définitivement cet enregistrement ? Cette action est irréversible.",deletePermanently:"Supprimer définitivement",restoreSelected:"Restaurer les enregistrements sélectionnés",restoreSelectedConfirm:"Êtes-vous sûr de vouloir restaurer {{count}} enregistrement(s) sélectionné(s) ?",restore:"Restaurer",restoreAll:"Restaurer tous les enregistrements",restoreAllConfirm:"Êtes-vous sûr de vouloir restaurer tous les enregistrements de la corbeille ?",restoreAllBtn:"Tout restaurer",deletedDate:"Date de suppression",actions:"Actions",failedToLoad:"Échec du chargement des enregistrements supprimés",tryAgain:"Réessayer",loadingDeleted:"Chargement des enregistrements supprimés...",noDeletedRecords:"Aucun enregistrement supprimé trouvé",restoreCount:"Restaurer {{count}} sélectionné(s)",restoring:"Restauration..."},r4={data:a4,toolbar:n4,trash:i4},o4=JSON.parse(`{"title":"Domaines","subtitle":"Achetez, connectez et gérez vos domaines.","learnMore":"En savoir plus","expired":"Expiré il y a {{days}} jours","expiresIn":"Expire dans {{days}} jours","lastChecked":"Dernière vérification : {{time}}","domainLinked":"Domaine lié","domainLinkedMsg":"Le domaine a été lié à votre projet","errorLinkingDomain":"Erreur lors de la liaison du domaine","linking":"Liaison...","linkDomain":"Lier le domaine","checkStatus":"Vérifier le statut","checking":"Vérification...","verifyDomain":"Vérifier","verifying":"Vérification...","unlinkDomain":"Délier le domaine","unlinking":"Déliaison...","unlinked":"Délié","domainActive":"Domaine actif","waitingDns":"En attente de la propagation DNS","verified":"Vérifié","error":"Erreur","pending":"En attente","domainUnlinked":"Domaine délié","domainUnlinkedMsg":"Le domaine a été délié de votre projet","errorUnlinkingDomain":"Erreur lors de la déliaison du domaine","domainDeleted":"Domaine supprimé","errorDeletingDomain":"Erreur lors de la suppression du domaine","errorCheckingStatus":"Erreur lors de la vérification du statut","verificationInitiated":"Vérification lancée","checkBackMinutes":"Veuillez revenir vérifier dans quelques minutes","errorVerifyingDomain":"Erreur lors de la vérification du domaine","deleteDomain":"Supprimer le domaine","deleteConfirm":"Êtes-vous sûr de vouloir supprimer ?","deleting":"Suppression...","unlinkDialogDescription":"Ce domaine a été acheté via Base44.\\n\\nIl restera listé parmi vos domaines mais ne sera plus connecté à votre projet.","wantToUseDomain":"Vous souhaitez utiliser votre domaine ?","customDomainsAvailable":"Les domaines personnalisés sont disponibles sur le plan Builder et supérieur.<br/>Mettez à niveau pour connecter votre domaine à cette application.","viewPlans":"Voir les plans","getNewDomain":"Obtenir un nouveau domaine","getNewDomainDescription":"Donnez un aspect professionnel à votre application avec un domaine unique.","suggestedForApp":"Suggéré pour votre application : <bold>{{domain}}</bold>","suggestedForApp_prefix":"Suggéré pour votre application :","buyNewDomain":"Acheter un nouveau domaine","buyAnother":"Acheter un autre","buyThisDomain":"Acheter ce domaine","orConnectExisting":"Ou connectez un domaine existant que vous possédez déjà","connectExistingDomain":"Connecter un domaine existant","getYourCustomDomain":"Obtenez votre domaine personnalisé","upgradeDescription":"Les domaines personnalisés sont disponibles sur le plan Builder et supérieur.","upgradeYourPlan":"Mettez à niveau votre plan","processing":"Traitement...","loading":"Chargement...","domainLimitReached":"Limite de domaines atteinte","domainLimitMsg":"Vous avez atteint le maximum de {{max}} domaines pour cette application ({{current}}/{{max}}).\\nVeuillez en supprimer avant d'en ajouter de nouveaux.","noCustomDomainYet":"Vous n'avez pas encore connecté de domaine personnalisé","connectDescription":"Connectez votre application Base44 à votre propre domaine pour mettre votre marque en avant et rendre votre application facile à trouver et à partager.","buyDomain":"Acheter un domaine","neverExpires":"N'expire jamais","editUrl":"Modifier l'URL","domainPurchased":"Domaine acheté !","domainPurchasedMsg":"Votre domaine {{domain}} a été acheté avec succès. En attente de son apparition dans vos domaines...","domainPurchaseFailed":"Échec de l'achat du domaine","purchaseFailedMsg":"Échec de l'achat pour {{domain}}.","domainLimitReachedToast":"Limite de domaines atteinte","domainLimitToastMsg":"Vous ne pouvez avoir que {{max}} domaines par application. Veuillez d'abord en supprimer.","domainAddedSuccessfully":"Domaine ajouté avec succès.","verifyToComplete":"Veuillez vérifier votre domaine pour terminer la configuration.","failedToConnect":"Échec de la connexion de votre domaine","connectYourDomain":"Connecter","builtInDomain":"URL intégrée","customDomains":"Domaines personnalisés","adminCanAdd":"Admin : peut ajouter n'importe quel domaine","domainDisabled":"Domaine désactivé","domainEnabled":"Domaine activé","domainDisabledMsg":"Le domaine a été désactivé et ne servira plus de trafic.","domainEnabledMsg":"Le domaine a été réactivé et recommencera à servir le trafic.","errorTogglingDomain":"Erreur lors du changement d'état du domaine","disabledBadge":"Désactivé","enableDomain":"Activer","disableDomain":"Désactiver","enableDomainTitle":"Activer le domaine (admin)","disableDomainTitle":"Désactiver le domaine (admin)","errorFetchingDomains":"Erreur lors de la récupération des domaines","cancel":"Annuler","cannotPurchase":"Impossible d'acheter le domaine","domainPurchaseDisabled":"L'achat de domaines est actuellement désactivé","entriNotReady":"Entri n'est pas encore prêt. Veuillez réessayer dans un moment.","errorPurchasingDomain":"Erreur lors de l'achat du domaine","loadingEntri":"Chargement d'Entri...","addNewDomain":"Ajouter un nouveau domaine","enterDomainFormat":"Entrez votre nom de domaine ci-dessous. Assurez-vous qu'il respecte le format : app.example.com","enterDomainPlaceholder":"Entrez le domaine (ex. : app.example.com)","invalidDomain":"Cela ne ressemble pas à un domaine valide.\\nEntrez un domaine valide, ex. : example.com ou app.example.com.","domainAlreadyConnected":"Ce domaine est déjà connecté à votre application.","configureDnsAtRegister":"Configurer le DNS chez le registraire","addDomain":"Ajouter le domaine","adding":"Ajout...","domainConnectionNeeded":"Connexion du domaine nécessaire","retryFromEmailSettings":"Veuillez réessayer depuis les paramètres de domaine e-mail.","emailDomainSubmitted":"Domaine e-mail soumis.","addDnsRecords":"Veuillez ajouter les enregistrements DNS à votre fournisseur de domaine.","verificationMayTake48h":"La vérification peut prendre jusqu'à 48 heures.","senderDetailsUpdated":"Détails de l'expéditeur mis à jour.","editSenderDetails":"Modifier les détails de l'expéditeur","setSenderDetails":"Définir vos détails d'expéditeur","saveChanges":"Enregistrer les modifications","connectDomain":"Connecter le domaine","saving":"Enregistrement...","connecting":"Connexion...","usersWillGetEmails":"Vos utilisateurs recevront des e-mails avec ces détails d'expéditeur.","senderName":"Nom de l'expéditeur","customAddress":"Adresse personnalisée","noReply":"no-reply","noReplyEmailAddress":"no-reply@base44-apps.com","domain":"Domaine","copyToClipboard":"Copier dans le presse-papiers","addCnameRecord":"Ajouter un enregistrement CNAME : ","wwwToDomain":"www → base44.onrender.com","addAnameRecord":"Ajouter un enregistrement ANAME/ALIAS : ","emptyOrAtDomain":"vide ou @ → base44.onrender.com","ifNoAnameSupport":"Si votre fournisseur DNS ne prend pas en charge ANAME/ALIAS, utilisez un enregistrement A :","aRecordIp":"@ → 216.24.57.1","removeAaaaRecords":"Supprimez tous les enregistrements AAAA de votre domaine lors de la configuration DNS. Les enregistrements AAAA correspondent à une adresse IPv6, et Base44 utilise IPv4. Ces enregistrements peuvent provoquer un comportement inattendu pour votre domaine personnalisé.","dnsChangesNote":"Veuillez noter qu'après l'ajout des enregistrements DNS, les changements peuvent mettre du temps à se propager sur Internet. Pendant ce temps, le domaine peut ne pas fonctionner correctement.","addDnsRecordsFor":"1. Ajoutez ces enregistrements DNS à votre fournisseur de domaine pour ","type":"Type","nameColumn":"Nom","hostColumn":"Hôte","tabAnameAlias":"ANAME/ALIAS","tabARecord":"Enregistrement A","addRecordsStepIntro":"Ajoutez ces enregistrements dans le tableau de bord de votre fournisseur pour terminer la configuration :","removeAaaaShort":"Supprimez les enregistrements AAAA (IPv6), car ils peuvent bloquer les connexions.","customDomainStep2Verify":"Une fois tous les enregistrements mis à jour dans le tableau de bord de votre fournisseur, cliquez sur « <bold>Vérifier le domaine</bold> ». La propagation des changements DNS peut prendre jusqu’à 48 à 78 heures.","closeModal":"Fermer","verifyDomainButton":"Vérifier le domaine","dnsTargetFallback":"base44.onrender.com","value":"Valeur","onceConfiguredVerify":"2. Une fois configuré, cliquez sur « <bold>Vérifier</bold> » sur la carte du domaine e-mail pour vérifier la configuration. Les changements DNS peuvent prendre jusqu'à 48-78 heures pour se propager.","emailDnsChangesNote":"Veuillez noter qu'après l'ajout des enregistrements DNS, les changements peuvent prendre jusqu'à 48 heures pour se propager. Pendant ce temps, les e-mails seront envoyés depuis l'adresse e-mail actuelle.","configureDnsForEmail":"Configurer le DNS pour le domaine e-mail","connectDomainDns":"Connectez votre domaine via votre fournisseur DNS","followInstructions":"Suivez les instructions ci-dessous pour configurer les enregistrements DNS.","addRecordsInProvider":"Ajoutez ces enregistrements dans le tableau de bord de votre fournisseur pour terminer la configuration.","done":"Terminé","needHelp":"Besoin d'aide ? Créez un ticket sur ","supportSystem":"système de support","urlUpdated":"URL mise à jour","customUrlRemoved":"URL personnalisée supprimée. Votre application est maintenant disponible à {{url}}","appAvailableAt":"Votre application est maintenant disponible à {{url}}","urlAlreadyTaken":"Cette URL est déjà prise. Essayez une des suggestions ci-dessous ou saisissez une autre URL.","urlAlreadyTakenNoSuggestions":"Cette URL est déjà prise. Veuillez essayer une autre URL.","suggestedAlternatives":"Alternatives disponibles :","urlReserved":"Cette URL est réservée. Veuillez en essayer une autre.","urlInvalid":"Cette URL est invalide. Veuillez en essayer une autre.","slugInvalidClient":"Cette URL est invalide. Utilisez uniquement des lettres minuscules, des chiffres et des tirets.","slugResetToDefault":"Slug réinitialisé par défaut","errorResettingSlug":"Erreur lors de la réinitialisation du slug","failedResetSlug":"Échec de la réinitialisation du slug par défaut","editUrlTitle":"Modifier l'URL","builtInDomainLabel":"URL intégrée Base44","resetToDefault":"Réinitialiser par défaut","urlEditingRequiresPlan":"La modification de l'URL nécessite un plan starter. ","upgradeToPremium":"Passer au plan Premium","changing":"Modification...","change":"Modifier","emailDomain":"Domaine e-mail","sendingFromDefault":"L'envoi depuis le domaine par défaut coûte 1 crédit d'intégration par e-mail. L'utilisation d'un domaine personnalisé coûte 2 crédits d'intégration.","useCustomDomain":"Utilisez votre domaine personnalisé","sendingFrom":"Nom de l'expéditeur : {{name}}","connectDomainForCustom":"Connectez un domaine pour utiliser une adresse d'expéditeur personnalisée.","buyADomain":"Acheter un domaine","dnsConfiguration":"Configuration DNS","pleaseWaitTryAgain":"Veuillez patienter un moment et réessayer.","dnsConfigFailed":"Échec de la configuration DNS","dnsPleaseTryLater":"Veuillez réessayer plus tard.","verificationFailed":"Échec de la vérification","dnsNotVerified":"Les enregistrements DNS ne sont pas encore vérifiés. Veuillez vérifier votre configuration DNS et réessayer.","domainVerificationFailed":"Échec de la vérification du domaine","couldntVerifyDns":"Nous n'avons pas pu vérifier vos enregistrements DNS. Veuillez les vérifier et réessayer.","completeSetup":"Terminer la configuration","opening":"Ouverture...","cancelling":"Annulation...","connectionFailed":"Échec de la connexion","retry":"Réessayer","retrying":"Nouvelle tentative...","couldntCompleteDns":"Impossible de terminer la configuration DNS. Veuillez réessayer.","couldntConnectEmail":"Impossible de connecter le domaine au fournisseur d'e-mail. Veuillez réessayer.","pendingVerification":"Vérification en attente","emailBeingVerified":"Votre adresse e-mail est en cours de vérification.","makeSureDnsCorrect":"Assurez-vous que les enregistrements DNS ont été correctement ajoutés à votre fournisseur de domaine.","verify":"Vérifier","notConfigured":"Non configuré","active":"Actif","editSenderDetailsAction":"Modifier les détails de l'expéditeur","detachCustomDomain":"Détacher le domaine personnalisé","suspended":"Suspendu","disabled":"Désactivé","blocked":"Bloqué","propagationBlocked":"Propagation bloquée","propagationBlockedTooltip":"La propagation DNS peut prendre du temps. Comparez vos enregistrements DNS avec nos instructions si le problème persiste.","pendingConnection":"Connexion en attente","completeSetupToSend":"Terminez la configuration pour commencer à envoyer des e-mails depuis votre domaine. Les e-mails sont actuellement envoyés depuis ","emailCurrentlySentFrom":"Votre adresse e-mail est en cours de vérification. Les e-mails sont actuellement envoyés depuis ","dnsNotVerifiedYet":"Les enregistrements DNS n'ont pas encore été vérifiés. Assurez-vous qu'ils sont correctement configurés, puis cliquez sur « Vérifier ».","couldntConnectMakeSure":"Impossible de connecter le domaine au fournisseur d'e-mail. Assurez-vous que les enregistrements DNS ont été correctement ajoutés à votre fournisseur de domaine et réessayez.","base44Domain":"Domaine Base44","maxDomainsReached":"Maximum de {{max}} domaines atteint pour cette application","viewDnsRecords":"Voir les enregistrements DNS","upgradeBannerText":"Les domaines personnalisés nécessitent un plan Builder ou supérieur. Mettez à niveau pour les activer.","upgradeToUseDomain":"Mettez à niveau votre plan pour utiliser ce domaine.","emailDomainPurchasedOnly":"La configuration du domaine e-mail n'est actuellement disponible que pour les domaines achetés via Base44.","save":"Enregistrer","urlHint":"Utilisez uniquement des lettres minuscules, des chiffres et des tirets","copyUrl":"Copier l'URL","builtInUrlTooltip":"Votre application sera toujours disponible à cette URL.","builderPlanRequired":"Cette fonctionnalité est disponible sur notre plan Builder et supérieur.","somethingWentWrong":"Une erreur s'est produite","failedToGetPurchaseConfig":"Échec de la récupération de la configuration d'achat","errorEnablingEmail":"Erreur lors de l'activation du domaine e-mail","failedToEnableEmail":"Impossible d'activer le domaine e-mail","errorUpdatingSenderDetails":"Erreur lors de la mise à jour des détails de l'expéditeur","failedToUpdateSenderDetails":"Impossible de mettre à jour les détails de l'expéditeur","errorReplacingDomain":"Erreur lors du remplacement du domaine","failedToReplaceDomain":"Impossible de remplacer le domaine","failedToAddDomain":"Impossible d'ajouter le domaine","processingPurchase":"Traitement de l'achat...","subscriptionRequired":"Abonnement requis"}`),s4={domains:o4},l4={title:"Explorateur de journaux",subtitle:"Surveillez les journaux système de votre application.",refresh:"Actualiser",loadingLogs:"Chargement des journaux...",pleaseWait:"Veuillez patienter pendant que nous récupérons vos journaux",failedToLoad:"Échec du chargement des journaux",errorFetching:"Une erreur s'est produite lors de la récupération des journaux. Veuillez réessayer.",noLogsMatchFilters:"Aucun journal ne correspond à vos filtres",tryAdjusting:"Essayez d'ajuster vos filtres",noLogsFound:"Aucun journal trouvé",logsWillAppear:"Les journaux apparaîtront ici lorsque de l'activité se produira",tryAgain:"Réessayer",resetFilters:"Réinitialiser les filtres",details:"Détails",outputs:"Sorties",errorTab:"Erreur",noAdditionalDetails:"Aucun détail supplémentaire disponible.",clearFilters:"Effacer les filtres",filterByEmail:"Filtrer par e-mail...",errorsOnly:"Erreurs uniquement",allEvents:"Tous les événements",typeColumn:"Type",userColumn:"Utilisateur",timestamp:"Horodatage"},c4={title:"Analytique",publishToCollect:"Publiez votre application pour commencer à collecter des données."},d4={title:"Documentation API",subtitle:"Référence complète de l'API de votre application. Utilisez la spécification OpenAPI avec n'importe quel client API ou outil de documentation.",downloadSpec:"Télécharger la spécification OpenAPI",copyForLLM:"Copier pour IA",copyForLLMTooltip:"Copier la documentation Markdown adaptée à l'IA dans le presse-papiers",copied:"Copié !",codeExamplesIn:"Exemples de code en :",authTitle:"Authentification",authDescription:"Toutes les requêtes API nécessitent un en-tête api_key. Vous pouvez trouver votre clé API dans votre profil utilisateur, ou la récupérer programmatiquement via User.me() dans le SDK de l'application.",sdkAuthDescription:"Installez le SDK Base44 et initialisez le client avec l'ID de votre application. Le SDK gère l'authentification et fournit des méthodes typées pour toutes les opérations d'entités et les fonctions backend.",entitiesTitle:"Endpoints des Entités",schema:"Schéma",endpoints:"Endpoints",copyAll:"Tout copier",copyEntity:"Copier l'entité",functionsTitle:"Fonctions Backend",functionsDescription:"Invoquez vos fonctions backend déployées via HTTP. Chaque fonction accepte n'importe quelle charge utile JSON et retourne la réponse de la fonction.",agentTitle:"Agent d'App",agentDescription:"Interagissez avec l'agent IA de votre application via des conversations. Créez une conversation, envoyez des messages et recevez les réponses de l'agent.",copy:"Copier",parameters:"Paramètres",loading:"Chargement de la documentation de l'API...",error:"Impossible de charger la documentation de l'API. Veuillez réessayer."},u4={logs:l4,analytics:c4,api:d4},p4={error:"Erreur",appStillLoading:"L'application est encore en cours de chargement... nom non mis à jour",appNameEmpty:"Le nom de l'application ne peut pas être vide",removedFromFavorites:"Retiré des favoris",addedToFavorites:"Ajouté aux favoris",removedDescription:"Application retirée de votre liste de favoris",addedDescription:"Application ajoutée à votre liste de favoris",descriptionUpdated:"Description mise à jour",descriptionUpdatedMsg:"La description de votre application a été mise à jour avec succès",failedUpdateDescription:"Échec de la mise à jour de la description de l'application",openApp:"Ouvrir l'application",shareApp:"Partager l'application",winFreeCredits:"gagnez des crédits gratuits !",appVisibility:"Visibilité de l'application",controlAccess:"Contrôlez qui peut accéder à votre application",inviteUsers:"Inviter des utilisateurs",growUserBase:"Développez votre base d'utilisateurs en invitant d'autres personnes",copyLink:"Copier le lien",copied:"Copié !",sendInvites:"Envoyer les invitations",paymentsViaStripe:"Paiements via Stripe",pendingSetup:"Configuration en attente",completeSetupGuide:"Terminez le guide de configuration pour accepter les paiements réels",live:"En ligne",testModeMessage:"Vous êtes toujours en mode test. Terminez la configuration pour commencer à recevoir des paiements.",readyForPayments:"Votre application est prête à accepter les paiements via Stripe.",continueSetup:"Continuer la configuration",payments:"Paiements",poweredByWix:"Propulsé par Wix",manage:"Gérer",openingWixPayments:"Ouverture de Wix Payments...",wixPaymentsErrors:{noUrl:"Impossible d'obtenir l'URL de Wix Payments. Veuillez réessayer.",fetchFailed:"Impossible d'ouvrir Wix Payments. Veuillez réessayer.",invalidRedirect:"Impossible d'ouvrir Wix Payments. Veuillez réessayer."},disconnected:"Déconnecté",wixPaymentsDashboardError:"Échec de l'ouverture du tableau de bord Wix Payments",platformBadge:"Badge de la plateforme",badgeVisible:"Le badge « Modifier avec Base44 » est actuellement visible sur votre application.",hideBadge:"Masquer le badge",editAppNameAccessibilityLabel:"Modifier le titre",editAppDescription:"Modifier la description de l'application",descriptionPrompt:"Fournissez une brève description de l'objectif et des fonctionnalités de votre application.",describeYourApp:"Décrivez votre application...",cancel:"Annuler",save:"Enregistrer",created:"Créé {{time}}"},m4={overview:p4},g4={title:"Sécurité de l'application",subtitle:"Configurez les politiques de sécurité au niveau des lignes pour contrôler l'accès aux données de votre application",scanIssues:"Analyser les problèmes",scanTime:"L'analyse prend généralement quelques minutes",scanning:"Analyse en cours",startSecurityCheck:"Lancer la vérification de sécurité",scanResults:"Résultats de l'analyse",rlsRecommendations:"Recommandations RLS",rlsRecommendationsFound:"{{count}} recommandation(s) RLS trouvée(s),",viewRecommendations:"Voir les recommandations",noRlsRecommendations:"Aucune recommandation RLS trouvée",secrets:"Secrets",exposedSecretsFound:"{{count}} secrets exposés trouvés",noExposedSecrets:"Aucun secret exposé trouvé",backendFunctions:"Fonctions backend",unauthenticatedFunctions:"{{count}} fonctions backend non authentifiées trouvées",noUnauthenticatedFunctions:"Aucune fonction backend non authentifiée trouvée",dataEntities:"Entités de données",entitiesCount:"{{count}} entités",scanComplete:"Analyse de sécurité terminée",reviewFindings:"Examinez les résultats ci-dessous.",scanFailed:"Échec de l'analyse de sécurité",ruleSaved:"Règle enregistrée pour {{entity}}",ruleSavedMsg:"La règle recommandée a été enregistrée.",failedToSaveRule:"Échec de l'enregistrement de la règle",createAccess:"Accès en création",readAccess:"Accès en lecture",updateAccess:"Accès en modification",deleteAccess:"Accès en suppression",removeAllRules:"Supprimer toutes les règles de sécurité",removeAllRulesConfirm:"Cela supprimera toutes les règles de sécurité pour cette entité, permettant à tous les utilisateurs d'accéder à tous les enregistrements. Voulez-vous continuer ?",removeAllRulesBtn:"Supprimer toutes les règles",securityRules:"Règles de sécurité : {{entity}}",securityRulesTitle:"Règles de sécurité",securityRulesDesc:"Créez des règles pour contrôler qui peut lire et écrire des enregistrements. Plusieurs règles sont combinées avec une logique OU.",publicAccess:"Accès public",publicAccessDesc:"Actuellement, tous les utilisateurs peuvent accéder à tous les enregistrements de cette entité. Il n'y a aucune restriction d'accès.",createAccessRules:"Créer des règles d'accès",create:"Créer",read:"Lire",update:"Mettre à jour",deleteAction:"Supprimer",crudRules:"Règles {{crud}}",addRule:"Ajouter une règle",generatedRules:"Règles {{crud}} générées (JSON)",saveSecurityRules:"Enregistrer les règles de sécurité",crudAccessRules:"Règles d'accès {{crud}}",configurePermissions:"Configurer les permissions pour chaque action",generatedJsonPreview:"JSON généré (Aperçu)",saveRules:"Enregistrer les règles",rlsRecommendation:"Recommandation RLS",dismiss:"Ignorer",applyFixes:"Appliquer les corrections",restricted:"Restreint",public:"Public",fullAccess:"Tous les utilisateurs ont un accès complet",createLabel:"Création :",readLabel:"Lecture :",updateLabel:"Modification :",deleteLabel:"Suppression :",noRestrictions:"Aucune restriction",allUsersCanAccess:"Tous les utilisateurs peuvent accéder aux enregistrements",creatorOnly:"Créateur uniquement",creatorOnlyDesc:"Les utilisateurs ne peuvent accéder qu'aux enregistrements qu'ils ont créés",entityUserComparison:"Comparaison entité-utilisateur",entityUserComparisonDesc:"Comparer un champ de cette entité avec une propriété de l'utilisateur",entityField:"Champ de l'entité",fieldInEntity:"Champ de l'entité à comparer",userField:"Champ de l'utilisateur",fieldFromUser:"Champ de l'utilisateur à comparer",userPropertyCheck:"Vérification de la propriété utilisateur",userPropertyCheckDesc:"Vérifier si une propriété de l'utilisateur correspond à une valeur spécifique",userProperty:"Propriété utilisateur",selectUserProperty:"Sélectionner la propriété utilisateur",userRole:"Rôle utilisateur",userEmail:"E-mail utilisateur",fullName:"Nom complet",requiredValue:"Valeur requise",selectRole:"Sélectionner le rôle",adminRole:"Administrateur",userRoleOption:"Utilisateur",noRestrictionsLabel:"Aucune restriction",creatorOnlyLabel:"Créateur uniquement",adminOnlyLabel:"Administrateur uniquement",filePath:"Fichier : {{path}}",severityCritical:"Critique",severityHigh:"Élevé",securityScanLabel:"Analyse de sécurité",upToDate:"À jour",upToDateTooltip:"Aucun changement affectant la sécurité n'a été effectué depuis la dernière vérification",outOfDate:"Obsolète",outOfDateTooltip:"Des changements affectant la sécurité ont été effectués depuis la dernière vérification. Veuillez lancer une nouvelle analyse de sécurité.",runSecurityScan:"Lancer l'analyse de sécurité",securityPageTitle:"Sécurité",securityPageSubtitle:"Gérez vos permissions et règles de sécurité. <a>En savoir plus <icon/></a>",issuesDetails:"Détails des problèmes",rlsIssuesTitle_one:"{{count}} Problème RLS",rlsIssuesTitle_other:"{{count}} Problèmes RLS",rlsIssuesSubtitle:"Activez la sécurité au niveau des lignes pour protéger vos données",exposedSecretsTitle_one:"{{count}} Secret Exposé",exposedSecretsTitle_other:"{{count}} Secrets Exposés",exposedSecretsSubtitle:"Sécurisez et renouvelez tout secret exposé pour protéger votre application et vos données.",unauthBackendTitle_one:"{{count}} Fonction Backend Non Authentifiée",unauthBackendTitle_other:"{{count}} Fonctions Backend Non Authentifiées",unauthBackendSubtitle:"Protégez les endpoints des tâches backend avec l'authentification.",noIssuesFound:"Aucun problème trouvé. La sécurité de votre app semble bonne, mais continuez à la vérifier régulièrement pour rester protégé.",recommendedRulesLabel:"Règles recommandées :",fix:"Corriger",fixAll:"Tout Corriger",missingRlsRules:"{{entity}} n'a pas de règles RLS",customizeSuggestion:"Personnaliser la suggestion",goToEntityPage:"Aller à la page de l'entité",ruleColumnHeader:"Règle",allUsers:"Tous les utilisateurs",fieldComparison:"Comparaison de Champ",noScanTitle:"Vérifiez la sécurité de votre application",noScanDescription:"Examinez votre configuration, identifiez les risques potentiels et apprenez comment renforcer la protection de votre application",checkSecurity:"Vérifier la sécurité",back:"Retour",cancel:"Annuler"},h4={title:"Secrets de l'application",secretDeleted:"Secret supprimé",errorDeletingSecret:"Erreur lors de la suppression du secret",secretUpdated:"Secret mis à jour",errorUpdatingSecret:"Erreur lors de la mise à jour du secret",newSecretValue:"Nouvelle valeur du secret",save:"Enregistrer",cancel:"Annuler",addSecret:"Ajouter un secret",addNewSecret:"Ajouter un nouveau secret",addNewSecretDescription:"Entrez le nom et la valeur de votre secret ci-dessous. Les secrets sont chiffrés et stockés de manière sécurisée.",secretName:"Nom du secret",secretNamePlaceholder:"Entrez le nom du secret (ex. : API_KEY)",secretNameNoSpaces:"Le nom du secret ne peut pas contenir d'espaces. Utilisez des underscores à la place (ex. : API_KEY).",secretValue:"Valeur du secret",secretValuePlaceholder:"Entrez la valeur du secret",adding:"Ajout...",aboutSecretsManagement:"À propos de la gestion des secrets",secretsDescription:"Les secrets sont des variables d'environnement contenant des informations sensibles comme les clés API, les jetons et les mots de passe. Ils sont chiffrés au repos et injectés de manière sécurisée dans votre application lors de l'exécution.",secretsBullet1:"Les secrets sont utilisés par vos fonctions backend pour accéder aux services externes",secretsBullet2:"Tous les secrets sont chiffrés et stockés de manière sécurisée",secretsBullet3:"Vous pouvez ajouter, mettre à jour ou supprimer des secrets selon les besoins de votre application",needHelp:"Besoin d'aide ?",supportSystem:"Ouvrez un ticket d'assistance",configuredSecrets:"Secrets configurés",noSecretsYet:"Aucun secret configuré pour le moment. Ajoutez votre premier secret pour commencer.",secretAddedSuccessfully:"Secret ajouté avec succès",errorCreatingSecret:"Erreur lors de la création du secret",errorFetchingSecrets:"Erreur lors de la récupération des secrets"},f4={security:g4,secrets:h4},v4={mainPage:"Page principale",mainPageDesc:"Définissez la page d'accueil par défaut de votre application",selectMainPage:"Sélectionner la page principale",appVisibility:"Visibilité de l'application",controlAccess:"Contrôlez qui peut accéder à votre application",platformBadge:"Badge de la plateforme",platformBadgeDesc:"Afficher ou masquer le badge « Modifier avec Base44 » sur votre application.",onlyForPaying:"Disponible uniquement pour les utilisateurs payants.",upgradeNow:"Mettre à niveau maintenant",visible:"Visible",hidden:"Masqué",hideEntityCreator:"Masquer le créateur d'entité",hideEntityCreatorDesc:"Masquer qui a créé chaque enregistrement dans les tables de données de votre application. Lorsque cette option est activée, le champ « créé par » ne sera pas affiché aux utilisateurs.",aiAgents:"Agents IA",aiAgentsDesc:"Intégrez des agents IA dans votre application grâce à l'infrastructure d'agents IA de Base44",aiAgentsEnabled:"Agents IA activés",aiAgentsEnabledDesc:"Votre application a maintenant accès à l'infrastructure d'agents IA de Base44. Vous pouvez créer des agents intelligents qui peuvent aider les utilisateurs avec diverses tâches, répondre aux questions et interagir avec les données de votre application. Utilisez le chat pour créer et configurer vos agents.",testData:"Données de test",testDataDesc:"Utilisez les données de test pour tester les modifications en toute sécurité sans affecter les données en production.",onlyForBuilder:"Disponible uniquement pour le plan Builder et supérieur.",testDataVersionNote:"Pour utiliser cette fonctionnalité, vous aurez besoin d'une version plus récente de votre application. Faites simplement un changement — envoyez un message à l'IA, modifiez du code ou utilisez l'éditeur visuel — et c'est parti.",cloneApp:"Cloner l'application",cloneAppDesc:"Créer un duplicata de cette application",githubConnectionIssue:"Problème de connexion GitHub. Veuillez reconnecter pour cloner cette application.",cantCloneOldInfra:`Vous ne pouvez pas cloner une application sur l'ancienne infrastructure.
Mettez à jour l'infrastructure pour cloner votre application.`,createCopy:"Créer une copie",backendFunctions:"Fonctions backend",backendFunctionsDesc:"Activer les fonctionnalités côté serveur • Recommandé pour les développeurs",activating:"Activation...",activated:"Activé",activate:"Activer",upgradePlan:"Mettre à niveau le plan",dangerZone:"Zone de danger",dangerZoneDesc:"Actions irréversibles qui affectent votre application",deleteApp:"Supprimer l'application",deleteAppDesc:"Supprimer définitivement cette application et toutes ses données",adminControls:"Contrôles administrateur",adminControlsDesc:"Gérer la disponibilité de l'application",unblockApp:"Débloquer l'application",blockApp:"Bloquer l'application",appLogo:"Logo de l'application",editLogo:"Modifier le logo",appDescription:"Description de l'application",saveDescription:"Enregistrer la description",describeYourApp:"Décrivez votre application..."},b4={editAppLogo:"Modifier le logo de l'application",uploadLogo:"Télécharger le logo",generateLogo:"Générer le logo",dragAndDrop:"Glissez-déposez ou cliquez pour télécharger",clickToUpload:"Cliquez pour télécharger ou glissez-déposez",pngJpgLimit:"PNG, JPG jusqu'à 5 Mo",upload:"Télécharger",whatShouldLook:"À quoi devrait ressembler votre logo ?",generating:"Génération...",generateNew:"Générer un nouveau logo",cancel:"Annuler",save:"Enregistrer",logoPrompt:"Prompt de génération du logo",describeLogo:"Décrivez comment vous voulez que votre logo apparaisse",uploading:"Téléchargement...",selectImage:"Sélectionner une image"},y4={removeListingConfirm:"Êtes-vous sûr de vouloir supprimer cette annonce ? Cette action la retirera des modèles d'applications.",listingRemoved:"Annonce supprimée du catalogue avec succès",appTemplates:"Modèles d'applications",listedFor:"Listé à {{price}} $ • {{sales}} ventes • {{status}}",manageTemplate:"Gérer votre annonce de modèle",shareTemplate:"Partagez votre modèle avec la communauté pour que d'autres puissent le découvrir et l'utiliser.",manageListing:"Gérer l'annonce",publishToTemplates:"Publier dans les modèles d'applications",seeOnTemplates:"Voir dans les modèles d'applications",removingListing:"Suppression...",removeFromTemplates:"Retirer des modèles d'applications",salesRevenue:"{{sales}} ventes • {{revenue}} $ de revenus",publishedToTemplates:"Publié dans les modèles d'applications",rejectedReason:"Motif du rejet : {{reason}}"},k4={public:"Public",private:"Privé",workspace:"Espace de travail",requireLogin:"Connexion requise pour accéder"},w4={notAvailableOnMobile:"La gestion de {{feature}} n'est pas disponible sur mobile",loginFromDesktop:"Veuillez vous connecter depuis un navigateur de bureau",okay:"D'accord",domains:"domaines",security:"sécurité",code:"code",apiFeature:"API",templates:"modèles"},A4={settings:v4,logo:b4,catalog:y4,visibility:k4,desktop:w4},S4={title:"Utilisateurs",subtitle:"Gérer les utilisateurs de l'application et leurs rôles",inviteUser:"Inviter un utilisateur",schema:"Schéma",searchByEmailOrName:"Rechercher par e-mail ou nom",pendingRequests:"Demandes en attente",userSchemaEditor:"Éditeur de schéma utilisateur",editUser:"Modifier l'utilisateur",loadingUsers:"Chargement des utilisateurs...",noUsersFound:"Aucun utilisateur trouvé",noPendingRequests:"Aucune demande en attente",noPendingRequestsDesc:"Il n'y a actuellement aucune demande d'accès en attente d'approbation",inviteYourFirstUser:"Invitez votre premier utilisateur",getStartedByInviting:"Commencez par inviter votre premier utilisateur dans l'application.",tryAdjustingSearch:"Essayez d'ajuster votre recherche ou vos filtres pour trouver ce que vous cherchez.",moreActions:"Plus d'actions",resendInvitation:"Renvoyer l'invitation",cancelInvite:"Annuler l'invitation",editUserAction:"Modifier l'utilisateur",changeOwner:"Changer le propriétaire",makeAppOwner:"Désigner comme propriétaire de l'application",resendOwnershipRequest:"Renvoyer la demande de propriété",cancelOwnershipRequest:"Annuler la demande de propriété",changeRole:"Changer le rôle",selectNewRole:"Sélectionnez un nouveau rôle pour {{name}} :",back:"Retour",manageInvitation:"Gérer l'invitation",approve:"Approuver",reject:"Rejeter",unknown:"Inconnu",admin:"Administrateur",user:"Utilisateur",allRoles:"tous les rôles",name:"Nom",owner:"Propriétaire",pendingOwnership:"Propriété en attente",role:"Rôle",email:"E-mail",hasntLoggedIn:"{{role}} ne s'est pas encore connecté à l'application.",userRemovedSuccess:"Utilisateur supprimé avec succès",failedCancelInvitation:"Échec de l'annulation de l'invitation",userLoggedInSinceRefresh:"Cet utilisateur s'est connecté depuis votre dernier rafraîchissement. Rafraîchissez la page pour voir son statut mis à jour avant de réessayer.",failedRemoveUser:"Échec de la suppression de l'utilisateur",subscriptionRequired:"Abonnement requis",onlyPayingCanAdmin:"Seuls les utilisateurs payants peuvent attribuer le rôle d'administrateur.",upgradeSubscription:"Mettez à niveau votre abonnement",toContinue:"pour continuer.",userUpdatedSuccess:"Utilisateur mis à jour avec succès",userApprovedSuccess:"Utilisateur approuvé avec succès",failedApproveRequest:"Échec de l'approbation de la demande d'accès",invitationRejected:"Invitation rejetée",failedDenyRequest:"Échec du refus de la demande d'accès",invitationResentSuccess:"Invitation renvoyée avec succès",failedResendInvitation:"Échec du renvoi de l'invitation",emailSent:"E-mail envoyé",ownershipTransferResent:"L'invitation de transfert de propriété a été renvoyée.",transferCancelled:"Transfert annulé",ownershipTransferCancelled:"Le transfert de propriété a été annulé.",failedCancelTransfer:"Échec de l'annulation du transfert",cancelInviteAction:"Annuler l'invitation",removeUser:"Supprimer l'utilisateur",failedApproveUser:"Échec de l'approbation de l'utilisateur",success:"Succès",error:"Erreur",save:"Enregistrer",deleteConfirm:"Êtes-vous sûr de vouloir supprimer cet enregistrement ?",deleteFailed:"Échec de la suppression"},C4={users:S4},D4="Contenu social",T4="Obtiens un plan de promotion social et du contenu prêt à publier.",E4="Chargement du contenu social",P4={title:"Une erreur est survenue",description:"Une erreur inattendue s'est produite. Rafraîchis la page.",tryAgain:"Réessayer"},_4={emptyTitle:"Fais la promotion de ton app sur les réseaux sociaux",emptyDescription:"Nous analyserons ton app et créerons des publications prêtes à être partagées.",getStarted:"Créer mon plan de contenu",learnMore:"En savoir plus",emptyCheck1:"Définis ce que tu veux accomplir",emptyCheck2:"Choisis les meilleurs canaux pour ton app",emptyCheck3:"Obtiens des idées de posts personnalisées prêtes à partager",analyzingBase:"Analyse de ton app",analyzingDescription:"Découverte de ton app : ce qu'elle fait, à qui elle s'adresse et comment la promouvoir.",combiningBase:"Création de ta stratégie de contenu",combiningDescription:"Nous façonnons ton message et sélectionnons les bons canaux pour ton lancement.",planStep1:"Application de ta stratégie",planStep2:"Adaptation du contenu pour chaque plateforme",planStep3:"Rédaction des textes de posts",planStep4:"Création des visuels pour tes posts",stepOf:"Étape {{current}} sur {{total}}"},x4={letsGo:"C'est parti",next:"Suivant",back:"Retour",creatingPlan:"Création de ton contenu...",creatingPlanBase:"Création de ton contenu",strategyReady:"Stratégie suggérée"},I4={emptyTitle:"Prêt à promouvoir ton app ?",emptyDescription:"Réponds aux questions pour personnaliser ton contenu.",generateNewPlan:"Générer un nouveau plan",downloadContent:"Télécharger le contenu",downloading:"Téléchargement...",startFresh:"Recommencer"},R4={copy:"Copier",copied:"Copié",copiedToClipboard:"Copié dans le presse-papiers",failedToCopy:"Échec de la copie",cancel:"Annuler",save:"Enregistrer",imageGenerationFailed:"La génération de l'image a échoué",retryImage:"Réessayer",download:"Télécharger l'image",expandImage:"Voir en taille réelle",close:"Fermer",regenerateImage:"Régénérer l'image",imageRefinePlaceholder:"Que souhaites-tu modifier ?",imageAlt:"Visuel de la publication",share:"Partager",editPostTitle:"Modifier la publication",descriptionLabel:"Description",imageLabel:"Image",improveWithAI:"Améliorer avec l'IA",refineInputPlaceholder:"Que souhaites-tu modifier ?",saveChanges:"Enregistrer les modifications"},z4={handle:"tonprofil",displayName:"Ton Nom"},M4={reviewTitle:"Vérifie ta stratégie suggérée",goalLabel:"Ton objectif",approachLabel:"Approche suggérée",strategyLabel:"La stratégie",showMore:"Voir plus",showLess:"Voir moins",platformsLabel:"Plateformes cibles",platformsDescription:"Nous avons présélectionné les meilleures plateformes pour ton business.",editSelection:"Modifier la sélection",selectPlatforms:"Choisis tes plateformes",maxPlatforms:"Jusqu'à 3 plateformes",toneLabel:"Adapter ton ton (optionnel)",toneDescription:"Colle le lien vers ton profil social et nous adapterons les posts à ton ton.",generatePosts:"Générer les posts"},N4={resetTitle:"Générer un nouveau plan ?",resetDescription:"On va générer un tout nouveau plan pour toi. Tes publications et modifications actuelles seront remplacées et ne pourront pas être récupérées.",cancel:"Annuler",resetConfirm:"Générer un nouveau plan",upgradeTitle:"Crédits d'intégration insuffisants",upgradeDescription:"Tu n'as pas assez de crédits d'intégration pour cette action. Améliore ton abonnement pour en obtenir plus.",upgradeAction:"Améliorer"},F4={sendFailed:"Une erreur est survenue",sendFailedDescription:"Impossible de contacter l'IA. Réessaie.",postUpdated:"Publication mise à jour",postUpdateFailed:"Échec de la mise à jour de la publication",postRefined:"Publication affinée",refineFailed:"Impossible d'affiner la publication",refineFailedDescription:"L'IA n'a pas pu appliquer les modifications. Réessaie.",imageGenerated:"Image générée !",imageGenerateFailed:"Impossible de générer l'image",imageGenerateFailedDescription:"Un problème est survenu lors de la génération. Réessaie.",planReset:"Contenu réinitialisé – prêt pour un nouveau départ",planResetFailed:"Échec de la réinitialisation",insufficientCredits:"Crédits d'intégration insuffisants",insufficientCreditsDescription:"Tes crédits d'intégration sont épuisés. Améliore ton abonnement pour en obtenir plus.",downloadPartial:"Impossible de tout télécharger",downloadPartialDescription:"Certaines images n'ont pas pu être téléchargées. Réessaie."},L4={pageTitle:D4,pageSubtitle:T4,loadingBase:E4,errorBoundary:P4,wizard:_4,steps:x4,toolbox:I4,post:R4,mock:z4,strategy:M4,dialog:N4,toast:F4},j4={overview:"Vue d'ensemble",users:"Utilisateurs",data:"Données",analytics:"Analytique",domains:"Domaines",integrations:"Intégrations",security:"Sécurité",code:"Code",agents:"Agents",automations:"Automatisations",logs:"Journaux",api:"API",settings:"Paramètres",appSettings:"Paramètres de l'application",authentication:"Authentification",appTemplate:"Modèle d'application",secrets:"Secrets",backToEditor:"Retour à l'éditeur",codeFiles:"Fichiers de code",search:"Rechercher...",clearSearch:"Effacer la recherche",virality:"Contenu social"},O4="Chargement des données de l'application...",B4="Corbeille : {{entityName}}",U4={issuesFound:"Problèmes détectés",inComponent:"Dans le composant {{componentName}} :",resolving:"Résolution...",resolveWithAI:"Résoudre avec l'IA",noCreditDeduction:"Cette action ne déduira pas de crédits de votre compte."},q4={loadingCheckpoint:"Chargement du code du point de contrôle...",errorFetchingFiles:"Erreur lors de la récupération des fichiers",backToPreview:"Retour à l'aperçu"},V4={letsBuild:"Construisons votre application",tellMeCreate:"Dites-moi ce que vous souhaitez créer via le chat",loadingApp:"Chargement de votre application",buildingPreview:"Construction de l'aperçu",previewPreparing:"L'aperçu de votre application est en cours de préparation.",mayTakeMoment:"Cela peut prendre un moment.",previewUnavailable:"Aperçu indisponible",previewCouldntLoad:"L'aperçu de cette version n'a pas pu être chargé.",retryBuild:"Réessayer la construction",buildingIdea:"Construction de votre idée",didYouKnow:"Le saviez-vous ?",packagePending:"Installation de package en attente",approvePackage:"Veuillez approuver l'installation du package npm dans le chat pour continuer",loadingPreview:"Chargement de l'aperçu…",refreshPreview:"Actualiser l'aperçu",capture:{verbDiscovering:"Découvrir",verbDesigning:"Concevoir",verbBuilding:"Construire",verbPolishing:"Peaufiner",verbUnveiling:"Dévoiler",verbStudying:"Étudier",verbExtracting:"Extraire",verbReimagining:"Réinventer",verbRefining:"Affiner",stageAnalyzingDesign:"Analyse du design",stageExtractingColorsAndFonts:"Extraction des couleurs et polices",stageBuildingPages:"Construction des pages",stageCreatingComponents:"Création des composants",stageRefiningDetails:"Affinage des détails",stageAlmostThere:"Presque terminé",stageStudyingDesignLanguage:"Étude du langage de design",stageExtractingColorsAndTypography:"Extraction des couleurs et typographie",stageCraftingYourPages:"Création de vos pages uniques",stageApplyingDesignInspiration:"Application de l'inspiration design",stageRefiningLookAndFeel:"Affinage de l'apparence",yourSite:"votre site",aSiteInspiredBy:"un site inspiré de <site>{{siteName}}</site>",progress:"Progression"},figma:{verbFetching:"Récupération en cours",verbExtracting:"Extraction en cours",verbProcessing:"Traitement en cours",verbTransforming:"Transformation en cours",verbBuilding:"Construction en cours",stageReadingDesign:"Lecture de votre design Figma",stageProcessingStructure:"Traitement de la structure du design",stageHandlingAssets:"Traitement des ressources et génération du code",stageApplyingAI:"Application de la transformation IA",stageCompiling:"Compilation et finalisation de votre app",yourFigmaDesign:"votre design Figma",defaultName:"Import Figma"}},$4={canvas:"Canvas",dashboard:"Tableau de bord",preview:"Aperçu",exitSplitScreen:"Quittez le mode écran partagé pour prévisualiser",versionHistory:"Historique des versions",moreOptions:"Plus d'options",filesUsedInPage:"Fichiers utilisés dans cette page",seeAllFiles:"Voir tous les fichiers",activityMonitor:"Moniteur d'activité",exportAsZip:"Exporter le projet en ZIP",helpCenter:"Centre d'aide",actAsUser:"Agir en tant qu'utilisateur",viewAppNewTab:"Prévisualiser la version actuelle",refreshPreview:"Actualiser l'aperçu",refresh:"Actualiser",switchToDesktop:"Passer à la vue bureau",switchToMobile:"Passer à la vue mobile",showChatPanel:"Afficher le panneau de chat",hideChatPanel:"Masquer le panneau de chat",turnOffTestData:"Désactiver les données de test",turnOnTestData:"Activer les données de test",shareApp:"Partager l'application",shareInviteUsers:"Partager et inviter des utilisateurs",moreActions:"Plus d'actions",inviteCollaborators:"Inviter des collaborateurs",viewOnly:"Lecture seule",viewOnlyAccess:"Vous avez un accès en lecture seule à cette application",upgradeInfraTooltip:"Votre application est prête pour une mise à niveau rapide<br/>vers la nouvelle infrastructure.",appOverview:"Vue d'ensemble de l'application",myApp:"Mon application",production:"Production",test:"Test",gitHub:"GitHub",gitHubConnection:"Connexion GitHub",collaborators:"Collaborateurs",collaboratorDisplayYou:"{{name}} (Vous)",collaboratorUnknown:"Inconnu",addCollaborator:"Ajouter un collaborateur",saving:"Enregistrement...",savedAgo:"Enregistré il y a {{time}}",unsavedChanges_one:"{{count}} modification non enregistrée",unsavedChanges_other:"{{count}} modifications non enregistrées",theme:"Thème",themeTitle:"Thème",themeDescription:"Ces couleurs et polices composent votre thème. Les modifications s'appliquent partout.",themeColors:"Couleurs",themeFonts:"Polices",noThemeColors:"Aucune couleur de thème trouvée",themeSaveChanges:"Enregistrer et Appliquer",themeCancel:"Annuler",colorPickerCustom:"Personnalisé",colorPickerPalette:"Palette",fontPickerSearch:"Rechercher des polices...",fontPickerBrandFonts:"Polices de marque",fontPickerAllFonts:"Toutes les polices",fontPickerNoResults:"Aucune police trouvée",fontPickerSelectFont:"Sélectionner une police"},W4={desktop:"Bureau",tablet:"Tablette",mobile:"Mobile",isAvailable:"est disponible",getDomain:"Obtenir un domaine",connectDomain:"Connecter un domaine personnalisé",undo:"Annuler",redo:"Rétablir",fullscreen:"Plein écran",breakpoints:"Points d'arrêt",splitView:"Vue partagée",exitSplitView:"Quitter la vue partagée",exitPreview:"Quitter l'aperçu"},G4={upgrade:"Mettre à niveau",upgradePlan:"Mettre à niveau le plan",percentOff:"{{percent}}% de réduction",limitedTimeOffer:"Offre de bienvenue limitée",getDiscountOff:"Obtenez {{discount}} de réduction sur les plans annuels sélectionnés"},H4={viewingVersionHistory:"Affichage de l'historique des versions",buildInProgress:"Construction en cours...",retryBuildToEnable:"Relancez la construction pour activer cette vue",viewApp:"Voir l'application",viewCode:"Voir le code",restoring:"Restauration...",restoreThisVersion:"Restaurer cette version",publishing:"Publication...",publishThisVersion:"Publier cette version",exit:"Quitter",back:"Retour",publish:"Publier",restore:"Restaurer",latest:"Dernière"},Y4={actAs:"Agir en tant que",actingAs:"Vous agissez en tant que",searchUser:"Rechercher un utilisateur spécifique",anonymousGuest:"Visiteur anonyme",you:"Vous",warningChanges:"Toute modification se reflétera dans les données de l'utilisateur.",carefulChanges:"- attention, les modifications ici affectent cet utilisateur",exitMode:"Quitter le mode",noUsersYet:"Vous n'avez pas encore d'utilisateurs",addOrInvite:"Ajoutez ou invitez des utilisateurs pour voir comment votre application fonctionne pour eux",invite:"Inviter",usersCount:"Utilisateurs ({{count}})",noMatchingUsers:"Aucun utilisateur correspondant trouvé",trySearching:"Essayez de rechercher par nom ou rôle"},K4={pressEnterNavigate:"Appuyez sur Entrée pour naviguer"},Z4={publishApp:"Publier l'application",publish:"Publier",publishing:"Publication...",disabledUntilUpdate:"La publication est désactivée jusqu'à ce que vous terminiez la mise à jour de l'infrastructure.",currentlyDisabled:"La publication est actuellement désactivée",codeNotGenerated:"La publication sera activée une fois votre application prête",visualEditsSaveWarning:"Certaines modifications visuelles n'ont pas pu être enregistrées avant la publication",republishApp:"Republier l'application",lastPublished:"Dernière publication {{time}}"},J4={whatToChange:"Que souhaitez-vous modifier ?",whatToDiscuss:"De quoi souhaitez-vous discuter ?",saveChangesBeforeTyping:"Enregistrez les modifications avant de taper",exitEditModeToContinue:"Quittez le mode Édition avant de taper",fetchingFromGitHub:"Récupération depuis GitHub...",viewOnlyAccess:"Vous avez un accès en lecture seule",zeroCreditsRemaining:"0 crédits restants",visualEdit:"Modifier",visualEditDisabledAgentRunning:"L'édition visuelle est indisponible pendant que l'agent est en cours d'exécution",edit:"Modifier",discuss:"Discuter",ask:"Modifier l'élément",editData:"Modifier les données",discussMode:"Mode discussion",discussModeDescription:"Discutez avec l'IA de n'importe quoi sans modifier le code. Utilise 0,3 crédits par requête.",thought:"Réflexion",thoughtWithDuration:"A réfléchi <duration>pendant {{duration}}</duration>",planningNextSteps:"Planification des prochaines étapes...",signUpToStartBuilding:"Inscrivez-vous pour commencer à construire...",suggestions:"Suggestions",latestMessages:"Derniers messages",aiModel:"Modèle IA",aiControls:"Contrôles IA",uploadFile:"Importer depuis l'ordinateur",uploadFileMobile:"Importer depuis l'appareil",addFromGoogleDrive:"Importer depuis Google Drive",connectorRequestFailed:"Échec de l'envoi de la demande de connecteur. Veuillez réessayer.",designingYourWebsite:"création de votre site web...",speechToText:"Reconnaissance vocale",processingAudio:"Traitement de l'audio...",clickToStopRecording:"Cliquer pour arrêter l'enregistrement"},Q4={dialogTitle:"Palette de commandes du constructeur",dialogDescription:"Recherchez des pages, des fichiers, des entités, des vues et des actions rapides dans le builder.",searchPlaceholder:"Rechercher des pages, des fichiers, des entités, des vues et des actions rapides...",emptyTitle:"Aucune commande correspondante",emptyDescription:"Essayez un nom de page, un chemin de fichier, un nom d'entité, une vue de l'éditeur ou une action rapide comme les données de test.",homeSubtitle:"Accueil",navigationSubtitle:"Tableau de bord",viewSubtitle:"Vue de l'éditeur",entityDataSubtitle:"Données",entityCodeSubtitle:"Code",integrationsSubtitle:"Intégrations",domainSubtitle:"Domaine personnalisé",collaboratorsSubtitle:"Collaborateurs",helpSubtitle:"Centre d'aide",publishSubtitle:"Déployer et partager",publishNowSubtitle:"Publier les dernières modifications",versionHistorySubtitle:"Historique des versions",securitySubtitle:"Sécurité",testDataSubtitle:"Passer aux données de test",productionDataSubtitle:"Passer aux données de production",backToWorkspace:"Retour à l'espace de travail",switchToPreview:"Basculer vers l'Aperçu",switchToDashboard:"Basculer vers le Tableau de bord",switchToCode:"Basculer vers le Code",switchToCanvas:"Basculer vers le Canvas",openEntityData:"Ouvrir les données de {{entityName}}",openEntityCode:"Ouvrir le code de {{entityName}}",addIntegration:"Ajouter une intégration",addDomain:"Ajouter un domaine",inviteCollaborator:"Inviter un collaborateur",getHelp:"Obtenir de l'aide",publishMyApp:"Publier mon application",publishNow:"Publier maintenant",versionHistory:"Voir l'historique des versions",startSecurityCheck:"Démarrer la vérification de sécurité",turnOnTestData:"Activer les données de test",turnOffTestData:"Désactiver les données de test",groups:{navigate:"Naviguer",views:"Vues",files:"Fichiers",entities:"Entités",actions:"Actions"}},X4="Vue inconnue",eV="Éditeur d'application",tV="Bêta",aV={title:"Inviter des collaborateurs",subtitle:"Donnez accès à d'autres personnes pour modifier cette application.",emailPlaceholder:"Entrez les e-mails, séparés par des virgules",removeIneligible:"Retirer les utilisateurs non éligibles",appCollaborators:"Collaborateurs de l'application",you:"(Vous)",owner:"Propriétaire",moreActions:"Plus d'actions",makeAppOwner:"Désigner comme propriétaire",removeCollaborator:"Retirer le collaborateur",resendOwnershipRequest:"Renvoyer la demande de propriété",getOwnershipLink:"Obtenir le lien de propriété",cancelOwnershipRequest:"Annuler la demande de propriété",ownershipTooltip:"Le nouveau propriétaire doit accepter le transfert via l'e-mail d'invitation. L'invitation expire dans 7 jours. Vous recevrez un e-mail lorsque le transfert sera terminé.",removeTitle:"Retirer ce collaborateur de votre application ?",removeDescription:"Le retrait de ce collaborateur révoquera immédiatement son accès à l'éditeur et l'empêchera d'apporter des modifications à l'application.",removeAccessOnly:"Retirer l'accès collaborateur uniquement",removeAccessOnlyDesc:"L'utilisateur apparaîtra toujours dans la liste des utilisateurs",removeEntirely:"Retirer entièrement de l'application",removeEntirelyDesc:"L'utilisateur sera également retiré de la liste des utilisateurs",cancel:"Annuler",enterEmail:"Veuillez entrer une adresse e-mail",invalidEmail:"E-mail invalide",invalidEmails:"Une ou plusieurs adresses e-mail ne sont pas valides, veuillez les vérifier et réessayer.",cannotInviteOwner:"Vous ne pouvez pas inviter le propriétaire de cette application",alreadyExists:"Le collaborateur existe déjà.",alreadyExist:"Les collaborateurs existent déjà.",invitationSent:"Invitation des collaborateurs envoyée avec succès",invitationsSent:"{{count}} invitations de collaborateurs envoyées avec succès",removedFromApp:"Collaborateur retiré de l'application",accessRemoved:"Accès du collaborateur retiré",ownershipResent:"Demande de propriété renvoyée avec succès",ownershipLinkCopied:"Lien de propriété copié dans le presse-papiers",ownershipCancelled:"Demande de propriété annulée",failedToSendInvitation:"Échec de l'envoi de l'invitation",failedToRemoveCollaborator:"Échec du retrait du collaborateur",failedToResendOwnership:"Échec du renvoi de la demande de propriété",failedToGetOwnershipLink:"Échec de l'obtention du lien de propriété",failedToCancelOwnership:"Échec de l'annulation de la demande de propriété",creditsWarning:"Tous les collaborateurs consomment des crédits de l'espace de travail.",notWorkspaceMember:"Non membre de l'espace de travail",notMemberDescription_one:"<bold>{{emails}}</bold> n'est pas membre de cet espace de travail.",notMemberDescription_other:"<bold>{{emails}}</bold> ne sont pas membres de cet espace de travail.",addAsGuest:"Ajouter en tant qu'invité",addAsGuestDescription:"L'utilisateur sera ajouté en tant qu'invité avec accès à cette application uniquement.",addToWorkspace:"Ajouter à l'espace de travail",addToWorkspaceDescription:"Accédez aux paramètres de l'espace de travail pour ajouter en tant que membre à part entière.",guestBadge:"Invité",emailListOverflow:"{{first}} et {{count}} autres",pendingInvitationWarning_one:"Cet utilisateur a déjà une invitation en attente en tant que membre de l'espace de travail. L'ajouter en tant qu'invité la remplacera.",pendingInvitationWarning_other:"{{count}} de ces utilisateurs ont déjà des invitations en attente en tant que membres de l'espace de travail. Les ajouter en tant qu'invités les remplacera."},nV={title:"Vos crédits d'intégration sont épuisés",description:"Cela peut empêcher les utilisateurs de votre application d'effectuer certaines actions.",upgradeLink:"Mettre à niveau le plan pour obtenir plus de crédits",dismiss:"Fermer la bannière"},iV={gathering:"Collecte en cours",gathered:"Collecté",connectorsInformation:"informations sur les connecteurs",write:"Écrire",writing:"Écriture",wrote:"Écrit",generatingImage:"Génération d'image",generatedImage:"Image générée",reading:"Lecture",read:"Lu",deleting:"Suppression",deleted:"Supprimé",editing:"Modification",edited:"Modifié",edit:"Modifier",creating:"Création",created:"Créé",updating:"Mise à jour",updated:"Mis à jour",update:"Mettre à jour",delete:"Supprimer",importing:"Importation",imported:"Importé",import:"Importer",searching:"Recherche",searched:"Recherché",searchingForBugs:"Recherche de bugs...",searchedBugs:"Bugs recherchés",install:"Installer",installing:"Installation",installed:"Installé",analyzing:"Analyse",running:"Exécution",failed:"Échoué",run:"Exécuter",settingSecrets:"Configuration des secrets",setSecret:"Secret configuré",setSecrets:"Secrets configurés",testing:"Test",checking:"Vérification",tested:"Testé",checked:"Vérifié",fetching:"Récupération",fetched:"Récupéré",waitingForApproval:"En attente d'approbation...",searchedDocsFor:"Documentation recherchée pour",searchingDocsFor:"Recherche de documentation pour",searchedFor:"Recherché pour",searchingFor:"Recherche de",foundResult_one:"{{count}} résultat trouvé",foundResult_other:"{{count}} résultats trouvés",grepSearching:'Recherche de "{{pattern}}"...',grepSearchComplete:"Recherche terminée",grepFoundResults_one:"{{count}} résultat trouvé",grepFoundResults_other:"{{count}} résultats trouvés",grepInFiles_one:"dans {{count}} fichier",grepInFiles_other:"dans {{count}} fichiers",toggling:"Basculement",toggled:"Basculé",listing:"Listage",listed:"Listé",approvalRequired:"Approbation requise",changesPending_one:"{{count}} modification en attente",changesPending_other:"{{count}} modifications en attente",approve:"Approuver",approving:"Approbation...",reject:"Rejeter",rejected:"rejeté",rejecting:"Rejet...",approveCount:"Approuver ({{count}})",rejectAll:"Tout rejeter",previousApproval:"Cette demande d'approbation provient d'un message précédent",query:"Requête :",updateFallback:"Mettre à jour {{entityName}}",updateFallbackSingle:"Définir {{fieldName}} à {{fieldValue}} sur {{entityName}}",updateFallbackMultiple:"Définir {{fieldName}} à {{fieldValue}} (+{{extraFields}} autres) sur {{entityName}}",deleteFallback:"Supprimer les enregistrements {{entityName}}",updateWith:"Mettre à jour avec :",importComplete:"Importation terminée",importingData:"Importation des données...",percentComplete:"{{percent}}% terminé",recordsProgress:"{{current}} / {{total}} enregistrements",preparing:"Préparation...",otherToolsAfterApproval:"Les autres outils s'exécuteront après approbation",loadingConfig:"Chargement de la configuration...",fetchConfigError:"Impossible de charger la configuration.",retry:"Réessayer",countPackages:"{{num}} packages :",updateAllEntityRecords:"Mettre à jour tous les enregistrements <entity>{{entityName}}</entity>",updateEntityRecordsMatching:"Mettre à jour les enregistrements <entity>{{entityName}}</entity> correspondant à :",deleteAllEntityRecords:"Supprimer tous les enregistrements <entity>{{entityName}}</entity>",deleteEntityRecordsMatching:"Supprimer les enregistrements <entity>{{entityName}}</entity> correspondant à :",importDataFromInto:"Importer les données de <file>{{fileName}}</file> dans <entity>{{entityName}}</entity>",importDataFromSheetInto:"Importer les données de <file>{{fileName}}</file> (feuille : <sheet>{{sheetName}}</sheet>) dans <entity>{{entityName}}</entity>",countRecordsIntoEntity:"{{num}} enregistrements dans <entity>{{entityName}}</entity>",dataIntoEntity:"données dans <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} enregistrements <entity>{{entityName}}</entity>",allEntityRecords:"tous les enregistrements <entity>{{entityName}}</entity>",entityRecords:"enregistrements <entity>{{entityName}}</entity>"},rV={chatOnlyDescription:"Ce paramètre n'est désormais accessible que via le chat.",description:"Définissez la page d'accueil par défaut de votre application",chatHint:"Pour modifier cela, écrivez dans le chat :",prompt:"Changer la page principale en {PageName}",placeholder:"Page principale",copiedToast:"Copié dans le presse-papiers"},oV={confirmMessage:"Êtes-vous sûr de vouloir dépublier cette application ? Elle ne sera plus accessible aux utilisateurs jusqu'à ce que vous la republiiez.",successTitle:"Succès",successDescription:"Application dépubliée avec succès",errorTitle:"Erreur",errorDescription:"Échec de la dépublication de l'application",description:"Mettre votre application hors ligne. Vous pouvez la republier à tout moment.",unpublishing:"Dépublication en cours...",button:"Dépublier"},sV={title:"Supprimer l'application",description:"Cette action est <strong>irréversible</strong>. L'application <strong>{{appSlug}}</strong> et toutes ses données seront définitivement supprimées.",descriptionSimple:"<strong>{{displayName}}</strong> sera définitivement supprimée.<br/>Toutes les données, l'historique, les utilisateurs, les domaines et les intégrations seront effacés de manière irréversible. <danger>Cette action est irréversible.</danger>",confirmLabel:"Pour confirmer, saisissez <strong>{{appSlug}}</strong> ci-dessous :",cancel:"Annuler",deleteButton:"Supprimer cette application",deleting:"Suppression...",successTitle:"Succès",successDescription:"Application supprimée avec succès",errorTitle:"Erreur",errorDescription:"Impossible de supprimer l'application"},lV={using:"Utilisation de la compétence {{name}}",failed:"Échec de l'utilisation de la compétence {{name}}",used:"Compétence {{name}} utilisée"},cV={thinkingIdeas:"{{agentName}} réfléchit à des idées...",ideasFrom:"Idées de {{agentName}}"},dV="Création de l'automatisation...",uV="Échec de la création de l'automatisation",pV="Automatisation",mV=JSON.parse(`{"sidebar":{"chat":"Chat","continueOnWhatsApp":"Continuer sur WhatsApp","continueOnTelegram":"Continuer sur Telegram","continueOnLine":"Continuer sur LINE","continueOnIMessage":"Continuer sur iMessage","imessage":"iMessage","brain":"Cerveau","integrations":"Intégrations","knowledge":"Connaissances","memory":"Mémoire","payments":"Paiements","tasks":"Tâches","artifacts":"Artefacts","settings":"Paramètres","secretsAndKeys":"Secrets et clés","security":"Sécurité","credits":"Crédits","whatsapp":"WhatsApp","telegram":"Telegram","line":"LINE","files":"Fichiers","uploadFile":"Importer un fichier","refreshFiles":"Actualiser les fichiers","searchFiles":"Rechercher des fichiers...","filesFolders":"{{fileCount}} fichiers · {{folderCount}} dossiers","toolsPermission":"Permissions des outils","apiDocs":"API","channels":"Canaux","feedback":"Laisser un avis","agentSettings":"Paramètres de l'agent","dangerZone":"Zone de danger"},"filePanel":{"source":"Source","preview":"Aperçu","save":"Enregistrer","saveAndRedeploy":"Enregistrer et redéployer","fileSaved":"Fichier enregistré","functionRedeployed":"Fonction enregistrée et redéployée","failedToSaveFile":"Échec de l'enregistrement du fichier","failedToRedeploy":"Échec du redéploiement de la fonction","failedToReadFile":"Échec de la lecture du fichier"},"modelPicker":{"automatic":"Automatique","automaticDescription":"Le meilleur modèle IA est sélectionné pour chaque requête","manual":"Manuel","manualDescription":"Sélectionnez un modèle IA spécifique.","manualCreditNote":"L'utilisation de crédits peut varier selon le modèle","manualDisabledDescription":"Sélectionnez un modèle IA spécifique ({{models}}). Disponible à partir du plan Builder.","builderPlus":"Builder+","upgradeToSelect":"Passez à un plan supérieur pour sélectionner un modèle IA"},"chat":{"loadingAgent":"Chargement de l'agent...","agentNotFound":"Agent introuvable","waitingForAuth":"En attente du jeton d'authentification...","anErrorOccurred":"Une erreur est survenue","aiModelUpdated":"Modèle IA mis à jour","failedToUpdateModel":"Échec de la mise à jour du modèle IA","hideSidebar":"Masquer la barre latérale","showSidebar":"Afficher la barre latérale","darkMode":"Passer au mode sombre","lightMode":"Passer au mode clair","dropFileHere":"Déposez le fichier ici","imagesDocsAndMore":"Images, documents et plus","loadPreviousMessages":"Charger les messages précédents","somethingWentWrong":"Une erreur est survenue","retry":"Réessayer","chatFromApp":"Discutez avec moi depuis une application que vous utilisez déjà","attachFile":"Joindre des fichiers","typeMessage":"Saisissez un message...","toggleLiveBrowser":"Basculer le navigateur en direct","noActiveBrowser":"Aucune session de navigateur active","stopGenerating":"Arrêter la génération","suggestions":"Suggestions","liveBrowser":"Navigateur en direct","fullScreen":"Plein écran","exitFullScreen":"Quitter le plein écran","closeBrowser":"Fermer le navigateur","live":"En direct","expandBrowser":"Agrandir le navigateur","failedToStartConversation":"Impossible de démarrer la conversation — essayez d'envoyer un message manuellement.","failedToLoadConversation":"Échec du chargement de la conversation","failedToUploadFile":"Échec de l'envoi du fichier","tooManyFiles":"Vous pouvez joindre jusqu'à {{max}} fichiers par message","failedToSendMessage":"Échec de l'envoi du message","failedToStopAgent":"Échec de l'arrêt de l'agent","queued":"En file d'attente ({{count}})","queueFull":"La file d'attente est pleine. Veuillez attendre que l'agent termine.","failedToEditQueued":"Échec de la modification du message en file d'attente","failedToDeleteQueued":"Échec de la suppression du message en file d'attente","deleteMessage":"Supprimer le message","failedToDeleteMessage":"Échec de la suppression du message","today":"Aujourd'hui","yesterday":"Hier","thinking":"Réflexion...","you":"Vous","failedToSubmitToolInput":"Échec de l'envoi de l'entrée de l'outil","whatsInImage":"Qu'y a-t-il dans cette image ?","heresAFile":"Voici un fichier : {{fileName}}","heresAFileAndMore":"Voici un fichier : {{fileName}} (+{{count}} autre(s))","heresFiles":"Voici {{count}} fichiers","whatsInTheseImages":"Qu'y a-t-il dans ces {{count}} images ?","creditsRunningLow":"Vos crédits sont bientôt épuisés.","purchaseMoreCredits":"Acheter plus de crédits →","saleDiscount":"Obtenez {{discount}} de réduction sur les forfaits annuels sélectionnés","limitedTimeOffer":"Offre à durée limitée","upgradePlan":"Mettre à niveau","reply":"Répondre","copyMessage":"Copier","copied":"Copié"},"files":{"uploaded":"{{fileName}} importé","failedToUpload":"Échec de l'import de {{fileName}}","failedToRead":"Échec de la lecture de {{fileName}}"},"dashboard":{"title":"Tableau de bord","subtitle":"Vue d'ensemble de votre agent.","created":"Créé le {{date}}","memories":"Souvenirs","filesLabel":"Fichiers","folders":"Dossiers","agentMemory":"Mémoire de l'agent","noMemoriesYet":"Pas encore de souvenirs","noMemoriesDescription":"Votre agent stockera les informations apprises ici au fil de vos conversations."},"creditsTab":{"title":"Crédits","description":"L'utilisation des crédits et les détails de facturation apparaîtront ici."},"settingsTab":{"settings":"Paramètres","secrets":"Secrets","security":"Sécurité","creditCard":"Carte de crédit"},"agentSettingsTab":{"title":"Paramètres de l'agent","subtitle":"Configurez le fonctionnement de votre agent.","cloneTitle":"Cloner l'agent","cloneDescription":"Créez une copie de cet agent avec toute sa configuration, ses entités et ses fonctions backend.","cloneButton":"Cloner l'agent"},"clonePage":{"back":"Retour","title":"Cloner l'agent","subtitle":"Choisissez ce qui doit être inclus dans l'agent cloné.","optionChat":"Historique du chat","optionChatDesc":"Copier l'historique de conversation du constructeur vers le nouvel agent.","optionSkills":"Compétences","optionSkillsDesc":"Copier les fonctions backend, intégrations et configurations d'outils.","optionTasks":"Tâches","optionTasksDesc":"Copier les automatisations (planifiées, déclenchées par entité et connecteurs).","optionSecrets":"Clés API","optionSecretsDesc":"Copier les secrets et clés API stockés vers le nouvel agent.","cloneButton":"Cloner l'agent","cloning":"Clonage en cours...","cloneError":"Échec du clonage de l'agent"},"securityTab":{"title":"Sécurité","subtitle":"Lancez une analyse de sécurité pour détecter les vulnérabilités potentielles.","scanning":"Analyse en cours...","runScan":"Lancer l'analyse de sécurité","noIssues":"Aucun problème détecté","agentSecure":"Votre agent semble sécurisé.","severityCount":"Sévérité {{severity}}","idleMessage":"Cliquez sur \\"Lancer l'analyse de sécurité\\" pour vérifier les vulnérabilités de votre agent.","scanFailed":"L'analyse de sécurité a échoué"},"secretsTab":{"title":"Secrets","subtitle":"Variables d'environnement disponibles pour les fonctions backend de votre agent.","noSecrets":"Pas encore de secrets","addSecret":"Ajouter un secret","secretNamePlaceholder":"SECRET_NAME","valuePlaceholder":"valeur","add":"Ajouter","secretSaved":"Secret {{name}} enregistré","failedToSave":"Échec de l'enregistrement du secret","secretDeleted":"Secret {{name}} supprimé","failedToDelete":"Échec de la suppression du secret","failedToLoad":"Échec du chargement des secrets"},"billingTab":{"title":"Carte de crédit de l'agent","subtitle":"Utilisation et facturation de votre agent.","monthlyUsage":"Utilisation mensuelle","extraCredits":"+{{count}} crédits supplémentaires disponibles","pastDue":"Paiement en retard","pastDueDescription":"Veuillez mettre à jour votre moyen de paiement pour éviter une interruption de service.","goodStanding":"Compte en règle","currentPeriod":"Période actuelle :","nextPeriod":"Prochaine période :","manageBilling":"Gérer la facturation","failedToLoad":"Échec du chargement des données d'utilisation","unableToLoad":"Impossible de charger les données de facturation"},"apiDocsTab":{"title":"Référence de l'API","subtitle":"Utilisez l'API REST pour interagir avec votre agent de façon programmatique. Créez des conversations, envoyez des messages et gérez la mémoire depuis n'importe quelle application.","baseUrl":"URL de base","authentication":"Authentification","authDescription":"Incluez votre clé API dans l'en-tête de la requête :","authAlternative":"Vous pouvez aussi la transmettre comme paramètre de requête :","quickStart":"Démarrage rapide","quickStartDescription":"Suivez ces étapes pour commencer à discuter avec votre agent via l'API :","step1CreateConversation":"1. Créer une conversation","step2SendMessage":"2. Envoyer un message","step3ListConversations":"3. Lister les conversations","endpoints":"Points de terminaison de l'API","requestBody":"Corps de la requête","listConversationsDesc":"Lister toutes les conversations de l'utilisateur authentifié","listConversationsNote":"Retourne les conversations triées par date de création. Prend en charge la pagination via les paramètres de requête.","getConversationDesc":"Récupérer une conversation spécifique avec tous ses messages","createConversationDesc":"Créer une nouvelle conversation avec l'agent","sendMessageDesc":"Envoyer un message et obtenir la réponse de l'agent","sendMessageNote":"L'agent traitera le message et renverra sa réponse. La longueur maximale d'un message est de 8000 caractères.","deleteMessageDesc":"Supprimer un message spécifique d'une conversation","listMemoryDesc":"Lister les éléments de mémoire de l'agent","deleteMemoryDesc":"Supprimer un élément de mémoire spécifique","responseFormat":"Format de réponse","responseFormatDescription":"Les conversations sont renvoyées sous forme d'objets JSON contenant un tableau de messages :","rateLimits":"Limites de débit","rateLimitsDescription":"Les requêtes API sont limitées par utilisateur. Si vous dépassez la limite, vous recevrez un code d'état 429. Attendez un instant puis réessayez.","errorCodes":"Codes d'erreur","error401":"Non autorisé - clé API invalide ou manquante","error403":"Interdit - vous n'avez pas accès à cette ressource","error400":"Requête invalide - entrée non valide (par ex. message trop long)","error404":"Introuvable - la conversation ou la ressource n'existe pas","copy":"Copier"},"toolsPermissionTab":{"title":"Permissions des outils","subtitle":"Autoriser certaines opérations à s'exécuter sans votre confirmation.","warning":"Lorsque cette option est activée, l'agent effectuera ces actions de manière autonome. Vos règles de sécurité des données restent en vigueur.","updateData":"Mettre à jour les données","updateDataDescription":"Laisser l'agent mettre à jour des enregistrements sans demander d'abord.","deleteData":"Supprimer les données","deleteDataDescription":"Laisser l'agent supprimer des enregistrements sans demander d'abord.","failedToSave":"Échec de l'enregistrement des paramètres","effectNote":"Les paramètres s'appliquent immédiatement. Les réponses de l'IA ne suivent pas toujours les règles parfaitement.","connectorRulesTitle":"Règles des connecteurs","connectorRulesSubtitle":"Indiquez à l'agent ce qu'il peut et ne peut pas faire avec chaque service.","connectorRulePlaceholder":"ex. : Lire les e-mails uniquement, ne jamais envoyer ni supprimer","loadingConnectors":"Chargement des connecteurs...","saveRules":"Enregistrer","rulesSaved":"Règles des connecteurs enregistrées"},"knowledgeTab":{"noFiles":"Pas encore de fichiers de connaissances","noFilesDescription":"Commencez à discuter avec votre agent pour construire son identité et ses connaissances","identity":"Identité"},"memoryTab":{"title":"Mémoire","subtitle":"Ce que votre agent sait de vous et de vos conversations.","emptyTitle":"Rien ici pour le moment","emptyDescription":"Au fil de vos échanges, votre agent construira sa mémoire automatiquement — contexte des messages récents, résumés de sessions et faits clés.","addEntry":"Ajouter","saveEntry":"Enregistrer","cancelEdit":"Annuler","titlePlaceholder":"Que doit retenir l'agent ?","contentPlaceholder":"Ajouter plus de détails (optionnel)","saved":"Mémoire mise à jour","failedToSave":"Échec de la mise à jour","factsHeading":"Faits enregistrés","factsDescription":"Faits clés qui persistent à travers toutes les conversations.","noMemories":"Aucun fait enregistré","noMemoriesDescription":"Les faits importants sont extraits automatiquement des conversations, ou vous pouvez les ajouter manuellement.","shortTermHeading":"Mémoire à court terme","shortTermDescription":"Contexte de la conversation en cours, mis à jour environ tous les 10 messages.","shortTermUpdated":"Mis à jour","shortTermDeleted":"Supprimé","deleteShortTermConfirm":"Supprimer ce contexte ? L'agent perdra cette partie de l'historique de conversation.","longTermHeading":"Sessions quotidiennes","longTermDescription":"Un résumé des conversations de chaque jour.","longTermDeleted":"Supprimé","deleteLongTermConfirm":"Supprimer la session de ce jour ? L'agent perdra l'accès à cet historique de conversation.","messages":"{{count}} mess.","emptyTranscript":"Transcription vide","noText":"(pas de texte)","usedTools":"Utilisé : {{tools}}"},"telegramTab":{"title":"Telegram","connected":"Votre bot Telegram est connecté et actif.","notConnected":"Connectez un bot Telegram pour permettre aux utilisateurs de discuter avec votre agent.","verifyBanner":"Cliquez sur le bouton ci-dessous pour vérifier votre identité sur Telegram. Cela garantit que vous êtes le seul à pouvoir utiliser ce bot.","verifyOnTelegram":"Vérifier sur Telegram","connectedBot":"Bot connecté","botName":"Nom du bot","username":"Nom d'utilisateur","status":"Statut","active":"Actif","openTelegram":"Ouvrir dans Telegram","scanQr":"Scannez le code QR avec votre téléphone pour ouvrir le bot dans Telegram.","disconnect":"Déconnecter","disconnectConfirm":"Déconnecter ce bot Telegram ? Les utilisateurs ne recevront plus de réponses.","disconnected":"Bot Telegram déconnecté","failedToDisconnect":"Échec de la déconnexion","howItWorks":"Comment ça marche","step1":"Les utilisateurs ouvrent votre bot dans Telegram et envoient /start pour commencer.","step2":"Chaque message texte est traité par votre agent.","step3":"La réponse de l'agent est envoyée dans le chat Telegram."},"telegramSetup":{"connectTitle":"Connecter Telegram","connectDescription":"Créez un bot Telegram pour votre agent en un clic. Il sera configuré et prêt à discuter automatiquement.","autoCreateButton":"Connecter le bot Telegram","autoWaitingTitle":"Création du bot en cours...","autoWaitingDescription":"Confirmez le bot dans Telegram, nous configurerons ensuite tout automatiquement.","autoTimeoutError":"Délai dépassé pour la création du bot. Réessayez ou utilisez la configuration manuelle.","autoExpiredError":"Échec de la création du bot. Veuillez réessayer.","cancel":"Annuler","alreadyHaveBot":"J'ai déjà un jeton de bot","pasteTokenTitle":"Se connecter avec un jeton","manualInstructions":"Créez un bot via @BotFather sur Telegram, puis collez le jeton ici.","tokenPlaceholder":"Collez le jeton du bot...","tokenExtracted":"Jeton extrait","tokenNotFound":"Aucun jeton valide trouvé","connectBot":"Connecter","connecting":"Connexion...","successTitle":"Bot connecté !","openTelegram":"Ouvrir dans Telegram","failedToConnect":"Échec de la connexion du bot"},"whatsappTab":{"title":"WhatsApp","subtitle":"Permettez aux utilisateurs de discuter avec votre agent via WhatsApp.","connectTitle":"Connecter WhatsApp","connectDescription":"Cliquez sur le bouton ci-dessous pour ouvrir WhatsApp et activer la connexion. Vous recevrez un code d'activation à envoyer au numéro WhatsApp de l'agent.","openWhatsApp":"Ouvrir WhatsApp","scanQr":"Scannez le code QR avec votre téléphone pour ouvrir la conversation dans WhatsApp.","howItWorks":"Comment ça marche","step1":"Cliquez sur \\"Ouvrir WhatsApp\\" — cela ouvre WhatsApp avec un code d'activation pré-rempli.","step2":"Envoyez le code d'activation pour démarrer la connexion.","step3":"Une fois connecté, chaque message envoyé sur WhatsApp sera traité par votre agent."},"lineTab":{"title":"LINE","subtitle":"Discutez avec votre agent sur LINE.","connectTitle":"Se connecter via LINE","connectDescription":"Générez un code d'activation, scannez le QR avec votre téléphone pour ajouter le bot, puis envoyez le code.","generateCode":"Générer un code d'activation","scanQrLabel":"Scanner avec LINE","scanQrHint":"Ouvrez LINE sur votre téléphone et scannez ce QR code pour ajouter le bot.","activationCodeLabel":"Code d'activation","sendCodeHint":"Après avoir ajouté le bot, envoyez ce code comme message pour activer.","generating":"Génération...","regenerate":"Générer un nouveau code","codeCopied":"Code copié !","codeExpiry":"Expire dans 30 minutes","failedToGenerate":"Échec de la connexion à LINE","howItWorks":"Comment ça marche","step1":"Cliquez sur \\"Générer un code d'activation\\" pour obtenir votre code et QR.","step2":"Scannez le QR code avec LINE sur votre téléphone pour ajouter le bot en ami.","step3":"Envoyez le code d'activation comme message au bot pour vous connecter."},"imessageTab":{"title":"iMessage","subtitle":"Chat with your agent via iMessage.","connectTitle":"Connect via iMessage","connectDescription":"Click the button below and iMessage will open with the activation code ready to send.","connectButton":"Connect via iMessage","manualFallback":"Didn't open automatically? Send the code manually:","phoneNumberLabel":"Text this number","activationCodeLabel":"Activation code","codeCopied":"Code copied!","codeExpiry":"Expires in 30 minutes","failedToGenerate":"Failed to generate iMessage code","capacityTitle":"iMessage temporarily unavailable","capacityMessage":"iMessage is experiencing unusually high demand right now. Please check back in a few hours — we're working on expanding capacity.","howItWorks":"How it works","step1":"Click \\"Connect via iMessage\\" — your Messages app will open with the activation code pre-filled.","step2":"Send the message and your agent is connected. That's it!"},"pluginsTab":{"builtInServices":"Services intégrés","builtInSubtitle":"Fonctionnalités de la plateforme disponibles par défaut pour votre agent.","base44Backend":"Base44 Backend","alwaysActive":"Toujours actif","base44Description":"Base de données, fonctions, stockage de fichiers et automatisations","dataEntities":"Données et entités","dataEntitiesTool1":"Créer, lire, mettre à jour, supprimer et filtrer les enregistrements d'entités","dataEntitiesTool2":"Sécurité au niveau des lignes","backendFunctions":"Fonctions backend","backendFunctionsTool1":"Déployer et appeler des fonctions serverless Deno","backendFunctionsTool2":"Gérer les secrets d'environnement","fileStorage":"Stockage de fichiers","fileStorageTool1":"Importer des fichiers publics et privés","fileStorageTool2":"Créer des URLs de téléchargement signées","automationsLabel":"Automatisations","automationsTool1":"Planifier des tâches CRON","automationsTool2":"Déclencheurs de changement d'entité","connectors":"Connecteurs","connectorsSubtitle":"Connectez votre agent aux apps et services que vous utilisez déjà.","addConnector":"Ajouter un connecteur","close":"Fermer","noConnectors":"Aucun connecteur. Ajoutez-en un pour donner à votre agent accès aux services externes.","connected":"Connecté","available":"Disponibles ({{count}})","allConnected":"Tous les connecteurs sont déjà connectés.","revoked":"Révoqué","disconnectedStatus":"Déconnecté","active":"Actif","switchAccount":"Changer de compte","reconnect":"Reconnecter","disconnect":"Déconnecter","remove":"Supprimer","connect":"Connecter","connectorConnected":"Connecteur connecté","connectionCancelled":"Connexion annulée","connectorDisconnected":"Connecteur déconnecté","failedToDisconnect":"Échec de la déconnexion","connectorRemoved":"Connecteur supprimé","failedToRemove":"Échec de la suppression","openAuthLinkManually":"Ouvrir le lien d'autorisation manuellement","connecting":"Connexion en cours...","mcpPlugins":"Plugins MCP","mcpSubtitle":"Connexions MCP qui étendent les capacités de votre agent.","cancel":"Annuler","addPlugin":"Ajouter un plugin","noPlugins":"Aucun plugin connecté","noPluginsDescription":"Ajoutez un serveur MCP pour donner de nouveaux outils à votre agent.","failedToLoad":"Échec du chargement des plugins","failedToToggle":"Échec du basculement du plugin","pluginDeleted":"Plugin supprimé","failedToDelete":"Échec de la suppression du plugin","pluginAdded":"Plugin ajouté","pluginNamePlaceholder":"Nom du plugin","mcpUrlPlaceholder":"URL du serveur MCP (https://...)","foundTools":"{{count}} outils trouvés","connectionTestFailed":"Test de connexion échoué","connectedTools":"Connecté — {{count}} outils disponibles","connectionFailed":"Connexion échouée","test":"Tester","save":"Enregistrer","failedToCreate":"Échec de la création du plugin","enabled":"Activé","disabled":"Désactivé","toolsCount":"Outils ({{count}})","noTools":"Aucun outil disponible","toolsFound":"{{count}} outils trouvés","testFailed":"Test échoué","connectedChatMessage":"Je viens de connecter {{name}} depuis le panneau d'intégrations. Que puis-je faire avec ?","connectedReadOnlyChatMessage":"Je viens de connecter {{name}} en mode lecture seule depuis le panneau d'intégrations. Il ne peut que lire les données, pas créer ni modifier quoi que ce soit. Que puis-je faire avec ?","accessModeChangedMessage":"Je viens de passer {{name}} en mode {{mode}}. Merci d'en tenir compte pour les prochaines actions.","disconnectedChatMessage":"Je viens de déconnecter {{name}} depuis le panneau d'intégrations.","readOnly":"Lecture seule","fullAccess":"Peut gérer","switchToReadOnly":"Passer en lecture seule","switchToFullAccess":"Passer en gestion","searchConnectors":"Rechercher des connecteurs...","noSearchResults":"Aucun connecteur trouvé","noSearchResultsDesc":"Essayez d'autres mots-clés ou effacez la recherche.","noConnectorsYet":"Aucun connecteur connecté pour l'instant.","base44Official":"Base44 Official","setUp":"Configurer","loadMore":"Charger {{count}} de plus","showAll":"Tout afficher ({{count}})","moreIcons":"+{{count}} de plus","sort":{"title":"Trier","mostUsed":"Les plus utilisés","recentlyAdded":"Récemment ajoutés","az":"A-Z","za":"Z-A"}},"paymentsTab":{"title":"Paiements","stripeName":"Stripe","description":"Acceptez les paiements de vos clients via Stripe.","notConnected":"Stripe n'est pas connecté","connectedDescription":"Liens de paiement, produits et passage en caisse disponibles.","setupPrompt":"Demandez à votre agent dans le chat de configurer les paiements Stripe. Il vous guidera.","askInChat":"Demander dans le chat","sandboxMode":"Sandbox","liveMode":"Production","testCard":"Numéro de carte de test","claimAndGoLive":"Réclamer et passer en production","remove":"Supprimer l'intégration","removeConfirm":"Êtes-vous sûr ?","confirmRemove":"Oui, supprimer","cancel":"Annuler","removed":"Intégration Stripe supprimée","removeFailed":"Échec de la suppression de l'intégration Stripe","loadFailed":"Échec du chargement du statut de paiement","setupMessage":"Configurez les paiements Stripe pour mon agent"},"integrationsTab":{"tabSkills":"Skills","tabConnectors":"Connectors","skillsTitle":"Skills","skillsSubtitle":"Reusable instructions that give your agent specialized abilities.","addSkill":"Add Skill","noSkills":"No skills yet","noSkillsHint":"Add a skill to teach your agent new capabilities.","installed":"Installé"},"automationsTab":{"title":"Automatisations","subtitle":"Tâches planifiées et webhooks.","noAutomations":"Pas encore d'automatisations","trySuggestions":"Essayez l'une des idées ci-dessus ou demandez dans le chat.","askAgent":"Demandez à votre agent dans le chat d'en configurer une.","scheduled":"Planifiée","entityTriggered":"Déclenchée par entité","webhooks":"Webhooks","active":"Active","paused":"En pause","details":"Détails","runNow":"Exécuter maintenant","pause":"Mettre en pause","activate":"Activer","delete":"Supprimer","trigger":"Déclencheur","instructions":"Instructions","taskId":"ID de tâche","parameters":"Paramètres","runHistory":"Historique d'exécution","totalRuns":"{{count}} au total","succeeded":"{{count}} réussies","failedRuns":"{{count}} échouées","lastRun":"Dernière exécution :","created":"Créé le {{date}}","runsStats":"{{total}} exécutions · {{succeeded}} réussies · {{failed}} échouées","failedToToggle":"Échec du basculement de l'automatisation","archive":"Archiver","automationArchived":"Automatisation archivée","failedToArchive":"Échec de l'archivage de l'automatisation","automationDeleted":"Automatisation supprimée","failedToDelete":"Échec de la suppression de l'automatisation","automationTriggered":"Automatisation déclenchée","failedToRun":"Échec de l'exécution de l'automatisation","failedToLoad":"Échec du chargement des automatisations","consumesCredits":"Consomme des crédits de messages","agentRunsWhenTriggered":"L'agent répond quand déclenché","agentNameRunsWhenTriggered":"{{name}} répond quand déclenché","creditsUsed":"{{credits}} crédits utilisés","totalCredits":"Total des crédits : {{credits}}","trackingSince":"depuis {{date}}","executionLogs":"Journaux d'exécution","noLogs":"Aucun journal pour le moment","status":{"success":"succès","running":"en cours","failed":"échoué"},"archived":"Archivées","noArchivedAutomations":"Aucune automatisation archivée","archivedDescription":"Les automatisations que vous archivez apparaîtront ici.","restore":"Restaurer","automationRestored":"Automatisation restaurée","failedToRestore":"Échec de la restauration de l'automatisation"},"identity":{"updated":"Identité mise à jour","failedToSave":"Échec de l'enregistrement de l'identité","avatar":"Avatar","emoji":"Emoji","setEmoji":"Définir","uploadImage":"Téléverser une image","changeImage":"Changer","removeImage":"Supprimer l'image","useEmoji":"Utiliser un emoji","name":"Nom de l'agent","agentNamePlaceholder":"Nom de l'agent","userName":"Votre nom","userNameDisplay":"Votre nom : {{name}}","userNamePlaceholder":"Votre nom","userNameHint":"Comment l'agent vous appelle","description":"Description","descriptionPlaceholder":"Que fait cet agent ?","unnamedAgent":"Agent sans nom","cancel":"Annuler","save":"Enregistrer","edit":"Modifier","rawIdentity":"IDENTITY.md (texte brut)","editInEditor":"Modifier dans l'éditeur","entry":"{{count}} entrée","entries":"{{count}} entrées"},"knowledgeEditor":{"fileUpdated":"Le fichier a été mis à jour en externe","fileModified":"{{name}} a été modifié. Rechargez pour voir les modifications.","reload":"Recharger","saved":"{{label}} enregistré","failedToSave":"Échec de l'enregistrement","unsavedChanges":"Vous avez des modifications non enregistrées. Les abandonner ?","rawText":"Texte brut","readOnly":"Lecture seule","editAnyway":"Modifier quand même","edit":"Modifier","save":"Enregistrer","startWriting":"Commencez à écrire..."},"knowledgeFiles":{"title":"Fichiers de connaissances","uploading":"Import de {{count}} fichier(s)...","new":"Nouveau","fileNamePlaceholder":"nom-du-fichier","mdExtension":".md","enterFileName":"Veuillez saisir un nom de fichier","fileExists":"Un fichier portant ce nom existe déjà","failedToCreate":"Échec de la création du fichier","unsupportedType":"Type de fichier non pris en charge","failedToUpload":"Échec de l'import de {{name}}","renamedTo":"Renommé en {{name}}","failedToRename":"Échec du renommage du fichier","failedToLoadFile":"Échec du chargement du fichier","deleteConfirm":"Supprimer \\"{{name}}\\" ? Cette action est irréversible.","failedToDelete":"Échec de la suppression du fichier","dropOrUpload":"Déposez les fichiers ici ou cliquez pour importer","supportedTypes":"Documents, images, CSV, fichiers de code et plus","dropOrBrowse":"Déposez les fichiers ou","browse":"parcourir"},"artifacts":{"description":"Petites mini-applications pour commencer. Pour des applications complètes, construisez sur Base44.","buildFullApp":"Créer une application complète","title":"Artefacts","pageCount_one":"{{count}} page","pageCount_other":"{{count}} pages","empty":"Aucun artefact pour l'instant","emptyDescription":"Demandez à votre agent de créer une mini-application et elle apparaîtra ici."},"feedbackModal":{"thankYou":"Merci !","thankYouSubtitle":"Vos retours nous aident à nous améliorer.","title":"Comment est votre expérience ?","subtitle":"Vos retours façonnent ce que nous construisons ensuite.","submitError":"Échec de l'envoi. Veuillez réessayer.","placeholder":"Dites-nous ce que vous en pensez...","sending":"Envoi en cours...","sendFeedback":"Envoyer","ratingBad":"Mauvais","ratingPoor":"Médiocre","ratingOkay":"Correct","ratingGood":"Bien","ratingAmazing":"J'adore","openSupportTicket":"Ouvrir un ticket de support"},"dangerZoneTab":{"title":"Zone de danger","subtitle":"Actions irréversibles pour cet agent.","deleteTitle":"Supprimer cet agent","deleteDescription":"Supprimera définitivement cet agent et toutes ses données, conversations, fichiers et intégrations. Cette action est irréversible.","deleteButton":"Supprimer cet agent","deleteSuccess":"Agent supprimé avec succès","deleteFailed":"Échec de la suppression de l'agent"}}`),gV={live:"Live",offScreen:"Hors écran",waiting:"En attente...",loading:"Chargement...",previewTitle:"Aperçu : {{pageName}}"},hV={main:"principal"},fV={title:"Supprimer l'agent",description:"Cela supprimera définitivement <strong>{{displayName}}</strong>.<br/>Toutes les données de l'agent, conversations, fichiers et intégrations seront définitivement effacées. <danger>Cette action est irréversible.</danger>",cancel:"Annuler",deleteButton:"Supprimer cet agent",deleting:"Suppression..."},vV={title:"Partager votre application",subtitle:"Partagez un lien par e-mail ou sur les réseaux sociaux",sendInviteLabel:"Envoyer une invitation",sendInvitation_one:"Envoyer l'invitation",sendInvitation_other:"Envoyer les invitations",invalidEmailsError:"Une ou plusieurs adresses e-mail ne sont pas valides. Veuillez les vérifier et réessayer.",workspaceIneligibleError:"Essayez d'inviter des utilisateurs de votre espace de travail à la place.",nonWorkspaceIneligibleError:"Certaines adresses e-mail ne sont pas éligibles pour être invitées.",removeIneligibleUsers:"Retirer les utilisateurs non éligibles",inviteSuccessToast:"Invitation envoyée avec succès",inviteErrorToast:"Échec de l'envoi des invitations",copyLink:"Copier le lien",sendInvitationSection:"Envoyer une invitation",inviteEmailPlaceholder:"Saisir une adresse e-mail",inviteButton:"Inviter",shareLiveAppLink:"Partager le lien de l'application en direct",shareLiveAppLinkDesc:"Toute personne disposant du lien peut voir votre application en direct, selon les paramètres de visibilité de votre application.",linkCopied:"Lien copié",enterEmailError:"Veuillez saisir une adresse e-mail",cannotInviteOwner:"Vous ne pouvez pas inviter le propriétaire de cette application",inviteSuccess_one:"Invitation envoyée avec succès",inviteSuccess_other:"{{count}} invitations envoyées avec succès",inviteFailedToSend:"Échec de l'envoi de l'invitation",role_admin:"Admin",role_user:"Utilisateur"},bV={sidebar:j4,loading:O4,trash:B4,errors:U4,codeView:q4,loader:V4,toolbar:$4,header:W4,upgrade:G4,checkpoints:H4,viewAs:Y4,pages:K4,publish:Z4,chat:J4,builderCommandPalette:Q4,unknownView:X4,appEditor:eV,beta:tV,collaborators:aV,integrationsBanner:nV,tools:iV,mainPage:rV,unpublishApp:oV,deleteApp:sV,skillTool:lV,automations:cV,create_automation:dV,create_automation_error:uV,automation_fallback_name:pV,agentEditor:mV,canvasPage:gV,canvasToolbar:hV,deleteAgent:fV,new:"Nouveau",shareModal:vV},yV={title:"Que construirez-vous ensuite ?",titleMobile:`Bonjour, que
construirez-vous ensuite ?`,subtitle:"Décrivez votre idée d'application ci-dessous ou inspirez-vous de nos",subtitleTemplatesLink:"modèles"},kV={title:"Applications récentes"},wV={title:"Superagents récents"},AV={placeholder:"Décrivez l'application que vous souhaitez créer...",placeholderPlanMode:"Dites à Base ce que vous voulez",placeholderViewer:"Les spectateurs ne peuvent pas créer d'applications",placeholderWithUrl:"Ajoutez une description (optionnel)...",captureFullMode:"Créer un site comme celui-ci",captureDesignMode:"Créer un nouveau site inspiré de ce design pour...",uploadFile:"Importer depuis l'ordinateur",uploadFileMobile:"Importer depuis l'appareil",captureFromUrlDescription:"Créer un point de départ 1:1",createFromUrl:"Commencer à partir d'une URL",aiModel:"Modèle IA",selectAiModel:"Sélectionner un modèle IA",addFromGoogleDrive:"Importer depuis Google Drive",modelPicker:{automatic:"Automatique",automaticDescription:"Le meilleur modèle IA est sélectionné pour chaque requête",new:"Nouveau",manual:"Manuel",builderPlus:"Builder+",manualDescription:"Sélectionnez un modèle IA spécifique ({{models}}). Disponible à partir du plan Builder.",upgradeToSelect:"Passez au plan supérieur pour sélectionner un modèle IA"},speechToText:"Reconnaissance vocale",processingAudio:"Traitement de l'audio...",clickToStopRecording:"Cliquer pour arrêter l'enregistrement"},SV={exploreTemplates:"Explorez les modèles de la communauté",discoverDescription:"Découvrez une collection d'applications créées par notre communauté.",failedToLoadCatalog:"Échec du chargement du catalogue",showingItems:"Affichage de {{displayed}} sur {{total}} éléments",searchApps:"Rechercher des applications",viewAllTemplates:"Voir tous les modèles",allCategories:"Tous",priceAll:"Tous les modèles",priceFree:"Gratuits uniquement",pricePaid:"Payants uniquement",pageTitle:"Modèles d'applications",pageSubtitle:"Découvrez une collection curatée d'applications créées par notre communauté.",tabs:{community:"Communauté",workspace:"Espace de travail",myTemplates:"Mes modèles"},categories:{marketingAndSales:"Marketing & Ventes",operations:"Opérations",dataAndAnalytics:"Données & Analyses",contentGeneration:"Génération de contenu",hrAndLegal:"RH & Juridique",finance:"Finance",education:"Éducation",community:"Communauté",lifestyleAndHobbies:"Style de vie & Loisirs",gamesAndEntertainment:"Jeux & Divertissement","Marketing & Sales":"Marketing et ventes",Operations:"Opérations","Data & Analytics":"Données et analyses","Content Generation":"Génération de contenu","HR & Legal":"RH et juridique",Finance:"Finance",Education:"Éducation",Community:"Communauté","Lifestyle & Hobbies":"Mode de vie et loisirs","Games & Entertainment":"Jeux et divertissements"},sort:{popular:"Populaire",newest:"Les plus récents",oldest:"Les plus anciens"},languagePlaceholder:"Langue",pricePlaceholder:"Prix",noAppsFound:"Aucune application trouvée",adjustSearchOrFilters:"Essayez d'ajuster votre recherche ou vos filtres",templateNotFound:"Modèle introuvable ou indisponible.",viewAllCommunityTemplates:"Voir tous les modèles de la communauté",loadingMore:"Chargement d'éléments supplémentaires...",viewDetails:"Voir les détails",workspaceBadge:"Espace de travail",purchasedBadge:"Acheté",free:"Gratuit",unknownUser:"Utilisateur inconnu",private:"Privé",howTo:{title:"Comment partager votre application avec la communauté",intro:"Suivez ces étapes simples :",step1Title:"Ouvrez le constructeur de votre app",step1Desc:"Accédez à une application que vous avez créée ou à laquelle vous avez un accès administrateur",step2Title:"Accédez aux paramètres du catalogue",step2Path:"Espace de travail → Paramètres → Modèles d'applications → Gérer l'annonce",step3Title:"Publiez votre annonce",step3Desc:"Ajoutez une description, des captures d'écran et configurez la visibilité de votre annonce",tipFull:"<bold>Conseil :</bold> Assurez-vous que votre application est déployée et dispose d'une description attrayante pour attirer plus d'utilisateurs !"},modal:{close:"Fermer",prevScreenshot:"Capture précédente",nextScreenshot:"Capture suivante",screenshotAlt:"Capture {{index}}",goToScreenshot:"Aller à la capture {{index}}",createdBy:"par {{creatorName}}",unknownCreator:"Inconnu",usages_one:"{{count}} utilisation",usages_other:"{{count}} utilisations",private:"Privé",workspaceTemplate:"Modèle d'espace de travail",clonePurchase:"Cloner l'achat",processing:"Traitement...",purchaseFor:"Acheter pour {{price}} $",useTemplate:"Utiliser le modèle",viewApp:"Voir l'app",paymentInfo:"Le paiement va entièrement au créateur",backendFunctionsEnabled:"Fonctions backend activées",usesIntegrations:"Utilise des intégrations",aboutThisApp:"À propos de cette app",noDescription:"Aucune description disponible",termsOfUse:"Conditions d'utilisation",success:"Succès",error:"Erreur",purchaseFailed:"Échec de l'achat",failedToPurchase:"Impossible de lancer l'achat",listingApproved:"Annonce approuvée avec succès",approveListingFailed:"Impossible d'approuver l'annonce",listingDeclined:"Annonce refusée avec succès",declineListingFailed:"Impossible de refuser l'annonce",pendingUpdate:"Mise à jour en attente de révision",codeChangesPending:"Modifications du code app en attente",metadataChanges:"Modifications des métadonnées de l'annonce :",manageListing:"Gérer l'annonce",approveUpdate:"Approuver la mise à jour",declineUpdate:"Refuser la mise à jour",approveListing:"Approuver l'annonce",declineListing:"Refuser l'annonce",approving:"Approbation en cours...",declining:"Refus en cours...",cloneAsAdmin:"Cloner en tant qu'admin"}},CV={subscriptionOverdue:"Paiement d'abonnement en retard",overdueMessage:"Le paiement de votre abonnement est en retard. L'accès à certaines fonctionnalités est actuellement limité. Veuillez mettre à jour votre méthode de paiement pour retrouver un accès complet.",goToBilling:"Aller à la facturation",creditLimitReached:"Vous avez atteint la limite de ce mois. Pour continuer à créer des applications",upgradePlan:"mettez à niveau votre plan"},DV={viewerAccess:"Vous avez un accès en lecture seule et ne pouvez pas créer d'applications. Contactez l'administrateur de votre espace de travail pour passer à Éditeur."},TV={fillApiKeys:"Veuillez remplir toutes les clés API requises avant de soumettre.",createAppFailed:"Échec de la création de l'app. Veuillez réessayer."},EV={title:"Commencer à partir d'une URL",description:"Utilisez n'importe quel site web comme point de départ pour votre nouveau site.",urlLabel:"URL du site web",urlPlaceholder:"ex., www.exemple.fr",errorEmpty:"Veuillez entrer une URL",errorInvalid:"Entrez une URL de site web valide, comme www.exemple.fr",errorTooLong:"L'URL est trop longue. Veuillez utiliser une URL plus courte.",modeFull:"Contenu & design",modeFullDescription:"Créer un site similaire.",modeDesign:"Design uniquement",modeDesignDescription:"Créer un nouveau site dans le même style.",modeContent:"Contenu uniquement",legalNotice:"Utilisez uniquement les URLs pour lesquelles vous détenez les droits sur le contenu.",cancel:"Annuler",add:"Ajouter",learnMore:"En savoir plus sur la création à partir d'une URL",capturedUrl:"URL capturée",appReady:"Votre appli est prête ! Vous pouvez maintenant la personnaliser ou ajouter de nouvelles fonctionnalités.",banner:{headline:"Création de votre appli",headlineDesign:"Création de votre appli",subtitle:"Cela peut prendre un peu plus de temps que d'habitude - on fait en sorte que ça vaille le coup.",activity:{msg1:"Découverte du site...",msg2:"Étude du design et du style...",msg3:"Assemblage des éléments...",msg4:"Création de quelque chose de spécial...",msg5:"On y travaille...",msg6:"Peaufinage en cours...",msg7:"Patience, de belles choses arrivent..."}}},PV={count:"Intégrations : {{count}}",loading:"Chargement de l'intégration...",selectedIntegrations:"Intégrations sélectionnées :"},_V={menuItem:"Connecteurs",dialogTitle:"Connecteurs",dialogDescription:"Connectez des outils et des sources de données pour renforcer votre application.",search:"Rechercher",add:"Ajouter",added:"Ajouté",remove:"Supprimer",noResults:"Aucun connecteur trouvé",suggestionCardTitle:"Aidez-moi à comprendre votre demande d'intégration pour :",choosePrompt:"Choisissez une option pour continuer.",somethingElse:"Autre chose",cancel:"Annuler",send:"Envoyer",connectTo:"Se connecter à <name>{{name}}</name>",upgradeToConnect:"Mettez à niveau votre plan pour connecter {{name}} à votre application.",connecting:"Connexion à {{names}}…",cancelled:"annulé",subtitles:{stripe:"Vendez des produits ou abonnements et encaissez en ligne.",salesforce:"Automatisez et synchronisez vos données CRM.",slack:"Envoyez des messages et gérez Slack en tant qu'utilisateur.",slackbot:"Publiez en tant que bot de marque sur votre workspace Slack.",notion:"Organisez et synchronisez vos connaissances et projets.",googlecalendar:"Gérez votre agenda et vos événements.",googledrive:"Exportez et sauvegardez les fichiers générés par l'app.",gmail:"Automatisez l'envoi et la gestion des e-mails.",googlesheets:"Synchronisez et gérez vos données de tableurs.",googleslides:"Créez et gérez des présentations.",googledocs:"Gérez et automatisez la création de documents.",googlebigquery:"Interrogez et synchronisez vos données analytiques.",hubspot:"Synchronisez les données CRM et automatisez le marketing.",linkedin:"Partagez des publications et accédez aux profils professionnels.",tiktok:"Suivez vos statistiques de profil et parcourez vos vidéos.",discord:"Notifiez des canaux et intégrez votre communauté Discord.",wix:"Accédez aux données de votre site Wix et aux outils métier.",github:"Gérez les dépôts, issues et pull requests.",gitlab:"Gérez les projets, MRs et pipelines CI/CD.",bamboohr:"Annuaire des employés et gestion RH.",wrike:"Planification de projets et coordination d'équipe.",box:"Gestion sécurisée de contenu dans le cloud.",clickup:"Organisez vos projets et suivez le travail de l'équipe.",google_analytics:"Analysez le trafic et le comportement des utilisateurs.",outlook:"E-mail et calendrier.",linear:"Suivi des tickets et gestion de projet.",dropbox:"Stockez et synchronisez vos fichiers dans le cloud.",google_search_console:"SEO et analyse des recherches.",google_classroom:"Éducation et gestion des cours.",airtable:"Bases de données et tableurs flexibles.",splitwise:"Partage de dépenses et gestion des comptes de groupe.",microsoft_teams:"Chat d'équipe, canaux et réunions.",share_point:"Gestion documentaire et collaboration.",one_drive:"Stockage de fichiers dans le cloud.",typeform:"Formulaires, sondages et collecte de données."}},xV={label:"Planifier",tooltip:"Activez le mode Plan pour que l'IA crée un plan détaillé avant de construire votre application."},IV="Voir tout",RV="Erreur",zV={menuLabel:"Importer depuis Figma",title:"Générer depuis un cadre Figma",description:"Collez le lien de votre frame pour générer une app basée sur votre design.",labelUrl:"Lien du cadre Figma",placeholderUrl:"ex., https://www.figma.com/frame-link",urlHelp:"Utilisez un lien vers un cadre, pas un fichier ou une page.",learnPrepare:"Apprenez à préparer votre cadre Figma",connectTitle:"Se connecter à Figma",connectDescription:"Autorisez l'accès à votre compte Figma pour importer votre design.",connectButton:"Se connecter à Figma",connectedToFigma:"Connecté à Figma",errorMissingUrl:"Entrez une URL d'un cadre Figma",errorNotFigmaUrl:"Entrez une URL d'un cadre Figma",errorNotFrameUrl:"Entrez une URL d'un cadre, pas d'un fichier ou d'une page.",errorRateLimit:"L'API Figma est temporairement occupée. Veuillez réessayer dans quelques minutes.",errorForbidden:"Connexion Figma invalide ou expirée. Veuillez reconnecter votre compte Figma.",errorNotFound:"Fichier Figma introuvable. Veuillez vérifier l'URL et vous assurer que vous avez accès.",errorGeneric:"Impossible d'accéder à ce design Figma. Veuillez vérifier l'URL et réessayer.",validating:"Vérification...",switchAccount:"Changer de compte Figma",cancel:"Annuler",generate:"Générer",viewerCannotGenerate:"Vous avez un accès en lecture seule et ne pouvez pas créer d'applications. Contactez l'administrateur de votre workspace pour passer au rôle d'Éditeur.",figmaFile:"Fichier Figma",justNow:"À l'instant",importingMessage:"Génère une app basée sur votre design depuis ce cadre Figma."},MV={connectFailed:"Échec de la connexion à Figma. Veuillez réessayer.",popupBlocked:"Popup bloqué. Veuillez autoriser les popups et réessayer.",disconnected:"Figma déconnecté",disconnectFailed:"Échec de la déconnexion de Figma. Veuillez réessayer."},NV={capturing:"Capture en cours...",figmaDescription:"Analyse du système de design Figma. Extraction de la mise en page, de la typographie et des tokens de couleur pour construire votre app."},FV={webApp:"Apps",aiAgent:"Superagents",recentApps:"Apps récentes",templates:"Modèles",favoritesComingSoon:"Favoris bientôt disponibles"},LV={new:"Nouveau",message:"Dites bonjour à votre vrai Agent Personnel",cta:"Essayez maintenant"},jV={greeting:"Bonjour {{name}},",greetingGeneric:"Bonjour,",title:"Créez votre propre Agent Personnel IA",createTitle:"Créez votre propre Superagent",newBadge:"Nouveau",subtitle:"Votre agent IA qui exécute des tâches, se connecte à vos outils et travaille pour vous 24h/24",cta:"Créez votre Superagent",creating:"Création...",continueHero:{heading:"Reprenez là où vous vous étiez arrêté",continueBtn:"Continuer avec {{name}}",or:"Ou",createNew:"Créer un nouveau superagent",activeAgo:"Actif {{time}}",you:"Vous"},features:{hassleFree:{title:"Sans tracas",desc:"Pas de Docker, pas de serveurs, pas de configuration. Lancez simplement votre Superagent."},alwaysOn:{title:"Toujours actif",desc:"Exécute des tâches et automatisations pour vous, 24h/24."},actions:{title:"Effectue de vraies actions",desc:"Gère des tâches, envoie des mises à jour et réagit automatiquement."},remembers:{title:"Se souvient de tout",desc:"Garde une trace de vos objectifs, préférences et contexte."},everywhere:{title:"Vit là où vous êtes",desc:"Fonctionne dans WhatsApp, Telegram, Slack et votre navigateur."},secure:{title:"Sécurisé par défaut",desc:"Accès uniquement à ce que vous autorisez."}},untitled:"Agent sans titre",active:"Actif",noDescription:"Aucune description disponible",edited:"Modifié {{time}}",updated:"Mis à jour {{time}}",failedToCreate:"Impossible de créer l'agent. Veuillez réessayer.",errorPage:{title:"Oups, quelque chose s'est mal passé",descriptionLine1:"Un problème technique est survenu de notre côté.",descriptionLine2:"Retournez à la page de création d'agent et réessayez",goToAgents:"Aller aux Agents →"}},OV={edited:"Modifié {{time}}",updated:"Mis à jour {{time}}",updatedRecently:"Mis à jour récemment"},BV={emptyTitle:"Vous n'avez encore créé aucune app.",emptySubtitle:"Créez votre première app en utilisant le formulaire ci-dessus !"},UV={dialogTitle:"Navigation rapide",dialogDescription:"Accédez rapidement aux apps, modèles, à la facturation et aux réglages d'espace de travail depuis la page d'accueil.",searchPlaceholder:"Rechercher des apps, réglages, modèles, facturation...",searching:"Recherche des apps de l'espace de travail...",emptyTitle:"Aucune destination correspondante",emptyDescription:"Essayez un nom d'app, une section des réglages ou une page comme la facturation ou les modèles.",allApps:"Toutes les apps",backToWorkspace:"Retour à l'espace de travail",templates:"Modèles",billing:"Facturation",groups:{apps:"Apps",navigate:"Pages",workspace:"Espace de travail",account:"Compte"},subtitles:{favoriteApp:"App favorite",recentApp:"App récente",page:"Page"}},qV={label:"Que souhaitez-vous créer ?",more:"Plus",moreIdeas:"Plus d'idées",categories:{CRM:"CRM","Dev productivity":"Productivité Dev",Educational:"Éducatif","Content Generation and Editing":"Génération et édition de contenu","Personal Finance":"Finances personnelles","Health and Wellness":"Santé et bien-être",Productivity:"Productivité","Travel Planning":"Planification de voyages",Entertainment:"Divertissement",Environmental:"Environnement","Home Management":"Gestion de la maison","Creative Tools":"Outils créatifs",Tasks:"Tâches","CRM & Sales":"CRM et ventes",Portfolio:"Portfolio",Finance:"Finance","Scheduling & Booking":"Planification et réservation",eCommerce:"eCommerce","Construction & Trade":"Construction et métiers","Events & Community":"Événements et communauté",Wellness:"Bien-être","Operations & Logistics":"Opérations et logistique","Tasks & Workflows":"Tâches et flux","Content & Sites":"Contenu et sites",Booking:"Réservation","E-commerce":"E-Commerce",Projects:"Projets",Operations:"Opérations"}},VV={hero:yV,recentApps:kV,recentAgents:wV,chat:AV,catalog:SV,billing:CV,permissions:DV,validation:TV,urlCapture:EV,integrations:PV,connectors:_V,planMode:xV,viewAll:IV,error:RV,figmaDialog:zV,figmaOAuth:MV,statusBanner:NV,tabs:FV,tryAgentBanner:LV,agent:jV,appCard:OV,appsList:BV,commandPalette:UV,ideas:qV},$V={title:"Intégrations",subtitle:"Découvrez des intégrations prêtes à l'emploi pour vous connecter à des APIs, des services et des outils afin d'étendre les capacités de votre application."},WV={placeholder:"Rechercher des intégrations..."},GV={title:"Aucune intégration correspondante trouvée",description:"Essayez d'ajuster votre recherche ou vos filtres."},HV={title:"Connecteurs",subtitle:"Connexions OAuth rapides aux services populaires, prises en charge par Base44."},YV={howToUse:"Comment utiliser",dialog:{getStarted:"Commencer",navigateInstruction:"Accédez à l'onglet Intégrations de votre application pour connecter {{name}} et obtenir des prompts personnalisés.",upgradeNotice:"Cette intégration nécessite des fonctions backend, disponibles uniquement avec le forfait Builder et supérieur. <seePlansLink>Voir les forfaits</seePlansLink>"}},KV={stripe:"Vendez des produits ou des abonnements et recevez vos paiements en ligne.",salesforce:"Automatisez et synchronisez les enregistrements CRM.",slack:"Envoyez des messages et gérez Slack en tant qu'utilisateur.",slackbot:"Publiez en tant que bot personnalisé dans votre espace de travail Slack.",notion:"Organisez et synchronisez vos connaissances et données de projet.",googlecalendar:"Gérez votre agenda et vos événements.",googledrive:"Exportez et sauvegardez les fichiers générés par votre application.",gmail:"Automatisez l'envoi d'e-mails et la gestion de la boîte de réception.",googlesheets:"Synchronisez et gérez les données de vos feuilles de calcul.",googleslides:"Créez et gérez des présentations.",googledocs:"Gérez et automatisez la création de documents.",googlebigquery:"Interrogez et synchronisez des données analytiques.",googletasks:"Gérez vos listes de tâches.",googlemeet:"Vidéoconférences et réunions.",hubspot:"Synchronisez les données CRM et automatisez le marketing.",linkedin:"Partagez des mises à jour et accédez aux profils professionnels.",tiktok:"Suivez vos statistiques de profil et parcourez vos vidéos.",discord:"Publiez dans vos canaux et intégrez votre communauté Discord.",wix:"Accédez aux données du site Wix et aux outils métier.",github:"Gérez les dépôts, issues et pull requests.",gitlab:"Gérez les projets, MRs et pipelines CI/CD.",bamboohr:"Annuaire des employés et gestion RH.",wrike:"Planification de projets et coordination d'équipe.",box:"Gestion sécurisée de contenu dans le cloud.",clickup:"Organisez les projets et suivez le travail d'équipe.",google_analytics:"Suivez le trafic web et les insights utilisateurs.",outlook:"E-mail et calendrier.",linear:"Suivi des issues et gestion de projet.",dropbox:"Stockez et synchronisez des fichiers dans le cloud.",google_search_console:"SEO et analytique de recherche.",google_classroom:"Éducation et gestion de cours.",airtable:"Bases de données et feuilles de calcul flexibles.",splitwise:"Partage de dépenses et factures groupées.",microsoft_teams:"Chat d'équipe, canaux et réunions.",share_point:"Gestion de documents et collaboration.",one_drive:"Stockage de fichiers dans le cloud.",typeform:"Formulaires, sondages et collecte de données.",hugging_face:"Inférence IA et référentiels de modèles.",calendly:"Planification automatisée de rendez-vous.",contentful:"CMS headless et gestion de contenu.",supabase:"Explorez les schémas, lisez les données et consultez l'état du projet (lecture seule)."},ZV={page:$V,search:WV,emptyState:GV,connectors:HV,connector:YV,catalog:KV},JV={title:"Launchpad",subtitle:"Découvrez et explorez les apps créées par la communauté",shareApp:"Partagez votre app",allApps:"Toutes les apps",noAppsFound:"Aucune app trouvée",noAppsHint:"Essayez de réinitialiser vos filtres ou de rechercher autre chose.",noAppsEmpty:"Soyez le premier à publier une app sur Launchpad !",clearFilters:"Réinitialiser les filtres",goToFirstPage:"Aller à la première page",retry:"Réessayer",publishedToast:"Votre app est maintenant en ligne sur Launchpad !"},QV={placeholder:"Rechercher des apps sur Launchpad..."},XV={all:"Toutes"},e$={title:"Tendances du moment"},t$={title:"Meilleures apps",empty:"Pas encore de meilleures apps pour cette période.",thisWeek:"Cette semaine",thisMonth:"Ce mois-ci",allTime:"Depuis toujours"},a$={live:"En direct",someone:"Quelqu'un",sentences:{vote:"{{user}} vient de voter pour {{app}}",like:"{{user}} vient d'aimer {{app}}",publish:"{{user}} vient de publier {{app}}",default:"{{user}} vient d'interagir avec {{app}}"}},n$={signInPrompt:"Veuillez vous connecter pour publier votre app sur Launchpad.",signIn:"Se connecter",back:"Retour",next:"Suivant",publish:"Publier",publishing:"Publication en cours...",stepOf:"Étape {{current}} sur {{total}}",successToast:"Votre app est maintenant en ligne sur Launchpad !",failedDefault:"Échec de la publication. Veuillez réessayer.",categoriesLoadFailed:"Impossible de charger les catégories. Veuillez fermer et réessayer.",categoriesRetry:"Réessayer",steps:{selectApp:"Sélectionner une app",details:"Détails",preview:"Aperçu"},appPicker:{chooseApp:"Choisissez l'app que vous souhaitez publier sur Launchpad.",searchPlaceholder:"Rechercher vos apps...",loadFailed:"Impossible de charger vos apps.",tryAgain:"Réessayer",noApps:"Vous n'avez pas encore d'apps.",noAppsForQuery:"Aucune app trouvée pour « {{query}} »",loadMore:"Charger plus"},preview:{caption:"Voici à quoi votre app ressemblera dans la grille Launchpad :",creatorFallback:"Vous"},categoryPicker:{count:"{{current}}/{{max}} catégories sélectionnées"},validation:{nameRequired:"Le nom de l'app est requis",descriptionRequired:"La description courte est requise",descriptionTooLong:"Max. {{max}} caractères",categoriesRequired:"Sélectionnez au moins 1 catégorie",screenshotsRequired:"Téléversez au moins 1 capture d'écran"}},i$={uploadFailed:"Certaines captures d'écran n'ont pas pu être téléversées. Veuillez réessayer.",uploading:"Téléversement en cours...",addImage:"Ajouter une image",count:"{{current}}/{{max}} captures d'écran. Glissez pour réorganiser."},r$={previous:"Précédent",next:"Suivant",pageOf:"Page {{page}} sur {{totalPages}}"},o$={justNow:"à l'instant",minutesAgo:"il y a {{count}} min",hoursAgo:"il y a {{count}} h",daysAgo:"il y a {{count}} j"},s$={appName:"Nom de l'app",shortDescription:"Description courte",shortDescriptionPlaceholder:"Une brève description de ce que fait votre app",longDescription:"Description détaillée",longDescriptionPlaceholder:"Parlez-nous davantage de votre app...",optional:"Facultatif",categories:"Catégories",screenshots:"Captures d'écran",generateWithAi:"Générer avec l'IA",aiComingSoon:"Génération par IA bientôt disponible"},l$={tryApp:"Essayer l'app",share:"Partager",shareToast:"Lien copié dans le presse-papiers !",shareError:"Échec du partage",about:"À propos",moreByCreator:"Plus de {{name}}",backToLaunchpad:"Retour à Launchpad",notFound:"App introuvable",notFoundHint:"Cette app a peut-être été supprimée ou dépubliée.",loadFailed:"Échec du chargement des détails de l'app.",unknownCreator:"ce créateur"},c$={title:"Commentaires",placeholder:"Écrire un commentaire...",submit:"Publier",submitting:"Publication...",empty:"Pas encore de commentaires. Soyez le premier !",loadMore:"Charger plus de commentaires",deleteFailed:"Échec de la suppression du commentaire.",postFailed:"Échec de la publication du commentaire.",signInToComment:"Connectez-vous pour laisser un commentaire",anonymous:"Anonyme"},d$={likeFailed:"Échec de la mise à jour du like.",voteFailed:"Échec de la mise à jour du vote.",selfVoteError:"Vous ne pouvez pas voter pour votre propre app."},u$={loadFailed:"Impossible de charger les données de Launchpad. Veuillez réessayer.",browseFailed:"Impossible de charger les apps. Veuillez réessayer.",topAppsFailed:"Impossible de charger les meilleures apps. Veuillez réessayer.",categoriesFailed:"Impossible de charger les catégories.",refreshFailed:"Échec de l'actualisation — veuillez recharger la page."},p$={page:JV,search:QV,categories:XV,trending:e$,topApps:t$,liveActivity:a$,publish:n$,screenshots:i$,pagination:r$,relativeTime:o$,fillDetails:s$,detail:l$,comments:c$,engagement:d$,errors:u$},m$={title:"Apps",allAgentsTitle:"Tous les agents",createNewApp:"Créer une nouvelle app",createNewAgent:"Créer un nouvel agent",tabRecents:"Récents",tabFavorites:"Favoris",tabAllApps:"Toutes les apps",tabAllAgents:"Tous les agents",searchPlaceholder:"Rechercher des apps",gridView:"Vue grille",listView:"Vue liste",appTypeLabel:"Type d'app",appTypeApps:"Apps",appTypeAgents:"Agents",tableHeaderName:"Nom",tableHeaderDescription:"Description",tableHeaderActions:"Actions",folderActionAddApps:"Ajouter des apps",folderActionRename:"Renommer",folderActionDelete:"Supprimer",filterOwnedByMe:"Dont je suis propriétaire",filterMyAppsPersonal:"Mes apps (espace de travail personnel)",filterAllPlatform:"Toutes les apps (à l'échelle de la plateforme)",filterMyAppsWorkspace:"Mes apps dans l'espace de travail {{workspaceName}}",filterAllAppsWorkspace:"Toutes les apps dans l'espace de travail {{workspaceName}}",addNewFolder:"Ajouter un nouveau dossier",sortLastUpdated:"Dernière mise à jour",sortLastCreated:"Dernière création",sortNameAsc:"Nom (A-Z)",sortNameDesc:"Nom (Z-A)",filterCreatedByMe:"Créé par moi",filterCreatedByAnyone:"Créé par tous",filterAllPlatformApps:"Toutes les apps de la plateforme",filterMyApps:"Mes apps dans {{workspaceName}}",planModeDescription:"Cette application est actuellement en mode planification et n'a pas encore été créée.",noDescription:"Pas de description",byCreator:"Par {{name}}",createdAgo:"Créé {{timeAgo}}",untitledPlan:"Plan sans titre",tableHeaderApp:"App",tableHeaderLastUpdated:"Dernière mise à jour",tableHeaderCreatedBy:"Créé par",emptyFolderTitle:"Aucune app ajoutée",emptyFolderMessage:"Les apps apparaîtront ici une fois ajoutées",addExistingApps:"Ajouter des apps existantes",emptyFavoritesTitle:"Aucune app favorite",emptyFavoritesMessage:"Mettez une app en favori pour l'ajouter ici.",emptyRecentsTitle:"Aucune activité récente",emptyRecentsMessage:"Les apps que vous ouvrez apparaîtront ici.",emptySearchTitle:"Aucune app trouvée",emptySearchMessage:"Aucune app ne correspond à vos critères.",clearFilters:"Effacer les filtres",previous:"Précédent",next:"Suivant",failedToUpdateStar:"Échec de la mise à jour du favori",failedToUpdateFavorite:"Échec de la mise à jour du favori",pleaseRetry:"Veuillez réessayer",folderCreated:"Dossier créé",folderRenamed:"Dossier renommé",folderDeleted:"Dossier supprimé",folderUpdated:"Dossier mis à jour",filter:"Filtrer"},g$={showAll:"Tout afficher",appCount_one:"{{count}} app",appCount_other:"{{count}} apps",addApps:"Ajouter des apps",rename:"Renommer",delete:"Supprimer",cancel:"Annuler",save:"Enregistrer",saving:"Enregistrement...",create:"Créer",deleting:"Suppression...",createFirstFolder:"Créer votre premier dossier",createNewFolder:"Créer un nouveau dossier",renameFolder:"Renommer le dossier",folderVisibilityDescription:"L'organisation des dossiers est visible pour votre espace de travail.",folderNamePlaceholder:"Nom du dossier",visibility:"Visibilité",scopeWorkspace:"Espace de travail",scopePersonal:"Personnel",personalScopeHint:"Visible uniquement par vous",deleteFolder:"Supprimer le dossier",deleteFolderDescription:'Vous êtes sur le point de supprimer "{{name}}" ? Les apps de ce dossier ne seront pas supprimées, seulement le dossier.',manageFolders:"Gérer les dossiers",manageFoldersDescription:"Ajouter ou supprimer cette app des dossiers.",searchFoldersPlaceholder:"Rechercher des dossiers...",createNewFolderButton:"Créer un nouveau dossier",noFoldersMatchSearch:"Aucun dossier ne correspond à votre recherche",noFoldersYet:"Aucun dossier pour l'instant",allFolders:"Tous les dossiers",searchFolders:"Rechercher des dossiers",scopeFilterAll:"Tous",sortNameAsc:"Nom A–Z",sortNameDesc:"Nom Z–A",sortMostApps:"Plus d'apps",sortFewestApps:"Moins d'apps",noFoldersFound:"Aucun dossier trouvé",noFoldersMatchCriteria:"Aucun dossier ne correspond à vos critères de recherche.",clearSearch:"Effacer la recherche",manageAppsInFolder:"Gérer les apps dans le dossier",manageAppsDescription:'Ajouter ou supprimer des apps dans "{{name}}".',searchAppsPlaceholder:"Rechercher des apps...",noAppsMatchSearch:"Aucune app ne correspond à votre recherche",noAppsFound:"Aucune app trouvée",loadMore:"Charger plus",appUpdatedAgo:"Mis à jour {{timeAgo}}",saveWithCount:"{{label}} ({{count}})",operationFailed:"Opération échouée. Veuillez réessayer."},h$={viewLiveApp:"Voir l'app en ligne",share:"Partager",rename:"Renommer",cloneApp:"Cloner l'app",appSettings:"Paramètres de l'app",delete:"Supprimer",appDeleted:"App supprimée",appDeletedDescription:'"{{name}}" a été supprimée',failedToDelete:"Échec de la suppression de l'app",failedToDeleteDescription:"Une erreur est survenue lors de la suppression de l'app",manageFolders:"Gérer les dossiers",removeFromFolder:"Supprimer du dossier",goToAppSettings:"Aller aux paramètres de l'app",deleteApp:"Supprimer l'app",deleteAppTitle:'Supprimer "{{name}}" ?',deleteAppDescription:"Cela supprimera définitivement cette app et toutes ses données. Cette action est irréversible.",appRemovedFromFolder:"App supprimée du dossier",failedToRemoveFromFolder:"Échec de la suppression de l'app du dossier",addedToFolders_one:"App ajoutée à {{count}} dossier",addedToFolders_other:"App ajoutée à {{count}} dossiers",removedFromFolders_one:"App supprimée de {{count}} dossier",removedFromFolders_other:"App supprimée de {{count}} dossiers",failedToUpdateFolders:"Échec de la mise à jour des dossiers",foldersUpdated:"{{added}} et {{removed}}",removeFromFavorites:"Retirer des favoris",addToFavorites:"Ajouter aux favoris"},f$={title:"Renommer l'app",description:"Le nom de l'app est visible pour vous et vos utilisateurs.",inputPlaceholder:"Entrez le nom de l'app",urlUpdateNote:"Changer le nom de l'app mettra également à jour son URL.",cancel:"Annuler",save:"Enregistrer",saving:"Enregistrement...",nameRequired:"Le nom de l'app est obligatoire",enterDifferentName:"Veuillez entrer un nom différent",successTitle:"App renommée",successDescription:'App renommée en "{{name}}"',successDescriptionUrlFailed:`App renommée en "{{name}}", mais l'URL n'a pas pu être mise à jour.`,failedTitle:"Échec du renommage de l'app",failedDescription:"Une erreur est survenue lors du renommage de l'app"},v$="Chargement...",b$="(Copie)",y$={cloningTitle:"Clonage de {{appName}}",cloningDescription:"Cela peut prendre quelques instants. Vous le trouverez sur la page Apps une fois prêt",goToApps:"Accéder aux apps",confirmingPurchaseTitle:"Confirmation de votre achat...",confirmingPurchaseSubtitle:"Cela ne prend généralement que quelques secondes",errorTitle:"Erreur",goBack:"Retour",cloneNotAllowedTitle:"Clonage non autorisé",cloneNotAllowedDescription:"Cette app nécessite des fonctions backend. Vous devez être au niveau Builder ou supérieur pour la cloner.",configureSecrets:"Configurer les secrets",cloneTitle:"Cloner {{name}}",cloneButton:"Cloner {{name}}",cloningButton:"Clonage de {{name}}...",defaultAppName:"App",preparing:"Préparation...",errorCloningApp:"Une erreur s'est produite lors du clonage de l'app",errorFetchingRequirements:"Une erreur s'est produite lors de la récupération des prérequis de clonage",errorPurchaseTimeout:"La confirmation de votre achat prend plus de temps que prévu. Vérifiez votre e-mail pour la confirmation, ou contactez le support si le problème persiste.",errorVerifyPurchase:"Impossible de vérifier l'achat. Veuillez réessayer."},k$={userApps:m$,folders:g$,appActions:h$,renameApp:f$,loading:v$,copySuffix:b$,remixPage:y$},w$={title:"Base44 App Templates Marketplace – Conditions d'utilisation",lastUpdated:"Dernière mise à jour : 18 novembre 2025"},A$={header:w$},S$={home:"Accueil",allApps:"Toutes les applications",apps:"Applications",integrations:"Intégrations",appTemplates:"Modèles d'applications",hirePartner:"Engager un partenaire",affiliates:"Affiliés",docsSupport:"Docs & Support",admins:"Administrateurs",referFriends:"Parrainer des amis",language:"Langue",startBuilding:"Commencer à créer"},C$={title:"Créer un espace de travail",subtitle:"Commencez à collaborer avec les membres de votre espace de travail",back:"Retour",formTitle:"Informations sur l'espace de travail",nameLabel:"Nom de l'espace de travail",namePlaceholder:"Entrez le nom de votre espace de travail",nameHint:"Choisissez un nom qui représente votre espace de travail",nameRequiredError:"Le nom de l'espace de travail est requis",createFailedError:"Échec de la création de l'espace de travail",limitReachedError:"Limite d'espaces de travail atteinte. Vous pouvez créer un maximum de 3 espaces de travail.",cancelButton:"Annuler",createButton:"Créer l'espace de travail",creatingButton:"Création de l'espace de travail...",whatHappensNext:{title:"Que se passe-t-il ensuite ?",ownerPermissions:"Vous serez le propriétaire de l'espace de travail avec toutes les autorisations de gestion",inviteMembers:"Vous pouvez inviter des membres et gérer les licences",accessDashboard:"Accédez au tableau de bord de votre espace de travail pour commencer"}},D$={workspace:"Espace de travail",backToWorkspace:"Retour à {{workspaceName}}",settings:"Paramètres",inviteMembers:"Inviter des membres",myWorkspaces:"Mes espaces de travail",createWorkspace:"Créer un espace de travail",noWorkspacesFound:"Aucun espace de travail trouvé",accountSettings:"Paramètres du compte",apiKey:"Clé API",helpSupport:"Aide et support",becomeAffiliate:"Devenir affilié",defaultUser:"Utilisateur",defaultUserInitial:"U",referFriend:"Parrainer un ami",giftCards:"Cartes Cadeaux",sendGiftCard:"Envoyer une carte cadeau",notifications:"Notifications",logOut:"Se déconnecter",aboutApp:"À propos de l'application",upgradePlan:"Mettre à niveau",winCredits:"Gagnez des crédits gratuits",pricingPlans:"Plans tarifaires",documentation:"Documentation",getHelp:"Obtenir de l'aide",memberCount_one:"{{count}} membre",memberCount_other:"{{count}} membres",myProfile:"Mon profil",viewProfile:"Voir le profil",failedToLoadProfile:"Impossible de charger le profil",user:"Utilisateur"},T$={ariaLabel:"Menu de l'agent",agentFallback:"Agent"},E$={integrationCredits:"Crédits d'intégrations",monthlyCredits:"Crédits mensuels",messageCredits:"Crédits de messages",dailyCredits:"Crédits quotidiens",giftCardCredits:"Crédits Cadeaux",renewsAt:"Renouvellement le {{date}}",giftCardTooltip:"Les crédits de carte cadeau sont utilisés avant les crédits de votre plan.",percentUsed:"{{percent}}% utilisé",messagesRemaining_one:"{{count}} message restant",messagesRemaining_other:"{{count}} messages restants",upgradeYourPlan:"Mettre à niveau votre plan",getMoreOutOfYourApps:"Tirez le meilleur de vos apps",upgradeYourPlanToPro:"Passez votre plan à Pro",redeemDescription:"Une fois échangés, les crédits seront appliqués à votre espace de travail.",creditsRemaining_one:"{{count}} crédit restant",creditsRemaining_other:"{{count}} crédits restants"},P$={label:"Communauté",appTemplates:"Modèles d'applications",appTemplatesDesc:"Démarrez plus vite avec les modèles de la communauté.",hirePartner:"Engager un partenaire",hirePartnerDesc:"Trouvez des partenaires et commencez à collaborer.",spotlight:"En vedette",spotlightDesc:"Explorez les applications remarquables.",affiliateProgram:"Programme d'affiliation",affiliateProgramDesc:"Devenez affilié Base44.",joinUsOn:"Rejoignez-nous sur"},_$=JSON.parse(`{"title":"Paramètres","lockedFeature":{"includedInPlan":"Inclus dans le plan {{plan}} et supérieur","includedInPlanExact":"Inclus dans le plan {{plan}}","viewPlans":"Voir les plans","talkToSales":"Parler aux ventes","authSecurity":{"title":"Contrôlez l'accès à l'espace de travail","body":"Essentiel pour les industries réglementées et les organisations soucieuses de la sécurité","ssoAccess":"Utilisez l'authentification unique (SSO) pour réduire les risques liés aux mots de passe","domainVerification":"Contrôlez qui peut rejoindre avec la vérification de domaine","ipWhitelisting":"Autorisez l'accès uniquement depuis des adresses IP de confiance"},"integrations":{"title":"Configurez une fois, utilisez dans tout l'espace de travail","body":"Pour les équipes standardisant les API et outils externes entre les applications.","configureOnce":"Configurez les intégrations API une seule fois pour toutes les applications et coéquipiers","sharedAccess":"Permettez à tous dans votre espace de travail d'utiliser les outils connectés instantanément","consistentConnections":"Gardez les connexions externes cohérentes dans chaque application"},"appsConfiguration":{"title":"Définissez la visibilité des applications et les règles SSO","body":"Pour les équipes gérant des outils internes et des applications sensibles.","publicAppControl":"Décidez qui peut créer des applications publiques dans cet espace de travail","defaultVisibility":"Définissez la visibilité initiale des nouvelles applications","enforceSso":"Appliquez le SSO de l'espace de travail à toutes les applications"},"analytics":{"title":"Voyez comment votre équipe utilise Base44","body":"Pour les propriétaires et administrateurs d'espaces de travail suivant l'utilisation et l'adoption.","creditTracking":"Suivez comment les crédits sont utilisés au sein de votre équipe","activeUsers":"Voyez quels coéquipiers utilisent activement Base44","licenseUsage":"Comprenez combien de licences sont actuellement utilisées"},"skills":{"title":"Donnez à votre IA des skills réutilisables","body":"Définissez un comportement IA cohérent qui fonctionne dans toutes vos applications.","reusableInstructions":"Créez un ensemble d'instructions personnalisées (un skill) qui façonnent la manière dont l'IA construit vos applications","autoActivation":"Créez une fois, réutilisez dans toutes vos applications","teamConsistency":"Guidez le ton, le formatage, la logique ou tout comportement que vous souhaitez standardiser"},"mcpConnections":{"title":"Connectez des outils externes avec MCP","body":"Intégrez des données en direct d'outils externes directement dans vos applications.","externalTools":"Donnez à votre générateur IA accès au contexte en temps réel pendant qu'il travaille","customServers":"Connectez des serveurs MCP personnalisés à utiliser dans toutes vos applications","extendCapabilities":"Accédez à des outils comme Amplitude, Linear et plus encore lors du développement"}},"membersTitle":"Membres","inviteMembers":"Inviter des membres","inviteByEmail":"Inviter par e-mail","bulkInviteCsv":"Invitation groupée (CSV)","close":"Fermer","createInviteLink":"Créer un lien d'invitation","manageInviteLinks":"Gérer les liens d'invitation","backToMembers":"Retour aux membres","backToMenu":"Retour au menu des paramètres","inviteLinks":{"title":"Liens d'invitation","breadcrumb":"Liens d'invitation","description":"Créez et gérez les liens d'invitation pour cet espace de travail.","createInviteLink":"Créer un lien d'invitation","noLinksYet":"Aucun lien d'invitation","noLinksSubtitle":"Créez un lien d'invitation pour partager facilement l'accès à cet espace de travail.","copyLink":"Copier le lien","copyLinkLower":"Copier le lien","deleteTooltip":"Supprimer le lien d'invitation","deleteButton":"Supprimer","deleteLinkButton":"Supprimer le lien","deleteConfirmTitle":"Supprimer le lien d'invitation ?","deleteConfirmActive":"Les personnes ne pourront plus rejoindre via ce lien. Cette action est irréversible.","deleteConfirmInactive":"Ce lien et son historique seront supprimés de cet espace de travail.","copiedToClipboard":"Lien d'invitation copié dans le presse-papiers.","columnName":"Nom","columnStatus":"Statut","columnUsage":"Utilisation","columnRole":"Rôle","columnExpiration":"Date d'expiration","columnDomains":"Domaines autorisés","statusActive":"Actif","statusRevoked":"Révoqué","statusExpired":"Expiré","statusLimitReached":"Limite atteinte","usageUnlimited":"Illimité","dialogTitle":"Créer un lien d'invitation","dialogMobileTitle":"Créer un lien","linkName":"Nom du lien (Facultatif)","linkNamePlaceholder":"ex., Intégration de nouveaux employés","role":"Rôle","selectRole":"Sélectionner un rôle","roleViewer":"Lecteur","roleEditor":"Éditeur","roleMember":"Membre","expiration":"Expiration","selectExpiration":"Sélectionner l'expiration","nDays_one":"{{count}} jour","nDays_other":"{{count}} jours","never":"Jamais","maximumUses":"Utilisations maximales","selectLimit":"Sélectionner la limite","unlimited":"Illimité","nUses_one":"{{count}} utilisation","nUses_other":"{{count}} utilisations","allowedDomains":"Domaines e-mail autorisés (Facultatif)","allowedDomainsPlaceholder":"ex., entreprise.com, partenaire.org","domainsHelp":"Séparez les domaines par des virgules.","domainsError":"Entrée invalide. Utilisez des domaines séparés par des virgules (ex., entreprise.com, partenaire.org)","securityWarning":"Toute personne disposant de ce lien peut rejoindre votre espace de travail et accéder à ses données. Ne le partagez qu'avec des personnes de confiance.","advancedOptions":"Options avancées","cancel":"Annuler","creating":"Création...","create":"Créer","linkCreatedAndCopied":"Lien d'invitation créé et copié.","manageInvitations":"Gérer les invitations"},"postPaymentInvite":{"title":"Tout est prêt !","description":"Votre plan est actif. Invitez vos amis et collègues à construire ensemble.","createInviteLink":"Créer un lien d'invitation","inviteByEmail":"Inviter par e-mail","maybeLater":"Peut-être plus tard","inviteLinkReady":"Lien d'invitation prêt","subtitleNoDomain":"Toute personne disposant de ce lien peut rejoindre en tant que <bold>{{role}}</bold>","subtitleWithDomain":"Toute personne avec un e-mail {{domains}} peut rejoindre en tant que <bold>{{role}}</bold>","copied":"Copié","manageInvitationsPrompt":"Vous pouvez gérer tous vos liens d'invitation depuis la page de paramètres <inviteLink>Liens d'invitation</inviteLink>.","copyLink":"Copier","close":"Fermer","expires":"Expire {{time}}","remainingUses_one":"{{count}} utilisation restante","remainingUses_other":"{{count}} utilisations restantes"},"sections":{"workspace":"Espace de travail","integrations":"Intégrations","account":"Compte"},"creditUsage":{"pageDescription":"Surveillez votre consommation de crédits et vos habitudes d'utilisation.","currentPlan":"Vous êtes actuellement sur le Plan {{planName}}","overLimit":"Limite dépassée","updatePayment":"Mettre à jour le paiement","upgrade":"Mettre à niveau","paymentOverdue":"Paiement en retard","pastDueDescription":"Le paiement de votre abonnement est en retard. Les crédits et limites affichés sont basés sur votre dernier plan payé ({{plan}}).","tryAgain":"Réessayer","trying":"En cours...","monthlyMessages":"Messages mensuels","workspaceTotal":"Total de l'espace de travail","workspaceUsage":"Utilisation de l'espace de travail","dailyMessages":"Messages quotidiens","loadError":"Impossible de charger les statistiques d'utilisation","portalError":"Impossible d'ouvrir la gestion des paiements. Veuillez réessayer.","portalErrorTitle":"Erreur","creditsRenewIn":"Les crédits se renouvellent dans {{timeLeft}}","expired":"Expiré","dailyUsageTitle":"Utilisation quotidienne (Messages)","noUsageData":"Aucune donnée d'utilisation disponible","messagesLabel":"messages","timeDaysHours":"{{days}}j : {{hours}}h","timeHoursMinutes":"{{hours}}h : {{minutes}}min","timeMinutes":"{{minutes}}min"},"basicInformation":{"pageTitle":"Informations de base","pageSubtitleEditable":"Gérez les détails et les paramètres de votre espace de travail.","pageSubtitleReadOnly":"Consultez les détails de l'espace de travail. Seuls les propriétaires et les administrateurs peuvent modifier.","loadingMessage":"Chargement des informations de l'espace de travail...","workspaceNameLabel":"Nom de l'espace de travail","workspaceNamePlaceholder":"Entrez le nom de l'espace de travail","workspaceDescriptionLabel":"Description de l'espace de travail","workspaceDescriptionPlaceholder":"Décrivez votre espace de travail...","workspaceNameEmptyErrorMessage":"Le nom de l'espace de travail ne peut pas être vide","cancelButton":"Annuler","saveButton":"Enregistrer les modifications","savingButton":"Enregistrement...","saveSuccessMessage":"Paramètres de l'espace de travail mis à jour avec succès !","saveErrorMessage":"Échec de la mise à jour des paramètres de l'espace de travail : {{error}}","unknownError":"Erreur inconnue"},"leaveWorkspace":{"title":"Quitter l'espace de travail","description":"Si vous quittez cet espace de travail, vous perdrez l'accès à toutes les applications associées. La propriété de vos applications sera transférée au propriétaire de l'espace de travail.","button":"Quitter l'espace de travail","soleOwnerNote":"Vous ne pouvez pas quitter l'espace de travail car vous êtes le seul propriétaire.","successMessage":"Vous avez quitté l'espace de travail.","workspaceNameFallback":"espace de travail","dialog":{"title":"Quitter {{name}} ?","confirmQuestion":"Êtes-vous sûr de vouloir quitter <bold>{{name}}</bold> ?","transferWarning":"Vos applications dans cet espace de travail seront transférées au propriétaire de l'espace de travail et vous perdrez l'accès.","cancelButton":"Annuler","confirmButton":"Quitter l'espace de travail"}},"menu":{"basicInformation":"Informations de base","planAndBilling":"Plan et facturation","creditUsage":"Utilisation des crédits","members":"Membres","seatsAndMembers":"Sièges et membres","authAndSecurity":"Authentification et sécurité","integrations":"Intégrations","appsConfiguration":"Configuration des applications","analytics":"Analytique","accountSettings":"Paramètres du compte","mcpConnections":"Connexions MCP","skills":"Compétences","connectors":"Connecteurs","manageSubscription":"Gérer l'abonnement","secrets":"Secrets","dataResidency":"Résidence des données"},"guests":{"tabMembers":"Membres","tabGuests":"Invités","title":"Invités","infoBanner":"Les invités sont des utilisateurs externes invités à des applications spécifiques. Ils consomment des crédits du pool partagé de l'espace de travail.","searchPlaceholder":"Rechercher par e-mail ou application...","columnGuest":"Invités","columnApp":"Application","columnInvitedBy":"Invité par","columnCreditsUsed":"Crédits utilisés","pending":"En attente","promoteToEditor":"Promouvoir en Éditeur","promoteToViewer":"Promouvoir en Lecteur","removeFromWorkspace":"Retirer de l'espace de travail","emptyTitle":"Aucun invité pour le moment","emptySubtitle":"Les invités peuvent être ajoutés depuis le flux d'invitation de collaborateurs de l'application.","noResults":"Aucun invité trouvé","noResultsSubtitle":"Aucun invité ne correspond à \\"{{searchTerm}}\\"","promoted":"{{email}} promu en {{role}}","promoteFailed":"Échec de la mise à jour du rôle","setCreditLimit":"Définir la limite de crédits","upgradeForCreditLimit":"Passez au plan Enterprise pour cette fonctionnalité","viewAppAccess":"Voir l'accès aux apps","removeMember":"Retirer le membre","guestRole":"Invité","appAccessTitle":"Accès aux apps de {{name}}","appAccessDescription":"Voir les apps auxquelles cet invité peut accéder dans l'espace de travail.","appAccessLoading":"Chargement...","appAccessEmpty":"Aucun accès aux apps trouvé.","appAccessColumnApp":"Application","appAccessDone":"Terminé"},"members":{"pageTitle":"Membres","pageDescription":"Afficher et gérer les membres et les rôles de cet espace de travail.","tableTitle":"Membres ({{count}})","columnMembers":"Membres","columnCreditsUsed":"Crédits utilisés","columnCreditsUsedWithLimit":"Crédits utilisés (de {{limit}})","columnCreditLimit":"Limite de crédits","columnRole":"Rôle","roleOwner":"Propriétaire","roleAdmin":"Admin","roleEditor":"Éditeur","roleViewer":"Lecteur","pending":"En attente","expired":"Expiré","searchPlaceholder":"Rechercher par nom ou e-mail...","searchPlaceholderMobile":"Rechercher...","inviteMembers":"Inviter des membres","inviteByEmail":"Inviter des membres","bulkInvite":"Invitation groupée","setCreditLimit":"Définir la limite de crédits","removeMember":"Retirer le membre","upgradeTooltip":"Passez au plan Enterprise pour débloquer cette fonctionnalité","default":"(par défaut)","emptyTitle":"Aucun membre pour le moment","emptyTitleNoResults":"Aucun membre trouvé","emptySubtitlePersonal":"Les espaces de travail personnels ne contiennent que vous","emptySubtitleShared":"Commencez par inviter votre premier membre","emptySubtitleNoResults":"Aucun membre ne correspond à \\"{{searchTerm}}\\"","cantChangeOwnRole":"Vous ne pouvez pas modifier votre propre rôle. Demandez à un propriétaire de l'espace de travail de le mettre à jour.","creditLimitTooltip":"Limitez le nombre de crédits que chaque membre peut utiliser depuis le pool de l'espace de travail. Définissez des limites individuellement ou répartissez-les équitablement entre tous les membres.","tableTitleFiltered":"Membres ({{filteredCount}} sur {{totalCount}})","clearSearch":"Effacer la recherche"},"seatsAndMembers":{"pageTitle":"Sièges et membres","pageDescription":"Gérez les sièges de l'espace de travail et les membres de l'équipe.","emptyTitle":"Commencer avec les sièges de l'espace de travail","emptyDescription":"Achetez des sièges pour inviter des membres et commencer à collaborer.","buyFirstSeats":"Achetez vos premiers sièges","planSeats":"Sièges {{planName}}","seatsUsage":"Utilisation des sièges","addSeats":"Ajouter des sièges","removeSeats":"Supprimer des sièges","seatsAvailable_one":"{{count}} siège disponible","seatsAvailable_other":"{{count}} sièges disponibles","buyMoreSeats":"Acheter plus de sièges","expandWorkspace":"Agrandissez votre espace de travail","searchPlaceholder":"Rechercher par e-mail, rôle, statut ou type de siège (ex., starter, pro)...","searchTip":"Astuce : Recherchez des types de sièges comme \\"starter\\", \\"builder\\", \\"pro\\", \\"elite\\" ou \\"sans siège\\""},"inviteDialog":{"title":"Inviter des membres","emailAddress":"Adresse e-mail","role":"Rôle","cancel":"Annuler","invite":"Inviter","inviting":"Invitation en cours...","roleViewer":"Visualiseur","roleEditor":"Éditeur","roleAdmin":"Admin","roleMember":"Membre","errorNoEmail":"Veuillez saisir au moins une adresse e-mail","errorInvalidEmail":"Une ou plusieurs adresses e-mail sont invalides.","errorFallback":"Échec de l'invitation des utilisateurs","toastSingle":"Invitation envoyée à {{email}}","toastMultiple":"{{count}} invitations envoyées avec succès"},"dataResidency":{"title":"Résidence des données","tooltip":"Définit la région de stockage des données pour les applications dans cet espace de travail.","edit":"Modifier","upgradeRequired":"Plan Elite ou supérieur requis pour configurer la résidence des données.","appliesToNewApps":"S'applique aux nouvelles applications créées. Les applications existantes conservent leur région actuelle.","editModal":{"title":"Résidence des données de l'espace de travail","description":"Choisissez où stocker les données des applications que vous créez dans cet espace de travail.","label":"Résidence des données","appliesToNewApps":"S'applique aux nouvelles applications créées. Les applications existantes conservent leur région de données actuelle.","viewAllApps":"Voir la résidence des données pour toutes les applications de l'espace de travail","cancel":"Annuler","save":"Enregistrer","saving":"Enregistrement...","updateSuccess":"Résidence des données mise à jour avec succès","updateError":"Échec de la mise à jour de la résidence des données : {{detail}}","unknownError":"Erreur inconnue"},"appsModal":{"title":"Résidence des données des applications","description":"Voir où sont stockées les données de chaque application dans cet espace de travail.","appName":"Nom de l'application","dataRegion":"Région des données","loading":"Chargement...","noApps":"Aucune application dans cet espace de travail.","migrationInfo":"Besoin de déplacer une application vers une région différente ? <a>Demander une migration.</a>","supportTitle":"Demande de migration de région de données — {{name}}","supportContent":"Je souhaite migrer les données de l'application vers une autre région.\\n\\nEspace de travail : {{name}} ({{id}})\\nRégion par défaut actuelle : {{region}}\\nRégion cible : \\nApplications à migrer : "}},"mcp":{"title":"Connexions MCP","addMcp":"Ajouter MCP","limitReached":"Vous avez atteint la limite de {{max}} serveurs MCP. Supprimez-en un pour ajouter une nouvelle connexion.","description":"Connectez des serveurs MCP personnalisés pour étendre les capacités de construction de Base44 avec des outils et données externes.","descriptionWithLink":"Connectez des serveurs MCP personnalisés pour étendre les capacités de construction de Base44 avec des outils et données externes. <a>En savoir plus sur MCP<icon/></a>","learnMore":"En savoir plus sur MCP","emptyTitle":"Aucun serveur MCP connecté","addCustomMcp":"Ajouter un MCP personnalisé","aria":{"enableConnection":"Activer {{name}}","disableConnection":"Désactiver {{name}}","actionsFor":"Actions pour {{name}}"},"actions":{"editDetails":"Modifier les détails","removeMcp":"Supprimer MCP"},"deleteConfirm":{"title":"Supprimer la connexion MCP","description":"Êtes-vous sûr de vouloir supprimer \\"{{name}}\\" ? Cette action est irréversible.","confirm":"Supprimer","cancel":"Annuler"},"tools":{"availableTools_one":"{{count}} outil disponible","availableTools_other":"{{count}} outils disponibles","more":"+{{count}} de plus","showLess":"Afficher moins","loadingTools":"Chargement des outils..."},"addDialog":{"title":"Ajouter un serveur MCP personnalisé","name":"Nom","namePlaceholder":"ex. Mon serveur MCP","url":"URL","urlExists":"Le serveur MCP existe déjà.","authentication":"Authentification","authNone":"Non requise","authNoneDescription":"Se connecter sans identifiants","authOAuth":"OAuth","authOAuthDescription":"Autoriser à l'étape suivante","customHeaders":"En-têtes personnalisés","optional":"facultatif","headersDescription":"Ajoutez des en-têtes envoyés avec chaque requête (ex. clés API)","headerName":"Nom de l'en-tête","headerValue":"Valeur","addHeader":"Ajouter un en-tête","connectionFailed":"Connexion échouée","serverReady":"Le serveur MCP est prêt à se connecter.","serverReadyWithTools_one":"Le serveur MCP est prêt à se connecter. 1 outil trouvé.","serverReadyWithTools_other":"Le serveur MCP est prêt à se connecter. {{count}} outils trouvés.","toolsFound_one":"{{count}} outil trouvé.","toolsFound_other":"{{count}} outils trouvés.","oauthConfirmed":"Serveur confirmé. Cliquez sur \\"Autoriser et ajouter\\" pour compléter l'authentification OAuth.","test":"Tester","testAndAdd":"Tester et ajouter","authorizeAndAdd":"Autoriser et ajouter","cancel":"Annuler","urlRequired":"Veuillez entrer une URL de serveur.","fieldsRequired":"Veuillez remplir tous les champs obligatoires.","authRequired":"L'authentification est requise pour ce serveur. Sélectionnez OAuth pour continuer.","authNotRequired":"Ce serveur ne nécessite pas OAuth. Essayez d'ajouter sans OAuth.","testFailed":"Le test de connexion a échoué."},"editDialog":{"title":"Modifier le MCP connecté","enabled":"Activé","nameRequired":"Veuillez entrer un nom.","changeInfo":"Pour modifier l'URL ou la méthode d'authentification, créez une nouvelle connexion MCP.","saveChanges":"Enregistrer les modifications","removeMcp":"Supprimer MCP","cancel":"Annuler"},"toast":{"added":"Connexion MCP ajoutée","addedDescription":"Connexion au serveur MCP réussie.","addedWithName":"Connexion \\"{{name}}\\" ajoutée avec succès.","saved":"Modifications enregistrées","savedDescription":"Connexion MCP mise à jour avec succès."}},"skills":{"title":"Compétences","addSkill":"Ajouter une compétence","addSkillLower":"ajouter une compétence","editSkill":"Modifier la compétence","viewSkill":"Voir la compétence","deleteSkill":"Supprimer la compétence","limitReached":"Vous avez atteint la limite de {{max}} compétences. Supprimez-en une pour en ajouter une nouvelle.","description":"Créez des ensembles d'instructions réutilisables que le constructeur IA peut activer pendant les conversations.","emptyDescription":"Les compétences sont des directives enregistrées qui définissent comment l'IA construit vos applications. Elles s'activent lorsque nécessaire pour suivre automatiquement vos règles et bonnes pratiques.","emptyDescriptionWithLink":"Les compétences sont des directives enregistrées qui définissent comment l'IA construit vos applications. Elles s'activent lorsque nécessaire pour suivre automatiquement vos règles et bonnes pratiques. <a>En savoir plus</a>","learnMore":"En savoir plus","getStartedWithTemplate":"Commencer avec un modèle","viewMore":"Voir plus","failedToLoadTemplates":"Échec du chargement des modèles de compétences","templatesUnavailable":"Les modèles prédéfinis peuvent être indisponibles.","failedToLoadTemplate":"Échec du chargement du modèle","form":{"skillName":"Nom de la compétence","namePlaceholder":"ex. brand-guidelines","nameRequired":"Le nom est requis","nameMaxLength":"Le nom doit contenir au maximum {{max}} caractères","namePattern":"Uniquement minuscules, chiffres et tirets (ex. code-review)","nameExists":"Une compétence avec ce nom existe déjà","description":"Description","descriptionHint":"Indiquez à l'agent quand utiliser cette compétence. Il lit ceci pour décider de l'activer ou non.","descriptionPlaceholder":"ex. Applique les couleurs de marque, la typographie et les modèles de design sur toutes les pages et composants. À utiliser lors de la création de nouvelles pages, la mise à jour des styles ou lorsque l'utilisateur mentionne la marque ou le système de design.","instructions":"Instructions","instructionsHint":"Les règles étape par étape que votre agent suit lorsque cette compétence s'active. Écrivez comme si vous formiez un nouveau membre de l'équipe.","instructionsPlaceholder":"## Couleurs de Marque\\nPrimaire : #1E40AF (navigation, boutons)\\nAccent : #F59E0B (mises en avant, CTAs)\\nArrière-plan : #F8FAFC, Surface : blanc\\n\\n## Typographie\\nTitres : gras, slate foncé\\nCorps : text-sm text-slate-600\\nEspacement uniforme entre les sections\\n\\n## Modèles de Composants\\n- Utiliser Card avec ombre subtile pour les sections de données\\n- Toujours inclure les états de chargement et vides\\n- Formulaires : utiliser des dialogues Sheet pour créer/modifier\\n- Tableaux : lignes alternées, colonnes triables","reviewHint":"Affiné par l'IA. N'hésitez pas à ajuster avant d'enregistrer."},"dialog":{"reviewTitle":"Vérifier votre compétence","reviewSubtitle":"Vérifiez la description et les instructions avant d'enregistrer. Vous pouvez modifier à tout moment.","pickerTitle":"Ajouter une compétence ou commencer de zéro","startFromScratch":"Commencer de zéro","cancel":"Annuler","backToOriginal":"Retour à l'original","saveSkill":"Enregistrer la compétence","saveChanges":"Enregistrer les modifications","refineAndReview":"Affiner et vérifier","refineShort":"Affiner","close":"Fermer","add":"Ajouter","enabled":"Activé"},"toast":{"created":"Compétence créée","createdDescription":"\\"{{name}}\\" a été ajoutée.","failedToCreate":"Échec de la création de la compétence","updated":"Compétence mise à jour","updatedDescription":"\\"{{name}}\\" a été enregistrée.","failedToUpdate":"Échec de la mise à jour de la compétence","refinedTooLong":"La compétence affinée est trop longue","refinedTooLongDescription":"Nous avons essayé de la condenser mais le résultat dépasse toujours la limite de caractères. Essayez de raccourcir le contenu et d'affiner à nouveau.","failedToPolish":"Échec de l'affinage de la compétence","failedToLoad":"Échec du chargement de la compétence","failedToLoadList":"Échec du chargement des compétences","retryLater":"Veuillez réessayer plus tard.","retryAgain":"Veuillez réessayer.","removed":"Compétence supprimée","removedDescription":"La compétence a été supprimée."},"deleteConfirm":{"description":"Êtes-vous sûr de vouloir supprimer \\"{{name}}\\" ? Cette action est irréversible.","confirm":"Supprimer","cancel":"Annuler"},"aria":{"enableSkill":"Activer {{name}}","disableSkill":"Désactiver {{name}}","actionsFor":"Actions pour {{name}}"}},"secrets":{"title":"Secrets","description":"Gérez les identifiants et les jetons d'accès pour l'accès programmatique à votre workspace.","apiKeys":{"title":"Clés d'API","description":"Créez et gérez des clés API pour accéder par programmation à votre espace de travail. Utilisez ces clés pour diffuser des journaux d'audit, connecter votre fournisseur d'identité via SCIM ou extraire des données de l'espace de travail dans un système externe via l'API de surveillance.","createButton":"Créer une clé d'API","limitReached":"Vous avez atteint la limite maximale de {{max}} clés d'API. Supprimez une clé existante pour en créer une nouvelle.","table":{"name":"Nom","key":"Clé","createdBy":"Créé par","created":"Créé","lastUsed":"Dernière utilisation","status":"Statut","never":"Jamais"},"status":{"active":"Actif","disabled":"Désactivé"},"emptyState":{"title":"Aucune clé d'API pour l'instant","description":"Les clés d'API de l'espace de travail permettent un accès programmatique aux API de l'espace de travail (SIEM, SCIM, intégrations personnalisées)."},"actions":{"edit":"Modifier","disableKey":"Désactiver la clé","enableKey":"Activer la clé","deleteKey":"Supprimer la clé","actionsFor":"Actions pour {{name}}"},"sheet":{"editButton":"Modifier","disableButton":"Désactiver","enableButton":"Activer"},"disableConfirm":{"title":"Désactiver la clé d'API ?","description":"La clé d'API <strong>\\"{{name}}\\"</strong> sera immédiatement désactivée. Toutes les intégrations utilisant cette clé cesseront de fonctionner.","note":"Vous pourrez la réactiver ultérieurement.","confirm":"Désactiver la clé","cancel":"Annuler"},"enableConfirm":{"title":"Activer la clé d'API ?","description":"La clé d'API <strong>\\"{{name}}\\"</strong> sera réactivée. Les intégrations utilisant cette clé reprendront leur fonctionnement.","confirm":"Activer la clé","cancel":"Annuler"},"deleteConfirm":{"title":"Supprimer la clé d'API ?","description":"La clé d'API <strong>\\"{{name}}\\"</strong> sera définitivement supprimée. Cette action est irréversible. Toutes les intégrations utilisant cette clé cesseront immédiatement de fonctionner.","confirm":"Supprimer la clé","cancel":"Annuler"},"toast":{"loadError":"Impossible de charger les clés d'API","loadErrorDescription":"Veuillez réessayer.","disabled":"Clé d'API désactivée","disabledDescription":"\\"{{name}}\\" a été désactivée.","disableError":"Impossible de désactiver la clé d'API","enabled":"Clé d'API activée","enabledDescription":"\\"{{name}}\\" a été réactivée.","enableError":"Impossible d'activer la clé d'API","deleted":"Clé d'API supprimée","deletedDescription":"\\"{{name}}\\" a été définitivement supprimée.","deleteError":"Impossible de supprimer la clé d'API","createError":"Impossible de créer la clé d'API","updateError":"Impossible de mettre à jour la clé d'API","copyError":"Impossible de copier la clé d'API","updated":"Clé d'API mise à jour","updatedDescription":"\\"{{name}}\\" a été enregistrée."},"createDialog":{"title":"Créer une clé d'API","titleReveal":"Clé d'API créée","namePlaceholder":"ex. Intégration SIEM","descriptionPlaceholder":"À quoi sert cette clé ?","cancelButton":"Annuler","createButton":"Créer la clé","creatingButton":"Création...","warningMessage":"Copiez cette clé maintenant – vous ne pourrez plus la voir. Traitez-la comme un mot de passe : elle donne accès aux données de votre espace de travail via l'API.","yourApiKey":"Votre clé d'API","doneButton":"Terminé","copyAria":"Copier la clé d'API"},"editDialog":{"title":"Modifier la clé d'API","cancelButton":"Annuler","saveButton":"Enregistrer","savingButton":"Enregistrement..."},"formFields":{"name":"Nom","description":"Description","descriptionOptional":"(facultatif)"}}},"authSecurity":{"title":"Authentification et sécurité","description":"Configurez les paramètres d'authentification et de sécurité pour votre espace de travail.","sso":{"title":"Configuration de l'authentification unique","configureTooltip":"Configurez le SSO pour votre espace de travail","description":"Activez le SSO pour simplifier l'authentification pour les membres de votre espace de travail.","settingUp":"Configuration en cours...","setUp":"Configurer","setUpConfiguration":"Configurer le SSO","enforcedTooltip":"Ce SSO est appliqué à toutes les applications de l'espace de travail, ce qui signifie qu'elles l'utilisent automatiquement pour l'authentification. Pour mettre à jour les paramètres d'application, accédez à Configuration des applications.","enforcedBadge":"Appliqué aux applications","setUpAction":"Configurer","configure":"Configurer","selectProvider":"Sélectionner le fournisseur SSO","cancelSetup":"Annuler la configuration","dismiss":"Fermer","saving":"Enregistrement...","enableSSO":"Activer le SSO","saveSSOSettings":"Enregistrer les paramètres SSO","notAvailableTitle":"Non disponible","notAvailableDesc":"L'authentification unique (SSO) n'est pas disponible pour les espaces de travail personnels.","limitedAccessTitle":"Accès limité","limitedAccessDesc":"Seuls les administrateurs de l'espace de travail peuvent configurer les paramètres SSO.","toast":{"error":"Erreur","failedToLoadSettings":"Échec du chargement des paramètres SSO","failedToLoadAppSettings":"Échec du chargement des paramètres de l'application","ssoEnabled":"SSO activé","ssoEnabledDesc":"L'authentification unique a été activée pour votre espace de travail","ssoDisabled":"SSO désactivé","ssoDisabledDesc":"L'authentification unique a été désactivée","failedToUpdateStatus":"Échec de la mise à jour du statut SSO","success":"Succès","settingsUpdated":"Paramètres SSO mis à jour avec succès","failedToUpdate":"Échec de la mise à jour des paramètres SSO"},"fields":{"client_id":"ID client","client_secret":"Secret client","scope":"Scope","discovery_url":"URL de découverte","tenant_id":"ID locataire","okta_domain":"Domaine Okta","auth_endpoint":"Endpoint d'authentification","token_endpoint":"Endpoint de jeton","userinfo_endpoint":"Endpoint userinfo","jwks_uri":"URI JWKS","name":"Nom du fournisseur"},"autoGenerated":"(Généré automatiquement)","placeholders":{"client_id":"Entrez l'ID client","client_secret":"Entrez le secret client","scope":"Entrez le scope","discovery_url":"Entrez l'URL de découverte","tenant_id":"Votre ID locataire Azure AD","okta_domain":"votre-entreprise","auth_endpoint":"Entrez l'endpoint d'authentification","token_endpoint":"Entrez l'endpoint de jeton","userinfo_endpoint":"Entrez l'endpoint userinfo","jwks_uri":"Entrez l'URI JWKS","name":"Entrez le nom du fournisseur"},"tooltips":{"clientId":"L'ID client OAuth fourni par votre fournisseur d'identité","clientSecret":"Le secret client OAuth fourni par votre fournisseur d'identité (à conserver confidentiel)","scopeGeneral":"Scopes OAuth à demander (openid, email, profile sont couramment utilisés)","scopeGithub":"Scopes OAuth à demander (user:email pour GitHub)","discoveryUrlGoogle":"Point de terminaison de découverte OIDC (préconfiguré pour Google)","discoveryUrlMicrosoft":"Point de terminaison de découverte OIDC généré automatiquement à partir de votre ID locataire","discoveryUrlOkta":"Point de terminaison de découverte OIDC généré automatiquement à partir de votre domaine Okta","discoveryUrlAdvanced":"URL du point de terminaison de découverte OIDC (si pris en charge par votre fournisseur)","tenantId":"ID de locataire Azure AD. Portail Azure → Azure Active Directory → Vue d'ensemble","oktaDomain":"Votre nom de domaine Okta (p. ex., 'votre-entreprise' de votre-entreprise.okta.com)","authEndpointGithub":"Point de terminaison d'autorisation OAuth GitHub (préconfiguré)","authEndpointGeneral":"URL du point de terminaison d'autorisation OAuth","tokenEndpointGithub":"Point de terminaison de token OAuth GitHub (préconfiguré)","tokenEndpointGeneral":"URL du point de terminaison de token OAuth","userinfoEndpointGithub":"Point de terminaison utilisateur de l'API GitHub (préconfiguré)","userinfoEndpointGeneral":"URL du point de terminaison userinfo OAuth","jwksUri":"URI de l'ensemble de clés Web JSON pour la vérification des tokens","providerName":"Nom personnalisé pour votre fournisseur SSO"},"providerFallback":"SSO {{name}}","providers":{"advanced":"Configuration avancée / manuelle"}},"domainVerification":{"title":"Vérification du domaine","label":"Domaine de l'espace de travail","placeholder":"Ajoutez votre domaine","hint":"Le domaine associé à votre espace de travail","check":"Vérifier","verified":"Vérifié","checking":"Vérification","copyFailed":"Échec de la copie dans le presse-papiers","dnsTimedOut":"La vérification DNS a expiré. Veuillez vérifier vos paramètres DNS et réessayer.","domainVerifiedSuccess":"Domaine vérifié avec succès !","enterDomainFirst":"Veuillez d'abord saisir un domaine","domainSaved":"Domaine enregistré. Ajoutez l'enregistrement DNS pour vérifier la propriété.","configFailed":"Échec de la configuration de la vérification du domaine","verificationReset":"La vérification du domaine a été réinitialisée","resetFailed":"Échec de la réinitialisation de la vérification du domaine","addDnsRecords":"Ajouter les enregistrements DNS pour {{domain}}","dnsInstructions":"Connectez-vous à votre fournisseur de domaine, accédez aux paramètres DNS et ajoutez cet enregistrement TXT.","type":"Type","hostName":"Hôte / Nom","value":"Valeur","dnsCheckNote":"La vérification DNS peut prendre quelques minutes. Une fois tout mis à jour, nous vérifierons automatiquement votre domaine.","checkingDns":"Vérification de vos enregistrements DNS...","resetting":"Réinitialisation...","reset":"Réinitialiser","copyLabel":"Copier {{label}}"}}}`),x$={earnBonusCredits:"Gagnez des crédits bonus"},I$={apps:"Apps",superagents:"Superagents",newAgent:"Nouvel Agent",emptyAgents:"Créez votre premier agent et retrouvez vos conversations ici.",allAgents:"Tous les Agents",settings:"Paramètres",inviteMembers:"Inviter des membres",allWorkspaces:"Tous les espaces de travail",org:"Org",createNewWorkspace:"Créer un espace de travail",recents:"Récents",favorites:"Favoris",noFavoritesYet:"Pas encore de favoris",addAppsForQuickAccess:"Ajoutez vos apps pour un accès rapide",view_all:"Tout voir"},R$={pageTitle:"Acheter une Carte Cadeau Base44",pageSubtitle:"Offrez le plaisir de créer. Envoyez une carte cadeau à un ami.",tabBuy:"Acheter une Carte Cadeau",tabPurchased:"Achetées",successTitle:"Carte cadeau achetée avec succès !",successDescription:"Le destinataire recevra un e-mail avec le code de la carte cadeau.",successDescriptionPdf:"Vérifiez votre e-mail pour une carte cadeau imprimable à offrir en personne.",dismissSuccess:"Fermer le message de succès",amount:"Montant",customAmount:"$ Personnalisé",customAmountPlaceholder:"{{symbol}} Montant personnalisé",customAmountError:"Le montant doit être entre {{min}} et {{max}}",creditsInfo:"Cette carte cadeau comprend <strong>{{credits}} crédits de messages</strong> pour créer des apps",deliveryMethodTitle:"Choisir le mode de livraison",deliveryEmail:"Envoyer un e-mail au destinataire (immédiatement après l'achat)",deliveryPdf:"M'envoyer un e-mail (PDF à imprimer)",recipientTitle:"À",recipientName:"Nom",recipientNamePlaceholder:"Nom du destinataire",recipientEmail:"E-mail",recipientEmailPlaceholder:"E-mail du destinataire",messageLabel:"Message de la carte cadeau (facultatif)",messagePlaceholder:"Ajouter un message personnel...",suggestMessage:"Suggérer un message",suggestFallbackName:"ami",messageCharCount:"{{count}}/300 caractères",senderTitle:"De",senderName:"Votre nom",senderNamePlaceholder:"Votre nom",submitButton:"Continuer l'achat",submitting:"Traitement en cours...",errorGeneric:"Une erreur est survenue",historyEmpty:"Pas encore de cartes cadeaux. Achetez-en une pour un ami !",historyTo:"Pour {{name}}",historyCodeLabel:"Code de la carte cadeau",historyCopy:"Copier",historyCopied:"Copié",historyRedeemed:"Cette carte cadeau a été utilisée",historyRedeemedOn:"Cette carte cadeau a été utilisée le {{date}}",historySentTo:"Envoyée à {{email}}",statusSent:"Envoyée",statusRedeemed:"Utilisée",statusExpired:"Expirée",statusProcessing:"En traitement",statusPending:"En attente",statusRevoked:"Révoquée",designTitle:"Choisir un design",historyActions:"Actions",designClassic:"Classique",designSunrise:"Aurore",designOcean:"Océan",cardLabel:"Carte Cadeau",cardCreditsLabel:"crédits de messages",cardFor:"Pour {{name}}",cardDefaultName:"Votre Ami",historyError:"Impossible de charger les cartes cadeaux. Veuillez réessayer.",historyDateIssued:"Date d'émission",historyRecipient:"Destinataire",historyAmount:"Montant",historyStatus:"Statut",historyCode:"Code",historySenderDetails:"Détails de l'expéditeur",historySentToYou:"Envoyée à vous",historyViewCode:"Voir le code",historyHideCode:"Masquer le code",historyDownloadPdf:"Télécharger le PDF",historyResend:"Renvoyer",historyResendSuccess:"E-mail de carte cadeau renvoyé avec succès !",historyResendError:"Échec du renvoi de l'e-mail. Veuillez réessayer.",historyDownloadError:"Échec du téléchargement. Veuillez réessayer.",historyCredits:"crédits",emailInvalid:"Veuillez entrer une adresse e-mail valide",buyGiftCard:"Acheter une Carte Cadeau",giftAndReferrals:"Cadeaux & Parrainages",redeemTitle:"Vous avez reçu une carte cadeau !",redeemDescription:"Une fois échangés, les crédits seront appliqués à votre espace de travail.",redeemSelectWorkspace:"Sélectionner un espace de travail",redeemBackToWorkspace:"Retour à l'espace de travail",redeemCheckCreditUsage:"Vérifier l'utilisation des crédits",redeemErrorDescription:"Ce code a déjà été utilisé et ne peut pas être échangé à nouveau. Si vous n'êtes pas sûr de ce qui s'est passé, vous pouvez vérifier vos crédits ou contacter le support.",redeemDefaultWorkspace:"cet",error:"Erreur",redeemSuccess:"Carte cadeau utilisée !",redeemSuccessDescription:"{{credits}} crédits ajoutés à {{workspace}}.",redeemButton:"Utiliser la carte cadeau",redeemNotNow:"Pas maintenant",redeemDocsLink:"Découvrez comment fonctionnent les crédits de cartes cadeaux dans <docsLink>notre documentation</docsLink>",redeemCouponDescription:"Utilisez-la pour obtenir {{amount}} de réduction sur votre abonnement.",redeemCouponAppliedTitle:"Carte cadeau appliquée !",redeemCouponReadyTitle:"Carte cadeau prête à utiliser !",redeemCouponNoWorkspace:"Aucun espace de travail sélectionné",coupon:{title:"Utiliser un coupon ou une carte cadeau",description:"Entrez votre code pour ajouter des crédits à votre solde.",placeholder:"Entrez votre code",apply:"Appliquer",success:"Coupon appliqué avec succès !",invalidCode:"Le code est invalide. Veuillez réessayer.",notFound:"Code promo introuvable. Vérifiez le code et réessayez.",giftCardNotFound:"Carte cadeau introuvable. Vérifiez le code et réessayez.",redeemFailed:"Impossible d'utiliser la carte cadeau. Veuillez réessayer."},errors:{invalidRecipientEmail:"Veuillez entrer une adresse e-mail valide",recipientEmailRequired:"L'adresse e-mail du destinataire est obligatoire",checkoutFailed:"Impossible d'initier l'achat. Veuillez réessayer.",confirmPurchaseFailed:"Impossible de confirmer l'achat. Veuillez réessayer.",alreadyRedeemed:"Cette carte cadeau a déjà été utilisée",notAvailable:"Cette carte cadeau ne peut pas être utilisée",expired:"Cette carte cadeau a expiré",notWorkspaceMember:"Vous n'êtes pas membre de l'espace de travail sélectionné",networkError:"Erreur réseau. Veuillez vérifier votre connexion internet et réessayer.",rateLimitExceeded:"Trop de tentatives. Veuillez réessayer plus tard.",permissionDenied:"Seuls les propriétaires de l'espace de travail peuvent utiliser les cartes cadeaux. Demandez à un propriétaire d'appliquer ce code.",invalidPlanPrice:"Ce plan n'est pas disponible pour le paiement par carte cadeau. Veuillez sélectionner un autre plan."},creditBanner:"Vous avez {{amount}} de crédit de carte cadeau sur votre compte. Il sera appliqué automatiquement à votre prochaine facture.",upgradeGiftCardWarning:"Votre plan actuel a été acheté avec une carte cadeau. Le crédit de la carte cadeau n'est pas transféré lors des mises à niveau — le prix au prorata vous sera facturé."},z$={back:"Retour"},M$="Chargement...",N$={message:"Connecté en tant que <strong>{{email}}</strong> — ne correspond pas au compte attendu.",switchAccount:"Changer de compte",dismiss:"Fermer la bannière"},F$={topBar:S$,createWorkspacePage:C$,workspaceMenu:D$,agentEditorMenu:T$,credits:E$,community:P$,workspaceSettings:_$,referralCta:x$,sidebar:I$,giftCards:R$,common:z$,loading:M$,userMismatch:N$},L$={notifications:"Notifications",latestNews:"Dernières nouvelles"},j$={loading:"Chargement...",loadingMore:"Chargement en cours...",errorLoading:"Impossible de charger les notifications",noNotifications:"Aucune notification pour l'instant",noMoreNotifications:"Aucune autre notification",noNews:"Aucune actualité pour l'instant"},O$={markAllAsRead:"Tout marquer comme lu",readMore:"Lire la suite",showLess:"Voir moins",upgrade:"Améliorer",percentOff:"{{percent}}% de réduction"},B$={tabs:L$,states:j$,actions:O$},U$="Plan et facturation",q$="Gérer l'abonnement",V$={planAndBilling:"Plan et facturation"},$$={details:"Détails de l'abonnement",cancelPlan:"Annuler le plan",cancelling:"Annulation...",explorePlans:"Explorer les plans",reactivatePlan:"Réactiver le plan",reactivating:"Réactivation...",upgradePlan:"Mettre à niveau le plan",updatePayment:"Mettre à jour le paiement",managePlan:"Gérer le plan",yourPlan:"Votre plan",creditsPerMonth:"Crédits par mois",price:"Prix",nextBillingDate:"Prochaine date de facturation",highlights:"Points forts du plan",cancelChange:"Annuler le changement",cancelTooltip:"Pour annuler votre abonnement, annulez d'abord le passage à un plan inférieur planifié",currentlyUsing:"Vous utilisez actuellement le plan <bold>{{plan}}</bold>",subscriptionEndsOn:"Votre abonnement se termine le {{date}}",subscriptionRenewsOn:"Votre abonnement se renouvelle le {{date}}",noActiveSubscription:"Aucun abonnement actif",keepSubscription:"Vous souhaitez conserver votre abonnement ? Cliquez sur <manageLink>Gérer le plan</manageLink> et annulez le changement.",planChangeNotice:"Votre plan passera à {{plan}} à la fin de votre cycle de facturation actuel.",cancelOnDate:"Votre plan est programmé pour être annulé le {{date}}. Réactivez-le pour conserver vos crédits et fonctionnalités actuels.",cancelNoDate:"Votre abonnement est programmé pour être annulé. Réactivez-le pour conserver vos crédits et fonctionnalités actuels.",free:"Gratuit",monthly:"mensuel",yearly:"annuel",subscriptionCancelled:"Abonnement annulé",staysActiveUntil:"Tout reste actif jusqu'au {{date}}",creditsFormat:"{{messageCredits}} message | {{integrationCredits}} intégration",priceFormat:"{{amount}} {{symbol}}/{{period}}"},W$={privateApps:"Applications privées",inAppCodeEditing:"Édition de code dans l'application",unlimitedApps:"Applications illimitées",removeBase44Badge:"Supprimer le badge Base44",connectDomain:"Connecter un domaine",backendFunctions:"Fonctions backend",github2WaySync:"Synchronisation bidirectionnelle avec Github",customOAuth:"OAuth personnalisé depuis Google Console",aiModelSelection:"Sélection du modèle IA",stripeIntegration:"Intégration Stripe",customEmailDomain:"Domaine e-mail personnalisé",appStoreFileDownloads:"Téléchargements de fichiers de la boutique d'applications"},G$={title:"Paiement en retard",description:"Le paiement de votre abonnement est en retard. Veuillez mettre à jour votre méthode de paiement pour rétablir l'accès complet aux fonctionnalités de votre plan.",tryAgain:"Réessayer",trying:"En cours..."},H$={title:"Méthode de paiement",manage:"Gérer",noPaymentMethod:"Aucune méthode de paiement enregistrée",default:"Par défaut",expires:"Expire {{month}}/{{year}}"},Y$={title:"Informations de facturation",manage:"Gérer",name:"Nom",email:"E-mail",billingAddress:"Adresse de facturation",noInformation:"Aucune information de facturation disponible"},K$={title:"Historique de facturation",noHistory:"Aucun historique de facturation disponible",loading:"Chargement de l'historique de facturation...",loadError:"Échec du chargement des données de facturation",planDescription:"Plan {{plan}}",downloadInvoice:"Télécharger la facture"},Z$={managingBillingFor:"Gestion de la facturation pour <bold>{{name}}</bold>",subscriptionRenewsOn:"L'abonnement de l'espace de travail se renouvelle le {{date}}",noActiveSubscription:"Aucun abonnement actif pour l'espace de travail",manage:"Gérer",defaultName:"espace de travail",addSeats:"Ajouter des licences",loadError:"Échec du chargement de l'historique de facturation de l'espace de travail",workspaceSeats:"Licences de l'espace de travail",contactAdmin:{title:"Plan de l'espace de travail",subtitle:"Géré par votre espace de travail",body:"Besoin de plus de crédits ? Contactez l'administrateur de votre espace de travail pour améliorer le plan de votre équipe."}},J$={portalError:"Impossible d'ouvrir le portail de facturation. Veuillez réessayer plus tard ou contacter le support.",paymentPortalError:"Impossible d'ouvrir la gestion des paiements. Veuillez réessayer.",scheduleCancelSuccess:"Planification de l'abonnement annulée avec succès",scheduleCancelError:"Échec de l'annulation de la planification de l'abonnement. Veuillez réessayer plus tard.",subscriptionCancelError:"Échec de l'annulation de l'abonnement. Veuillez réessayer."},Q$={title:U$,manageSubscription:q$,breadcrumb:V$,subscription:$$,features:W$,pastDue:G$,paymentMethod:H$,billingInformation:Y$,billingHistory:K$,workspace:Z$,toasts:J$},X$={title:"Parlons",subtitle:"Contactez notre équipe pour découvrir comment Base44 peut aider votre organisation.",form:{firstName:"Prénom*",lastName:"Nom*",workEmail:"E-mail professionnel*",companyWebsite:"Site web de l'entreprise*",role:"Poste*",discussion:"Qu'aimeriez-vous aborder ?",submit:"Envoyer"},success:{title:"Merci de nous avoir contactés !",description:"Nous avons bien reçu votre message et notre équipe vous répondra dans les 24 heures. Nous sommes ravis de vous accompagner dans votre parcours Base44 !"}},eW={iso27001:{title:"ISO 27001",subtitle:"Gestion de la sécurité ISO"},soc2:{title:"SOC 2 Type II",subtitle:"SOC pour les organisations de services"},gdpr:{title:"RGPD",subtitle:"Règlement sur la protection des données et la vie privée"}},tW={fiveApps:"5 applications",unlimitedCollaborators:"Collaborateurs illimités",userAnalytics:"Analyses des utilisateurs",aiAgents:"Agents IA",limitedDb:"Base de données limitée à 512 Mo",unlimitedApps:"Applications illimitées",unlimitedNumberOfApps:"Nombre illimité d'applications",connectDomain:"Connecter un domaine",connectorsIntegrations:"Connecteurs et intégrations",backendFunctions:"Fonctions backend",scaledUserAnalytics:"Analyses utilisateurs évolutives",privateApps:"Applications privées",flexibleAiModelControl:"Contrôle flexible du modèle IA",removeBase44Branding:"Supprimer la marque Base44",inAppCodeEditing:"Édition de code dans l'application",inAppCodeEdits:"Édition de code dans l'application",freeDomainOneYear:"Domaine gratuit pour 1 an",creditsToShare:"25 crédits à partager avec un ami",githubTwoWayIntegration:"Intégration GitHub bidirectionnelle",githubIntegration:"Intégration GitHub",earlyAccessBeta:"Accès anticipé aux fonctionnalités bêta",premiumSupport:"Support Premium",sso:"SSO",prioritySupport:"Support prioritaire",workspacePublishingControls:"Contrôles de publication de l'espace de travail",workspaceTemplates:"Modèles d'espace de travail",ipWhitelisting:"Liste d'IPs autorisées",workspaceUsageAnalytics:"Analyses d'utilisation de l'espace de travail",userRolesPermissions:"Rôles et permissions des utilisateurs",dataTrainingOptOut:"Désactivation de l'entraînement des données",scim:"SCIM",creditConsumptionControl:"Contrôle de la consommation de crédits",dedicatedAccountManager:"Gestionnaire de compte dédié",dedicatedSolutionEngineer:"Ingénieur solutions dédié",enterpriseSupport:"Support entreprise",customSecurityCapabilities:"Capacités de sécurité personnalisées",customDatabaseStorage:"Stockage de base de données personnalisé",customRateLimits:"Limites de débit personnalisées",tailoredOnboarding:"Onboarding et accompagnement personnalisés",workspaceMonitoringApi:"API de surveillance de l'espace de travail"},aW={unlimitedApps:"Applications illimitées",unlimitedCollaboratorsSharedCredits:"Collaborateurs illimités avec crédits partagés",customDomain:"Domaine personnalisé",removeBase44Branding:"Supprimer la marque Base44",builtInIntegrations:"Intégrations incluses",automations:"Automatisations",chooseAiModel:"Choisissez votre modèle IA",inAppCodeEditing:"Édition de code dans l'app",twoWayGithubSync:"Synchronisation bidirectionnelle GitHub",privateTemplates:"Modèles privés",earlyAccessNewFeatures:"Accès anticipé aux nouvelles fonctionnalités",prioritySupport:"Support prioritaire"},nW={choosePlan:"Choisissez le forfait qui vous convient",usage:"Utilisation",back:"Retour",chooseBillingCycleUpgrade:"Choisissez votre cycle de facturation pour passer à {{planName}}",selectBillingCycle:"Choisissez un cycle de facturation pour votre forfait {{planName}}",viewBilling:"Voir la facturation",seePricing:"Voir les tarifs"},iW={desktop:"Base44 fait partie de <wixLogo/> - Approuvé par plus de 250 millions de personnes dans le monde",mobile:{line1:"Base44 fait partie de <wixLogo/>",line2:"Approuvé par plus de 250 millions de personnes dans le monde"}},rW={badge:{recommended:"Recommandé",popular:"Populaire",mostPopular:"Le plus populaire",currentPlan:"Plan actuel",discountOff:"{{discount}} de réduction"},button:{processing:"Traitement en cours...",notAvailable:"Non disponible",manageSubscription:"Gérer l'abonnement",managePlan:"Gérer le plan",currentPlan:"Plan actuel",upgradePlan:"Améliorer le plan",upgradeTo:"Passer à {{planName}}",downgradeTo:"Rétrograder vers {{planName}}",downgradePlan:"Rétrograder le plan",switchPlan:"Changer de plan",subscribeTo:"S'abonner à {{planName}}",bookDemo:"Réserver une démo",getPlan:"Obtenir {{planName}}"},credits:{monthly:"Crédits mensuels",integration:"Crédits d'intégration",monthlyLower:"crédits mensuels",integrationLower:"crédits d'intégration",messageCredits:"crédits de messages",perMonth:"/mois",sharedAcrossUsers:"Partagé entre utilisateurs illimités",messageShort:"messages",integrationShort:"intégration"},features:{highlights:"Points forts du plan :",allInBusinessPlus:"Tout dans Business plus :",allInBuilderPlus:"Tout dans Builder plus :",unlimitedAgents:"Nombre illimité d'agents"},free:{dailyCredits:"{{dailyCredits}} crédits quotidiens (jusqu'à {{monthlyMax}}/mois)",integrationCredits:"{{amount}} crédits d'intégration"},enterprise:{description:"Gouvernance, évolutivité et support de niveau entreprise, avec un modèle de <bold>tarification personnalisée</bold> et un montant de crédits personnalisé."}},oW={offTiers:"Formules à -30%",currentPlan:"Plan actuel",popular:"Populaire",messageCredits:"crédits de messages",integrationCredits:"crédits d'intégration",perMonth:"/mois",placeholder:"Sélectionner des crédits",footer:{cantFind:"Vous ne trouvez pas un plan adapté ?",contactUs:"Nous contacter"}},sW={button:{cancel:"Annuler",confirmUpgrade:"Confirmer la mise à niveau",confirmDowngrade:"Confirmer la rétrogradation",confirmSwitch:"Confirmer le changement",processing:"Traitement en cours...",continue:"Continuer"},upgrade:{title:"Confirmer la mise à niveau de l'abonnement",upgradeDescription:"Vous êtes sur le point de passer au plan {{planName}} pour <price/>. Votre abonnement sera mis à jour immédiatement et vous serez facturé au prorata pour le reste de votre cycle de facturation.",upgradeDescriptionYearly:"Vous êtes sur le point de passer au plan annuel {{planName}} pour <price/>. Votre abonnement sera mis à jour immédiatement et vous serez facturé au prorata pour le reste de votre cycle de facturation.",upgradeDescriptionShort:"Vous êtes sur le point de passer au plan {{planName}} pour <price/>. Votre abonnement sera mis à jour immédiatement et vous serez facturé au prorata."},downgrade:{title:"Confirmer la rétrogradation de l'abonnement",description:"Vous êtes sur le point de passer au plan {{planName}} pour {{price}}/mois. Ce changement prendra effet à la fin de votre cycle de facturation actuel."},switch:{title:"Changer de plan",switchDescription:"Le passage au plan {{planName}} mettra à jour vos fonctionnalités disponibles et fixera vos limites mensuelles à <bold>{{messageCredits}} crédits de messages et {{integrationCredits}} crédits d'intégration.</bold>",nextBillingDate:"Ces modifications prendront effet le {{date}}, au début de votre prochain cycle de facturation.",nextBillingCycle:"Ces modifications prendront effet au début de votre prochain cycle de facturation."},manageSubscription:{title:"Gérer votre abonnement",description:"Choisissez comment vous souhaitez gérer votre abonnement {{planName}}.",upgradeToYearly:"Passer à la facturation annuelle",upgradeToYearlySavings:"Économisez et obtenez un domaine gratuit + 25 crédits à partager",upgradeToYearlySavingsStarter:"Économisez et obtenez 25 crédits à partager",managePayments:"Gérer les paiements",managePaymentsDescription:"Mettre à jour le mode de paiement, voir les factures et plus",managePaymentsDescriptionAlt:"Mettre à jour le mode de paiement, voir les factures et plus"},upgradeToYearly:{titleV1:"Confirmer la mise à niveau de l'abonnement",titleV2:"Améliorer le plan",descriptionV2:"Après la mise à niveau, vous serez facturé au prorata pour le temps restant de votre plan actuel. À partir de votre prochaine date de facturation, vous serez facturé le prix complet du plan de {{price}} × 12 mois.",benefitsTitle:"🎁 Avantages annuels",freeDomain:"Domaine gratuit pendant un an",shareCredits:"25 crédits à partager avec des amis",betterValue:"Meilleure valeur avec la facturation annuelle"}},lW={title:"Questions fréquemment posées",whatIsBase44:{question:"Qu'est-ce que Base44 ?",answer:{description:"Base44 est une plateforme alimentée par l'IA qui vous permet de créer des applications logicielles personnalisées sans programmation. Elle utilise le traitement du langage naturel pour comprendre vos besoins et générer des logiciels fonctionnels basés sur vos descriptions.",accessibility:"Notre plateforme est conçue pour être conviviale et accessible aux utilisateurs non techniques, vous permettant de créer des applications puissantes à travers de simples conversations avec notre IA."}},freePlan:{question:"Qu'est-ce qui est inclus dans le plan gratuit ?",answer:{allowances:"Le plan gratuit vous offre une allocation quotidienne de 5 messages et un plafond mensuel de 25 messages au total. Vous obtenez également 100 crédits d'intégration pour expérimenter avec diverses intégrations comme l'authentification, la base de données et les analyses.",coreAccess:"Avec le plan gratuit, vous avez accès à tous les types d'intégration principaux, vous permettant de créer des applications entièrement fonctionnelles avec authentification des utilisateurs, stockage des données et plus encore – le tout gratuitement."}},integrationCredits:{question:"Que sont les crédits d'intégration ?",answer:{definition:"Les crédits d'intégration sont utilisés pour accéder aux diverses intégrations de Base44 au sein de votre application.",capabilities:"Ces intégrations améliorent les fonctionnalités de votre application, notamment les LLMs, le téléchargement de fichiers, la compréhension d'images, la génération d'images, l'envoi d'e-mails, l'envoi de SMS, les requêtes de base de données, et bien plus encore. Le nombre de crédits d'intégration dans votre plan détermine le nombre de ces requêtes que vous pouvez effectuer par mois.",expiration:"Les crédits non utilisés expirent à la fin de votre cycle de facturation mensuel (à votre date de réinitialisation).",learnMore:"En savoir plus sur la façon dont les crédits sont utilisés dans la base de connaissances."}},appTypes:{question:"Quels types d'applications puis-je créer avec Base44 ?",answer:{examples:"Base44 est polyvalent et peut être utilisé pour créer une large gamme d'applications, notamment mais sans s'y limiter : des produits SaaS entièrement fonctionnels, des outils de back-office, des applications de productivité personnelle, des portails clients et des outils d'automatisation des processus métier.",prototyping:"Vous pouvez également l'utiliser pour le prototypage rapide et la création de MVPs, vous permettant de valider vos idées rapidement sans investir dans des ressources de développement coûteuses."}},ownership:{question:"À qui appartiennent les applications créées avec Base44 ?",answer:{yourProperty:"Entre vous et Base44, toutes les applications et tous les contenus générés via notre plateforme sont considérés comme votre propriété. Nous ne revendiquons aucun droit de propriété sur ce que vous créez avec Base44.",intellectualProperty:"Votre propriété intellectuelle vous appartient, et vous êtes libre d'utiliser, de modifier, de distribuer ou de vendre les applications générées dans les limites autorisées par la loi."}},deployment:{question:"Comment les applications Base44 sont-elles déployées ?",answer:{instantAccess:"Avec Base44, le déploiement est incroyablement simple. Vos applications sont instantanément utilisables et partageables dès que vous les créez. Utilisez simplement et partagez l'URL de votre application avec d'autres.",noHosting:"Il n'est pas nécessaire d'effectuer des étapes d'hébergement ou de déploiement séparées, ce qui rend incroyablement facile la mise en service rapide de votre application."}},planLimits:{question:"Que se passe-t-il si j'atteins les limites de mon plan ?",answer:{limitations:"Lorsque vous atteignez votre limite quotidienne de messages, vous devrez attendre jusqu'au lendemain pour en envoyer davantage. Si vous atteignez votre limite mensuelle, vous ne pourrez pas envoyer de messages supplémentaires ni effectuer de requêtes d'intégration jusqu'au début de votre prochain cycle de facturation.",upgradeOption:"Pour éviter les interruptions dans le développement et l'utilisation de votre application, vous pouvez passer à un plan de niveau supérieur avec des limites augmentées à tout moment depuis votre tableau de bord de facturation."}}},cW={pendingChange:{title:"Changement d'abonnement en attente",message:"Vous avez un changement d'abonnement vers le plan {{tierName}} prévu pour prendre effet à la fin de votre cycle de facturation actuel.",subMessage:`Remarque : Pour annuler votre abonnement, annulez d'abord ce changement, puis utilisez "gérer les paiements" pour annuler.`,cancelChange:"Annuler le changement",cancelling:"Annulation en cours..."},cancellation:{title:"Annulation d'abonnement programmée",message:"Votre abonnement prendra fin le {{endDate}}. D'ici là, vous avez un accès complet à toutes les fonctionnalités.",subMessage:"Vous souhaitez conserver votre abonnement ? Vous pouvez le réactiver en un clic.",managePayments:"Gérer les paiements",processing:"Traitement en cours..."}},dW={currentPlan:"Votre plan actuel est {{displayName}},",withCredits:"avec {{messageCredits}} crédits de messages et {{integrationCredits}} crédits d'intégration."},uW={title:"Avantages de Base44 :",responsiveVisualEditor:"Éditeur visuel responsive",builtInBackend:"Backend intégré",userManagement:"Gestion des utilisateurs"},pW={title:"Paiement d'abonnement en retard",tryAgain:"Réessayer",trying:"Tentative en cours...",updatePaymentMethod:"Mettre à jour le moyen de paiement",description:"Votre dernier paiement a échoué. Réessayez ou mettez à jour votre moyen de paiement pour restaurer l'accès complet à votre plan."},mW={error:"Erreur",success:"Succès",checkoutError:"Impossible de créer la session de paiement. Veuillez réessayer plus tard.",subscriptionUpdated:"Abonnement mis à jour",downgradeScheduled:"Votre abonnement a été programmé pour être rétrogradé à la fin de votre cycle de facturation.",upgradeSuccess:"Votre abonnement a été mis à niveau avec succès. Les changements seront reflétés sous peu.",updateError:"Impossible de mettre à jour l'abonnement. Veuillez réessayer plus tard.",portalError:"Impossible d'ouvrir le portail de facturation. Veuillez réessayer plus tard.",scheduleCancelSuccess:"Programmation d'abonnement annulée avec succès",scheduleCancelError:"Impossible d'annuler la programmation d'abonnement. Veuillez réessayer plus tard.",paymentPortalError:"Impossible d'ouvrir la gestion des paiements. Veuillez réessayer."},gW={loadError:"Impossible de charger les informations de facturation de l'espace de travail",loadErrorAlert:"Impossible de charger les informations de facturation de l'espace de travail. Veuillez réessayer plus tard.",seatTypePlan:"Plan {{seatType}}",currentPlanContact:"Vous êtes actuellement sur le plan {{seatType}}. Pour effectuer des modifications, veuillez contacter votre {{adminType}} d'espace de travail.",workspaceOwner:"Propriétaire de l'espace de travail :",workspaceAdmin:"Administrateur de l'espace de travail :",viewerAccess:"Accès en lecture seule",viewerAccessDescription:"Vous avez actuellement un accès en lecture seule dans cet espace de travail. Pour obtenir un siège avec accès complet, veuillez contacter votre {{adminType}} d'espace de travail.",adminAccessMessage:"<strong>Accès administrateur :</strong> Visitez le <a>tableau de bord de l'espace de travail</a> pour gérer les sièges, la facturation et les membres de l'équipe.",adminTypes:{owner:"propriétaire",administrator:"administrateur"}},hW={loadError:"Impossible de charger les informations de l'espace de travail. Veuillez réessayer plus tard.",workspacePlan:"Plan de l'espace de travail :",renews:"Renouvellement :",workspaceOwner:"Propriétaire de l'espace de travail",contactOwner:"Pour les modifications de facturation ou les questions sur l'abonnement, contactez le propriétaire de votre espace de travail.",ownerLabel:"Propriétaire de l'espace de travail :",adminAccessMessage:"<strong>Accès administrateur :</strong> Visitez la page des <a>membres de l'espace de travail</a> pour gérer les membres.",billingManagedByOwner:"La facturation est gérée par le propriétaire de votre espace de travail. Contactez le propriétaire indiqué ci-dessus pour toute question liée à la facturation.",roles:{owner:{title:"Propriétaire",description:"Accès complet à la facturation, aux paramètres et à la gestion des membres de l'espace de travail."},admin:{title:"Administrateur",description:"Peut gérer les paramètres et les membres de l'espace de travail, mais ne peut pas modifier la facturation."},editor:{title:"Éditeur",description:"Peut créer et modifier des apps dans cet espace de travail."},viewer:{title:"Lecteur",description:"Peut consulter les apps dans cet espace de travail en lecture seule."},member:{title:"Membre",description:"Membre de l'équipe avec accès aux apps de l'espace de travail."},guest:{title:"Invité",description:"Collaborateur externe avec accès à des apps spécifiques dans cet espace de travail."}}},fW={title:"Sécurité et conformité",iso:{title:"ISO/IEC 27001",subtitle:"Gestion de la sécurité ISO/IEC"},soc2:{title:"SOC 2 Type II",subtitle:"SOC pour les organisations de services"},gdpr:{title:"GDPR",subtitle:"Règlement sur la protection des données et la vie privée"}},vW={title:"Base44 pour les Entreprises",subtitle:"Permettez aux grandes organisations de créer des solutions parfaitement adaptées à leurs équipes, en toute sécurité et à grande échelle",contactUs:"Nous contacter",features:{onboarding:{title:"Intégration et Formation",description:"Des plans d'intégration personnalisés combinés à des formations en direct et des ressources, conçus pour aider les administrateurs et les utilisateurs finaux à adopter rapidement la solution."},accountTeam:{title:"Équipe de Compte Dédiée",description:"Collaborez avec un responsable de compte et un ingénieur solution désignés, offrant des conseils directs, des escalades et un alignement sur la feuille de route."},prioritySupport:{title:"Support prioritaire, garanti",description:"Bénéficiez d'une assistance prioritaire garantie et de temps de réponse définis via un canal de support dédié."},capabilities:{title:"Fonctionnalités de Niveau Entreprise",description:"Des fonctionnalités de sécurité, de conformité, de gestion et de surveillance offrant le contrôle et la flexibilité nécessaires à grande échelle."}}},bW={yearly:"Annuel",monthly:"Mensuel",yearlyInline:"annuel",monthlyInline:"mensuel",monthlyCredits:"Crédits mensuels",integrationCredits:"Crédits d'intégration",priceSuffixYearly:" × 12 mois",priceSuffixMonthly:" / par mois",off:"REMISE",save:"ÉCONOMISEZ",discountBadge:"{{discount}} REMISE",saveBadge:"ÉCONOMISEZ {{amount}}",planNotFound:"Tarifs du forfait non disponibles. Veuillez revenir en arrière et réessayer.",upgradeDialogTitle:"Confirmer la mise à niveau de l'abonnement",upgradeDialogDescription:"Vous êtes sur le point de passer au forfait {{planName}} pour <price/>/mois. Votre abonnement sera mis à jour immédiatement et un montant au prorata vous sera facturé pour le reste de votre cycle de facturation.",noteMonthlyExcludes:"NOTE : L'abonnement mensuel n'inclut pas :",whatsIncluded:"Ce qui est inclus dans le forfait {{period}}",chooseYearly:"Choisissez un abonnement <yearlyLink>annuel</yearlyLink> pour tirer le meilleur parti de votre forfait premium",yearlyFeatures:{discount:"Profitez d'une remise spéciale et économisez",freeDomain:"Domaine gratuit pendant 1 an",shareCredits:"Recevez 25 crédits à partager avec un ami"},monthlyFeatures:{discount:"Remise spéciale et économies",freeDomain:"Domaine gratuit pendant 1 an",shareCredits:"25 crédits à partager avec un ami"},planNotAvailable:"Tarification du forfait non disponible. Veuillez réessayer.",goBack:"Retour",continueToCheckout:"Continuer vers le paiement",confirmSubscriptionUpgrade:"Confirmer la mise à niveau de l'abonnement",upgradeDescription:"Vous êtes sur le point de passer au forfait {{planName}} pour <strikethrough>{{originalPrice}}</strikethrough>{{price}}/mois. Votre abonnement sera mis à jour immédiatement et un montant au prorata vous sera facturé pour le reste de votre cycle de facturation.",cancel:"Annuler",confirmUpgrade:"Confirmer la mise à niveau",processing:"Traitement...",studentDiscountFootnote:"L'offre s'applique à la première année (12 mois) d'un nouveau plan Starter. Utilisation unique par utilisateur ; la réduction ne peut pas être réactivée après une annulation."},yW={bannerTitle:"Étudiant ou enseignant ? Jusqu'à {{percent}}% de réduction sur le plan Starter",bannerSubtitle:"Vérifiez votre e-mail universitaire pour débloquer des tarifs réduits",verifiedWith:"Vérifié avec {{email}} - jusqu'à {{percent}}% de réduction",starterPlan:"Plan Starter",active:"Actif",dialogTitle:"Réduction étudiante",surveyTitle:"Parlez-nous de vous",alreadyActiveDesc:"Votre réduction étudiante est déjà active.",emailStepDesc:"Vérifiez votre e-mail universitaire pour débloquer les tarifs étudiants.",codeStepDesc:"Nous avons envoyé un code à 6 chiffres à {{email}}",surveyStepDesc:"Quelques questions rapides pour finaliser votre vérification.",benefitDiscount:"Jusqu'à {{percent}}% de réduction",benefitDiscountDetail:"sur le plan Starter",benefitAccess:"Accès complet",benefitAccessDetail:"à toutes les fonctionnalités Starter",benefitClaimOnce:"Utilisable une fois",benefitClaimOnceDetail:"à tout moment sur Starter",alreadyApplied:"Votre réduction étudiante est déjà appliquée",alreadyAppliedDesc:"Vérifié avec {{email}}. Les tarifs réduits sont affichés sur les plans éligibles ci-dessus.",gotIt:"Compris",emailPlaceholder:"vous@universite.edu",emailHint:"Nous acceptons .edu, .ac.uk, .ac.il et d'autres domaines universitaires.",sending:"Envoi en cours...",sendCode:"Envoyer le code de vérification",codePlaceholder:"Entrez le code à 6 chiffres",verifying:"Vérification en cours...",verifyCode:"Vérifier le code",changeEmail:"Changer d'e-mail",resendCooldown:"Renvoyer le code ({{seconds}}s)",resendCode:"Renvoyer le code",role:"Rôle",student:"Étudiant",teacher:"Enseignant",intendedUseLabel:"À quoi comptez-vous utiliser Base44 ?",intendedUsePlaceholder:"ex. : Projet de cours, outil de recherche, thèse...",fieldOfStudy:"Quel est votre domaine d'études ?",fieldOfTeaching:"Quel est votre domaine d'enseignement ?",selectField:"Sélectionnez un domaine d'études...",searchFields:"Rechercher des domaines...",other:"Autre",specifyField:"Veuillez préciser...",graduationDate:"Date de diplôme prévue",month:"Mois",year:"Année",activating:"Activation en cours...",verifyingEmail:"Vérification de l'e-mail...",activateDiscount:"Activer la réduction",errorNoEmail:"Veuillez entrer votre adresse e-mail universitaire.",errorInvalidEmail:"Veuillez entrer une adresse e-mail valide.",errorSendFailed:"Échec de l'envoi du code de vérification. Veuillez réessayer.",errorEmailAlreadyClaimed:"Cet e-mail universitaire est déjà associé à un autre compte.",errorNoCode:"Veuillez entrer le code à 6 chiffres reçu par e-mail.",errorInvalidCode:"Code invalide ou expiré. Veuillez réessayer.",errorNoIntendedUse:"Veuillez nous dire à quoi vous comptez utiliser Base44.",errorNoField:"Veuillez sélectionner votre domaine d'études.",errorNoFieldOther:"Veuillez préciser votre domaine d'études.",errorNoGraduation:"Veuillez sélectionner votre date de diplôme prévue.",toastActivatedTitle:"Réduction étudiante activée",toastActivatedDesc:"Vos tarifs étudiants sont maintenant appliqués aux plans éligibles. Faites défiler vers le haut pour voir les prix mis à jour.",errorActivateFailed:"Échec de l'activation de la réduction. Veuillez réessayer.",toastResentTitle:"Code renvoyé",toastResentDesc:"Un nouveau code de vérification a été envoyé à votre e-mail.",errorResendFailed:"Échec du renvoi du code. Veuillez patienter un instant et réessayer."},kW="Votre plan actuel a été acheté avec une carte cadeau. Le crédit de la carte cadeau n'est pas transféré lors des mises à niveau — le prix au prorata vous sera facturé.",wW={title:"Achat réussi",redirecting:"Redirection vers l'application dans {{seconds}}s...",button:"Retour à l'application"},AW={modal:X$,certificates:eW,features:tW,borderTag:aW,header:nW,messageLabel:iW,card:rW,dropdown:oW,dialog:sW,faq:lW,notices:cW,manageSubscription:dW,benefits:uW,overduePayment:pW,toasts:mW,workspaceBilling:gW,workspaceRoles:hW,security:fW,enterprise:vW,periodSelector:bW,studentDiscount:yW,upgradeGiftCardWarning:kW,returnToApp:wW},SW="Invitez des amis et gagnez des crédits",CW="Invitez des amis et gagnez des crédits",DW="Invitez et gagnez des crédits",TW="Partagez votre lien et gagnez {{credits}} crédits quand vos amis publient leur première app",EW={title:"Incroyable ! Vous avez atteint le maximum de parrainages",description:"Vous pouvez parrainer jusqu'à {{maxReferrals}} amis au total",extra:"({{extra}} supplémentaires ne rapporteront pas de crédits)"},PW={tryAgain:"Réessayer",copied:"Copié dans le presse-papiers !",copyButton:"Copier",copiedButton:"Copié"},_W={title:"Comment ça marche",shareLink:"Partagez votre lien de parrainage unique avec vos amis",signupBonus:"Ils reçoivent <bold>{{credits}} crédits</bold> à l'inscription",publishReward:"Vous gagnez <bold>{{credits}} crédits</bold> quand ils publient leur première app"},xW="Vos parrainages ({{current}}/{{max}})",IW={registered:"Inscrit",earned:"Gagné"},RW={back:"Retour",close:"Fermer",srTitle:"Programme de parrainage",baseDayBadge:"Base44 Day",creditsCount:"{{credits}} crédits",earnCredits:"Gagnez {{credits}} crédits",termsAndConditions:"Conditions générales",termsDescription:"Conditions générales du programme de parrainage"},zW={title:"Conditions générales",eligibility:{title:"Éligibilité",newUsersOnly:"Seuls les nouveaux utilisateurs peuvent participer à cette offre de parrainage. Les comptes existants ne sont pas inclus.",shareResponsibly:"Nous vous demandons de partager votre lien de parrainage de manière responsable. Le publier sur des sites non pertinents ou spam peut entraîner l'exclusion du programme."},credits:{title:"Crédits de parrainage",earnOnPublish:"Vous gagnez {{credits}} crédits quand un ami parrainé publie sa première app",bonusOnSignup:"Les amis parrainés reçoivent {{credits}} crédits de bonus à l'inscription",maxPerAccount:"Maximum de 5 parrainages réussis par compte",noCashValue:"Les crédits n'ont aucune valeur monétaire et ne peuvent pas être transférés"},restrictions:{title:"Restrictions",voidFraudulent:"Base44 se réserve le droit d'annuler les parrainages frauduleux",nonTransferable:"Les codes de parrainage ne sont pas transférables"},footer:"Base44 se réserve le droit de modifier ou de mettre fin à ce programme de parrainage à tout moment. Les changements seront communiqués via la plateforme."},MW={title:SW,titleDesktop:CW,titleMobile:DW,subtitle:TW,maxReached:EW,link:PW,howItWorks:_W,yourReferrals:xW,status:IW,dialog:RW,terms:zW},NW={title:"Spotlight",subtitle:"Explorez des applications et sites web remarquables créés avec Base44",loading:"Chargement de Spotlight…",errorMessage:"Impossible de charger Spotlight. Veuillez réessayer plus tard.",empty:"Aucune app dans Spotlight pour l'instant."},FW={title:"Erreur",description:"Impossible de charger les apps Spotlight."},LW={label:"Spotlight du jour",byCreator:"par {{creator}}",screenshotAlt:"Capture d'écran de {{appName}}",logoAlt:"Logo de {{appName}}"},jW={"beautifully-designed":"Magnifiquement conçu","loved-by-the-community":"Adoré par la communauté",saas:"SaaS",education:"Éducation","e-commerce":"Commerce électronique",websites:"Sites web"},OW={screenshotAlt:"Capture d'écran de {{appName}}",logoAlt:"Logo de {{appName}}",viewDetailsLabel:"Voir les détails",viewDetailsAriaLabel:"Voir les détails de {{appName}}"},BW={backButton:"Spotlight",byCreator:"Par {{creator}}",iframeTitle:"Aperçu de {{appName}}",previewNotAvailable:"Aperçu non disponible"},UW={ariaLabel:"Soumettre votre app à Spotlight",heading:"Vous voulez que votre app apparaisse ici ?",description:"Montrez ce que vous avez construit avec Base44. Soumettez à Spotlight et inspirez la communauté.",buttonText:"SOUMETTRE VOTRE APP"},qW={title:"Soumettre votre app à Spotlight",selectAppSubtitle:"Choisissez l'app que vous souhaitez nominer pour la page Spotlight.",detailsSubtitle:"Dites-nous pourquoi votre app devrait être présentée sur la page Spotlight.",back:"Retour",cancel:"Annuler",next:"Suivant",searchPlaceholder:"Rechercher des apps...",aboutLabel:"À propos de cette app",aboutPlaceholder:"Parlez-nous de quelque chose d'intéressant dans votre app – fonctionnalités spéciales, astuces intelligentes ou tout ce que la communauté aimerait découvrir",screenshotLabel:"Capture d'écran <optional>(facultatif)</optional>",screenshotHint:"PNG, JPG ou WebP — min. 800×450 px, jusqu'à 2 Mo",submit:"Soumettre",submitting:"Envoi en cours…",submitError:"Impossible de soumettre la demande Spotlight.",successAlreadyInSpotlight:"Déjà dans Spotlight",successRequestReceived:"Demande reçue",successDescription:'Nous allons examiner "{{appName}}" pour Spotlight. Vous aurez bientôt des nouvelles.'},VW={viewApp:"Voir l'app",share:"Partager",upvote:"Voter",alreadyUpvoted:"Déjà voté",thankYouForVote:"Merci pour votre vote !",voteError:"Impossible d'enregistrer le vote",voteErrorDescription:"Veuillez réessayer plus tard.",linkShared:"Lien partagé",linkCopied:"Lien copié dans le presse-papiers",shareError:"Impossible de partager"},$W={label:"Le saviez-vous ?"},WW={editedAgo:"modifié {{timeAgo}}",editedRecently:"Modifié récemment",noAppsFound:"Aucune app trouvée",noAppsAvailable:"Aucune app disponible",loadMore:"Charger plus d'apps",loading:"Chargement…"},GW={page:NW,fetchError:FW,featured:LW,sections:jW,card:OW,detailModal:BW,submitBanner:UW,requestModal:qW,actions:VW,didYouKnow:$W,appPicker:WW},HW={page:{title:"Aide & Support",subtitle:"Obtenez l'aide dont vous avez besoin pour créer des applications extraordinaires avec BASE44"},getStarted:"Commencer",cards:{documentation:{title:"Documentation",description:"Explorez des guides complets, des tutoriels, des FAQ et les meilleures pratiques pour développer avec Base44."},discord:{title:"Communauté Discord",description:"Connectez-vous avec d'autres développeurs et obtenez une aide instantanée de notre communauté active."},supportTicket:{title:"Ouvrir un ticket de support",description:"Soumettez un ticket de support détaillé et obtenez une assistance personnalisée."}},appContext:{title:"Support spécifique à l'application",description:"Les demandes de support seront associées à l'application <appId>{{appId}}</appId>"},quickActions:{title:"Actions rapides",subtitle:"Gérez votre expérience de support",myTickets:{title:"Mes tickets de support",description:"Afficher et gérer vos tickets de support existants"},communityForum:{title:"Forum communautaire",description:"Notre nouvelle communauté Reddit"}}},YW={fallbackTitle:"Conversation de support",appLink:"App"},KW={title:"Mes tickets de support",backToSupport:"Retour au support",showingTicketsForApp:"Affichage des tickets pour l'App : <app>{{appId}}</app>",filteredByApp:"Filtré par App : <app>{{appId}}</app>"},ZW={title:"Soumettre un ticket de support",titleResume:"Soumettre un ticket de support"},JW={helpMessage:"Besoin d'aide immédiate ? <normal>Consultez notre </normal><docsLink>documentation</docsLink><normal> ou rejoignez notre </normal><discordLink>communauté Discord</discordLink>."},QW={heading:"Continuer votre demande de support ?",description:"Vous avez commencé à créer un ticket de support précédemment.",chooseHowToProceed:"Choisissez comment vous souhaitez continuer :",continueWhereLeftOff:"Continuer où vous en étiez",continueWhereLeftOffDesc:"Restaurez vos saisies précédentes et continuez depuis la dernière étape.",startNewTicket:"Commencer un nouveau ticket",startNewTicketDesc:"Abandonnez le brouillon et commencez une nouvelle demande de support.",continue:"Continuer"},XW={tellUsAboutYourIssue:"Décrivez-nous votre problème",whatTypeOfIssue:"Quel type de problème rencontrez-vous ?",selectApp:"Sélectionnez l'application liée à votre problème"},eG={instruction:"Veuillez partager ce que vous faisiez, ce qui s'est mal passé et comment nous pouvons reproduire le problème.",descriptionLabel:"Description",descriptionPlaceholder:`Exemple :
• Ce que vous essayiez de faire
• Ce qui s'est passé à la place
• Tout message d'erreur
• Étapes pour reproduire (si pertinent)`,attachmentsLabel:"Pièces jointes",viewApp:"Voir l'app",dragAndDropFiles:"Glissez et déposez des fichiers ici",dropFilesHere:"Déposez les fichiers ici",browseFiles:"Parcourir les fichiers",uploading:"Téléversement en cours...",unsupportedFileType:`Le type de fichier "{{type}}" n'est pas pris en charge. Types pris en charge : jpg, jpeg, png, pdf.`,invalidFile:"Fichier non valide",failedToUpload:"Échec du téléversement du fichier"},tG={analyzingIssue:"Analyse de votre problème...",categoryFullDescription:"Il semble que votre problème entre dans l'une de ces catégories.<br/>Sélectionnez celle qui correspond le mieux — cela nous aide à vous guider vers la bonne solution."},aG={authentication:"Authentification",billing:"Facturation",bug_report:"Rapport de bug",domain:"Domaine",integrations_and_backend_functions:"Intégrations et Backend",chat_issues:"Problèmes de chat",security:"Sécurité",social_post_bonus_credits:"Crédits bonus pour publication sociale",superagent:"Superagent",other:"Autre"},nG={searchPlaceholder:"Rechercher des applications...",addAppLink:"Ajouter un lien d'app",addAppLinkPlaceholder:"p. ex., https://your-app-url.com ou https://yourapp.base44.app",invalidUrl:"Veuillez entrer une URL valide commençant par http:// ou https://",noAppsFound:"Aucune app trouvée",noAppsAvailable:"Aucune app disponible",loadingMore:"Chargement...",loadMore:"Charger plus d'apps",edited:"modifié {{time}}"},iG={loading:"Chargement de la conversation...",errorTitle:"Erreur de chargement de la conversation",noConversationTitle:"Conversation introuvable",noConversationMessage:"Cette conversation n'existe pas ou vous n'y avez pas accès.",tryAgain:"Réessayer",ticketFallbackTitle:"Ticket de support",categoryFallback:"Général",closeTicket:"Fermer le ticket",closing:"Fermeture...",aiAssistantInfo:"Assistant IA · Peut faire des erreurs",talkToSpecialist:"Parler à un spécialiste du support",handledBySpecialist:"Pris en charge par un spécialiste du support",notifyWhenResponds:"Me notifier quand le support répond",ticketResolvedTitle:"Ce ticket a été résolu",ticketResolvedMessage:"Veuillez créer un nouveau ticket pour une assistance supplémentaire",conversationClosed:"Cette conversation est fermée",aiHandlingTicket:"L'agent IA gère ce ticket. Cliquez sur <bold>Prendre en charge</bold> pour répondre manuellement.",typeResponse:"Tapez votre réponse...",typeMessage:"Tapez votre message...",failedLoadConversation:"Impossible de charger la conversation. Veuillez réessayer.",ticketAlreadyResolved:"Ce ticket a été résolu. Veuillez créer un nouveau ticket pour une assistance supplémentaire.",failedCloseTicket:"Impossible de fermer le ticket. Veuillez réessayer.",failedEscalate:"Impossible d'escalader le ticket. Veuillez réessayer.",confirmCloseTicket:"Êtes-vous sûr de vouloir fermer ce ticket ? Il sera marqué comme résolu.",premiumSupportTier:"Support Premium",standardSupportTier:"Support Standard",premiumSupportMessage:"Support hors ligne, réponse prioritaire dans les 48h",standardSupportMessage:"Support hors ligne, réponse dans les 48h",templates:{label:"Modèles rapides",less:"Moins"},draft:{title:"Réponse suggérée par l'IA",collapse:"Réduire",viewAll:"Tout voir",use:"Utiliser"},escalateModal:{title:"Demander un support humain",description:"Votre ticket sera transféré à notre équipe de support pour une réponse personnalisée.",cancel:"Annuler",requesting:"Demande en cours...",requestButton:"Demander un support humain"}},rG={supportTeam:"Équipe de support",attachedFile:"Fichier joint",translatedFrom:"Traduit depuis {{language}}",internalNote:"Note interne",emptyTitle:"Démarrer la conversation",emptyMessage:"Envoyez un message pour commencer votre conversation de support",translating:"Traduction en cours...",showingTranslations:"Affichage des traductions",translateToEnglish:"Traduire en anglais",confirmDeleteMessage:"Êtes-vous sûr de vouloir supprimer ce message ?",failedDeleteMessage:"Impossible de supprimer le message. Veuillez réessayer.",failedTranslate:"Impossible de traduire les messages. Veuillez réessayer.",attachedContent:"Contenu joint",videoNotSupported:"Votre navigateur ne prend pas en charge la lecture vidéo.",noteBy:"par {{name}}",adminFallback:"Admin",events:{unknownActor:"Quelqu'un",statusChange:"{{actor}} a changé le statut en {{status}}",unassigned:"{{actor}} a supprimé l'assignation du ticket",assigned:"{{actor}} a assigné à {{assignee}}",reassigned:"{{actor}} a réassigné à {{assignee}}",escalated:"{{actor}} a escaladé le ticket",removedEscalation:"{{actor}} a supprimé l'escalade",categoryChange:"{{actor}} a changé la catégorie en {{category}}",labelChangeAdded:"{{actor}} a ajouté {{labels}}",labelChangeRemoved:"{{actor}} a supprimé {{labels}}",labelChangeBoth:"{{actor}} a ajouté {{added}} et supprimé {{removed}}",updated:"{{actor}} a mis à jour le ticket",markedAbusive:"{{actor}} a marqué le contenu comme abusif",clearedAbusive:"{{actor}} a supprimé le marquage de contenu abusif"}},oG={uploading:"Téléchargement...",uploadFiles:"Télécharger des fichiers",fileTypeError:"Veuillez demander la prise en charge de types de fichiers supplémentaires sur <link>feedback.base44.com</link>"},sG={open:"Ouvert",closed:"Fermé",all:"Tous"},lG={open:"Ouvert",resolved:"Résolu"},cG={noOpenTickets:"Aucun ticket ouvert",noClosedTickets:"Aucun ticket fermé",noTickets:"Aucun ticket",descriptionOpen:"Vous n'avez aucun ticket de support ouvert pour le moment.",descriptionClosed:"Aucun ticket fermé trouvé.",descriptionAll:"Vous n'avez encore soumis aucun ticket de support."},dG={appLabel:"App : {{appId}}",dateNotAvailable:"Non disponible"},uG={loadingTitle:"Erreur de chargement des tickets",loadingFailed:"Impossible de charger les tickets de support. Veuillez réessayer.",ticketLimitTitle:"Limite de tickets atteinte",ticketLimitDescription:"Il y a plus de tickets qu'il n'est possible d'en charger. Seuls les 1000 tickets les plus récents ont été chargés."},pG={free:"Gratuit"},mG={cancel:"Annuler",back:"Retour",skip:"Ignorer",continue:"Continuer",submitting:"Envoi en cours...",refresh:"Actualiser",newTicket:"Nouveau ticket",createNewTicket:"Créer un nouveau ticket",tryAgain:"Réessayer",bannedAlert:"Votre accès au Support Base44 a été restreint en raison d'une violation des Conditions d'Utilisation du Support Base44. Veuillez consulter l'e-mail que nous vous avons envoyé pour plus de détails."},gG={descriptionRequired:"Veuillez ajouter une description",descriptionTooShort:"Veuillez ajouter un peu plus de détails. Le minimum est de 20 caractères.",appRequired:"Choisissez l'une de vos apps ou ajoutez un lien pour que nous sachions où le problème se produit.",submissionFailed:"Impossible d'envoyer votre ticket de support. Veuillez réessayer."},hG={dailyLimitReached:"Limite quotidienne atteinte",somethingWentWrong:"Une erreur s'est produite",dailyLimitMessage:"Limite quotidienne de conversations de support dépassée. Vous pouvez créer jusqu'à {{limit}} conversations par jour avec votre abonnement actuel.",tryAgain:"Réessayer",cancel:"Annuler",close:"Fermer"},fG={help:HW,sidebar:YW,page:KW,modal:ZW,footer:JW,resumeStep:QW,steps:XW,tellUsAboutYourIssue:eG,whatTypeOfIssue:tG,categories:aG,selectApp:nG,chat:iG,messages:rG,input:oG,tabs:sG,status:lG,emptyState:cG,ticketCard:dG,errors:uG,tiers:pG,actions:mG,validation:gG,submissionError:hG},vG={sectionTitle:"アカウント設定",sectionDescription:"個人アカウントの設定と環境設定を管理します。",heading:"アカウント",email:{label:"メールアドレス",placeholder:"メールアドレス未設定"},fullName:{label:"氏名",placeholder:"氏名を入力してください",profileHint:"あなたのBase44公開<profileLink>プロフィール</profileLink>に表示されます。"},phoneNumber:{label:"電話番号",placeholder:"電話番号を入力してください",smsConsent:"電話番号を入力することで、SMSによる通知の受信に同意したことになります。"},defaultAgents:{label:"デフォルトエージェント",toggleLabel:"新しいアプリでデフォルトでエージェントを有効にする",description:"有効にすると、新しいアプリは自動的にエージェントが有効化され、自律的なタスクの実行やツールの使用が可能になります。"},defaultTestData:{label:"デフォルトのテストデータ",toggleLabel:"新しいアプリでデフォルトでテストデータを有効にする",description:"有効にすると、新しいアプリはテストデータがオンの状態で起動し、ライブデータに影響を与えずに安全に変更をテストできます。",upgradeRequired:"この機能はBuilderプラン以上が必要です。",seePlans:"プランを見る"},apiKey:{label:"APIキー",copyTitle:"APIキーをコピー",copied:"コピーしました!",regenerate:"再生成",regenerating:"再生成中...",regenShort:"再生成",regenShortLoading:"処理中...",description:"APIキーはワークスペースへのアクセスを提供します。他者と共有しないでください。",notGenerated:"未生成 — 「再生成」をクリックしてください"},backofficeApiKey:{title:"バックオフィスAPIキー",description:"このキーを使用して、バックオフィスサービスへのプログラムによるリクエストを認証します。プラットフォームサービスでは機能しません。秘密にしてください。",yourKey:"あなたのバックオフィスAPIキー",copySuccess:"APIキーをコピーしました",copyError:"APIキーのコピーに失敗しました",regenSuccess:"バックオフィスAPIキーを再生成しました",regenError:"再生成に失敗しました: {{error}}",warning:"再生成すると、以前のキーは直ちに無効になります。使用しているクライアントは更新が必要です。",existsPlaceholder:"•••••••••••••••••• (キーは存在します — ハッシュのみ保存されます。新しいキーを表示するには再生成してください)",showOnceWarning:"このキーを今すぐコピーしてください。一度だけ表示され、後で取得することはできません。"},unsavedChanges:"未保存の変更",discard:"破棄",save:"保存",saving:"保存中...",saveSuccess:"アカウント設定を更新しました!",saveError:"アカウント設定の更新に失敗しました:{{error}}",unknownError:"不明なエラー",apiKeyCopySuccess:"APIキーをクリップボードにコピーしました!",apiKeyCopyError:"APIキーのコピーに失敗しました",apiKeyRegenSuccess:"APIキーを再生成しました!",apiKeyRegenError:"APIキーの再生成に失敗しました:{{error}}"},bG={title:"二要素認証",description:"サインイン時に追加の保護を設定します。サインインするたびにコードの入力が求められます。",twoFactorEnabled:"二要素認証が有効になりました。",statsLine:"{{used}}/{{total}} リカバリーコード使用済み · {{devices}} 信頼済みデバイス",totp:{name:"認証アプリ",description:"Google AuthenticatorやDuoなどのアプリを使用して安全なサインインコードを生成します。",setupTitle:"認証アプリを設定する",scanQr:"認証アプリでQRコードをスキャンしてください",cantScan:"コードをスキャンできませんか?手動で入力してください:",enterCodeTitle:"認証アプリのコードを入力してください",enterDigitCode:"6桁のコードを入力",codesRefresh:"コードは30秒ごとに更新されます。",qrCodeAlt:"認証アプリ設定用QRコード",enabled:"認証アプリが有効になりました",disabled:"認証アプリが無効になりました"},sms:{name:"テキストメッセージ",description:"テキストメッセージでサインインコードを受け取ります。",enterPhone:"電話番号を入力してください",phoneLabel:"電話番号",phonePlaceholder:"(555) 000-0000",verificationWillBeSent:"この番号に確認コードが送信されます。",verifyPhone:"電話番号を確認する",codeSentTo:"{{phone}} に6桁のコードが送信されました",standardRates:"標準的なメッセージ料金とデータ料金がかかる場合があります。",invalidPhone:"電話番号が無効です。番号を確認してもう一度お試しください。",enabled:"テキストメッセージMFAが有効になりました",disabled:"テキストメッセージが無効になりました"},recovery:{saveTitle:"リカバリーコードを保存してください",saveDescription:"これらのリカバリーコードを安全な場所に保存してください。電話や認証アプリにアクセスできなくなった場合に必要になります。",eachCodeOnce:"各リカバリーコードは一度しか使用できません。安全でアクセスしやすい場所に保管してください。",eachCodeOnceShort:"各リカバリーコードは一度しか使用できません。",copyAll:"すべてコピー",download:"ダウンロード",copied:"コピーしました",enterRecoveryCode:"リカバリーコードを入力"},disable:{title:"二要素認証を無効にする",turnOff:"二要素認証をオフにしますか?",turnOffDescription:"続行するには、電話に送信されたコードまたはリカバリーコードで確認する必要があります。",verifyWithPhone:"電話に送信されたコードで確認",verifyWithApp:"認証アプリのコードを入力",enterRecoveryToDisable:"二要素認証を無効にするには、リカバリーコードを入力してください。",useRecoveryCode:"リカバリーコードを使用",verifyViaApp:"アプリで確認",verifyAndDisable:"確認して無効にする"},regenerate:{title:"リカバリーコードを再生成",trustedDevicesCount_one:"{{count}} 台の信頼済みデバイス",trustedDevicesCount_other:"{{count}} 台の信頼済みデバイス",codesUsed:"{{used}}/{{total}} リカバリーコード使用済み",descriptionChoose:"リカバリーコードを再生成するための確認方法を選択してください。既存のコードはすべて無効になります。",descriptionSms:"確認のため、電話に確認コードを送信します。",descriptionSmsVerify:"リカバリーコードを再生成するための確認コードを入力してください。既存のコードはすべて無効になります。",descriptionTotpVerify:"リカバリーコードを再生成するための確認コードを入力してください。既存のコードはすべて無効になります。",verifyWithApp:"認証アプリのコードを入力",verifyWithSms:"電話に送信されたコードで確認",smsMethodLabel:"SMSメッセージ",enterCodeLabel:"6桁のコードを入力",helperTotp:"認証アプリを開いてコードを取得してください",helperSms:"電話に送信されたコードを入力してください",verifyAndRegenerate:"確認して再生成",enterCode:"コードを入力"},reauth:{title:"本人確認",description:"セキュリティのため、{{method}}を追加する前に本人確認を行います。",actionTotp:"認証アプリの6桁のコードを入力してください。",actionSms:"{{phone}}に送信されたコードを入力してください。"},common:{enable:"有効にする",enabled:"有効",cancel:"キャンセル",close:"閉じる",back:"戻る",done:"完了",verify:"確認",sendCode:"コードを送信",regenerate:"再生成",regenerateRecoveryCodes:"リカバリーコードを再生成",disable:"無効にする",continue:"続行",fullCodeError:"6桁のコードを入力してください",fullRecoveryError:"リカバリーコードを入力してください",enterVerificationCode:"確認コードを入力してください",didntReceive:"コードが届きませんか?",resendIn:"{{seconds}}秒後に再送信",resend:"再送信",verificationSent:"確認コードが送信されました",failedToSetup:"認証アプリの設定に失敗しました",failedToSendCode:"コードの送信に失敗しました",failedToResend:"再送信に失敗しました",invalidCode:"無効なコード",lockedOut:"試行回数が多すぎます。{{minutes}}分後にもう一度お試しください。",lockedOutShort:"一時的にロック中({{minutes}}分)"}},yG={section:{title:"アカウントを削除",description:"アカウントとそれに関連するすべてのデータ、設定、アクティビティを削除します。",accessNote:"削除をリクエストした後、1週間はアカウントにアクセスできます。",deleteButton:"アカウントを削除",enterpriseTooltip:"エンタープライズユーザーはアカウントを削除できません。組織の管理者にお問い合わせください。"},pendingRequest:{willBeDeleted:"アカウント、サブスクリプション、所有するアプリとワークスペースは<bold>{{daysRemaining}}日後</bold>({{formattedEnd}})に削除され、以降は取り消すことができません。それまでの間は削除をキャンセルできます。",processing:"削除処理中...",cancelButton:"リクエストをキャンセル",renewalWarning:"サブスクリプションがこれらの{{daysRemaining}}日以内に更新される予定の場合、更新日前に手動でサブスクリプションをキャンセルしない限り、更新は引き続き発生します"},toast:{submitSuccess:"削除リクエストが送信されました。7日間の猶予期間後に確認・処理いたします。",submitError:"削除リクエストの送信に失敗しました。もう一度お試しください。",cancelSuccess:"削除リクエストが正常にキャンセルされました。",cancelError:"リクエストのキャンセルに失敗しました。もう一度お試しください。",preflightError:"アカウントのステータスを確認できませんでした。もう一度お試しください。"},dialog:{title:"アカウントの削除",description:"これにより、アカウントとすべての関連データが永久削除のスケジュールに登録されます。",whatWillBeDeleted:"削除されるもの:",itemAccountProfile:"アカウントとプロフィール",itemAllApps:"作成したすべてのアプリ",itemAllData:"アプリに保存されているすべてのデータ",itemUploadedFiles:"アップロードしたファイルとメディア",gracePeriodNote:"このリクエストをキャンセルするための7日間があります。その後、チームが削除を確認・処理します。",subscriptionNote:"サブスクリプションのキャンセルは最終的なものであり、返金はありません",cancelButton:"キャンセル",deleteButton:"アカウントを削除"},subscriptions:{dialogTitle:"アカウント削除前にサブスクリプションをキャンセルしてください",warning:"まだアクティブなサブスクリプションがあります。先にキャンセルしてください。",listLabel:"アクティブなサブスクリプション:",personalPlan:"個人プラン",planAndBilling:"プランと請求",yearly:"年払い",monthly:"月払い",cancelFirst:"上記のすべてのサブスクリプションをキャンセルしてから、こちらに戻ってアカウントを削除してください。",closeButton:"閉じる",manageButton:"サブスクリプションを管理"},workspaceOwner:{titleStep1:"ワークスペースを所有しています",titleStep2:"ワークスペースの削除を確認",memberCount_one:"{{count}} メンバー",memberCount_other:"{{count}} メンバー",warningOwner_one:"以下のワークスペースを所有しています。続行すると、このワークスペース内のすべてのアプリが完全に削除され、すべてのメンバーがアクセスを失います。",warningOwner_other:"以下のワークスペースを所有しています。続行すると、これらのワークスペース内のすべてのアプリが完全に削除され、すべてのメンバーがアクセスを失います。",leaveWorkspaces_one:"このワークスペースも退出し、アクセスを失います:",leaveWorkspaces_other:"これらのワークスペースも退出し、アクセスを失います:",confirmInstructions:"削除を確認するために、以下に各ワークスペース名を入力してください。この操作は取り消せません。",typeToConfirm:'確認のため <bold>"{{name}}"</bold> と入力してください',deleteAnyway:"それでも削除する",deleteAccount:"アカウントを削除",cancel:"キャンセル"},memberInfo:{title_one:"このワークスペースを退出します",title_other:"これらのワークスペースを退出します",description_one:"アカウントを削除すると、以下のワークスペースから退出されます。ワークスペースのすべてのアプリとデータへのアクセスを失います。",description_other:"アカウントを削除すると、以下のワークスペースから退出されます。ワークスペースのすべてのアプリとデータへのアクセスを失います。",cancel:"キャンセル",continueWithDeletion:"削除を続行"}},kG={title:"GitHubアカウント",addAccount:"GitHubアカウントを追加",unlockWithBuilder:"Builderプランでこの機能をアンロックしてください。",loading:"読み込み中...",connecting:"接続中...",reconnect:"再接続",connectionLost:"GitHubへの接続が失われました。GitHubアカウントを再接続して続行してください。",connected:"接続済み",connectedDescription:"GitHubアカウントが接続されています",disconnect:"切断",tryAgain:"再試行",connectGitHub:"GitHubに接続",disconnectDialog:{title:"GitHubから切断しますか?",accountDescription:"GitHubアカウントを切断しても、接続されているアプリには影響しません。<br/>リポジトリを接続または再接続する場合にのみ、アカウントを再接続する必要があります。",repoDescription:"これにより、アプリは{{repoName}}リポジトリから切断されます。",repoDescriptionNoName:"これにより、アプリはGitHubリポジトリから切断されます。",repoDetail1:"GitHubリポジトリは変更されません — 削除も除去もされません。",repoDetail2:"引き続きアプリに取り組むことができますが、GitHubはコードの信頼できるソースではなくなり、双方向同期が無効になります。",disconnectingProgress:"切断中… 数分かかる場合があります。",cancel:"キャンセル",disconnect:"切断",disconnecting:"切断中…"}},wG={title:"Google Drive",connected:"接続済み",connectedDescription:"Google Driveが接続されています",disconnectedDescription:"Google Driveを接続してファイルをインポート",connect:"接続",connecting:"接続中...",disconnect:"切断",disconnecting:"切断中...",loading:"読み込み中...",connectTitle:"Google Driveに接続",connectDescription:"AIチャットのコンテキストとしてGoogle Driveのファイルを使用するためのアクセスを許可します。",benefitImport:"Google Driveからドキュメント、スプレッドシート、プレゼンテーションをインポート",benefitChoose:"使用するファイルを毎回選択",benefitSecure:"選択したコンテンツはアプリで使用するために安全に保存されます",connectButton:"Google Driveを接続",cancel:"キャンセル",privacyNote:"選択したファイルのみがアクセスされます。",disconnectAnytime:"アカウント設定でいつでも切断できます。"},AG={title:"チャット設定",sendMessageShortcut:"メッセージ送信ショートカット",insertNewLineShortcut:"改行挿入ショートカット",soundPreferences:"サウンド設定",browserNotifications:"ブラウザ通知",notificationsHelpText:"通知を有効にしているのに受信できていませんか? <docLink>ドキュメントを確認する</docLink>",notificationOptions:{onFirstPromptOnly:"最初のプロンプトのみ",onEveryPromptCompletion:"毎回のプロンプト完了時",disableNotificationSounds:"通知音を無効にする",disableBrowserNotifications:"ブラウザ通知を無効にする"}},SG={account:vG,mfa:bG,deleteAccount:yG,github:kG,googleDrive:wG,chatSettings:AG},CG={title:"{{appName}}へのアクセスをリクエスト",subtitleDefault:"アクセスをリクエストするか、すでに権限があるアカウントに切り替えてください。",subtitleRequested:"申請が承認されましたらメールでお知らせします。",requestAccess:"アクセス権を申請",requestSubmitted:"申請を送信しました",loggedInAs:"{{email}} としてログイン中",switchAccount:"アカウントを切り替え",errorMessage:"エラーが発生しました。もう一度お試しいただくか、別のアカウントに切り替えてください。",tooManyAttempts:"試行回数が多すぎます。しばらくしてからもう一度お試しください。",backToLogin:"ログインに戻る"},DG={title:"アクセスが制限されています",subtitle:"このアプリにアクセスするには、このワークスペースのメンバーである必要があります。"},TG={accessRequired:CG,workspaceRestricted:DG},EG={title:"Base44へようこそ",loginWithGoogle:"Googleでログイン",loginWithGithub:"GitHubでログイン",loggingIn:"ログイン中...",or:"または",emailLabel:"メールアドレス",emailPlaceholder:"メールアドレスを入力",edit:"編集",lastUsed:"前回使用",ssoEnabled:"<strong>{{workspace}}</strong>でSSOが有効です",ssoClickBelow:"下のボタンをクリックして組織のログインに進んでください",passwordLabel:"パスワード",forgotPassword:"パスワードをお忘れですか?",passwordPlaceholder:"パスワードを入力",checkingAuth:"認証方法を確認中...",checking:"確認中...",continue:"続行",continueWithSSO:"{{provider}}で続行",logIn:"ログイン",noAccount:"アカウントをお持ちでないですか?",signUp:"新規登録",verifyEmailFirst:"ログインする前にメールアドレスを確認してください。確認コードをメールで送信しました。",resendVerificationCode:"確認コードを再送信",enterEmailFirst:"最初にメールアドレスを入力してください",invalidEmail:"有効なメールアドレスを入力してください",ssoError:"SSO設定エラーです。もう一度お試しください。",invalidCredentials:"メールアドレスまたはパスワードが正しくありません",loginFailed:"ログインに失敗しました。もう一度お試しください。",failedResendVerification:"確認コードの再送信に失敗しました。もう一度お試しください。",passwordResetRequired:"セキュリティ上の理由から、ログインする前にパスワードをリセットする必要があります。リセットリンクをメールで確認してください。",resetLinkSent:"パスワードリセットリンクをメールに送信しました。",resendResetLink:"リセットリンクを再送信",failedResendResetLink:"リセットリンクの送信に失敗しました。もう一度お試しください。",termsAndPrivacy:"<terms>利用規約</terms>および<privacy>プライバシーポリシー</privacy>。"},PG={title:"アカウントを作成",agreeToTerms:"「新規登録」をクリックすると、<terms>利用規約</terms>および<privacy>プライバシーポリシー</privacy>に同意したものとみなされます。",signUpWithGoogle:"Googleで新規登録",signUpWithGithub:"GitHubで新規登録",signingUp:"登録中...",creatingAccount:"アカウント作成中...",signUpButton:"新規登録",alreadyHaveAccount:"すでにBase44アカウントをお持ちですか?",logIn:"ログイン",validatingReferral:"紹介コードを確認中...",invalidReferral:"無効な紹介コード",youveBeenInvited:"招待されました!",invitedToJoin:"<strong>{{name}}</strong>さんからBase44への招待です",signUpFreeCredits:"登録して10無料クレジットを獲得!",signUpBaseDayCredits:"登録して44無料クレジットを獲得!",letsBuild:"一緒に素晴らしいものを作りましょう!",registrationFailed:"登録に失敗しました。もう一度お試しください。",failedValidateReferral:"紹介コードの確認に失敗しました",completeVerification:"認証を完了してください",weakPassword:"弱いパスワード"},_G={title:"パスワードをリセット",subtitle:"登録に使用したメールアドレスを入力してください。パスワードリセット用のリンクをお送りします。",backToLogin:"ログインに戻る",loginEmail:"ログインメールアドレス",emailPlaceholder:"例:name@email.com",sending:"送信中...",verifyEmail:"メールを確認",invalidEmail:"無効なメールアドレス",failedSendReset:"リセットリンクの送信に失敗しました。もう一度お試しください。"},xG={title:"メールを確認してください",subtitle:"パスワードリセットの手順を<strong>{{email}}</strong>に送信しました。",backToReset:"パスワードリセットに戻る",checkInfo:"メールでパスワードリセットリンクを確認してください。",mayTakeMinutes:"届くまでに数分かかる場合があります。",goToSignIn:"ログインへ",didntGetEmail:"メールが届きませんか?",resending:"再送信中...",resendEmail:"メールを再送信",emailNotFound:"メールアドレスが見つかりません。戻ってもう一度お試しください。",newResetSent:"新しいパスワードリセットメールを送信しました。受信トレイを確認してください。",failedResendEmail:"メールの再送信に失敗しました。もう一度お試しください。"},IG={title:"新しいパスワードを設定",subtitle:"Base44の新しいパスワードを入力してください",newPasswordLabel:"新しいパスワード",newPasswordPlaceholder:"新しいパスワードを入力",confirmPasswordLabel:"新しいパスワードの確認",confirmPasswordPlaceholder:"新しいパスワードを再入力",resetting:"リセット中...",resetButton:"パスワードをリセット",backToLogIn:"ログインに戻る",invalidToken:"リセットトークンが無効または見つかりません。新しいパスワードリセットをリクエストしてください。",passwordsMismatch:"パスワードが一致しません。もう一度お試しください。",weakPassword:"少なくとも中程度の強度のパスワードを作成してください。",resetSuccess:"パスワードがリセットされました!ログインページにリダイレクトしています...",resetSuccessLogin:"パスワードがリセットされました!新しいパスワードでログインしてください。",failedReset:"パスワードのリセットに失敗しました。もう一度お試しください。",invalidOrExpiredToken:"リセットトークンが無効または期限切れです"},RG={verifyTitle:"本人確認",verification:{chooseMethod:"認証方法を選択",authenticatorApp:"認証アプリ",smsMessage:"SMSメッセージ",recoveryCode:"リカバリーコード",continue:"続行",backToLogin:"ログインに戻る",chooseAnotherMethod:"別の方法を選択",verifyViaText:"テキストメッセージで確認",verifyViaApp:"認証アプリで確認",enterRecoveryCode:"リカバリーコードを入力",rememberDevice:"このデバイスを30日間記憶する",verifying:"確認中...",verify:"確認",useRecoveryCode:"リカバリーコードを使用",sendingCodeTo:"{{phone}}にコードを送信中…",enterCodeSentTo:"{{phone}}に送信されたコードを入力",enterCodeFromApp:"認証アプリのコードを入力",yourPhone:"お使いの電話",didntReceiveCode:"コードが届きませんか?",resendIn:"{{seconds}}秒後に再送信",resend:"再送信",enterCompleteRecoveryCode:"完全なリカバリーコードを入力してください",enterCompleteCode:"6桁のコードを入力してください",verificationFailed:"確認に失敗しました。もう一度お試しください。",failedSendCode:"コードの送信に失敗しました。再送信してください。"}},zG={buildingApp:"アプリを構築中",verifyEmailSubtitle:"メールアドレスを確認して続行",signUpSubtitle:"サインアップして、アプリが形になるのを見届けよう",loginSubtitle:"ログインして、アプリが形になるのを見届けよう"},MG={completeVerification:"セキュリティ認証を完了してください"},NG={title:"メールアドレスを確認",subtitle:"{{email}}に確認コードを送信しました",verificationCode:"確認コード",fillAllFields:"すべてのフィールドを入力してください。",enterCodeSent:"メールに送信された確認コードを入力してください",verifying:"確認中...",verifyEmail:"メールを確認",wrongEmail:"メールアドレスが違う?変更する",didntReceiveCode:"コードが届きませんか?",resendEmail:"メールを再送信",emailVerifiedLogin:"メールが確認されました!ログインできます。",emailVerifiedContinue:"メールが確認されました!ログインして続行してください。",invalidCode:"無効な確認コードです。もう一度お試しください。",verificationFailed:"確認に失敗しました。もう一度お試しください。",newCodeSent:"新しい確認コードをメールに送信しました。",failedResendCode:"確認コードの再送信に失敗しました。もう一度お試しください。"},FG={login:EG,register:PG,forgotPassword:_G,checkEmail:xG,resetPassword:IG,mfa:RG,authModal:zG,turnstile:MG,otp:NG},LG={notFound:"プロフィールが見つかりません",notFoundDescription:"ビルダープロフィール @{{username}} は存在しません。"},jG={edit:"編集",done:"完了",cancel:"キャンセル",appCount_one:"{{count}} アプリ",appCount_other:"{{count}} アプリ",joined:"{{date}} に参加",namePlaceholder:"あなたの名前",displayNameLabel:"表示名",usernameLabel:"ユーザー名",changeUsername:"ユーザー名を変更",saveChanges:"変更を保存",partnerBadge:"Base44 パートナー"},OG={label:"自己紹介",placeholder:"自己紹介を書いてください...",emptyPlaceholder:"訪問者に自己紹介しましょう — 短い自己紹介を追加してください。",hint:"最大220文字",maxChars:"最大{{max}}文字"},BG={viewTitle:"アプリ",appsHeader:"アプリ ({{count}})",appsHeaderEmpty:"アプリ",featuredCounter_one:"{{count}} 件を注目表示",featuredCounter_other:"{{count}} 件を注目表示",editHint:"公開プロフィールに表示するアプリを選択してください。",noPublishedApps:"公開されたアプリがありません。まずアプリを公開してください!",noPublishedAppsTitle:"公開されたアプリがありません",noPublishedAppsDescription:"まだアプリを公開していません。ワークスペースに移動してドラフトを完成させ、公開してプロフィールに表示しましょう。",viewMyApps:"マイアプリを表示",untitled:"無題",updated:"ピン留めアプリを更新しました!",updateFailed:"ピン留めアプリの更新に失敗しました",manageApps:"アプリを管理",chooseTitle:"表示するアプリを選択",chooseDescription:"公開プロフィールに表示する公開済みアプリを最大{{max}}個選択してください",selectAll:"すべて選択",deselectAll:"すべて解除",saveChanges:"保存",searchApps:"アプリを検索...",publicBadge:"公開",privateBadge:"非公開",showMore:"もっと見る",showLess:"折りたたむ",maxReached:"最大{{max}}個のアプリまで選択できます",close:"閉じる",noSearchResults:"検索に一致するアプリがありません",updatedRecently:"最近更新",selectAllCount:"すべて選択 ({{count}})",deselectAllCount:"すべて解除 ({{count}})"},UG={editTooltip:"ソーシャルリンクを編集",addLinks:"ソーシャルリンクを追加",addLink:"リンクを追加",cancelTooltip:"キャンセル",removeTooltip:"削除",label:"ソーシャル",hint:"最大6つのソーシャルリンクを追加",linkLabel:"リンク",addCustomLink:"カスタムリンクを追加",pastePlaceholder:"URLを貼り付け",enterUsernameOrUrl:"ユーザー名またはプロフィールURLを入力してください",movedTo:"{{platform}}に移動しました",addedAsCustom:"カスタムリンクとして追加しました",fieldOccupied:"{{platform}}のリンクのようです — そのフィールドには既にURLがあります",customSlotsFull:"{{platform}}のリンクのようです。追加するにはカスタムリンクを削除してください。"},qG={profileUpdated:"プロフィールを更新しました!",profileUpdateFailed:"プロフィールの更新に失敗しました",usernameClaimed:"ユーザー名を取得しました!",usernameClaimFailed:"ユーザー名の取得に失敗しました",loadFailed:"プロフィールの読み込みに失敗しました",invalidImageType:"有効な画像をアップロードしてください(JPG、PNG、GIF、またはWebP)",imageTooLarge:"画像は5MB未満にしてください",avatarUpdated:"プロフィール画像を更新しました!",avatarUploadFailed:"画像のアップロードに失敗しました",avatarRemoveFailed:"画像の削除に失敗しました"},VG={title:"変更を破棄しますか?",description:"保存されていない変更が失われます。",confirm:"破棄"},$G={title:"ユーザー名を変更",placeholder:"ユーザー名",checking:"確認中...",available:"利用可能!",notAvailable:"利用できません",urlWarning:"プロフィールURLが /@{{username}} に変更されます。以前のリンクは機能しなくなります。",cancel:"キャンセル",claim:"ユーザー名を取得",tryInstead:"こちらはいかがですか:"},WG={locationLabel:"所在地",locationPlaceholder:"例: 東京、日本",showEmailLabel:"アカウントのメールを表示"},GG={title:"カバー画像を更新",description:"カスタムグラデーションから選ぶか、画像をアップロードしてください",uploadFile:"カスタム画像をアップロード",orUseTemplate:"またはテンプレートを使用",cancel:"キャンセル",saveChanges:"変更を保存",updated:"カバー画像を更新しました!",updateFailed:"カバー画像の更新に失敗しました",uploadFailed:"画像のアップロードに失敗しました",dragToReposition:"ドラッグして位置を調整",replaceImage:"画像を変更",reposition:"位置を調整"},HG={title:"アクティビティ",mon:"月",wed:"水",fri:"金",less:"少",more:"多",messages_one:"{{count}} プロンプト",messages_other:"{{count}} プロンプト",founderMode:"Founder mode",noActivity:"アクティビティなし",onDate:"{{date}}に",showOnProfile:"プロフィールに表示"},YG={customize:"プロフィールをカスタマイズ",title:"公開アプリはまだありません",description:"プロフィールは、Base44コミュニティとあなたの作品を共有する最適な場所です。公開済みのアプリから選択してここに表示するか、新しいプロジェクトを始めてアクティビティを増やしましょう。",anonDescription:"このビルダーはまだアプリを公開していません。最新のアクティビティを確認するためにまたお越しいただくか、他のクリエイターの作品をご覧ください。",startCreating:"作成を開始",chooseFromApps:"アプリから選択"},KG={page:LG,header:jG,bio:OG,pinnedApps:BG,social:UG,toast:qG,discardDialog:VG,usernameDialog:$G,details:WG,coverImage:GG,activity:HG,emptyState:YG},ZG={title:"AIエージェント",beta:"ベータ",subtitle:"Base44のAIエージェントインフラを使用してアプリにAIエージェントを構築",disabled:"無効",setupAgents:"エージェントをセットアップ",enableAgents:"エージェントを有効にする",turnOnToggle:"トグルをオンにしてエージェントの作成を許可します",addFirstAgent:"最初のエージェントを追加",creditsUsed:"使用クレジット: {{credits}}",creditsUsedTooltip:"月次の統合クレジット使用量",askChatToCreate:"チャットでエージェントの作成を依頼してください。エージェントが担うべき役割と実行するタスクを説明してください。",defineInConfig:"ローカル設定ファイルでエージェントを定義し、Base44 CLIを使用してアプリと同期します。",viewDocumentation:"ドキュメントを表示",noAgentsYet:"エージェントはまだありません",promptChatToCreate:"チャットにプロンプトを入力して最初のAIエージェントを作成しましょう",agentsTab:"エージェント",conversationsTab:"会話",searchConversations:"会話を検索...",filterAll:"すべて",filterMine:"自分の",filterUsers:"ユーザー",noConversationsYet:"会話はまだありません",noConversationsMatchSearch:"検索に一致する会話はありません",tryDifferentSearch:"別の検索語句をお試しください",goToAgentsTab:"エージェントタブに移動して会話を開始しましょう",conversationStarted:"会話を開始しました",agentConfiguration:"エージェント設定",guidelines:"ガイドライン",tools:"ツール",whatsapp:"WhatsApp",toolsAndCapabilities:"ツールと機能",descriptionLabel:"説明",systemPromptDesc:"これはエージェントの動作を定義するシステムプロンプトです",briefDescription:"このエージェントの内容を簡単に説明...",instructions:"指示",instructionsDesc:"エージェントが従うべき具体的なガイドラインとルール",detailedInstructions:"エージェントへの詳細な指示...",availableTools:"利用可能なツール",configureTools:"このエージェントがアクセスできるツールとデータを設定します",add:"追加",allEntitySlotsUsed:"すべてのエンティティスロットが使用済みです",addEntityTool:"エンティティツールを追加",entityToolDesc:"データベース操作とCRUDアクセス",allFunctionSlotsUsed:"すべての関数スロットが使用済みです",addBackendFunction:"バックエンド関数を追加",backendFunctionDesc:"カスタムバックエンドロジックとインテグレーション",noToolsConfigured:"ツールが設定されていません",addToolsDesc:"エンティティツールまたはバックエンド関数を追加してエージェントに機能を持たせます",entityTool:"エンティティツール",selectEntity:"エンティティを選択",allowedOperations:"許可された操作",deleteWarning:"注意: エージェントが削除したデータは復元できません",backendFunction:"バックエンド関数",selectBackendFunction:"バックエンド関数を選択",functionDescription:"関数の説明",describeFunction:"この関数をいつ、どのように使用すべきかを説明してください...",whatsappIntegration:"WhatsAppインテグレーション",whatsappDesc:"エージェントをWhatsAppに接続してシームレスなコミュニケーションを実現",testChat:"テストチャット",addWhatsapp:"アプリにWhatsAppを追加",whatsappEnableDesc:"1つのコマンドでユーザーにWhatsAppアクセスを有効にします",addWhatsappButton:"{{agent}}用のWhatsAppボタンを追加",sendToChat:"チャットに送信",fullChatCapabilities:"フルチャット機能",fullChatDesc:"ツールやデータアクセスを含むすべてのウェブチャット機能がWhatsAppでシームレスに動作します",voiceMediaSupport:"音声・メディア対応",voiceMediaDesc:"ユーザーは自然なインタラクションのためにボイスノートや画像を送信できます",customNumbers:"カスタム番号",customNumbersDesc:"独自のWhatsApp Businessの番号を接続できます",easyUiIntegration:"簡単なUI統合",easyUiDesc:"シンプルなチャットコマンドでアプリにWhatsAppボタンを追加",welcomeMessage:"ウェルカムメッセージ",welcomeMessageDesc:"エージェントを紹介し、期待を設定する温かい挨拶を作成してください",charCount:"{{count}}/500",editAgent:"エージェントを編集",edit:"編集",startChat:"チャットを開始",chat:"チャット",functionCount:"{{count}}個の関数",noDescriptionProvided:"説明はありません",entities:"エンティティ:",activeConversation:"アクティブな会話",readOnlyConversation:"読み取り専用の会話",startConversation:"会話を開始",typeMessageBelow:"下にメッセージを入力して始めましょう",typeYourMessage:"メッセージを入力...",cancel:"キャンセル",saving:"保存中...",save:"保存",commandAddedToChat:"コマンドがチャットに追加されました。Enterキーで送信してください。",failedToSaveAgentConfiguration:"エージェント設定の保存に失敗しました",promptAddedToChat:"プロンプトをチャットに追加しました",unableToLoadSuggestions:"提案を読み込めませんでした。後でもう一度お試しください。",createAgent:"エージェントを作成",createAgentTitle:"エージェントを作成",createAgentDescription:"チャットにエージェントを作成するよう依頼してください。エージェントの役割と実行するタスクを説明してください。",manageAgentsAndConversations:"エージェントと会話を管理",skills:"スキル",skillsEnabledLimit:"エージェントごとに最大{{count}}個のスキルを有効にできます。",appSkillsTitle:"アプリスキル",appSkillsDescription:"このアプリ内のエージェント用の再利用可能な指示スキル。",addSkill:"スキル追加",noAppSkillsYet:"アプリスキルがまだありません。このアプリ内のエージェント間で再利用するためにスキルを作成してください。",workspaceSkillsTitle:"ワークスペーススキル",workspaceSkillsDescription:"このワークスペースの共有スキルです。オンに切り替えてこのエージェントで有効にしてください。",loadingWorkspaceSkills:"ワークスペーススキルを読み込み中...",noWorkspaceSkillsAvailable:"現在利用可能な共有ワークスペーススキルはありません。",manageWorkspaceSkills:"ワークスペーススキルを管理",workspaceSkillSource:"ワークスペース",appSkillSource:"アプリ",unavailable:"利用不可",addAppSkill:"アプリスキル追加",editAppSkill:"{{name}}を編集",skillName:"スキル名",skillNameHint:"小文字、数字、ハイフンを使用してください。",skillNameInvalid:"名前は小文字の英数字とハイフンで構成し、先頭・末尾にハイフンは付けません(例:'code-review'、'sql-expert')。",skillDescription:"説明",skillInstructions:"指示",enableForCurrentAgent:"現在のエージェントで有効にする",enableForCurrentAgentDescription:"現在のエディターの状態が変更され、エージェントと共に保存されます。",createSkill:"スキル作成",saveChanges:"変更を保存",workspaceSkillUnavailableDescription:"このワークスペーススキルは無効化されているか利用できません。",appSkillUnavailableDescription:"このアプリスキルはアプリのスキルライブラリに存在しなくなりました。",skillValidationRequired:"名前、説明、指示が必要です",skillCreated:"スキルが作成されました",skillUpdated:"スキルが更新されました",failedToSaveSkill:"スキルの保存に失敗しました",skillSavedButAssignmentsFailed:"スキルは保存されましたが、エージェントへのアタッチに失敗しました",skillSavedButAssignmentsRefreshDelayed:"エディターを自動更新できませんでした。最新の状態を確認するには再読み込みしてください。",skillSavedButSyncFailed:"スキルは保存されましたが、エージェント状態の同期に失敗しました",skillSavedButSyncRefreshDelayed:"スキルは保存されましたが、エディターを自動更新できませんでした。最新の状態を確認するには再読み込みしてください。",skillSavedStateRefreshed:"スキルを保存しました。最新の保存状態に合わせてエディターを更新しました。",skillSavedRefreshDelayed:"スキルは保存されましたが、エディターを自動更新できませんでした。最新の状態を確認するには再読み込みしてください。",skillDeleted:"スキルが削除されました",skillDeletedRefreshDelayed:"スキルは削除されましたが、エディターを自動更新できませんでした。最新の状態を確認するには再読み込みしてください。",failedToDeleteSkill:"スキルの削除に失敗しました",skillLimitReached:"このエージェントはすでに有効にできるスキルの上限に達しています。",skillTemplatePickerTitle:"スタータースキルを選択",startFromScratch:"ゼロから作成",startFromScratchDescription:"独自の指示でカスタムスキルを作成します。",useTemplate:"テンプレートを使う",skillTemplates:{refundPolicy:{description:"返金ルール、適用条件、エスカレーション前にエージェントが集めるべき情報のテンプレートです。"},supportEscalation:{description:"人間のサポートへ引き継ぐタイミングと、エージェントが準備すべき要約のテンプレートです。"},pricingAndPlans:{description:"プラン、請求サイクル、アップグレード、enterprise問い合わせの振り分けを説明するためのテンプレートです。"},brandVoice:{description:"エージェントの口調、文体、コミュニケーションルールをブランドに合わせるためのテンプレートです。"}},memory:"メモリ",memoryTitle:"エージェントメモリ",memorySubtitle:"長期メモリを有効にして、エージェントが会話をまたいで情報を記憶できるようにします",enableMemory:"メモリを有効にする",enableMemoryDesc:"有効にすると、エージェントは会話をまたいで情報を保存・呼び出しできます",memoryScope:"メモリの範囲",memoryScopeDesc:"エージェントが作成できるメモリの種類を選択します",memoryScopeGlobalAndUser:"グローバル&ユーザーごと",memoryScopeGlobalAndUserDesc:"エージェントは共有メモリと個人メモリを保存できます",memoryScopeGlobal:"グローバルのみ",memoryScopeGlobalDesc:"すべてのユーザー間で共有されるメモリ",memoryScopeUser:"ユーザーごとのみ",memoryScopeUserDesc:"各ユーザーに固有のメモリ",memoryInstructions:"メモリの指示",memoryInstructionsDesc:"エージェントにメモリを保存するタイミングと内容を指示します",memoryInstructionsPlaceholder:"例:製品アップデート、会社のお知らせ、共有知識のためにグローバルメモリを保存します。コミュニケーションスタイル、トーン、特定の関心事などの個人的な好みのためにユーザーメモリを保存します。",savedMemories:"保存済みメモリ",refresh:"更新",noMemoriesYet:"まだメモリが保存されていません",noMemoriesDesc:"エージェントが会話中にメモリを保存すると、ここに表示されます",memoryItemDeleted:"メモリ項目を削除しました",memoryDeleteFailed:"メモリ項目の削除に失敗しました",defaultDescription:"デフォルト: {{description}}"},JG={writing:"書き込み中",wrote:"書き込み完了",reading:"読み込み中",read:"読み込み完了",deleting:"削除中",deleted:"削除完了",editing:"編集中",edited:"編集完了",creating:"作成中",created:"作成完了",updating:"更新中",updated:"更新完了",update:"更新",delete:"削除",importing:"インポート中",imported:"インポート完了",import:"インポート",searching:"検索中",searched:"検索完了",searchingForBugs:"バグを検索中...",searchedBugs:"バグ検索完了",install:"インストール",installing:"インストール中",installed:"インストール完了",analyzing:"分析中",running:"実行中",failed:"失敗",run:"実行",settingSecrets:"シークレット設定中",setSecret:"シークレット設定完了",setSecrets:"シークレットを設定",testing:"テスト中",checking:"確認中",tested:"テスト完了",checked:"確認完了",fetching:"取得中",fetched:"取得完了",waitingForApproval:"承認待ち...",searchedDocsFor:"ドキュメント検索完了:",searchingDocsFor:"ドキュメント検索中:",searchedFor:"検索完了:",searchingFor:"検索中:",foundResult_one:"{{count}}件の結果が見つかりました",foundResult_other:"{{count}}件の結果が見つかりました",toggling:"切り替え中",toggled:"切り替え完了",listing:"一覧取得中",listed:"一覧取得完了",approvalRequired:"承認が必要です",approve:"承認",approving:"承認中...",reject:"拒否",rejected:"拒否されました",previousApproval:"この承認リクエストは以前のメッセージからのものです",query:"クエリ:",updateWith:"更新内容:",importComplete:"インポート完了",importingData:"データをインポート中...",percentComplete:"{{percent}}% 完了",recordsProgress:"{{current}} / {{total}} レコード",preparing:"準備中...",otherToolsAfterApproval:"承認後に他のツールが実行されます",countPackages:"{{num}}個のパッケージ:",updateAllEntityRecords:"<entity>{{entityName}}</entity>の全レコードを更新",updateEntityRecordsMatching:"<entity>{{entityName}}</entity>の条件に一致するレコードを更新:",deleteAllEntityRecords:"<entity>{{entityName}}</entity>の全レコードを削除",deleteEntityRecordsMatching:"<entity>{{entityName}}</entity>の条件に一致するレコードを削除:",importDataFromInto:"<file>{{fileName}}</file>から<entity>{{entityName}}</entity>にデータをインポート",importDataFromSheetInto:"<file>{{fileName}}</file>(シート:<sheet>{{sheetName}}</sheet>)から<entity>{{entityName}}</entity>にデータをインポート",countRecordsIntoEntity:"{{num}}件のレコードを<entity>{{entityName}}</entity>に",dataIntoEntity:"データを<entity>{{entityName}}</entity>に",countRecordsEntity:"{{num}}件のレコード <entity>{{entityName}}</entity>",allEntityRecords:"<entity>{{entityName}}</entity>の全レコード",entityRecords:"<entity>{{entityName}}</entity> レコード",grepSearching:'"{{pattern}}"を検索中...',grepSearchComplete:"検索完了",grepFoundResults_one:"{{count}}件の結果が見つかりました",grepFoundResults_other:"{{count}}件の結果が見つかりました",grepInFiles_one:"{{count}}ファイル内",grepInFiles_other:"{{count}}ファイル内"},QG={agents:ZG,tools:JG},XG={title:"オートメーション",subtitle:"アプリのオートメーションを構築・管理。",newAutomation:"新しいオートメーション",chooseAutomation:"オートメーションを選択",selectHowStarts:"このオートメーションの開始方法を選択してください。",scheduled:"スケジュール",scheduledDescription:"定期的なスケジュールまたは特定の時間にこのオートメーションを実行します。",dataEvent:"データイベント",dataEventDescription:"レコードが作成、更新、または削除されたときにこのオートメーションを実行します。",connector:"コネクター",connectorDescription:"接続されたインテグレーションがイベントを送信したときにこのオートメーションを実行します。",connectorBetaTooltip:"このコネクターはベータ期間中は無料です。",beta:"ベータ",connectorNewAutomation:"新しいコネクターオートメーション",connectorIntegrationType:"インテグレーション",connectorSelectIntegration:"インテグレーションを選択",connectorNoIntegrations:"接続されたインテグレーションがありません",connectorNoIntegrationsHint:"自動化を有効にするには、まずインテグレーションを作成する必要があります。",connectorCreateIntegration:"インテグレーションを作成",connectorCreateNewIntegration:"新しいインテグレーションを作成",connectorEvents:"イベント",connectorSelectEvents:"監視するイベントを選択",connectorSelectEvent:"イベントを選択",connectorAvailableEvents:"利用可能なイベント ({{count}})",connectorType:"コネクター",allEvents:"すべてのイベント",deleteAutomation:"オートメーションを削除しますか?",deleteAutomationDesc:"「{{name}}」とそのすべての実行履歴が完全に削除されます。この操作は元に戻せません。",delete:"削除",deleting:"削除中...",cancel:"キャンセル",copyOutput:"出力をコピー",scheduledType:"スケジュール",dataEventType:"データイベント",someRunsFailed:"一部の実行が失敗しました",reviewLogsOrFix:"ログを確認するか、AIにエラーを修正させてください。",fixing:"修正中...",fixWithAI:"AIで修正",failedToGetErrorContext:"エラーコンテキストの取得に失敗しました",logsTab:"ログ",noLogsYet:"ログはまだありません",back:"戻る",close:"閉じる",saving:"保存中...",save:"保存",active:"アクティブ",archived:"アーカイブ済み",archivedAutomations:"アーカイブ済みオートメーション",nameAndDescription:"名前と説明",typeColumn:"種類",lastRun:"最終実行",failed:"失敗",loading:"読み込み中...",editAutomation:"オートメーションを編集",runNow:"今すぐ実行",archive:"アーカイブ",duplicate:"複製",unlockAutomations:"オートメーションのロックを解除",unlockAutomationsDesc:"アプリでオートメーションを実行するには、バックエンド関数を有効にする必要があります。アップグレードしてバックエンド関数を有効にし、オートメーションの使用を開始しましょう。",enableBackendFunctions:"バックエンド関数を有効にして始めましょう",enableBackendFunctionsDesc:"オートメーションはスケジュールまたはデータ変更時にバックエンド関数を実行します。設定でバックエンド関数を有効にしてオートメーションを使用してください。",openSettings:"設定を開く",createBackendFunction:"オートメーションを追加するにはバックエンド関数を作成してください",createBackendFunctionDesc:"オートメーションを作成するには、まずコード内にバックエンド関数が必要です。コードにバックエンド関数を記述するか、チャットに助けを求めてください。",noAutomationsYet:"オートメーションはまだありません",noAutomationsDesc:"オートメーションを作成して、アプリ内のタスクを自動的に実行しましょう。",noArchivedAutomations:"アーカイブ済みのオートメーションはありません",noArchivedDesc:"アーカイブしたオートメーションや終了日に達したオートメーションはここに表示されます。",runAutomation:"オートメーションを実行",selectRecord:"<entity>{{entity}}</entity>レコードを選択してオートメーションを実行してください。",searchRecords:"{{entity}}レコードを検索...",noRecordsFound:"{{entity}}レコードが見つかりません。",noRecordsMatch:"「{{query}}」に一致するレコードはありません",recordsCount:"{{total}}件中{{filtered}}件のレコード",totalRecords:"{{total}}件のレコード",running:"実行中...",automationName:"オートメーション名",describeAutomation:"このオートメーションの内容を説明してください。",functionToRun:"実行する関数",selectFunction:"コードからバックエンド関数を選択してください。オートメーション発火時に関数がエンティティデータを受け取ります。",noBackendFunctions:"利用可能なバックエンド関数がありません",selectAFunction:"関数を選択",runsWhen:"実行条件",noItems:"アイテムなし",selectItem:"アイテムを選択",is:"が",selectEvent:"イベントを選択",automationNameRequired:"オートメーション名は必須です。",selectEntity:"エンティティを選択してください。",selectEventType:"少なくとも1つのイベントタイプを選択してください。",selectFunctionRequired:"実行する関数を選択してください。",newDataAutomation:"新しいデータオートメーション",details:"詳細",logsWillAppearAfterFire:"このオートメーションが発火した後にログがここに表示されます。",selectFunctionFromCode:"コードからバックエンド関数を選択してください。関数の追加や編集は、コード内で更新するかチャットに助けを求めてください。",recurring:"繰り返し",oneTime:"1回のみ",repeatsEvery:"繰り返し間隔",minute:"分",hour:"時間",day:"日",week:"週",month:"月",startAt:"開始時刻",at:"時刻",repeatsOn:"繰り返し曜日",repeatsOnDay:"繰り返し日",ends:"終了",never:"なし",on:"日付指定",after:"回数指定",occurrences:"回",runOn:"実行日",atTime:"実行時刻",oneTimeDateRequired:"1回限りのスケジュールには日付の指定が必要です。",oneTimeTimeRequired:"1回限りのスケジュールには時刻の指定が必要です。",oneTimePastError:"1回限りのスケジュールの日時は過去にすることはできません。",minMinutesInterval:"分単位スケジュールの最小間隔は{{min}}分です。",selectDayForWeekly:"週次スケジュールには少なくとも1つの曜日を選択してください。",monthlyDayRequired:"月次スケジュールには月の日を選択する必要があります。",endDateRequired:"「終了」が「日付指定」に設定されている場合、終了日は必須です。",endDatePast:"終了日は過去にすることはできません。",occurrenceCountMin:"実行回数は少なくとも1回以上にしてください。",newScheduledAutomation:"新しいスケジュールオートメーション",logsWillAppearAfterRun:"このオートメーションが実行された後にログがここに表示されます。",description:"説明",nameField:"名前",typeField:"種類",automationUpdated:"オートメーションが正常に更新されました",automationCreated:"オートメーションが正常に作成されました",failedToSave:"オートメーションの保存に失敗しました",functionArgs:"引数 (JSON)",functionArgsPlaceholder:'{"key": "value"}',functionArgsTooltip:"関数に追加引数として渡すオプションのJSONオブジェクトです。",functionArgsInvalidJson:"引数は有効なJSONである必要があります。",advanced:"詳細設定",triggerConditions:"トリガー条件",conditionsSetByAI:"条件はAIビルダーによって設定され、手動で編集することはできません。",conditionsSummaryError:"条件の要約を読み込めませんでした。",connectorNoManualIntegrations:"手動作成で利用可能な統合がありません",connectorNoManualIntegrationsHint:"一部の統合にはトリガー条件が必要で、AIビルダーを通じてのみ作成できます。",suggestedForYou:"おすすめ",basedOnYourContext:"アプリのコンテキストに基づく提案",createFromScratch:"一から作成"},e3={automations:XG},t3={title:"インテグレーション",myIntegrations:"マイインテグレーション",browse:"参照",payments:"決済",failedToLoad:"アプリ接続の読み込みに失敗しました",successfullySwitched:"アカウントが{{name}}に正常に切り替わりました",cancelled:"キャンセルされました",connectionCancelled:"アプリ接続がキャンセルされました",disconnected:"{{name}}が切断されました",failedToDisconnect:"アプリ接続の切断に失敗しました",stripeRemoved:"Stripeインテグレーションが削除されました",wixPaymentsDisconnected:"Wix Paymentsが切断されました",integrationRemoved:"{{name}}が削除されました",failedToRemove:"インテグレーションの削除に失敗しました",connectedAccountsWarning:"接続されたアカウントは、アクセス権を持つすべてのユーザーに機密データを公開する可能性があります。",unlockFeature:"この機能のロックを解除",unlockFeatureDesc:"この機能はBuilderプラン以上でのみ利用可能です。アップグレードして制限なく作業を続けましょう",upgradeToUseConnector:"アップグレードして機能を利用",access:"{{name}}アクセス",disconnectAccount:"アカウントを切断しますか?",disconnectDesc:"<bold>{{name}}</bold>上の<bold>{{email}}</bold>のアクセスが取り消されます。<br/>インテグレーションレコードは今後の再接続のために保持されます。",disconnecting:"切断中...",disconnect:"切断",removeIntegration:"インテグレーションを削除しますか?",removeDesc:"<bold>{{name}}</bold>はこのアプリから完全に削除されます。<br/>再度接続を作成するには、最初からセットアップする必要があります。",removing:"削除中...",remove:"削除",cancel:"キャンセル",reject:"拒否",new:"新着",done:"完了",success:"成功",error:"エラー",setupIntegrations:"インテグレーションをセットアップ",setupIntegrationsDesc:"Google Calendar、Google Drive、Slack、Notion、Salesforce、HubSpotなどのコネクタにアプリを簡単にリンクできます。",setupIntegrationsChat:"チャットで接続したい内容を説明するだけで、セットアップしてくれます。",viewAccess:"アクセスを表示",connecting:"接続中...",switchAccount:"アカウントを切り替え",reconnect:"再接続",disconnectAccount2:"アカウントを切断",use:"使用",examplePrompts:"プロンプト例",clickPromptToAdd:"プロンプトをクリックしてチャットに追加します。",unableToLoadSuggestions:"提案を読み込めませんでした。後でもう一度お試しください。",requiresBackendFunctions:"このインテグレーションにはバックエンド関数が必要です。Builder以上のプランでのみ利用可能な機能です。",seePlans:"プランを見る",promptAddedToChat:"プロンプトがチャットに追加されました。Enterキーを押して送信してください。",connectors:"コネクタ",connectorsDesc:"クイックOAuth接続で人気のサービスにアプリを接続します。",searchConnectors:"コネクタを検索",noSearchResults:"検索結果がありません",noSearchResultsDesc:"別のキーワードを使用するか、スペルを確認してください。名前順や最近追加された順で並べ替えて探すこともできます。",sort:{title:"並び替え",mostUsed:"よく使われる",recentlyAdded:"最近追加",az:"A-Z",za:"Z-A"},revoked:"取り消し済み",connectionLost:"接続が失われました — 再接続してください",configModal:{connectTo:"{{name}}に接続",configureConnection:"{{name}}の接続を設定してください",loadingConfig:"設定を読み込み中...",retryHint:"再試行できます。",connect:"接続",connecting:"接続中...",validationRequired:"{{name}}は必須です",validationInvalid:"{{name}}が無効です",fetchError:"設定の読み込みに失敗しました。",retry:"再試行"},wixPayments:{title:"Wix Payments",live:"本番",disconnected:"切断済み",acceptingPayments:"決済を受付中",integrationDisconnected:"インテグレーション切断済み",openingWixPayments:"Wix Payments を開いています...",popupBlocked:"Wix Payments がブラウザによってブロックされました。下のリンクからダッシュボードを手動で開いてください。",errors:{noUrl:"Wix Payments のURLを取得できませんでした。もう一度お試しください。",fetchFailed:"Wix Payments を開けませんでした。もう一度お試しください。",invalidRedirect:"Wix Payments を開けませんでした。もう一度お試しください。"},openDashboard:"ダッシュボードを開く",managePayments:"決済を管理",disconnect:"切断",disconnectIntegration:"インテグレーションを切断しますか?",disconnectDesc:"<bold>Wix Payments</bold>がこのアプリから切断されます。<br/>後でチャットから再接続できます。",disconnecting:"切断中...",disconnectButton:"切断",enterNamePrompt:"続行するには名前を入力してください:",firstNamePlaceholder:"名",lastNamePlaceholder:"姓"},stripe:{unableToClaimSandbox:"サンドボックスを取得できません",sandboxExpired:"サンドボックスの有効期限が切れているか、既に取得済みの可能性があります。ページを更新してください。",failedGetClaimUrl:"取得URLの取得に失敗しました",pleaseTryAgain:"再度お試しいただくか、ページを更新してください。",pendingSetup:"セットアップ待ち",completeSetupGuide:"セットアップガイドを完了して実際の支払いを受け付けます",live:"本番",stripe:"Stripe",loadingStripe:"読み込み中...",acceptingPayments:"実際の支払いを受付中",accountDetails:"Stripeアカウント詳細",hideGuide:"ガイドを非表示",showGuide:"ガイドを表示",goToStripe:"Stripeに移動",aboutIntegration:"インテグレーションについて",aboutStripeIntegration:"Stripeインテグレーションについて",stripeDesc:"Stripeを使用すると、支払いの受け付け、送金、オンラインビジネスの管理が可能です。このインテグレーションにより、以下のことができます:",acceptCards:"クレジットカードやその他の支払い方法を受け付け",createProducts:"商品やサブスクリプションを作成",manageCustomers:"顧客と請求を管理",close:"閉じる",tryTestPayment:"テスト支払いを試す",claimSandbox:"Stripeサンドボックスを取得",addLiveKeys:"StripeからライブAPIキーを追加",copiedCard:"コピーしました!",testCardCopied:"テスト用カード番号がクリップボードにコピーされました。",failedToCopy:"コピーに失敗しました",copyManually:"手動でコピーしてください: 4242 4242 4242 4242",keysSaved:"APIキーが正常に保存されました。",failedSaveKeys:"APIキーの保存に失敗しました。再度お試しください。",movedOutOfTestMode:"テストモードを終了しました。",noNeedTestPayments:"テスト支払いを実行する必要はもうありません。",useTestCard:"このテスト用カードを使用して購入をシミュレートしてください:",testCardNumber:"4242 4242 4242 4242",anyFutureExpiry:"、任意の将来の有効期限、任意の3桁CVC。",publishAndOpen:"アプリを公開して新しいタブで開き、チェックアウト体験をテストしてください",copyCardNumber:"カード番号をコピー",connectStripeDesc:"既存のStripeアカウントに接続するか、新しいアカウントを作成して実際の支払いの受け付けを開始します。",claimAndGoLive:"取得して本番に移行",copyLiveKeys:"<link>Stripeダッシュボード</link>からライブの公開キーとシークレットキーをコピーして、セットアップを完了しアプリで実際の支払いを有効にします。",publishableKey:"公開キー",secretKey:"シークレットキー",enterValue:"値を入力",savingKeys:"保存中...",saveApiKeys:"APIキーを保存",completeStepInStripe:"このステップを完了するには、サンドボックスを取得してStripeでセットアップを完了してください"}},a3={title:"アプリインテグレーション",subtitle:"アプリをサードパーティサービスに接続し、機能を拡張します。",integrationCatalog:"インテグレーションカタログ",payments:"決済",zapier:"Zapier",couldNotLoad:"インテグレーションの詳細を読み込めませんでした。再度お試しください。",loadingDetails:"詳細を読み込み中...",backToCatalog:"カタログに戻る",integrationAdded:"インテグレーションが追加されました(プレースホルダー)",wouldBeAdded:"{{name}}がアプリに追加されます。シークレット値がログに記録されました。",requiresConfiguration:"設定が必要です",requiresSecrets:"このインテグレーションには{{count}}個のシークレット値の設定が必要です。",addToApp:"アプリに追加",paymentProcessing:"決済処理",paymentProcessingDesc:"人気の決済プロセッサでアプリ内の支払いを受け付けます。近日公開!",leadingPaymentPlatform:"主要な決済プラットフォーム",globallyRecognized:"世界的に認知された決済",configurePayment:"決済プロバイダーを設定して、アプリケーションでサブスクリプション、単発購入などを有効にします。",zapierIntegration:"Zapierインテグレーション",zapierDesc:"Zapierを通じてアプリを他の数千のサービスに接続します。",automateWithZapier:"Zapierで自動化",linkBase44:"Base44をSlack、Google Sheets、Mailchimpなどのお気に入りのアプリにリンクします。",exploreOnZapier:"ZapierでBase44を探索",configureIntegration:"{{name}}を設定",configureDesc:"このインテグレーションにはいくつかのシークレット値の設定が必要です。これらは安全に暗号化されて保存されます。",saveAndAdd:"保存してインテグレーションを追加"},n3={title:"スキル",description:"スキルを追加して、AIがアプリを構築する方法を形作りましょう。",manage:"管理"},i3=JSON.parse('{"title":"コネクタ","connectorsForAppUsers":"アプリユーザー向けコネクタ","connectorsForAppUsersDesc":"アプリユーザーが個人アカウントをこのワークスペースのアプリにリンクできるようにコネクタを設定します。","connectorsForAppUsersDialogDesc":"アプリユーザーがこのワークスペースのアプリに個人アカウントを接続できるようにします。","addConnector":"コネクタを追加","browseConnectors":"コネクタを参照","noConnectorsYet":"まだコネクタがありません","noConnectorsYetDesc":"アプリユーザーが個人アカウントをリンクできるようにコネクタを追加してください。","view":"表示","edit":"編集","connections":"接続","addConnection":"接続を追加","viewConnector":"コネクタを表示","connectorName":"コネクタ名","connector":"{{name}}コネクタ","examplePrompts":"プロンプト例","back":"戻る","configureConnection":"接続を設定","configureConnectionDesc":"クライアントID、シークレット、権限を提供してください。","connectorNameDesc":"このコネクタを識別するための短い名前を入力してください","clientId":"クライアントID","clientSecret":"クライアントシークレット","clientSecrets":"クライアントシークレット","scopes":"スコープ","scopesDesc":"アプリが必要とするスコープを入力してください。各スコープを別の行に記述してください。","scopesPlaceholder":"スコープを入力、1行に1つずつ","scopesPlaceholderExample":"例:\\nhttps://www.googleapis.com/auth/calendar.readonly\\nemail","connectionConfig":"接続設定","cancel":"キャンセル","close":"閉じる","addingConnector":"追加中...","savingConnector":"保存中...","saveChanges":"変更を保存","deleteConnector":"コネクタを削除","deleteConfirm":"{{name}}を削除しますか?この操作は元に戻せません。","deleting":"削除中...","addConnectionTitle":"{{name}}接続を追加","editConnectionTitle":"{{name}}接続を編集","connectorReadOnly":"{{name}}コネクタ","readOnlyDesc":"コネクタ詳細の読み取り専用ビュー","builtInConnectors":"組み込みコネクタ","promptExamples":"開始するためのプロンプト例","adminOnlyTooltip":"ワークスペース管理者または所有者のみがアプリユーザーのインテグレーションを接続できます","settingUp":"コネクタを設定中...","configured":"コネクタが設定されました","setUp":"{{type}}アプリユーザーコネクタを設定","setUpGeneric":"アプリユーザーコネクタを設定","connecting":"接続中...","connect":"接続","reject":"拒否","workspaceLevelNote":"このインテグレーションはワークスペースレベルでアクセス可能になり、そのワークスペース内で作成されたすべてのアプリケーションに適用されます。","previousMessage":"このコネクタ設定は前のメッセージからのものです","toastErrorTitle":"エラー","toastCreated":"コネクタが作成されました","toastCreateFailed":"コネクタの作成に失敗しました","toastDuplicateName":"この名前のコネクタはこのワークスペースに既に存在します","toastUpdated":"コネクタが更新されました","toastUpdateFailed":"コネクタの更新に失敗しました","toastDeleted":"コネクタが削除されました","toastDeleteFailed":"コネクタの削除に失敗しました","configFetchFailed":"接続設定の読み込みに失敗しました。必須フィールドが表示されない場合があります。","retry":"再試行","toastLoadFailed":"OAuthコネクタの読み込みに失敗しました","namePlaceholder":"例: マーケティング {{label}}","clientIdPlaceholder":"OAuthクライアントIDを入力","clientSecretPlaceholderNew":"新しいクライアントシークレットを入力","clientSecretPlaceholder":"OAuthクライアントシークレットを入力","extraDetails":{"googlecalendar":{"longDescription":"Googleカレンダーに接続して、アプリユーザーがカレンダーの予定を表示、作成、管理できるようにします。スケジュールの同期、フォーム送信からの会議自動作成、スケジュール管理ワークフローの構築が可能です。","examplePrompt0":"今後の会議をアプリ内ダッシュボードに同期する。","examplePrompt1":"フォーム送信からカレンダーの予定を作成する。","examplePrompt2":"ログインユーザーの1日の予定表を表示する。","examplePrompt3":"今後の予定の前にリマインダーを送信する。"},"slack":{"longDescription":"Slackに接続して、メッセージの共有やキャンバスの作成を直接行い、コラボレーションを簡素化し生産性を向上させます。メッセージ、チャンネル、スレッド、ファイル、ユーザーを検索・取得し、Claudeに作業を効率化するためのコンテキストを提供します。","examplePrompt0":"新しいアプリユーザーをSlackチャンネルに同期する。","examplePrompt1":"ビルドステータスの更新を#devopsに送信する。","examplePrompt2":"アプリエラーを#alertsチャンネルに投稿する。","examplePrompt3":"新しい顧客フィードバックをチームに通知する。"},"salesforce":{"longDescription":"Salesforceに接続して、連絡先、リード、商談、カスタムオブジェクトにアクセスします。アプリユーザーがCRMデータの表示・更新、取引の追跡、営業ワークフローの自動化を行えるようにします。","examplePrompt0":"進行中の商談のダッシュボードを表示する。","examplePrompt1":"フォーム送信から新しいリードを作成する。","examplePrompt2":"連絡先の更新をSalesforceに同期する。","examplePrompt3":"取引が成立したらチームに通知する。"},"hubspot":{"longDescription":"HubSpotに接続して、連絡先、会社、取引、マーケティングキャンペーンを管理します。アプリユーザーがCRMデータの同期、エンゲージメントの追跡、マーケティングワークフローの自動化を行えるようにします。","examplePrompt0":"最近の取引一覧をアプリに表示する。","examplePrompt1":"サインアップフォームから新しい連絡先を追加する。","examplePrompt2":"メールキャンペーンの結果をダッシュボードに同期する。","examplePrompt3":"アプリから取引ステージを更新する。"},"notion":{"longDescription":"Notionに接続して、ページ、データベース、ワークスペースのコンテンツにアクセスします。アプリユーザーがNotionワークスペースの読み取り・更新、構造化データの同期、コンテンツワークフローの自動化を行えるようにします。","examplePrompt0":"Notionデータベースからタスクリストを取得する。","examplePrompt1":"フォーム送信から新しいページを作成する。","examplePrompt2":"プロジェクトのステータス更新をNotionに同期する。","examplePrompt3":"Notionのコンテンツをアプリ内に表示する。"},"slackbot":{"longDescription":"Slack Botを接続して、カスタム名とアイコンを持つブランドボットとしてメッセージを投稿します。アプリメンション、スラッシュコマンドへの応答、Slackワークスペースでのボット中心のワークフローの自動化が可能です。","examplePrompt0":"毎日のスタンドアップサマリーを#generalに投稿する。","examplePrompt1":"スラッシュコマンドにアプリデータで応答する。","examplePrompt2":"タスクが期限切れの場合に自動アラートを送信する。","examplePrompt3":"新しい注文が入ったらチャンネルに通知する。"},"googledrive":{"longDescription":"Googleドライブに接続して、ファイルのアップロード、整理、管理を行います。アプリユーザーが生成されたドキュメントの保存、データのバックアップ、アプリから直接ドライブファイルにアクセスできるようにします。","examplePrompt0":"生成されたレポートを共有ドライブフォルダに保存する。","examplePrompt1":"ユーザーが送信したファイルをGoogleドライブにアップロードする。","examplePrompt2":"特定のフォルダ内の最近のファイルを一覧表示する。","examplePrompt3":"アプリデータのエクスポートを自動的にドライブにバックアップする。"},"gmail":{"longDescription":"Gmailに接続して、メールのプログラム的な送信、読み取り、管理を行います。アプリユーザーがメールワークフローの自動化、受信トレイのメッセージ読み取り、自分のアカウントからのパーソナライズされたメール送信を行えるようにします。","examplePrompt0":"フォーム送信後に確認メールを送信する。","examplePrompt1":"ユーザーの最新の受信トレイメッセージを表示する。","examplePrompt2":"特定の条件に一致するメールに自動返信する。","examplePrompt3":"パーソナライズされたアウトリーチメールを作成して送信する。"},"googlesheets":{"longDescription":"Googleスプレッドシートに接続して、データの読み取り、書き込み、更新を行います。アプリユーザーがレコードの同期、シートからのデータインポート、アプリデータのスプレッドシートへのエクスポートを行えるようにします。","examplePrompt0":"Googleスプレッドシートから商品データをインポートする。","examplePrompt1":"日次売上レポートをスプレッドシートにエクスポートする。","examplePrompt2":"フォーム送信をトラッキングシートに同期する。","examplePrompt3":"共有スプレッドシートから価格データを読み取る。"},"googleslides":{"longDescription":"Googleスライドに接続して、プレゼンテーションの作成と編集を行います。アプリユーザーがテンプレートからスライドデッキを生成、動的コンテンツを追加、プレゼンテーション作成を自動化できるようにします。","examplePrompt0":"フォーム入力からピッチデッキを生成する。","examplePrompt1":"週次メトリクスを含む新しいスライドを追加する。","examplePrompt2":"レポートテンプレートからプレゼンテーションを作成する。","examplePrompt3":"最新データでスライドのコンテンツを更新する。"},"googledocs":{"longDescription":"Googleドキュメントに接続して、ドキュメントの作成、読み取り、編集を行います。アプリユーザーが契約書の生成、テンプレートの入力、アプリから直接ドキュメントを管理できるようにします。","examplePrompt0":"テンプレートから契約書を生成する。","examplePrompt1":"フォームデータから議事録を作成する。","examplePrompt2":"ユーザー詳細でドキュメントテンプレートを埋める。","examplePrompt3":"既存のドキュメントに新しいコンテンツを追加する。"},"googlebigquery":{"longDescription":"Google BigQueryに接続して、SQLクエリの実行と大規模データセットの分析を行います。アプリユーザーがデータウェアハウスへのクエリ、ダッシュボードの構築、アプリへの分析データの取り込みを行えるようにします。","examplePrompt0":"売上データをクエリしてチャートに表示する。","examplePrompt1":"BigQueryテーブルからユーザー分析を取得する。","examplePrompt2":"ウェアハウスデータからスケジュールレポートを実行する。","examplePrompt3":"クエリ結果から売上上位の製品を表示する。"},"linkedin":{"longDescription":"LinkedInに接続して、プロフィールデータへのアクセスと投稿の共有を行います。アプリユーザーが更新の公開、プロフェッショナルプロフィールの取得、LinkedInでのソーシャルメディアワークフローの自動化を行えるようにします。","examplePrompt0":"企業の更新情報をLinkedInに自動投稿する。","examplePrompt1":"ログインユーザーのプロフィール詳細を取得する。","examplePrompt2":"アプリからLinkedInにブログ記事を共有する。","examplePrompt3":"ダッシュボードにLinkedInプロフィール情報を表示する。"},"tiktok":{"longDescription":"TikTokに接続して、プロフィール情報、フォロワー統計、動画データにアクセスします。アプリユーザーがTikTokのパフォーマンスを追跡し、公開済み動画を閲覧できるようにします。","examplePrompt0":"フォロワー数とプロフィール統計を表示する。","examplePrompt1":"ユーザーの最新TikTok動画を一覧表示する。","examplePrompt2":"動画パフォーマンスメトリクスをダッシュボードに表示する。","examplePrompt3":"フォロワーの増加を経時的に追跡する。"},"discord":{"longDescription":"Discordに接続して、メッセージの送信、サーバーの管理、ギルドやチャンネルとのやり取りを行います。アプリユーザーが通知の自動化、更新の投稿、Discordコミュニティとの連携を行えるようにします。","examplePrompt0":"注文通知をDiscordチャンネルに送信する。","examplePrompt1":"アプリアラートを#notificationsチャンネルに投稿する。","examplePrompt2":"Discordサーバーの利用可能なチャンネルを一覧表示する。","examplePrompt3":"新しいユーザーがサインアップしたらチームに通知する。"},"wix":{"longDescription":"Wixに接続して、サイトデータへのアクセス、コンテンツの管理、Stores、Bookings、CRMなどのWixビジネスソリューションとのやり取りを行います。アプリユーザーが商品、注文、顧客データを同期できるようにします。","examplePrompt0":"Wixストアの商品をアプリに同期する。","examplePrompt1":"Wix Storesから最近の注文を取得する。","examplePrompt2":"Wix Bookingsの予約可能状況を表示する。","examplePrompt3":"アプリからWix CRMの連絡先を管理する。"},"github":{"longDescription":"GitHubに接続して、リポジトリへのアクセス、イシューやプルリクエストの管理、開発ワークフローの自動化を行います。アプリユーザーがコード変更の追跡、イシューの作成、開発プロセスの効率化を行えるようにします。","examplePrompt0":"リポジトリのオープンイシューを一覧表示する。","examplePrompt1":"バグ報告フォームから新しいイシューを作成する。","examplePrompt2":"最近のプルリクエストをダッシュボードに表示する。","examplePrompt3":"リポジトリ全体のコミットアクティビティを追跡する。"},"wrike":{"longDescription":"Wrikeに接続して、プロジェクト、タスク、チームコラボレーションを管理します。アプリユーザーがタスクの作成・更新、プロジェクト進捗の追跡、チーム間の作業調整を行えるようにします。","examplePrompt0":"フォーム送信からタスクを作成する。","examplePrompt1":"プロジェクトのタイムラインをダッシュボードに表示する。","examplePrompt2":"アプリ内からタスクステータスを更新する。","examplePrompt3":"チームの作業負荷とタスク割り当てを表示する。"},"box":{"longDescription":"Boxに接続して、ファイルやフォルダのアップロード、管理、共有を行います。アプリユーザーがドキュメントを安全に保存、ファイルを整理、Box内のコンテンツでコラボレーションできるようにします。","examplePrompt0":"生成されたドキュメントをBoxフォルダにアップロードする。","examplePrompt1":"共有Boxディレクトリ内のファイルを一覧表示する。","examplePrompt2":"Boxからアプリにファイルをダウンロードする。","examplePrompt3":"Boxファイルのリンクをチームメンバーと共有する。"},"clickup":{"longDescription":"ClickUpに接続して、タスク、プロジェクト、チームワークフローを管理します。アプリユーザーがタスクの作成、ステータスの更新、アプリから直接プロジェクト進捗を追跡できるようにします。","examplePrompt0":"フォーム送信からClickUpタスクを作成する。","examplePrompt1":"タスクボードのステータスをダッシュボードに表示する。","examplePrompt2":"アプリからタスクの優先度を更新する。","examplePrompt3":"現在のスプリントの期限切れタスクを一覧表示する。"},"google_analytics":{"longDescription":"Googleアナリティクスに接続して、Webサイトのトラフィック、ユーザー行動、マーケティングパフォーマンスデータにアクセスします。アプリユーザーがアプリ内から分析レポートを閲覧し、主要指標を追跡できるようにします。","examplePrompt0":"ページビューとセッション数をダッシュボードに表示する。","examplePrompt1":"過去1週間のトップトラフィックソースを表示する。","examplePrompt2":"キャンペーン全体のコンバージョン率を追跡する。","examplePrompt3":"ユーザーのデモグラフィックと行動データを取得する。"},"outlook":{"longDescription":"Outlookに接続して、メールの送受信、カレンダーイベントの管理、Microsoft 365のメールとカレンダーへのアクセスを行います。アプリユーザーがメールワークフローの自動化やスケジュールの同期を行えるようにします。","examplePrompt0":"アプリからフォローアップメールを送信する。","examplePrompt1":"今後のカレンダーイベントを表示する。","examplePrompt2":"フォーム送信からカレンダーイベントを作成する。","examplePrompt3":"最近のメールをダッシュボードに表示する。"},"linear":{"longDescription":"Linearに接続して、イシュー、プロジェクト、サイクルの作成と管理を行います。アプリユーザーがチームワークフローの追跡、スプリントの整理、エンジニアリングの進捗把握を行えるようにします。","examplePrompt0":"バグ報告フォームからLinearイシューを作成する。","examplePrompt1":"アクティブなスプリントのイシューをダッシュボードに表示する。","examplePrompt2":"アプリ内からイシューステータスを更新する。","examplePrompt3":"サイクルの進捗とチームのベロシティを追跡する。"},"dropbox":{"longDescription":"Dropboxに接続して、ファイルやフォルダのアップロード、ダウンロード、管理を行います。アプリユーザーがクラウドにファイルを保存、データを同期、アプリからDropboxのコンテンツにアクセスできるようにします。","examplePrompt0":"エクスポートされたレポートをDropboxにアップロードする。","examplePrompt1":"特定のDropboxフォルダ内のファイルを一覧表示する。","examplePrompt2":"共有ファイルをアプリにダウンロードする。","examplePrompt3":"アプリデータのバックアップをDropboxに同期する。"}},"builtIn":{"sendEmail":{"name":"メール送信","rowDescription":"カスタマイズ可能な送信者名とリッチHTMLコンテンツで、Base44アプリのユーザーにメールを送信します。","subtitle":"アプリから直接ユーザーに自動メールを送信します。","longDescription":"ワークフローや自動化の一環として、アプリから自動的にメールを送信します。このインテグレーションは、フロー、バックエンド関数、またはエージェントからトリガーでき、確認、アラート、要約、またはアクセスリンクなどの通知をユーザーに送信できます。","examplePrompt0":"サポートチケットが「解決済み」に更新されたら、SendEmailを使用して、解決の要約とともに依頼者に通知してください。","examplePrompt1":"SendEmailを使用して、管理者に新規注文と主要メトリクスのダイジェストを毎週送信する自動化を作成してください。","examplePrompt2":"SendEmailを使用して、管理者にこのアプリの新規登録者の要約を毎日送信するフローを追加してください。","examplePrompt3":"SendEmailを使用して、予約したアポイントメントの24時間前にユーザーにリマインドする自動化を作成してください。"},"uploadFile":{"name":"ファイルアップロード","rowDescription":"アプリにファイルをアップロードできるようにします。返されたファイルURLを他のインテグレーションやワークフローで使用できます。","subtitle":"アプリにファイルをアップロードできるようにします。返されたファイルURLを他のインテグレーションやワークフローで使用できます。","longDescription":"ユーザーがアプリにファイルをアップロードしてレコードに添付できるようにします。このインテグレーションはアップロードコンポーネントを駆動し、ドキュメント、画像、領収書、契約書、スクリーンショット、プロフィール写真、CSVファイル、またはスプレッドシートを収集し、安全なファイルURLのみをデータに保存できます。","examplePrompt0":"ファイルアップロードを使用してこのフォームにファイルアップロードフィールドを追加し、関連レコードにファイルURLを保存してください。","examplePrompt1":"ファイルアップロードでプロフィール写真をアップロードし、ユーザーエンティティに画像URLを保存できるページを作成してください。","examplePrompt2":"ファイルアップロードを使用してCSVファイルのアップロードエリアを設定し、後でデータテーブルにインポートできるようにしてください。"},"invokeLlm":{"name":"LLMを呼び出す","rowDescription":"組み込み言語モデル、プロンプト、ファイル、構造化出力を使用してAI応答を生成します。","subtitle":"組み込み言語モデル、プロンプト、ファイル、構造化出力を使用してAI応答を生成します。","longDescription":"言語モデルを使用してプロンプトから応答を生成します。このインテグレーションは構造化JSON出力を返し、画像を分析し、ファイル添付をコンテキストとして使用し、必要に応じてWeb検索を実行できます。アプリのエージェント、ワークフロー、その他のAI駆動機能に使用できます。","examplePrompt0":"LLMを呼び出すを使用してユーザー入力からAI応答を生成し、このページに回答を表示してください。","examplePrompt1":"LLMを呼び出すを使用して、長いフィードバックメッセージを各フィードバックレコードに保存される3つの要点に要約してください。","examplePrompt2":"ユーザーテキストをLLMを呼び出すに送信し、より明確でフレンドリーなバージョンを返す「テキストを書き直す」機能を追加してください。","examplePrompt3":"LLMを呼び出すを使用して、各サポートチケットを「バグ」、「機能リクエスト」、または「質問」に分類し、チケットレコードにラベルを保存してください。"},"generateImage":{"name":"画像生成","rowDescription":"詳細なテキストプロンプトから画像を作成します。生成された画像のURLを返します。","subtitle":"希望する画像を説明するテキストプロンプトを提供するだけで、生成された画像のURLが返されます。","longDescription":"アプリ内のテキストプロンプトやフローからAIを使用して画像を生成します。このインテグレーションにより、外部の画像プロバイダーに接続することなく、カバー画像、サムネイル、アバター、製品プレースホルダー、またはシンプルなマーケティングビジュアルをオンデマンドで作成できます。","examplePrompt0":"写真なしで新製品が追加されたとき、画像生成を使用してデフォルトの製品画像を作成してください。","examplePrompt1":"ユーザーが短い説明を入力すると、画像生成がカバー画像URLを返し、投稿に保存される機能を追加してください。","examplePrompt2":"画像生成を使用して、お気に入りの色やテーマに基づいて新規ユーザーのアバター画像を生成するフローを作成してください。"},"extractData":{"name":"アップロードファイルからデータ抽出","rowDescription":"JSONスキーマを使用して、アップロードされたファイル(CSV、PNG、JPG、JPEG、PDF)から構造化データを抽出します。データの一括インポートに便利です。","subtitle":"JSONスキーマを使用して、アップロードされたファイル(CSV、PNG、JPG、JPEG、PDF)から構造化データを抽出します。データの一括インポートに便利です。","longDescription":"アプリにアップロードされたファイルから構造化データを自動的に抽出し、エンティティに保存します。このインテグレーションはドキュメントやスプレッドシートを読み取り、その内容をレコード、レポート、または自動化で使用できる構造化フィールドに変換します。","examplePrompt0":"誰かがPDF請求書をアップロードしたら、データ抽出を使用して、ベンダー、合計金額、支払期日を請求書エンティティに取り込んでください。","examplePrompt1":"データ抽出を使用して連絡先のCSVを読み取り、行ごとに1つの連絡先レコードを作成してください。","examplePrompt2":"ユーザーが領収書画像をアップロードした後、データ抽出を使用して、店舗、日付、明細項目を構造化された経費レコードに抽出してください。"},"whatsapp":{"name":"WhatsApp","rowDescription":"エージェントをWhatsAppに接続して、ユーザーがアプリを開かずに携帯電話から直接アプリのエージェントにメッセージを送れるようにします。","subtitle":"エージェントをWhatsAppに接続して、ユーザーがアプリを開かずに携帯電話から直接アプリのエージェントにメッセージを送れるようにします。","longDescription":"エージェントをWhatsAppに接続して、ユーザーが携帯電話から直接アプリのエージェントにメッセージを送れるようにします。このインテグレーションを使用して、エージェントがバックグラウンドでアプリのデータとワークフローにアクセスしながら、サポートの処理、データの収集、またはWhatsApp経由での更新情報の送信を行います。","examplePrompt0":"サポートエージェントをWhatsAppに接続して、顧客がそこで質問でき、エージェントがアプリの知識を使って回答するようにしてください。","examplePrompt1":"新しいメッセージが連絡先エンティティのレコードを作成または更新し、エージェントが詳細を確認するWhatsAppフローを設定してください。","examplePrompt2":"注文ステータスが「発送済み」に変更されたら、エージェントが追跡リンクと主要な注文情報を含むWhatsAppメッセージを送信するようにしてください。"}}}'),r3={title:"アプリユーザー向けコネクタ",description:"アプリユーザーが個人アカウントをリンクできるようにコネクタを設定します。",manage:"管理"},o3={connections:t3,integrations:a3,skillsBanner:n3,oauthConnectors:i3,oauthConnectorsBanner:r3},s3={importSuccessful:"インポート成功",importSuccessfulMsg:"{{count}}件の{{name}}レコードを正常にインポートしました",importFailed:"インポート失敗",exportSuccessful:"エクスポート成功",exportSuccessfulMsg:"エンティティをCSVに正常にエクスポートしました",exportFailed:"エクスポート失敗",moveAllToTrash:"すべてのレコードをゴミ箱に移動",moveAllToTrashConfirm:"すべてのレコードをゴミ箱に移動してもよろしいですか?後から復元できます。",moveToTrash:"ゴミ箱に移動",success:"成功",allMovedToTrash:"すべてのレコードがゴミ箱に移動されました",error:"エラー",add:"追加",addItem:"アイテムを追加",import:"インポート",export:"エクスポート",schema:"スキーマ",recentlyDeleted:"最近削除されたもの",deleteAll:"すべて削除",permissions:"権限",permissionsDesc:"レコードの読み取りと書き込みを制御するルールを作成します。複数のルールはOR論理で結合されます。",saveRules:"ルールを保存",permissionsIssueDetected:"権限の問題が検出されました",learnMoreAboutPermissions:"権限とセキュリティルールについて<a>詳しくはこちら <icon/></a>",customize:"カスタマイズ",apply:"適用",checkingPermissions:"権限のセキュリティを確認中",failedCheckPermissions:"権限の確認に失敗しました",permissionsCheckPassed:"権限の確認に合格しました",recommendedRules:"推奨ルール",editRecord:"{{entity}}を編集",addNewRecord:"新しい{{entity}}を追加",test:"テスト",production:"本番",filters:"フィルター",schemaEditor:"スキーマエディター",noRecordsFound:"レコードが見つかりません",getStartedAdding:"最初のレコードを追加して始めましょう。",loadingEntity:"{{entity}}を読み込み中..."},l3={production:"本番",test:"テスト"},c3={back:"戻る",trashTitle:"{{entity}}: ゴミ箱",test:"(テスト)",production:"(本番)",trashDescription:`アイテムの表示、復元、完全削除ができます。
アイテムは30日後に自動的に完全削除されます。`,permanentlyDelete:"レコードを完全に削除",permanentlyDeleteConfirm:"このレコードを完全に削除してもよろしいですか?この操作は元に戻せません。",deletePermanently:"完全に削除",restoreSelected:"選択したレコードを復元",restoreSelectedConfirm:"{{count}}件の選択したレコードを復元してもよろしいですか?",restore:"復元",restoreAll:"すべてのレコードを復元",restoreAllConfirm:"ゴミ箱内のすべてのレコードを復元してもよろしいですか?",restoreAllBtn:"すべて復元",deletedDate:"削除日",actions:"操作",failedToLoad:"削除されたレコードの読み込みに失敗しました",tryAgain:"再試行",loadingDeleted:"削除されたレコードを読み込み中...",noDeletedRecords:"削除されたレコードが見つかりません",restoreCount:"{{count}}件を復元",restoring:"復元中..."},d3={data:s3,toolbar:l3,trash:c3},u3={title:"ドメイン",subtitle:"ドメインの購入、接続、管理。",learnMore:"詳細を見る",expired:"{{days}}日前に期限切れ",expiresIn:"あと{{days}}日で期限切れ",lastChecked:"最終確認: {{time}}",domainLinked:"ドメインがリンクされました",domainLinkedMsg:"ドメインがプロジェクトにリンクされました",errorLinkingDomain:"ドメインのリンクエラー",linking:"リンク中...",linkDomain:"ドメインをリンク",checkStatus:"ステータスを確認",checking:"確認中...",verifyDomain:"検証",verifying:"検証中...",unlinkDomain:"ドメインのリンク解除",unlinking:"リンク解除中...",unlinked:"リンク解除済み",domainActive:"ドメインアクティブ",waitingDns:"DNS伝播を待っています",verified:"検証済み",error:"エラー",pending:"保留中",domainUnlinked:"ドメインのリンクが解除されました",domainUnlinkedMsg:"ドメインがプロジェクトからリンク解除されました",errorUnlinkingDomain:"ドメインのリンク解除エラー",domainDeleted:"ドメインが削除されました",errorDeletingDomain:"ドメインの削除エラー",errorCheckingStatus:"ステータスの確認エラー",verificationInitiated:"検証が開始されました",checkBackMinutes:"数分後に確認してください",errorVerifyingDomain:"ドメインの検証エラー",deleteDomain:"ドメインを削除",deleteConfirm:"本当に削除しますか?",deleting:"削除中...",unlinkDialogDescription:`このドメインはBase44を通じて購入されました。

ドメインリストには残りますが、プロジェクトとの接続は解除されます。`,wantToUseDomain:"あなたのドメインを使いたいですか?",customDomainsAvailable:"カスタムドメインはBuilderプラン以上でご利用いただけます。<br/>アップグレードしてドメインをこのアプリに接続してください。",viewPlans:"プランを見る",getNewDomain:"新しいドメインを取得",getNewDomainDescription:"独自のドメインでアプリをプロフェッショナルに見せましょう。",suggestedForApp:"あなたのアプリにおすすめ: <bold>{{domain}}</bold>",suggestedForApp_prefix:"あなたのアプリにおすすめ:",buyNewDomain:"新しいドメインを購入",buyAnother:"別のドメインを購入",buyThisDomain:"このドメインを購入",orConnectExisting:"または既にお持ちのドメインを接続",connectExistingDomain:"既存のドメインを接続",getYourCustomDomain:"カスタムドメインを取得",upgradeDescription:"カスタムドメインはBuilderプラン以上でご利用いただけます。",upgradeYourPlan:"プランをアップグレード",processing:"処理中...",loading:"読み込み中...",domainLimitReached:"ドメイン制限に達しました",domainLimitMsg:`このアプリの最大{{max}}ドメインに達しました({{current}}/{{max}})。
新しいドメインを追加する前にいくつかのドメインを削除してください。`,noCustomDomainYet:"カスタムドメインはまだ接続されていません",connectDescription:"Base44アプリを独自のドメインに接続して、ブランドを前面に出し、アプリを見つけやすく共有しやすくしましょう。",buyDomain:"ドメインを購入",neverExpires:"無期限",editUrl:"URLを編集",domainPurchased:"ドメインを購入しました!",domainPurchasedMsg:"ドメイン{{domain}}の購入に成功しました。ドメインリストに表示されるまでお待ちください...",domainPurchaseFailed:"ドメインの購入に失敗しました",purchaseFailedMsg:"{{domain}}の購入に失敗しました。",domainLimitReachedToast:"ドメイン制限に達しました",domainLimitToastMsg:"アプリごとに最大{{max}}ドメインまでです。まずいくつかのドメインを削除してください。",domainAddedSuccessfully:"ドメインが正常に追加されました。",verifyToComplete:"セットアップを完了するためにドメインを検証してください。",failedToConnect:"ドメインの接続に失敗しました",connectYourDomain:"接続",builtInDomain:"組み込みURL",customDomains:"カスタムドメイン",adminCanAdd:"管理者: 任意のドメインを追加可能",domainDisabled:"ドメイン無効化",domainEnabled:"ドメイン有効化",domainDisabledMsg:"ドメインが無効化され、トラフィックは配信されなくなります。",domainEnabledMsg:"ドメインが再有効化され、トラフィックの配信が再開されます。",errorTogglingDomain:"ドメインの切り替えエラー",disabledBadge:"無効",enableDomain:"有効化",disableDomain:"無効化",enableDomainTitle:"ドメインを有効化(管理者)",disableDomainTitle:"ドメインを無効化(管理者)",errorFetchingDomains:"ドメインの取得エラー",cancel:"キャンセル",cannotPurchase:"ドメインを購入できません",domainPurchaseDisabled:"ドメインの購入は現在無効になっています",entriNotReady:"Entriの準備がまだできていません。しばらくしてから再度お試しください。",errorPurchasingDomain:"ドメインの購入エラー",loadingEntri:"Entriを読み込み中...",addNewDomain:"新しいドメインを追加",enterDomainFormat:"下にドメイン名を入力してください。形式: app.example.com",enterDomainPlaceholder:"ドメインを入力(例: app.example.com)",invalidDomain:`有効なドメインではありません。
有効なドメインを入力してください(例: example.com または app.example.com)。`,domainAlreadyConnected:"このドメインはすでにアプリに接続されています。",configureDnsAtRegister:"レジストラでDNSを設定",addDomain:"ドメインを追加",adding:"追加中...",domainConnectionNeeded:"ドメインの接続が必要です",retryFromEmailSettings:"メールドメイン設定から再試行してください。",emailDomainSubmitted:"メールドメインが送信されました。",addDnsRecords:"ドメインプロバイダーにDNSレコードを追加してください。",verificationMayTake48h:"検証には最大48時間かかる場合があります。",senderDetailsUpdated:"送信者情報が更新されました。",editSenderDetails:"送信者情報を編集",setSenderDetails:"送信者情報を設定",saveChanges:"変更を保存",connectDomain:"ドメインを接続",saving:"保存中...",connecting:"接続中...",usersWillGetEmails:"ユーザーはこの送信者情報からメールを受け取ります。",senderName:"送信者名",customAddress:"カスタムアドレス",noReply:"no-reply",noReplyEmailAddress:"no-reply@base44-apps.com",domain:"ドメイン",copyToClipboard:"クリップボードにコピー",addCnameRecord:"CNAMEレコードを追加: ",wwwToDomain:"www → base44.onrender.com",addAnameRecord:"ANAME/ALIASレコードを追加: ",emptyOrAtDomain:"空または@ → base44.onrender.com",ifNoAnameSupport:"DNSプロバイダーがANAME/ALIASに対応していない場合は、Aレコードを使用してください:",aRecordIp:"@ → 216.24.57.1",removeAaaaRecords:"DNS設定中はドメインからAAAAレコードを削除してください。AAAAレコードはIPv6アドレスにマッピングされますが、Base44はIPv4を使用しています。これらのレコードはカスタムドメインで予期しない動作を引き起こす可能性があります。",dnsChangesNote:"DNSレコードを追加した後、インターネット全体に変更が完全に伝播するまで時間がかかる場合があります。この間、ドメインが正しく機能しない可能性があります。",addDnsRecordsFor:"1. ドメインプロバイダーに以下のDNSレコードを追加してください: ",type:"種類",nameColumn:"名前",hostColumn:"ホスト",tabAnameAlias:"ANAME/ALIAS",tabARecord:"Aレコード",addRecordsStepIntro:"プロバイダーのダッシュボードで次のレコードを追加してセットアップを完了してください。",removeAaaaShort:"AAAA(IPv6)レコードは接続を妨げることがあるため、必ず削除してください。",customDomainStep2Verify:"プロバイダーのダッシュボードでレコードをすべて更新したら、「<bold>ドメインを検証</bold>」をクリックしてください。DNSの変更が反映されるまで最大48〜78時間かかる場合があります。",closeModal:"閉じる",verifyDomainButton:"ドメインを検証",dnsTargetFallback:"base44.onrender.com",value:"値",onceConfiguredVerify:"2. 設定が完了したら、メールドメインカードの「<bold>検証</bold>」をクリックしてセットアップを確認してください。DNS変更の伝播には最大48〜78時間かかる場合があります。",emailDnsChangesNote:"DNSレコードを追加した後、変更の伝播には最大48時間かかる場合があります。この間、メールは現在のメールアドレスから送信されます。",configureDnsForEmail:"メールドメインのDNSを設定",connectDomainDns:"DNSプロバイダーを通じてドメインを接続",followInstructions:"以下の手順に従ってDNSレコードを設定してください。",addRecordsInProvider:"プロバイダーのダッシュボードにこれらのレコードを追加してセットアップを完了してください。",done:"完了",needHelp:"ヘルプが必要ですか?チケットを作成してください: ",supportSystem:"サポートシステム",urlUpdated:"URLが更新されました",customUrlRemoved:"カスタムURLが削除されました。アプリは次のURLで利用可能です: {{url}}",appAvailableAt:"アプリは次のURLで利用可能です: {{url}}",urlAlreadyTaken:"このURLは既に使用されています。以下の候補から選択するか、別のURLを入力してください。",urlAlreadyTakenNoSuggestions:"このURLは既に使用されています。別のURLをお試しください。",suggestedAlternatives:"利用可能な候補:",urlReserved:"このURLは予約済みです。別のURLをお試しください。",urlInvalid:"このURLは無効です。別のURLをお試しください。",slugInvalidClient:"このURLは無効です。小文字の英字、数字、ハイフンのみ使用できます。",slugResetToDefault:"スラグがデフォルトにリセットされました",errorResettingSlug:"スラグのリセットエラー",failedResetSlug:"デフォルトのスラグへのリセットに失敗しました",editUrlTitle:"URLを編集",builtInDomainLabel:"Base44組み込みURL",resetToDefault:"デフォルトにリセット",urlEditingRequiresPlan:"URLの編集にはスタータープランが必要です。",upgradeToPremium:"プレミアムにアップグレード",changing:"変更中...",change:"変更",emailDomain:"メールドメイン",sendingFromDefault:"デフォルトドメインからの送信は1通あたり1インテグレーションクレジットかかります。カスタムドメインの使用は2インテグレーションクレジットかかります。",useCustomDomain:"カスタムドメインを使用",sendingFrom:"送信者名: {{name}}",connectDomainForCustom:"カスタム送信者アドレスを使用するにはドメインを接続してください。",buyADomain:"ドメインを購入",dnsConfiguration:"DNS設定",pleaseWaitTryAgain:"しばらくお待ちいただき、再度お試しください。",dnsConfigFailed:"DNS設定に失敗しました",dnsPleaseTryLater:"後でもう一度お試しください。",verificationFailed:"検証に失敗しました",dnsNotVerified:"DNSレコードがまだ検証されていません。DNS設定を確認して再度お試しください。",domainVerificationFailed:"ドメインの検証に失敗しました",couldntVerifyDns:"DNSレコードを検証できませんでした。確認して再度お試しください。",completeSetup:"セットアップを完了",opening:"開いています...",cancelling:"キャンセル中...",connectionFailed:"接続に失敗しました",retry:"再試行",retrying:"再試行中...",couldntCompleteDns:"DNSセットアップを完了できませんでした。再度お試しください。",couldntConnectEmail:"ドメインをメールプロバイダーに接続できませんでした。再度お試しください。",pendingVerification:"検証待ち",emailBeingVerified:"メールアドレスを検証中です。",makeSureDnsCorrect:"DNSレコードがドメインプロバイダーに正しく追加されていることを確認してください。",verify:"検証",notConfigured:"未設定",active:"アクティブ",editSenderDetailsAction:"送信者情報を編集",detachCustomDomain:"カスタムドメインを切断",suspended:"停止中",disabled:"無効",blocked:"ブロック中",propagationBlocked:"伝播がブロックされています",propagationBlockedTooltip:"DNSの反映には時間がかかることがあります。問題が続く場合は、DNSレコードを弊社の手順と照合してください。",pendingConnection:"接続待ち",completeSetupToSend:"セットアップを完了してドメインからメールの送信を開始してください。現在のメール送信元: ",emailCurrentlySentFrom:"メールアドレスを検証中です。現在のメール送信元: ",dnsNotVerifiedYet:"DNSレコードがまだ検証されていません。正しく設定されていることを確認してから「検証」をクリックしてください。",couldntConnectMakeSure:"ドメインをメールプロバイダーに接続できませんでした。DNSレコードがドメインプロバイダーに正しく追加されていることを確認して再度お試しください。",base44Domain:"Base44ドメイン",maxDomainsReached:"このアプリの最大{{max}}ドメインに達しました",viewDnsRecords:"DNSレコードを表示",upgradeBannerText:"カスタムドメインにはBuilderプラン以上が必要です。アップグレードして有効にしてください。",upgradeToUseDomain:"このドメインを使うにはプランをアップグレードしてください。",emailDomainPurchasedOnly:"メールドメインの設定は現在、Base44を通じて購入したドメインでのみ利用可能です。",save:"保存",urlHint:"小文字の英字、数字、ハイフンのみ使用できます",copyUrl:"URLをコピー",builtInUrlTooltip:"アプリはこのURLで常に利用可能です。",builderPlanRequired:"この機能はBuilderプラン以上で利用可能です。",somethingWentWrong:"何か問題が発生しました",failedToGetPurchaseConfig:"購入設定の取得に失敗しました",errorEnablingEmail:"メール有効化エラー",failedToEnableEmail:"メールの有効化に失敗しました",errorUpdatingSenderDetails:"送信者情報の更新エラー",failedToUpdateSenderDetails:"送信者情報の更新に失敗しました",errorReplacingDomain:"ドメイン置換エラー",failedToReplaceDomain:"ドメインの置換に失敗しました",failedToAddDomain:"ドメインの追加に失敗しました",processingPurchase:"購入を処理中...",subscriptionRequired:"サブスクリプションが必要です"},p3={domains:u3},m3={title:"ログエクスプローラー",subtitle:"アプリケーション全体のシステムログを監視。",refresh:"更新",loadingLogs:"ログを読み込み中...",pleaseWait:"ログを取得中です。お待ちください",failedToLoad:"ログの読み込みに失敗しました",errorFetching:"ログの取得中にエラーが発生しました。再度お試しください。",noLogsMatchFilters:"フィルターに一致するログがありません",tryAdjusting:"フィルターを調整してみてください",noLogsFound:"ログが見つかりません",logsWillAppear:"アクティビティが発生するとここにログが表示されます",tryAgain:"再試行",resetFilters:"フィルターをリセット",details:"詳細",outputs:"出力",errorTab:"エラー",noAdditionalDetails:"追加の詳細情報はありません。",clearFilters:"フィルターをクリア",filterByEmail:"メールアドレスでフィルター...",errorsOnly:"エラーのみ",allEvents:"すべてのイベント",typeColumn:"種類",userColumn:"ユーザー",timestamp:"タイムスタンプ"},g3={title:"アナリティクス",publishToCollect:"アプリを公開してデータ収集を開始しましょう。"},h3={title:"APIドキュメント",subtitle:"アプリの完全なAPIリファレンス。OpenAPI仕様を任意のAPIクライアントやドキュメントツールで使用できます。",downloadSpec:"OpenAPI仕様をダウンロード",copyForLLM:"AI用にコピー",copyForLLMTooltip:"AI向けMarkdownドキュメントをクリップボードにコピー",copied:"コピー完了!",codeExamplesIn:"コード例の言語:",authTitle:"認証",authDescription:"すべてのAPIリクエストにはapi_keyヘッダーが必要です。APIキーはユーザープロフィールで確認するか、アプリSDKのUser.me()でプログラム的に取得できます。",sdkAuthDescription:"Base44 SDKをインストールし、アプリIDでクライアントを初期化します。SDKが認証を処理し、すべてのエンティティ操作とバックエンド関数の型付きメソッドを提供します。",entitiesTitle:"エンティティエンドポイント",schema:"スキーマ",endpoints:"エンドポイント",copyAll:"すべてコピー",copyEntity:"エンティティをコピー",functionsTitle:"バックエンド関数",functionsDescription:"デプロイされたバックエンド関数をHTTP経由で呼び出します。各関数は任意のJSONペイロードを受け付け、関数のレスポンスを返します。",agentTitle:"アプリエージェント",agentDescription:"会話を通じてアプリのAIエージェントとやり取りします。会話を作成し、メッセージを送信して、エージェントの応答を受け取ります。",copy:"コピー",parameters:"パラメーター",loading:"APIドキュメントを読み込み中...",error:"APIドキュメントの読み込みに失敗しました。もう一度お試しください。"},f3={logs:m3,analytics:g3,api:h3},v3={error:"エラー",appStillLoading:"アプリはまだ読み込み中です...名前が更新されませんでした",appNameEmpty:"アプリ名を空にすることはできません",removedFromFavorites:"お気に入りから削除",addedToFavorites:"お気に入りに追加",removedDescription:"アプリがお気に入りリストから削除されました",addedDescription:"アプリがお気に入りリストに追加されました",descriptionUpdated:"説明が更新されました",descriptionUpdatedMsg:"アプリの説明が正常に更新されました",failedUpdateDescription:"アプリの説明の更新に失敗しました",openApp:"アプリを開く",shareApp:"アプリを共有",winFreeCredits:"無料クレジットを獲得!",appVisibility:"アプリの公開設定",controlAccess:"アプリケーションへのアクセスを制御します",inviteUsers:"ユーザーを招待",growUserBase:"他のユーザーを招待してユーザーベースを拡大",copyLink:"リンクをコピー",copied:"コピーしました!",sendInvites:"招待を送信",paymentsViaStripe:"Stripe経由の支払い",pendingSetup:"セットアップ待ち",completeSetupGuide:"セットアップガイドを完了して実際の支払いを受け付けます",live:"本番",testModeMessage:"まだテストモードです。セットアップを完了して支払いの受け付けを開始してください。",readyForPayments:"アプリはStripe経由で支払いを受け付ける準備ができています。",continueSetup:"セットアップを続ける",payments:"支払い",poweredByWix:"Wix提供",manage:"管理",openingWixPayments:"Wix Payments を開いています...",wixPaymentsErrors:{noUrl:"Wix Payments のURLを取得できませんでした。もう一度お試しください。",fetchFailed:"Wix Payments を開けませんでした。もう一度お試しください。",invalidRedirect:"Wix Payments を開けませんでした。もう一度お試しください。"},disconnected:"切断済み",wixPaymentsDashboardError:"Wix Paymentsダッシュボードを開けませんでした",platformBadge:"プラットフォームバッジ",badgeVisible:"「Edit with Base44」バッジは現在アプリに表示されています。",hideBadge:"バッジを非表示",editAppNameAccessibilityLabel:"タイトルを編集",editAppDescription:"アプリの説明を編集",descriptionPrompt:"アプリの目的と機能の簡単な説明を入力してください。",describeYourApp:"アプリを説明してください...",cancel:"キャンセル",save:"保存",created:"作成日: {{time}}"},b3={overview:v3},y3={title:"アプリセキュリティ",subtitle:"行レベルセキュリティポリシーを設定して、アプリのデータへのアクセスを制御します",scanIssues:"問題をスキャン",scanTime:"スキャンは通常数分かかります",scanning:"スキャン中",startSecurityCheck:"セキュリティチェックを開始",scanResults:"スキャン結果",rlsRecommendations:"RLS推奨事項",rlsRecommendationsFound:"{{count}}件のRLS推奨事項が見つかりました。",viewRecommendations:"推奨事項を表示",noRlsRecommendations:"RLS推奨事項はありません",secrets:"シークレット",exposedSecretsFound:"{{count}}件の公開されたシークレットが見つかりました",noExposedSecrets:"公開されたシークレットはありません",backendFunctions:"バックエンド関数",unauthenticatedFunctions:"{{count}}件の未認証バックエンド関数が見つかりました",noUnauthenticatedFunctions:"未認証バックエンド関数はありません",dataEntities:"データエンティティ",entitiesCount:"{{count}}個のエンティティ",scanComplete:"セキュリティスキャン完了",reviewFindings:"以下の結果を確認してください。",scanFailed:"セキュリティスキャンに失敗しました",ruleSaved:"{{entity}}のルールが保存されました",ruleSavedMsg:"推奨ルールが保存されました。",failedToSaveRule:"ルールの保存に失敗しました",createAccess:"作成アクセス",readAccess:"読み取りアクセス",updateAccess:"更新アクセス",deleteAccess:"削除アクセス",removeAllRules:"すべてのセキュリティルールを削除",removeAllRulesConfirm:"このエンティティのすべてのセキュリティルールが削除され、すべてのユーザーがすべてのレコードにアクセスできるようになります。続行してもよろしいですか?",removeAllRulesBtn:"すべてのルールを削除",securityRules:"セキュリティルール: {{entity}}",securityRulesTitle:"セキュリティルール",securityRulesDesc:"レコードの読み取りと書き込みを制御するルールを作成します。複数のルールはOR論理で結合されます。",publicAccess:"パブリックアクセス",publicAccessDesc:"現在、すべてのユーザーがこのエンティティのすべてのレコードにアクセスできます。アクセス制限はありません。",createAccessRules:"アクセスルールを作成",create:"作成",read:"読み取り",update:"更新",deleteAction:"削除",crudRules:"{{crud}}ルール",addRule:"ルールを追加",generatedRules:"生成された{{crud}}ルール(JSON)",saveSecurityRules:"セキュリティルールを保存",crudAccessRules:"{{crud}}アクセスルール",configurePermissions:"各アクションの権限を設定",generatedJsonPreview:"生成されたJSON(プレビュー)",saveRules:"ルールを保存",rlsRecommendation:"RLS推奨事項",dismiss:"閉じる",applyFixes:"修正を適用",restricted:"制限あり",public:"パブリック",fullAccess:"すべてのユーザーがフルアクセス可能",createLabel:"作成:",readLabel:"読み取り:",updateLabel:"更新:",deleteLabel:"削除:",noRestrictions:"制限なし",allUsersCanAccess:"すべてのユーザーがレコードにアクセス可能",creatorOnly:"作成者のみ",creatorOnlyDesc:"ユーザーは自分が作成したレコードのみアクセスできます",entityUserComparison:"エンティティ-ユーザーフィールド比較",entityUserComparisonDesc:"このエンティティのフィールドをユーザープロパティと比較します",entityField:"エンティティフィールド",fieldInEntity:"比較するエンティティ内のフィールド",userField:"ユーザーフィールド",fieldFromUser:"比較するユーザーのフィールド",userPropertyCheck:"ユーザープロパティチェック",userPropertyCheckDesc:"ユーザープロパティが特定の値と一致するか確認します",userProperty:"ユーザープロパティ",selectUserProperty:"ユーザープロパティを選択",userRole:"ユーザーの役割",userEmail:"ユーザーのメールアドレス",fullName:"フルネーム",requiredValue:"必須値",selectRole:"役割を選択",adminRole:"管理者",userRoleOption:"ユーザー",noRestrictionsLabel:"制限なし",creatorOnlyLabel:"作成者のみ",adminOnlyLabel:"管理者のみ",filePath:"ファイル: {{path}}",severityCritical:"重大",severityHigh:"高",securityScanLabel:"セキュリティスキャン",upToDate:"最新",upToDateTooltip:"前回のチェック以降、セキュリティに影響する変更はありません",outOfDate:"期限切れ",outOfDateTooltip:"前回のチェック以降、セキュリティに影響する変更がありました。新しいセキュリティスキャンを実行してください。",runSecurityScan:"セキュリティスキャンを実行",securityPageTitle:"セキュリティ",securityPageSubtitle:"権限とセキュリティルールを管理します。<a>詳しくはこちら <icon/></a>",issuesDetails:"問題の詳細",rlsIssuesTitle_one:"{{count}}件のRLS問題",rlsIssuesTitle_other:"{{count}}件のRLS問題",rlsIssuesSubtitle:"行レベルセキュリティを有効にしてデータを保護してください",exposedSecretsTitle_one:"{{count}}件の公開されたシークレット",exposedSecretsTitle_other:"{{count}}件の公開されたシークレット",exposedSecretsSubtitle:"公開されたシークレットを保護しローテーションして、アプリケーションとデータを安全に保ちましょう。",unauthBackendTitle_one:"{{count}}件の未認証バックエンド関数",unauthBackendTitle_other:"{{count}}件の未認証バックエンド関数",unauthBackendSubtitle:"バックエンドタスクのエンドポイントを認証で保護してください。",noIssuesFound:"問題は見つかりませんでした。アプリのセキュリティは良好ですが、定期的に確認して保護を維持してください。",recommendedRulesLabel:"推奨ルール:",fix:"修正",fixAll:"すべて修正",missingRlsRules:"{{entity}}にRLSルールがありません",customizeSuggestion:"提案をカスタマイズ",goToEntityPage:"エンティティページへ移動",ruleColumnHeader:"ルール",allUsers:"全ユーザー",fieldComparison:"フィールド比較",noScanTitle:"アプリのセキュリティを確認する",noScanDescription:"設定を見直し、潜在的なリスクを特定し、アプリの保護を強化する方法を学びましょう",checkSecurity:"セキュリティを確認",back:"戻る",cancel:"キャンセル"},k3={title:"アプリケーションシークレット",secretDeleted:"シークレットが削除されました",errorDeletingSecret:"シークレットの削除エラー",secretUpdated:"シークレットが更新されました",errorUpdatingSecret:"シークレットの更新エラー",newSecretValue:"新しいシークレット値",save:"保存",cancel:"キャンセル",addSecret:"シークレットを追加",addNewSecret:"新しいシークレットを追加",addNewSecretDescription:"シークレット名と値を入力してください。シークレットは暗号化されて安全に保存されます。",secretName:"シークレット名",secretNamePlaceholder:"シークレット名を入力(例: API_KEY)",secretNameNoSpaces:"シークレット名にスペースは使用できません。代わりにアンダースコアを使用してください(例: API_KEY)。",secretValue:"シークレット値",secretValuePlaceholder:"シークレット値を入力",adding:"追加中...",aboutSecretsManagement:"シークレット管理について",secretsDescription:"シークレットはAPIキー、トークン、パスワードなどの機密情報を含む環境変数です。暗号化して保存され、実行時にアプリケーションに安全に注入されます。",secretsBullet1:"シークレットはバックエンド関数が外部サービスにアクセスするために使用されます",secretsBullet2:"すべてのシークレットは暗号化されて安全に保存されます",secretsBullet3:"アプリケーションに必要に応じてシークレットの追加、更新、削除ができます",needHelp:"ヘルプが必要ですか?",supportSystem:"サポートチケットを作成する",configuredSecrets:"設定済みシークレット",noSecretsYet:"まだシークレットが設定されていません。最初のシークレットを追加して始めましょう。",secretAddedSuccessfully:"シークレットが正常に追加されました",errorCreatingSecret:"シークレットの作成エラー",errorFetchingSecrets:"シークレットの取得エラー"},w3={security:y3,secrets:k3},A3={mainPage:"メインページ",mainPageDesc:"アプリのデフォルトランディングページを設定",selectMainPage:"メインページを選択",appVisibility:"アプリの公開設定",controlAccess:"アプリケーションへのアクセスを制御します",platformBadge:"プラットフォームバッジ",platformBadgeDesc:"アプリ上の「Edit with Base44」バッジの表示・非表示を切り替えます。",onlyForPaying:"有料ユーザーのみ利用可能です。",upgradeNow:"今すぐアップグレード",visible:"表示",hidden:"非表示",hideEntityCreator:"エンティティ作成者を非表示",hideEntityCreatorDesc:"アプリのデータテーブルで各レコードの作成者を非表示にします。有効にすると、「作成者」フィールドがユーザーに表示されなくなります。",aiAgents:"AIエージェント",aiAgentsDesc:"Base44のAIエージェントインフラを使用してアプリにAIエージェントを構築",aiAgentsEnabled:"AIエージェントが有効です",aiAgentsEnabledDesc:"アプリでBase44のAIエージェントインフラが利用可能になりました。ユーザーのさまざまなタスクを支援し、質問に答え、アプリのデータと対話できるインテリジェントなエージェントを作成できます。チャットを使用してエージェントを構築・設定してください。",testData:"テストデータ",testDataDesc:"テストデータを使用して、本番データに影響を与えずに安全に変更をテストします。",onlyForBuilder:"Builderプラン以上でのみ利用可能です。",testDataVersionNote:"これを使用するには、アプリの新しいバージョンが必要です。メッセージを送信する、コードを調整する、ビジュアルエディタを使用するなど、何か変更を加えるだけで準備完了です。",cloneApp:"アプリを複製",cloneAppDesc:"このアプリの複製を作成",githubConnectionIssue:"GitHub接続の問題。このアプリを複製するにはGitHubを再接続してください。",cantCloneOldInfra:`古いインフラのアプリは複製できません。
アプリを複製するにはインフラを更新してください。`,createCopy:"コピーを作成",backendFunctions:"バックエンド関数",backendFunctionsDesc:"サーバーサイド機能を有効化 • 開発者向け推奨",activating:"有効化中...",activated:"有効化済み",activate:"有効化",upgradePlan:"プランをアップグレード",dangerZone:"危険な操作",dangerZoneDesc:"アプリに影響を与える不可逆的な操作",deleteApp:"アプリを削除",deleteAppDesc:"このアプリとすべてのデータを完全に削除します",adminControls:"管理者コントロール",adminControlsDesc:"アプリの可用性を管理",unblockApp:"アプリのブロックを解除",blockApp:"アプリをブロック",appLogo:"アプリロゴ",editLogo:"ロゴを編集",appDescription:"アプリの説明",saveDescription:"説明を保存",describeYourApp:"アプリを説明してください..."},S3={editAppLogo:"アプリロゴを編集",uploadLogo:"ロゴをアップロード",generateLogo:"ロゴを生成",dragAndDrop:"ドラッグ&ドロップまたはクリックしてアップロード",clickToUpload:"クリックしてアップロードまたはドラッグ&ドロップ",pngJpgLimit:"PNG、JPG 最大5MB",upload:"アップロード",whatShouldLook:"ロゴはどのような見た目にしますか?",generating:"生成中...",generateNew:"新しいロゴを生成",cancel:"キャンセル",save:"保存",logoPrompt:"ロゴ生成プロンプト",describeLogo:"ロゴの見た目を説明してください",uploading:"アップロード中...",selectImage:"画像を選択"},C3={removeListingConfirm:"このリスティングを削除してもよろしいですか?この操作によりアプリテンプレートから削除されます。",listingRemoved:"カタログからリスティングが正常に削除されました",appTemplates:"アプリテンプレート",listedFor:"${{price}}で掲載中 • {{sales}}件の販売 • {{status}}",manageTemplate:"テンプレートリスティングを管理",shareTemplate:"コミュニティとテンプレートを共有して、他のユーザーが発見して使用できるようにしましょう。",manageListing:"リスティングを管理",publishToTemplates:"アプリテンプレートに公開",seeOnTemplates:"アプリテンプレートで表示",removingListing:"削除中...",removeFromTemplates:"アプリテンプレートから削除",salesRevenue:"{{sales}}件の販売 • ${{revenue}}の収益",publishedToTemplates:"アプリテンプレートに公開済み",rejectedReason:"却下理由: {{reason}}"},D3={public:"公開",private:"非公開",workspace:"ワークスペース",requireLogin:"アクセスにログインを要求"},T3={notAvailableOnMobile:"{{feature}}の管理はモバイルでは利用できません",loginFromDesktop:"デスクトップブラウザからログインしてください",okay:"了解",domains:"ドメイン",security:"セキュリティ",code:"コード",apiFeature:"API",templates:"テンプレート"},E3={settings:A3,logo:S3,catalog:C3,visibility:D3,desktop:T3},P3={title:"ユーザー",subtitle:"アプリのユーザーとその役割を管理",inviteUser:"ユーザーを招待",schema:"スキーマ",searchByEmailOrName:"メールアドレスまたは名前で検索",pendingRequests:"承認待ちのリクエスト",userSchemaEditor:"ユーザースキーマエディター",editUser:"ユーザーを編集",loadingUsers:"ユーザーを読み込み中...",noUsersFound:"ユーザーが見つかりません",noPendingRequests:"承認待ちのリクエストはありません",noPendingRequestsDesc:"現在、承認待ちのアクセスリクエストはありません",inviteYourFirstUser:"最初のユーザーを招待しましょう",getStartedByInviting:"最初のユーザーをアプリに招待して始めましょう。",tryAdjustingSearch:"検索条件やフィルターを調整してお探しのものを見つけてください。",moreActions:"その他のアクション",resendInvitation:"招待を再送信",cancelInvite:"招待をキャンセル",editUserAction:"ユーザーを編集",changeOwner:"オーナーを変更",makeAppOwner:"アプリオーナーにする",resendOwnershipRequest:"オーナーシップリクエストを再送信",cancelOwnershipRequest:"オーナーシップリクエストをキャンセル",changeRole:"役割を変更",selectNewRole:"{{name}}の新しい役割を選択してください:",back:"戻る",manageInvitation:"招待を管理",approve:"承認",reject:"拒否",unknown:"不明",admin:"管理者",user:"ユーザー",allRoles:"すべての役割",name:"名前",owner:"オーナー",pendingOwnership:"オーナーシップ承認待ち",role:"役割",email:"メールアドレス",hasntLoggedIn:"{{role}}はまだアプリにログインしていません。",userRemovedSuccess:"ユーザーが正常に削除されました",failedCancelInvitation:"招待のキャンセルに失敗しました",userLoggedInSinceRefresh:"最後の更新以降にこのユーザーがログインしました。再試行する前にページを更新して最新のステータスを確認してください。",failedRemoveUser:"ユーザーの削除に失敗しました",subscriptionRequired:"サブスクリプションが必要です",onlyPayingCanAdmin:"有料ユーザーのみが他のユーザーを管理者にできます。",upgradeSubscription:"サブスクリプションをアップグレード",toContinue:"して続行してください。",userUpdatedSuccess:"ユーザーが正常に更新されました",userApprovedSuccess:"ユーザーが正常に承認されました",failedApproveRequest:"アクセスリクエストの承認に失敗しました",invitationRejected:"招待が拒否されました",failedDenyRequest:"アクセスリクエストの拒否に失敗しました",invitationResentSuccess:"招待が正常に再送信されました",failedResendInvitation:"招待の再送信に失敗しました",emailSent:"メール送信済み",ownershipTransferResent:"オーナーシップ移転の招待が再送信されました。",transferCancelled:"移転がキャンセルされました",ownershipTransferCancelled:"オーナーシップの移転がキャンセルされました。",failedCancelTransfer:"移転のキャンセルに失敗しました",cancelInviteAction:"招待をキャンセル",removeUser:"ユーザーを削除",failedApproveUser:"ユーザーの承認に失敗しました",success:"成功",error:"エラー",save:"保存",deleteConfirm:"このレコードを削除してもよろしいですか?",deleteFailed:"削除に失敗しました"},_3={users:P3},x3="ソーシャルコンテンツ",I3="SNSプロモーションプランとすぐに投稿できるコンテンツを作成。",R3="ソーシャルコンテンツを読み込み中",z3={title:"エラーが発生しました",description:"予期しないエラーが発生しました。ページを更新してください。",tryAgain:"再試行"},M3={emptyTitle:"SNSでアプリを宣伝しよう",emptyDescription:"アプリを分析し、そのまま投稿できるSNS投稿を作成します。",getStarted:"コンテンツプランを作成",learnMore:"詳しくはこちら",emptyCheck1:"達成したい目標を決める",emptyCheck2:"アプリに最適なチャネルを選ぶ",emptyCheck3:"すぐにシェアできるカスタム投稿アイデアを入手",analyzingBase:"アプリを分析中",analyzingDescription:"アプリの内容、対象ユーザー、プロモーション方法を学んでいます。",combiningBase:"コンテンツ戦略を作成中",combiningDescription:"メッセージを練り上げ、ローンチに最適なチャネルを選んでいます。",planStep1:"戦略を適用中",planStep2:"各プラットフォーム向けにコンテンツを調整中",planStep3:"投稿テキストを作成中",planStep4:"投稿用のビジュアルを作成中",stepOf:"ステップ {{current}} / {{total}}"},N3={letsGo:"始めましょう",next:"次へ",back:"戻る",creatingPlan:"コンテンツを作成中...",creatingPlanBase:"コンテンツを作成中",strategyReady:"提案された戦略"},F3={emptyTitle:"アプリを宣伝する準備はできていますか?",emptyDescription:"質問に答えてコンテンツをパーソナライズしましょう。",generateNewPlan:"新しいプランを作成",downloadContent:"コンテンツをダウンロード",downloading:"ダウンロード中...",startFresh:"最初からやり直す"},L3={copy:"コピー",copied:"コピー済み",copiedToClipboard:"クリップボードにコピーしました",failedToCopy:"コピーに失敗しました",cancel:"キャンセル",save:"保存",imageGenerationFailed:"画像の生成に失敗しました",retryImage:"もう一度試す",download:"画像をダウンロード",expandImage:"フルサイズで表示",close:"閉じる",regenerateImage:"画像を再生成",imageRefinePlaceholder:"何を変更しますか?",imageAlt:"投稿のビジュアル",share:"シェア",editPostTitle:"投稿を編集",descriptionLabel:"説明",imageLabel:"画像",improveWithAI:"AIで改善",refineInputPlaceholder:"何を変更しますか?",saveChanges:"変更を保存"},j3={handle:"あなたのID",displayName:"あなたの名前"},O3={reviewTitle:"提案された戦略を確認",goalLabel:"あなたの目標",approachLabel:"推奨アプローチ",strategyLabel:"戦略",showMore:"もっと見る",showLess:"閉じる",platformsLabel:"対象プラットフォーム",platformsDescription:"あなたのビジネスに最適なプラットフォームを事前に選択しました。",editSelection:"選択を編集",selectPlatforms:"プラットフォームを選択",maxPlatforms:"最大3つ",toneLabel:"あなたのトーンに合わせる(任意)",toneDescription:"SNSプロフィールのリンクを貼り付けると、投稿をあなたのトーンに合わせます。",generatePosts:"投稿を生成"},B3={resetTitle:"新しいプランを作成しますか?",resetDescription:"まったく新しいプランを作成します。現在の投稿と編集内容は置き換えられ、復元できません。",cancel:"キャンセル",resetConfirm:"新しいプランを作成",upgradeTitle:"インテグレーションクレジットが不足しています",upgradeDescription:"このアクションに必要なインテグレーションクレジットが足りません。プランをアップグレードしてください。",upgradeAction:"プランをアップグレード"},U3={sendFailed:"エラーが発生しました",sendFailedDescription:"AIに接続できませんでした。もう一度お試しください。",postUpdated:"投稿を更新しました",postUpdateFailed:"投稿の更新に失敗しました",postRefined:"投稿を改善しました",refineFailed:"投稿を改善できませんでした",refineFailedDescription:"AIが変更を適用できませんでした。もう一度お試しください。",imageGenerated:"画像が生成されました!",imageGenerateFailed:"画像を生成できませんでした",imageGenerateFailedDescription:"画像生成中に問題が発生しました。もう一度お試しください。",planReset:"コンテンツがリセットされました - 新しいスタートの準備ができました",planResetFailed:"リセットに失敗しました",insufficientCredits:"インテグレーションクレジットが不足しています",insufficientCreditsDescription:"インテグレーションクレジットが不足しています。プランをアップグレードしてクレジットを追加してください。",downloadPartial:"すべてのコンテンツをダウンロードできませんでした",downloadPartialDescription:"一部の画像のダウンロードに失敗しました。もう一度お試しください。"},q3={pageTitle:x3,pageSubtitle:I3,loadingBase:R3,errorBoundary:z3,wizard:M3,steps:N3,toolbox:F3,post:L3,mock:j3,strategy:O3,dialog:B3,toast:U3},V3={overview:"概要",users:"ユーザー",data:"データ",analytics:"アナリティクス",domains:"ドメイン",integrations:"連携",security:"セキュリティ",code:"コード",agents:"エージェント",automations:"オートメーション",logs:"ログ",api:"API",settings:"設定",appSettings:"アプリ設定",authentication:"認証",appTemplate:"アプリテンプレート",secrets:"シークレット",backToEditor:"エディターに戻る",codeFiles:"コードファイル",search:"検索...",clearSearch:"検索をクリア",virality:"ソーシャルコンテンツ"},$3="アプリデータを読み込み中...",W3="ゴミ箱: {{entityName}}",G3={issuesFound:"問題が見つかりました",inComponent:"{{componentName}}コンポーネント内:",resolving:"解決中...",resolveWithAI:"AIで解決",noCreditDeduction:"このアクションではクレジットは消費されません。"},H3={loadingCheckpoint:"チェックポイントコードを読み込み中...",errorFetchingFiles:"ファイルの取得エラー",backToPreview:"プレビューに戻る"},Y3={letsBuild:"アプリを作りましょう",tellMeCreate:"チャットで作りたいものを教えてください",loadingApp:"アプリを読み込み中",buildingPreview:"プレビューをビルド中",previewPreparing:"アプリのプレビューを準備しています。",mayTakeMoment:"しばらくお待ちください。",previewUnavailable:"プレビューが利用できません",previewCouldntLoad:"このバージョンのプレビューを読み込めませんでした。",retryBuild:"ビルドを再試行",buildingIdea:"アイデアをビルド中",didYouKnow:"ご存知ですか?",packagePending:"パッケージのインストール待ち",approvePackage:"続行するにはチャットでnpmパッケージのインストールを承認してください",loadingPreview:"プレビューを読み込み中…",refreshPreview:"プレビューを更新",capture:{verbDiscovering:"発見中",verbDesigning:"デザイン中",verbBuilding:"構築中",verbPolishing:"仕上げ中",verbUnveiling:"完成間近",verbStudying:"分析中",verbExtracting:"抽出中",verbReimagining:"再構築中",verbRefining:"調整中",stageAnalyzingDesign:"デザインを分析中",stageExtractingColorsAndFonts:"カラーとフォントを抽出中",stageBuildingPages:"ページを構築中",stageCreatingComponents:"コンポーネントを作成中",stageRefiningDetails:"ディテールを調整中",stageAlmostThere:"もうすぐ完成",stageStudyingDesignLanguage:"デザイン言語を分析中",stageExtractingColorsAndTypography:"カラーとタイポグラフィを抽出中",stageCraftingYourPages:"オリジナルページを作成中",stageApplyingDesignInspiration:"デザインインスピレーションを適用中",stageRefiningLookAndFeel:"外観を調整中",yourSite:"あなたのサイト",aSiteInspiredBy:"<site>{{siteName}}</site>にインスパイアされたサイト",progress:"進捗"},figma:{verbFetching:"取得中",verbExtracting:"抽出中",verbProcessing:"処理中",verbTransforming:"変換中",verbBuilding:"構築中",stageReadingDesign:"Figmaデザインを読み込み中",stageProcessingStructure:"デザイン構造を処理中",stageHandlingAssets:"アセットを処理しコードを生成中",stageApplyingAI:"AIレイアウト変換を適用中",stageCompiling:"アプリをコンパイルし最終化中",yourFigmaDesign:"あなたのFigmaデザイン",defaultName:"Figmaインポート"}},K3={canvas:"Canvas",dashboard:"ダッシュボード",preview:"プレビュー",exitSplitScreen:"分割画面モードを終了してプレビュー",versionHistory:"バージョン履歴",moreOptions:"その他のオプション",filesUsedInPage:"このページで使用されているファイル",seeAllFiles:"すべてのファイルを見る",activityMonitor:"アクティビティモニター",exportAsZip:"ZIPでプロジェクトをエクスポート",helpCenter:"ヘルプセンター",actAsUser:"ユーザーとして操作",viewAppNewTab:"現在のバージョンをプレビュー",refreshPreview:"プレビューを更新",refresh:"更新",switchToDesktop:"デスクトップ表示に切替",switchToMobile:"モバイル表示に切替",showChatPanel:"チャットパネルを表示",hideChatPanel:"チャットパネルを非表示",turnOffTestData:"テストデータをオフにする",turnOnTestData:"テストデータをオンにする",shareApp:"アプリを共有",shareInviteUsers:"ユーザーを共有・招待",moreActions:"その他のアクション",inviteCollaborators:"コラボレーターを招待",viewOnly:"閲覧のみ",viewOnlyAccess:"このアプリへの閲覧のみのアクセス権があります",upgradeInfraTooltip:"アプリを新しいインフラストラクチャに<br/>アップグレードする準備ができています。",appOverview:"アプリ概要",myApp:"マイアプリ",production:"本番",test:"テスト",gitHub:"GitHub",gitHubConnection:"GitHub接続",collaborators:"コラボレーター",collaboratorDisplayYou:"{{name}} (あなた)",collaboratorUnknown:"不明",addCollaborator:"コラボレーターを追加",saving:"保存中...",savedAgo:"{{time}}前に保存済み",unsavedChanges_one:"{{count}}件の未保存の変更",unsavedChanges_other:"{{count}}件の未保存の変更",theme:"テーマ",themeTitle:"テーマ",themeDescription:"これらのカラーとフォントがテーマを構成します。変更はすべての場所に適用されます。",themeColors:"カラー",themeFonts:"フォント",noThemeColors:"テーマの色が見つかりません",themeSaveChanges:"保存して適用",themeCancel:"キャンセル",colorPickerCustom:"カスタム",colorPickerPalette:"パレット",fontPickerSearch:"フォントを検索...",fontPickerBrandFonts:"ブランドフォント",fontPickerAllFonts:"すべてのフォント",fontPickerNoResults:"フォントが見つかりません",fontPickerSelectFont:"フォントを選択"},Z3={desktop:"デスクトップ",tablet:"タブレット",mobile:"モバイル",isAvailable:"利用可能",getDomain:"ドメインを取得",connectDomain:"カスタムドメインを接続",undo:"元に戻す",redo:"やり直す",fullscreen:"全画面",breakpoints:"ブレークポイント",splitView:"分割表示",exitSplitView:"分割表示を終了",exitPreview:"プレビューを終了"},J3={upgrade:"アップグレード",upgradePlan:"プランをアップグレード",percentOff:"{{percent}}%オフ",limitedTimeOffer:"期間限定ウェルカムオファー",getDiscountOff:"年間プランが{{discount}}オフ"},Q3={viewingVersionHistory:"バージョン履歴を表示中",buildInProgress:"ビルド中...",retryBuildToEnable:"この表示を有効にするにはビルドを再試行",viewApp:"アプリを見る",viewCode:"コードを見る",restoring:"復元中...",restoreThisVersion:"このバージョンを復元",publishing:"公開中...",publishThisVersion:"このバージョンを公開",exit:"終了",back:"戻る",publish:"公開",restore:"復元",latest:"最新"},X3={actAs:"なりすまし",actingAs:"操作中のユーザー:",searchUser:"ユーザーを検索",anonymousGuest:"匿名ゲスト",you:"あなた",warningChanges:"行った変更はユーザーデータに反映されます。",carefulChanges:"- 注意: ここでの変更はこのユーザーに影響します",exitMode:"モードを終了",noUsersYet:"まだユーザーがいません",addOrInvite:"ユーザーを追加・招待して、アプリがどのように動作するか確認しましょう",invite:"招待",usersCount:"ユーザー ({{count}})",noMatchingUsers:"一致するユーザーが見つかりません",trySearching:"名前またはロールで検索してください"},eH={pressEnterNavigate:"Enterキーで移動"},tH={publishApp:"アプリを公開",publish:"公開",publishing:"公開中...",disabledUntilUpdate:"インフラストラクチャの更新が完了するまで公開は無効です。",currentlyDisabled:"現在公開は無効です",codeNotGenerated:"アプリの準備ができると公開が有効になります",visualEditsSaveWarning:"一部のビジュアル編集は公開前に保存できませんでした",republishApp:"アプリを再公開",lastPublished:"最終公開 {{time}}"},aH={whatToChange:"何を変更しますか?",whatToDiscuss:"何について話し合いますか?",saveChangesBeforeTyping:"入力する前に変更を保存してください",exitEditModeToContinue:"入力する前に編集モードを終了してください",fetchingFromGitHub:"GitHubから取得中...",viewOnlyAccess:"閲覧のみのアクセス権があります",zeroCreditsRemaining:"残りクレジット0",visualEdit:"編集",visualEditDisabledAgentRunning:"エージェントが実行中はビジュアル編集を使用できません",edit:"編集",discuss:"ディスカス",ask:"要素を編集",editData:"データを編集",discussMode:"ディスカスモード",discussModeDescription:"コード変更なしでAIとチャットできます。リクエストごとに0.3クレジットを使用します。",thought:"思考時間",thoughtWithDuration:"思考時間 <duration>{{duration}}</duration>",planningNextSteps:"次のステップを計画中...",signUpToStartBuilding:"新規登録してビルドを始めましょう...",suggestions:"提案",latestMessages:"最新のメッセージ",aiModel:"AIモデル",aiControls:"AIコントロール",uploadFile:"コンピューターからアップロード",uploadFileMobile:"デバイスからアップロード",addFromGoogleDrive:"Google Driveからアップロード",connectorRequestFailed:"コネクターリクエストの送信に失敗しました。もう一度お試しください。",designingYourWebsite:"ウェブサイトをデザイン中...",speechToText:"音声入力",processingAudio:"音声を処理中...",clickToStopRecording:"クリックして録音を停止"},nH={dialogTitle:"ビルダーのコマンドパレット",dialogDescription:"ビルダー内のページ、ファイル、エンティティ、ビュー、クイックアクションを検索します。",searchPlaceholder:"ページ、ファイル、エンティティ、ビュー、クイックアクションを検索...",emptyTitle:"一致するコマンドがありません",emptyDescription:"ページ名、ファイルパス、エンティティ名、エディタービュー、またはテストデータのようなクイックアクションをお試しください。",homeSubtitle:"ホーム",navigationSubtitle:"ダッシュボード",viewSubtitle:"エディタービュー",entityDataSubtitle:"データ",entityCodeSubtitle:"コード",integrationsSubtitle:"連携",domainSubtitle:"カスタムドメイン",collaboratorsSubtitle:"コラボレーター",helpSubtitle:"ヘルプセンター",publishSubtitle:"デプロイと共有",publishNowSubtitle:"最新の変更を公開",versionHistorySubtitle:"バージョン履歴",securitySubtitle:"セキュリティ",testDataSubtitle:"テストデータに切り替え",productionDataSubtitle:"本番データに切り替え",backToWorkspace:"ワークスペースに戻る",switchToPreview:"プレビューに切り替え",switchToDashboard:"ダッシュボードに切り替え",switchToCode:"コードに切り替え",switchToCanvas:"キャンバスに切り替え",openEntityData:"{{entityName}} データを開く",openEntityCode:"{{entityName}} コードを開く",addIntegration:"連携を追加",addDomain:"ドメインを追加",inviteCollaborator:"コラボレーターを招待",getHelp:"ヘルプを開く",publishMyApp:"アプリを公開",publishNow:"今すぐ公開",versionHistory:"バージョン履歴を表示",startSecurityCheck:"セキュリティチェックを開始",turnOnTestData:"テストデータを有効にする",turnOffTestData:"テストデータを無効にする",groups:{navigate:"ナビゲート",views:"ビュー",files:"ファイル",entities:"エンティティ",actions:"アクション"}},iH="不明なビュー",rH="アプリエディター",oH="ベータ",sH={title:"コラボレーターを招待",subtitle:"このアプリを編集するアクセス権を付与します。",emailPlaceholder:"メールアドレスをカンマ区切りで入力",removeIneligible:"対象外のユーザーを削除",appCollaborators:"アプリのコラボレーター",you:"(あなた)",owner:"オーナー",moreActions:"その他のアクション",makeAppOwner:"アプリオーナーにする",removeCollaborator:"コラボレーターを削除",resendOwnershipRequest:"所有権リクエストを再送信",getOwnershipLink:"所有権リンクを取得",cancelOwnershipRequest:"所有権リクエストをキャンセル",ownershipTooltip:"新しいオーナーは招待メールから移行を承認する必要があります。招待は7日で有効期限が切れます。移行完了時にメールが届きます。",removeTitle:"このコラボレーターをアプリから削除しますか?",removeDescription:"このコラボレーターを削除すると、エディターへのアクセスが直ちに取り消され、アプリへの変更ができなくなります。",removeAccessOnly:"コラボレーターアクセスのみ削除",removeAccessOnlyDesc:"ユーザーはユーザーリストに表示されたままになります",removeEntirely:"アプリから完全に削除",removeEntirelyDesc:"ユーザーはユーザーリストからも削除されます",cancel:"キャンセル",enterEmail:"メールアドレスを入力してください",invalidEmail:"無効なメール",invalidEmails:"1つ以上のメールアドレスが無効です。確認して再試行してください。",cannotInviteOwner:"このアプリのオーナーを招待することはできません",alreadyExists:"コラボレーターは既に存在します。",alreadyExist:"コラボレーターは既に存在します。",invitationSent:"コラボレーター招待が正常に送信されました",invitationsSent:"{{count}}件のコラボレーター招待が正常に送信されました",removedFromApp:"コラボレーターをアプリから削除しました",accessRemoved:"コラボレーターアクセスを削除しました",ownershipResent:"所有権リクエストを再送信しました",ownershipLinkCopied:"所有権リンクをクリップボードにコピーしました",ownershipCancelled:"所有権リクエストをキャンセルしました",failedToSendInvitation:"招待の送信に失敗しました",failedToRemoveCollaborator:"コラボレーターの削除に失敗しました",failedToResendOwnership:"所有権リクエストの再送信に失敗しました",failedToGetOwnershipLink:"所有権リンクの取得に失敗しました",failedToCancelOwnership:"所有権リクエストのキャンセルに失敗しました",creditsWarning:"すべてのコラボレーターはワークスペースのクレジットを消費します。",notWorkspaceMember:"ワークスペースメンバーではありません",notMemberDescription_one:"<bold>{{emails}}</bold> はこのワークスペースのメンバーではありません。",notMemberDescription_other:"<bold>{{emails}}</bold> はこのワークスペースのメンバーではありません(複数)。",addAsGuest:"ゲストとして追加",addAsGuestDescription:"このアプリのみにアクセスできるゲストとして追加されます。",addToWorkspace:"ワークスペースに追加",addToWorkspaceDescription:"ワークスペース設定に移動して、正式なワークスペースメンバーとして追加します。",guestBadge:"ゲスト",emailListOverflow:"{{first}} 他{{count}}名",pendingInvitationWarning_one:"このユーザーはすでにワークスペースメンバーとしての招待が保留中です。ゲストとして追加すると、その招待は置き換えられます。",pendingInvitationWarning_other:"これらのユーザーのうち{{count}}人はすでにワークスペースメンバーとしての招待が保留中です。ゲストとして追加すると、それらの招待は置き換えられます。"},lH={title:"連携クレジットを使い切りました",description:"これにより、アプリのユーザーが特定のアクションを実行できなくなる可能性があります。",upgradeLink:"プランをアップグレードしてクレジットを追加",dismiss:"バナーを閉じる"},cH={gathering:"収集中",gathered:"収集済み",connectorsInformation:"コネクター情報",write:"書き込み",writing:"書き込み中",wrote:"書き込み完了",generatingImage:"画像生成中",generatedImage:"画像生成完了",reading:"読み込み中",read:"読み込み完了",deleting:"削除中",deleted:"削除完了",editing:"編集中",edited:"編集完了",edit:"編集",creating:"作成中",created:"作成完了",updating:"更新中",updated:"更新完了",update:"更新",delete:"削除",importing:"インポート中",imported:"インポート完了",import:"インポート",searching:"検索中",searched:"検索完了",searchingForBugs:"バグを検索中...",searchedBugs:"バグ検索完了",install:"インストール",installing:"インストール中",installed:"インストール完了",analyzing:"分析中",running:"実行中",failed:"失敗",run:"実行",settingSecrets:"シークレット設定中",setSecret:"シークレット設定完了",setSecrets:"シークレットを設定",testing:"テスト中",checking:"確認中",tested:"テスト完了",checked:"確認完了",fetching:"取得中",fetched:"取得完了",waitingForApproval:"承認待ち...",searchedDocsFor:"ドキュメント検索完了:",searchingDocsFor:"ドキュメント検索中:",searchedFor:"検索完了:",searchingFor:"検索中:",foundResult_one:"{{count}}件の結果が見つかりました",foundResult_other:"{{count}}件の結果が見つかりました",toggling:"切り替え中",toggled:"切り替え完了",listing:"一覧取得中",listed:"一覧取得完了",approvalRequired:"承認が必要です",changesPending_one:"{{count}}件の変更が保留中",changesPending_other:"{{count}}件の変更が保留中",approve:"承認",approving:"承認中...",reject:"拒否",rejected:"拒否されました",rejecting:"拒否中...",approveCount:"承認 ({{count}})",rejectAll:"すべて拒否",previousApproval:"この承認リクエストは以前のメッセージからのものです",query:"クエリ:",updateFallback:"{{entityName}}を更新",updateFallbackSingle:"{{entityName}}の{{fieldName}}を{{fieldValue}}に設定",updateFallbackMultiple:"{{entityName}}の{{fieldName}}を{{fieldValue}}に設定 (+{{extraFields}}件)",deleteFallback:"{{entityName}}のレコードを削除",updateWith:"更新内容:",importComplete:"インポート完了",importingData:"データをインポート中...",percentComplete:"{{percent}}% 完了",recordsProgress:"{{current}} / {{total}} レコード",preparing:"準備中...",otherToolsAfterApproval:"承認後に他のツールが実行されます",loadingConfig:"設定を読み込み中...",fetchConfigError:"設定の読み込みに失敗しました。",retry:"再試行",countPackages:"{{num}}個のパッケージ:",updateAllEntityRecords:"<entity>{{entityName}}</entity>の全レコードを更新",updateEntityRecordsMatching:"<entity>{{entityName}}</entity>の条件に一致するレコードを更新:",deleteAllEntityRecords:"<entity>{{entityName}}</entity>の全レコードを削除",deleteEntityRecordsMatching:"<entity>{{entityName}}</entity>の条件に一致するレコードを削除:",importDataFromInto:"<file>{{fileName}}</file>から<entity>{{entityName}}</entity>にデータをインポート",importDataFromSheetInto:"<file>{{fileName}}</file>(シート:<sheet>{{sheetName}}</sheet>)から<entity>{{entityName}}</entity>にデータをインポート",countRecordsIntoEntity:"{{num}}件のレコードを<entity>{{entityName}}</entity>に",dataIntoEntity:"データを<entity>{{entityName}}</entity>に",countRecordsEntity:"{{num}}件のレコード <entity>{{entityName}}</entity>",allEntityRecords:"<entity>{{entityName}}</entity>の全レコード",entityRecords:"<entity>{{entityName}}</entity> レコード",grepSearching:'"{{pattern}}"を検索中...',grepSearchComplete:"検索完了",grepFoundResults_one:"{{count}}件の結果が見つかりました",grepFoundResults_other:"{{count}}件の結果が見つかりました",grepInFiles_one:"{{count}}ファイル内",grepInFiles_other:"{{count}}ファイル内"},dH={chatOnlyDescription:"この設定はチャットからのみアクセスできます。",description:"アプリのデフォルトランディングページを設定",chatHint:"変更するにはチャットで入力してください:",prompt:"メインページを{PageName}に変更して",placeholder:"メインページ",copiedToast:"クリップボードにコピーしました"},uH={confirmMessage:"このアプリの公開を停止してもよろしいですか?再度公開するまで、ユーザーはアクセスできなくなります。",successTitle:"成功",successDescription:"アプリの公開が正常に停止されました",errorTitle:"エラー",errorDescription:"アプリの公開停止に失敗しました",description:"アプリをオフラインにします。いつでも再公開できます。",unpublishing:"公開停止中...",button:"公開停止"},pH={title:"アプリを削除",description:"この操作は<strong>元に戻せません</strong>。アプリ <strong>{{appSlug}}</strong> とそのすべてのデータが完全に削除されます。",descriptionSimple:"<strong>{{displayName}}</strong> は完全に削除されます。<br/>すべてのアプリデータ、履歴、ユーザー、ドメイン、連携が完全に消去されます。<danger>この操作は元に戻せません。</danger>",confirmLabel:"確認のため、以下に <strong>{{appSlug}}</strong> と入力してください:",cancel:"キャンセル",deleteButton:"このアプリを削除",deleting:"削除中...",successTitle:"成功",successDescription:"アプリが正常に削除されました",errorTitle:"エラー",errorDescription:"アプリの削除に失敗しました"},mH={using:"{{name}}スキルを使用中",failed:"{{name}}スキルの使用に失敗しました",used:"{{name}}スキルを使用しました"},gH={thinkingIdeas:"{{agentName}}がアイデアを考えています...",ideasFrom:"{{agentName}}からのアイデア"},hH="自動化を作成中...",fH="自動化の作成に失敗しました",vH="自動化",bH=JSON.parse(`{"sidebar":{"chat":"チャット","continueOnWhatsApp":"WhatsAppで続ける","continueOnTelegram":"Telegramで続ける","continueOnLine":"LINEで続ける","continueOnIMessage":"iMessageで続ける","imessage":"iMessage","brain":"ブレイン","integrations":"インテグレーション","knowledge":"ナレッジ","memory":"記憶","payments":"決済","tasks":"タスク","artifacts":"アーティファクト","settings":"設定","secretsAndKeys":"シークレットとキー","security":"セキュリティ","credits":"クレジット","whatsapp":"WhatsApp","telegram":"Telegram","line":"LINE","files":"ファイル","uploadFile":"ファイルをアップロード","refreshFiles":"ファイルを更新","searchFiles":"ファイルを検索...","filesFolders":"{{fileCount}}ファイル · {{folderCount}}フォルダ","toolsPermission":"ツール権限","apiDocs":"API","channels":"チャネル","feedback":"フィードバックを送る","agentSettings":"エージェント設定","dangerZone":"危険ゾーン"},"filePanel":{"source":"ソース","preview":"プレビュー","save":"保存","saveAndRedeploy":"保存して再デプロイ","fileSaved":"ファイルを保存しました","functionRedeployed":"関数を保存し再デプロイしました","failedToSaveFile":"ファイルの保存に失敗しました","failedToRedeploy":"関数の再デプロイに失敗しました","failedToReadFile":"ファイルの読み込みに失敗しました"},"modelPicker":{"automatic":"自動","automaticDescription":"各リクエストに最適なAIモデルを自動選択","manual":"手動","manualDescription":"特定のAIモデルを選択します。","manualCreditNote":"モデルによってクレジット使用量が異なる場合があります","manualDisabledDescription":"特定のAIモデルを選択({{models}})。Builderプラン以上で利用可能。","builderPlus":"Builder+","upgradeToSelect":"AIモデルを選択するにはアップグレードしてください"},"chat":{"loadingAgent":"エージェントを読み込み中...","agentNotFound":"エージェントが見つかりません","waitingForAuth":"認証トークンを待機中...","anErrorOccurred":"エラーが発生しました","aiModelUpdated":"AIモデルを更新しました","failedToUpdateModel":"AIモデルの更新に失敗しました","hideSidebar":"サイドバーを非表示","showSidebar":"サイドバーを表示","darkMode":"ダークモードに切り替え","lightMode":"ライトモードに切り替え","dropFileHere":"ここにファイルをドロップ","imagesDocsAndMore":"画像、ドキュメントなど","loadPreviousMessages":"以前のメッセージを読み込む","somethingWentWrong":"問題が発生しました","retry":"再試行","chatFromApp":"お使いのアプリからチャットできます","attachFile":"ファイルを添付する","typeMessage":"メッセージを入力...","toggleLiveBrowser":"ライブブラウザを切り替え","noActiveBrowser":"アクティブなブラウザセッションがありません","stopGenerating":"生成を停止","suggestions":"提案","liveBrowser":"ライブブラウザ","fullScreen":"全画面","exitFullScreen":"全画面を終了","closeBrowser":"ブラウザを閉じる","live":"ライブ","expandBrowser":"ブラウザを展開","failedToStartConversation":"会話を開始できませんでした — 手動でメッセージを送信してみてください。","failedToLoadConversation":"会話の読み込みに失敗しました","failedToUploadFile":"ファイルのアップロードに失敗しました","tooManyFiles":"1メッセージにつき最大{{max}}ファイルまで添付できます","failedToSendMessage":"メッセージの送信に失敗しました","failedToStopAgent":"エージェントの停止に失敗しました","queued":"待機中 ({{count}})","queueFull":"メッセージの待機がいっぱいです。エージェントの処理完了をお待ちください。","failedToEditQueued":"待機中のメッセージの編集に失敗しました","failedToDeleteQueued":"待機中のメッセージの削除に失敗しました","deleteMessage":"メッセージを削除","failedToDeleteMessage":"メッセージの削除に失敗しました","today":"今日","yesterday":"昨日","thinking":"考え中...","you":"あなた","failedToSubmitToolInput":"ツール入力の送信に失敗しました","whatsInImage":"この画像には何がありますか?","heresAFile":"ファイルです: {{fileName}}","heresAFileAndMore":"ファイルです: {{fileName}} (他{{count}}件)","heresFiles":"{{count}}個のファイルです","whatsInTheseImages":"これらの{{count}}枚の画像には何がありますか?","creditsRunningLow":"クレジットが残りわずかです。","purchaseMoreCredits":"クレジットを追加購入 →","saleDiscount":"対象の年間プランを{{discount}}オフで購入","limitedTimeOffer":"期間限定オファー","upgradePlan":"プランをアップグレード","reply":"返信","copyMessage":"コピー","copied":"コピーしました"},"files":{"uploaded":"{{fileName}}をアップロードしました","failedToUpload":"{{fileName}}のアップロードに失敗しました","failedToRead":"{{fileName}}の読み込みに失敗しました"},"dashboard":{"title":"ダッシュボード","subtitle":"エージェントの概要。","created":"{{date}}に作成","memories":"記憶","filesLabel":"ファイル","folders":"フォルダ","agentMemory":"エージェントの記憶","noMemoriesYet":"まだ記憶がありません","noMemoriesDescription":"チャットを通じてエージェントが学習した情報がここに保存されます。"},"creditsTab":{"title":"クレジット","description":"クレジット使用量と請求の詳細がここに表示されます。"},"settingsTab":{"settings":"設定","secrets":"シークレット","security":"セキュリティ","creditCard":"クレジットカード"},"agentSettingsTab":{"title":"エージェント設定","subtitle":"エージェントの動作を設定します。","cloneTitle":"エージェントを複製","cloneDescription":"すべての設定、エンティティ、バックエンド関数を含むこのエージェントのコピーを作成します。","cloneButton":"エージェントを複製"},"clonePage":{"back":"戻る","title":"エージェントを複製","subtitle":"複製するエージェントに含める内容を選択してください。","optionChat":"チャット履歴","optionChatDesc":"ビルダーの会話履歴を新しいエージェントにコピーします。","optionSkills":"スキル","optionSkillsDesc":"バックエンド関数、インテグレーション、ツール設定をコピーします。","optionTasks":"タスク","optionTasksDesc":"自動化をコピーします(スケジュール、エンティティトリガー、コネクタベース)。","optionSecrets":"APIキー","optionSecretsDesc":"保存されたシークレットとAPIキーを新しいエージェントにコピーします。","cloneButton":"エージェントを複製","cloning":"複製中...","cloneError":"エージェントの複製に失敗しました"},"securityTab":{"title":"セキュリティ","subtitle":"セキュリティスキャンを実行して潜在的な脆弱性を検出します。","scanning":"スキャン中...","runScan":"セキュリティスキャンを実行","noIssues":"問題は見つかりませんでした","agentSecure":"エージェントは安全です。","severityCount":"{{severity}}の重大度","idleMessage":"「セキュリティスキャンを実行」をクリックしてエージェントの脆弱性を確認してください。","scanFailed":"セキュリティスキャンに失敗しました"},"secretsTab":{"title":"シークレット","subtitle":"エージェントのバックエンド関数で利用可能な環境変数。","noSecrets":"まだシークレットがありません","addSecret":"シークレットを追加","secretNamePlaceholder":"SECRET_NAME","valuePlaceholder":"値","add":"追加","secretSaved":"シークレット{{name}}を保存しました","failedToSave":"シークレットの保存に失敗しました","secretDeleted":"シークレット{{name}}を削除しました","failedToDelete":"シークレットの削除に失敗しました","failedToLoad":"シークレットの読み込みに失敗しました"},"billingTab":{"title":"エージェントのクレジットカード","subtitle":"エージェントの使用量と請求。","monthlyUsage":"月間使用量","extraCredits":"+{{count}}の追加クレジットが利用可能","pastDue":"支払い期限超過","pastDueDescription":"サービスの中断を避けるため、支払い方法を更新してください。","goodStanding":"アカウントは正常です","currentPeriod":"現在の期間:","nextPeriod":"次の期間開始:","manageBilling":"請求管理","failedToLoad":"使用量データの読み込みに失敗しました","unableToLoad":"請求データを読み込めません"},"apiDocsTab":{"title":"API リファレンス","subtitle":"REST API を使ってプログラムからエージェントとやり取りできます。会話の作成、メッセージ送信、メモリ管理を任意のアプリケーションから行えます。","baseUrl":"ベース URL","authentication":"認証","authDescription":"リクエストヘッダーに API キーを含めてください:","authAlternative":"または、クエリパラメータとして渡すこともできます:","quickStart":"クイックスタート","quickStartDescription":"API 経由でエージェントと会話を始めるには、次の手順に従ってください:","step1CreateConversation":"1. 会話を作成","step2SendMessage":"2. メッセージを送信","step3ListConversations":"3. 会話一覧を取得","endpoints":"API エンドポイント","requestBody":"リクエストボディ","listConversationsDesc":"認証済みユーザーのすべての会話を一覧表示します","listConversationsNote":"会話は作成日時順で返されます。クエリパラメータでページネーションをサポートします。","getConversationDesc":"すべてのメッセージを含む特定の会話を取得します","createConversationDesc":"エージェントとの新しい会話を作成します","sendMessageDesc":"メッセージを送信してエージェントの応答を取得します","sendMessageNote":"エージェントがメッセージを処理して応答を返します。メッセージの最大長は 8000 文字です。","deleteMessageDesc":"会話から特定のメッセージを削除します","listMemoryDesc":"エージェントのメモリアイテムを一覧表示します","deleteMemoryDesc":"特定のメモリアイテムを削除します","responseFormat":"レスポンス形式","responseFormatDescription":"会話はメッセージ配列を含む JSON オブジェクトとして返されます:","rateLimits":"レート制限","rateLimitsDescription":"API リクエストにはユーザーごとのレート制限があります。上限を超えると 429 ステータスコードが返されます。少し待ってから再試行してください。","errorCodes":"エラーコード","error401":"未認証 - API キーが無効または指定されていません","error403":"アクセス禁止 - このリソースにアクセスできません","error400":"不正なリクエスト - 無効な入力(例: メッセージが長すぎる)","error404":"見つかりません - 会話またはリソースが存在しません","copy":"コピー"},"toolsPermissionTab":{"title":"ツール権限","subtitle":"特定の操作を確認なしで実行できるようにします。","warning":"有効にすると、エージェントはこれらの操作を自動的に実行します。データセキュリティルールは引き続き適用されます。","updateData":"データの更新","updateDataDescription":"エージェントが確認なしでレコードを更新できるようにします。","deleteData":"データの削除","deleteDataDescription":"エージェントが確認なしでレコードを削除できるようにします。","failedToSave":"設定の保存に失敗しました","effectNote":"設定はすぐに反映されます。AIの応答が常にルールに完全に従うとは限りません。","connectorRulesTitle":"コネクタールール","connectorRulesSubtitle":"各サービスでエージェントができることとできないことを指定します。","connectorRulePlaceholder":"例: メールの閲覧のみ、送信や削除は禁止","loadingConnectors":"コネクターを読み込み中...","saveRules":"保存","rulesSaved":"コネクタールールを保存しました"},"knowledgeTab":{"noFiles":"まだナレッジファイルがありません","noFilesDescription":"エージェントとチャットを始めて、アイデンティティとナレッジを構築しましょう","identity":"アイデンティティ"},"memoryTab":{"title":"記憶","subtitle":"エージェントがあなたと会話について知っていること。","emptyTitle":"まだ何もありません","emptyDescription":"チャットするにつれて、エージェントは自動的に記憶を構築します — 最近のメッセージのコンテキスト、セッションの要約、重要な事実。","addEntry":"追加","saveEntry":"保存","cancelEdit":"キャンセル","titlePlaceholder":"エージェントに何を覚えさせますか?","contentPlaceholder":"詳細を追加(任意)","saved":"記憶を更新しました","failedToSave":"更新に失敗しました","factsHeading":"保存された事実","factsDescription":"すべての会話で保持される重要な事実。","noMemories":"保存された事実はありません","noMemoriesDescription":"重要な事実は会話から自動的に抽出されるか、手動で追加できます。","shortTermHeading":"短期記憶","shortTermDescription":"現在の会話のコンテキスト、約10メッセージごとに更新。","shortTermUpdated":"更新済み","shortTermDeleted":"削除済み","deleteShortTermConfirm":"このコンテキストを削除しますか?エージェントはこの会話履歴の一部を失います。","longTermHeading":"日次セッション","longTermDescription":"各日の会話の要約。","longTermDeleted":"削除済み","deleteLongTermConfirm":"この日のセッションを削除しますか?エージェントはこの会話履歴にアクセスできなくなります。","messages":"{{count}}件","emptyTranscript":"空のトランスクリプト","noText":"(テキストなし)","usedTools":"使用: {{tools}}"},"telegramTab":{"title":"Telegram","connected":"Telegramボットが接続され、稼働中です。","notConnected":"Telegramボットを接続して、ユーザーがエージェントとチャットできるようにします。","verifyBanner":"下のボタンをクリックして、Telegramで本人確認を行ってください。これにより、このボットを使用できるのはあなただけになります。","verifyOnTelegram":"Telegramで確認","connectedBot":"接続済みボット","botName":"ボット名","username":"ユーザー名","status":"ステータス","active":"アクティブ","openTelegram":"Telegramで開く","scanQr":"スマートフォンでQRコードをスキャンして、Telegramでボットを開きます。","disconnect":"切断","disconnectConfirm":"このTelegramボットを切断しますか?ユーザーは応答を受け取れなくなります。","disconnected":"Telegramボットを切断しました","failedToDisconnect":"切断に失敗しました","howItWorks":"仕組み","step1":"ユーザーがTelegramでボットを開き、/startを送信して開始します。","step2":"すべてのテキストメッセージがエージェントによって処理されます。","step3":"エージェントの応答がTelegramチャットに送信されます。"},"telegramSetup":{"connectTitle":"Telegramを接続","connectDescription":"ワンクリックでエージェント用のTelegramボットを作成します。自動的に設定され、すぐにチャットできるようになります。","autoCreateButton":"Telegramボットを接続","autoWaitingTitle":"ボット作成を待っています...","autoWaitingDescription":"Telegramでボットを確認してください。その後、自動的にすべて設定します。","autoTimeoutError":"ボット作成がタイムアウトしました。再試行するか、手動セットアップをご利用ください。","autoExpiredError":"ボットの作成に失敗しました。もう一度お試しください。","cancel":"キャンセル","alreadyHaveBot":"すでにボットトークンを持っています","pasteTokenTitle":"トークンで接続","manualInstructions":"Telegramの@BotFatherでボットを作成し、トークンをここに貼り付けてください。","tokenPlaceholder":"ボットトークンを貼り付け...","tokenExtracted":"トークンを抽出しました","tokenNotFound":"有効なトークンが見つかりません","connectBot":"接続","connecting":"接続中...","successTitle":"ボットが接続されました!","openTelegram":"Telegramで開く","failedToConnect":"ボットの接続に失敗しました"},"whatsappTab":{"title":"WhatsApp","subtitle":"WhatsAppを通じてユーザーがエージェントとチャットできるようにします。","connectTitle":"WhatsAppを接続","connectDescription":"下のボタンをクリックしてWhatsAppを開き、接続を有効にします。エージェントのWhatsApp番号に送信するアクティベーションコードが届きます。","openWhatsApp":"WhatsAppを開く","scanQr":"スマートフォンでQRコードをスキャンして、WhatsAppで会話を開きます。","howItWorks":"仕組み","step1":"「WhatsAppを開く」をクリック — アクティベーションコードが入力済みの状態でWhatsAppが開きます。","step2":"アクティベーションコードを送信して接続を開始します。","step3":"接続後、WhatsAppで送信したすべてのメッセージがエージェントによって処理されます。"},"lineTab":{"title":"LINE","subtitle":"LINEでエージェントとチャットしましょう。","connectTitle":"LINEで接続","connectDescription":"アクティベーションコードを生成し、スマホでQRコードを読み取ってボットを追加して、コードを送信してください。","generateCode":"アクティベーションコードを生成","scanQrLabel":"LINEでスキャン","scanQrHint":"スマホのLINEでこのQRコードを読み取ってボットを友だち追加してください。","activationCodeLabel":"アクティベーションコード","sendCodeHint":"ボットを追加した後、このコードをメッセージとして送信してください。","generating":"生成中...","regenerate":"新しいコードを生成","codeCopied":"コードをコピーしました!","codeExpiry":"30分で有効期限切れ","failedToGenerate":"LINEへの接続に失敗しました","howItWorks":"仕組み","step1":"「アクティベーションコードを生成」をクリックしてコードとQRを取得します。","step2":"スマホのLINEでQRコードを読み取ってボットを友だち追加します。","step3":"アクティベーションコードをボットにメッセージとして送信して接続します。"},"imessageTab":{"title":"iMessage","subtitle":"Chat with your agent via iMessage.","connectTitle":"Connect via iMessage","connectDescription":"Click the button below and iMessage will open with the activation code ready to send.","connectButton":"Connect via iMessage","manualFallback":"Didn't open automatically? Send the code manually:","phoneNumberLabel":"Text this number","activationCodeLabel":"Activation code","codeCopied":"Code copied!","codeExpiry":"Expires in 30 minutes","failedToGenerate":"Failed to generate iMessage code","capacityTitle":"iMessage temporarily unavailable","capacityMessage":"iMessage is experiencing unusually high demand right now. Please check back in a few hours — we're working on expanding capacity.","howItWorks":"How it works","step1":"Click \\"Connect via iMessage\\" — your Messages app will open with the activation code pre-filled.","step2":"Send the message and your agent is connected. That's it!"},"pluginsTab":{"builtInServices":"組み込みサービス","builtInSubtitle":"エージェントにデフォルトで利用可能なプラットフォーム機能。","base44Backend":"Base44 Backend","alwaysActive":"常時アクティブ","base44Description":"データベース、関数、ファイルストレージ、オートメーション","dataEntities":"データとエンティティ","dataEntitiesTool1":"エンティティレコードの作成、読み取り、更新、削除、フィルタリング","dataEntitiesTool2":"行レベルセキュリティ","backendFunctions":"バックエンド関数","backendFunctionsTool1":"サーバーレスDeno関数のデプロイと呼び出し","backendFunctionsTool2":"環境シークレットの管理","fileStorage":"ファイルストレージ","fileStorageTool1":"パブリック・プライベートファイルのアップロード","fileStorageTool2":"署名付きダウンロードURLの作成","automationsLabel":"オートメーション","automationsTool1":"CRONジョブのスケジュール","automationsTool2":"エンティティ変更トリガー","connectors":"コネクター","connectorsSubtitle":"すでに使っているアプリやサービスにエージェントを接続します。","addConnector":"コネクターを追加","close":"閉じる","noConnectors":"コネクターがありません。外部サービスへのアクセスを追加してください。","connected":"接続済み","available":"利用可能 ({{count}})","allConnected":"すべてのコネクターが接続済みです。","revoked":"取り消し済み","disconnectedStatus":"切断済み","active":"アクティブ","switchAccount":"アカウントを切り替え","reconnect":"再接続","disconnect":"切断","remove":"削除","connect":"接続","connectorConnected":"コネクターを接続しました","connectionCancelled":"接続がキャンセルされました","connectorDisconnected":"コネクターを切断しました","failedToDisconnect":"切断に失敗しました","connectorRemoved":"コネクターを削除しました","failedToRemove":"削除に失敗しました","openAuthLinkManually":"認証リンクを手動で開く","connecting":"接続中...","mcpPlugins":"MCPプラグイン","mcpSubtitle":"エージェントの機能を拡張するMCP接続。","cancel":"キャンセル","addPlugin":"プラグインを追加","noPlugins":"プラグインが接続されていません","noPluginsDescription":"MCPサーバーを追加してエージェントに新しいツールを提供します。","failedToLoad":"プラグインの読み込みに失敗しました","failedToToggle":"プラグインの切り替えに失敗しました","pluginDeleted":"プラグインを削除しました","failedToDelete":"プラグインの削除に失敗しました","pluginAdded":"プラグインを追加しました","pluginNamePlaceholder":"プラグイン名","mcpUrlPlaceholder":"MCPサーバーURL (https://...)","foundTools":"{{count}}個のツールが見つかりました","connectionTestFailed":"接続テストに失敗しました","connectedTools":"接続済み — {{count}}個のツールが利用可能","connectionFailed":"接続に失敗しました","test":"テスト","save":"保存","failedToCreate":"プラグインの作成に失敗しました","enabled":"有効","disabled":"無効","toolsCount":"ツール ({{count}})","noTools":"利用可能なツールがありません","toolsFound":"{{count}}個のツールが見つかりました","testFailed":"テストに失敗しました","connectedChatMessage":"インテグレーションパネルから{{name}}を接続しました。何ができますか?","connectedReadOnlyChatMessage":"インテグレーションパネルから{{name}}を読み取り専用モードで接続しました。データの読み取りのみ可能で、作成や変更はできません。何ができますか?","accessModeChangedMessage":"{{name}}を{{mode}}モードに切り替えました。今後のアクションにご留意ください。","disconnectedChatMessage":"インテグレーションパネルから{{name}}を切断しました。","readOnly":"読み取り専用","fullAccess":"管理可能","switchToReadOnly":"読み取り専用に切り替え","switchToFullAccess":"管理に切り替え","searchConnectors":"コネクタを検索...","noSearchResults":"コネクタが見つかりません","noSearchResultsDesc":"別のキーワードを試すか、検索をクリアしてください。","noConnectorsYet":"まだコネクタが接続されていません。","base44Official":"Base44 Official","setUp":"設定","loadMore":"さらに{{count}}件を読み込む","showAll":"すべて表示 ({{count}})","moreIcons":"+{{count}}件","sort":{"title":"並べ替え","mostUsed":"よく使われる","recentlyAdded":"最近追加","az":"A-Z","za":"Z-A"}},"paymentsTab":{"title":"支払い","stripeName":"Stripe","description":"Stripeでお客様から支払いを受け付けます。","notConnected":"Stripeが接続されていません","connectedDescription":"支払いリンク、商品、チェックアウトが利用可能です。","setupPrompt":"チャットでエージェントにStripe支払いの設定を依頼してください。手順を案内します。","askInChat":"チャットで依頼","sandboxMode":"サンドボックス","liveMode":"本番","testCard":"テストカード番号","claimAndGoLive":"請求して本番運用へ","remove":"連携を解除","removeConfirm":"よろしいですか?","confirmRemove":"はい、解除します","cancel":"キャンセル","removed":"Stripe連携を解除しました","removeFailed":"Stripe連携の解除に失敗しました","loadFailed":"決済ステータスの読み込みに失敗しました","setupMessage":"エージェント用にStripe支払いを設定してください"},"integrationsTab":{"tabSkills":"Skills","tabConnectors":"Connectors","skillsTitle":"Skills","skillsSubtitle":"Reusable instructions that give your agent specialized abilities.","addSkill":"Add Skill","noSkills":"No skills yet","noSkillsHint":"Add a skill to teach your agent new capabilities.","installed":"インストール済み"},"automationsTab":{"title":"オートメーション","subtitle":"スケジュールされたタスクおよびWebhook。","noAutomations":"まだオートメーションがありません","trySuggestions":"上記のアイデアを試すか、チャットで質問してください。","askAgent":"チャットでエージェントに設定を依頼してください。","scheduled":"スケジュール済み","entityTriggered":"エンティティトリガー","webhooks":"Webhooks","active":"アクティブ","paused":"一時停止","details":"詳細","runNow":"今すぐ実行","pause":"一時停止","activate":"有効化","delete":"削除","trigger":"トリガー","instructions":"手順","taskId":"タスクID","parameters":"パラメータ","runHistory":"実行履歴","totalRuns":"合計{{count}}回","succeeded":"{{count}}回成功","failedRuns":"{{count}}回失敗","lastRun":"最終実行:","created":"{{date}}に作成","runsStats":"{{total}}回実行 · {{succeeded}}回成功 · {{failed}}回失敗","failedToToggle":"オートメーションの切り替えに失敗しました","archive":"アーカイブ","automationArchived":"オートメーションをアーカイブしました","failedToArchive":"オートメーションのアーカイブに失敗しました","automationDeleted":"オートメーションを削除しました","failedToDelete":"オートメーションの削除に失敗しました","automationTriggered":"オートメーションを実行しました","failedToRun":"オートメーションの実行に失敗しました","failedToLoad":"オートメーションの読み込みに失敗しました","consumesCredits":"メッセージクレジットを消費します","agentRunsWhenTriggered":"トリガー時にエージェントが応答します","agentNameRunsWhenTriggered":"トリガー時に{{name}}が応答します","creditsUsed":"使用クレジット: {{credits}}","totalCredits":"総クレジット: {{credits}}","trackingSince":"{{date}}から","executionLogs":"実行ログ","noLogs":"まだログがありません","status":{"success":"成功","running":"実行中","failed":"失敗"},"archived":"アーカイブ済み","noArchivedAutomations":"アーカイブ済みのオートメーションはありません","archivedDescription":"アーカイブしたオートメーションはここに表示されます。","restore":"復元","automationRestored":"オートメーションを復元しました","failedToRestore":"オートメーションの復元に失敗しました"},"identity":{"updated":"アイデンティティを更新しました","failedToSave":"アイデンティティの保存に失敗しました","avatar":"アバター","emoji":"絵文字","setEmoji":"設定","uploadImage":"画像をアップロード","changeImage":"変更","removeImage":"画像を削除","useEmoji":"絵文字を使用","name":"エージェント名","agentNamePlaceholder":"エージェント名","userName":"あなたの名前","userNameDisplay":"あなたの名前: {{name}}","userNamePlaceholder":"あなたの名前","userNameHint":"エージェントがあなたを呼ぶ名前","description":"説明","descriptionPlaceholder":"このエージェントは何をしますか?","unnamedAgent":"名前のないエージェント","cancel":"キャンセル","save":"保存","edit":"編集","rawIdentity":"IDENTITY.md(生テキスト)","editInEditor":"エディターで編集","entry":"{{count}}件のエントリ","entries":"{{count}}件のエントリ"},"knowledgeEditor":{"fileUpdated":"ファイルが外部で更新されました","fileModified":"{{name}}が変更されました。再読み込みして変更を確認してください。","reload":"再読み込み","saved":"{{label}}を保存しました","failedToSave":"保存に失敗しました","unsavedChanges":"未保存の変更があります。破棄しますか?","rawText":"生テキスト","readOnly":"読み取り専用","editAnyway":"編集する","edit":"編集","save":"保存","startWriting":"入力を開始..."},"knowledgeFiles":{"title":"ナレッジファイル","uploading":"{{count}}個のファイルをアップロード中...","new":"新規","fileNamePlaceholder":"ファイル名","mdExtension":".md","enterFileName":"ファイル名を入力してください","fileExists":"同じ名前のファイルが既に存在します","failedToCreate":"ファイルの作成に失敗しました","unsupportedType":"サポートされていないファイル形式","failedToUpload":"{{name}}のアップロードに失敗しました","renamedTo":"{{name}}に名前を変更しました","failedToRename":"ファイル名の変更に失敗しました","failedToLoadFile":"ファイルの読み込みに失敗しました","deleteConfirm":"\\"{{name}}\\"を削除しますか?この操作は元に戻せません。","failedToDelete":"ファイルの削除に失敗しました","dropOrUpload":"ここにファイルをドロップまたはクリックしてアップロード","supportedTypes":"ドキュメント、画像、CSV、コードファイルなど","dropOrBrowse":"ファイルをドロップまたは","browse":"参照"},"artifacts":{"description":"手軽に始められるミニアプリ。本格的なアプリはBase44で構築してください。","buildFullApp":"フルアプリを構築","title":"アーティファクト","pageCount_one":"{{count}}ページ","pageCount_other":"{{count}}ページ","empty":"まだアーティファクトはありません","emptyDescription":"エージェントにミニアプリの作成を依頼すると、ここに表示されます。"},"feedbackModal":{"thankYou":"ありがとうございます!","thankYouSubtitle":"皆様のご意見が改善に役立ちます。","title":"ご利用の感想はいかがですか?","subtitle":"皆様のご意見が次の開発に反映されます。","submitError":"フィードバックの送信に失敗しました。もう一度お試しください。","placeholder":"ご意見をお聞かせください...","sending":"送信中...","sendFeedback":"フィードバックを送信","ratingBad":"悪い","ratingPoor":"不満","ratingOkay":"普通","ratingGood":"良い","ratingAmazing":"最高","openSupportTicket":"サポートチケットを開く"},"dangerZoneTab":{"title":"危険ゾーン","subtitle":"このエージェントに対する取り消し不可能な操作。","deleteTitle":"このエージェントを削除","deleteDescription":"このエージェントとそのすべてのデータ、会話、ファイル、統合を完全に削除します。この操作は元に戻せません。","deleteButton":"このエージェントを削除","deleteSuccess":"エージェントが正常に削除されました","deleteFailed":"エージェントの削除に失敗しました"}}`),yH={live:"Live",offScreen:"画面外",waiting:"待機中...",loading:"読み込み中...",previewTitle:"プレビュー: {{pageName}}"},kH={main:"メイン"},wH={title:"エージェントを削除",description:"<strong>{{displayName}}</strong>を完全に削除します。<br/>すべてのエージェントデータ、会話、ファイル、統合が完全に消去されます。<danger>この操作は元に戻せません。</danger>",cancel:"キャンセル",deleteButton:"このエージェントを削除",deleting:"削除中..."},AH={title:"アプリを共有する",subtitle:"メールまたはソーシャルでリンクを共有する",sendInviteLabel:"招待を送る",sendInvitation_one:"招待を送る",sendInvitation_other:"招待を送る",invalidEmailsError:"1つ以上のメールアドレスが無効です。確認して再試行してください。",workspaceIneligibleError:"代わりにワークスペースのユーザーを招待してみてください。",nonWorkspaceIneligibleError:"一部のメールアドレスは招待できません。",removeIneligibleUsers:"対象外のユーザーを削除する",inviteSuccessToast:"ユーザーへの招待が正常に送信されました",inviteErrorToast:"招待の送信に失敗しました",copyLink:"リンクをコピー",sendInvitationSection:"招待を送る",inviteEmailPlaceholder:"メールアドレスを入力",inviteButton:"招待する",shareLiveAppLink:"ライブアプリのリンクを共有する",shareLiveAppLinkDesc:"このリンクを知っている人なら誰でも、アプリの公開設定に基づいてアプリをライブで閲覧できます。",linkCopied:"リンクをコピーしました",enterEmailError:"メールアドレスを入力してください",cannotInviteOwner:"このアプリのオーナーを招待することはできません",inviteSuccess_one:"招待を送信しました",inviteSuccess_other:"{{count}}件の招待を送信しました",inviteFailedToSend:"招待の送信に失敗しました",role_admin:"管理者",role_user:"ユーザー"},SH={sidebar:V3,loading:$3,trash:W3,errors:G3,codeView:H3,loader:Y3,toolbar:K3,header:Z3,upgrade:J3,checkpoints:Q3,viewAs:X3,pages:eH,publish:tH,chat:aH,builderCommandPalette:nH,unknownView:iH,appEditor:rH,beta:oH,collaborators:sH,integrationsBanner:lH,tools:cH,mainPage:dH,unpublishApp:uH,deleteApp:pH,skillTool:mH,automations:gH,create_automation:hH,create_automation_error:fH,automation_fallback_name:vH,agentEditor:bH,canvasPage:yH,canvasToolbar:kH,deleteAgent:wH,new:"新着",shareModal:AH},CH={title:"次は何を作りますか?",titleMobile:`こんにちは、
次は何を作りますか?`,subtitle:"下にアプリのアイデアを入力するか、",subtitleTemplatesLink:"テンプレート"},DH={title:"最近のアプリ"},TH={title:"最近のスーパーエージェント"},EH={placeholder:"作りたいアプリを説明してください...",placeholderPlanMode:"Baseに作りたいものを伝えてください",placeholderViewer:"閲覧者はアプリを作成できません",placeholderWithUrl:"説明を追加(任意)...",captureFullMode:"このようなサイトを作成する",captureDesignMode:"このデザインにインスパイアされた新しいサイトを作成する...",uploadFile:"コンピューターからアップロード",uploadFileMobile:"デバイスからアップロード",captureFromUrlDescription:"1:1の出発点を作成",createFromUrl:"URLから開始",aiModel:"AIモデル",selectAiModel:"AIモデルを選択",addFromGoogleDrive:"Google Driveからアップロード",modelPicker:{automatic:"自動",automaticDescription:"リクエストごとに最適なAIモデルが選択されます",new:"新",manual:"手動",builderPlus:"Builder+",manualDescription:"特定のAIモデルを選択 ({{models}})。Builderプラン以上で利用可能。",upgradeToSelect:"AIモデルを選択するにはアップグレード"},speechToText:"音声入力",processingAudio:"音声を処理中...",clickToStopRecording:"クリックして録音を停止"},PH={exploreTemplates:"コミュニティのテンプレートを探索",discoverDescription:"コミュニティによって作られたアプリケーションのコレクションをご覧ください。",failedToLoadCatalog:"カタログの読み込みに失敗しました",showingItems:"{{total}}件中{{displayed}}件を表示",searchApps:"アプリを検索",viewAllTemplates:"すべてのテンプレートを表示",allCategories:"すべて",priceAll:"すべてのテンプレート",priceFree:"無料のみ",pricePaid:"有料のみ",pageTitle:"アプリテンプレート",pageSubtitle:"コミュニティによって作られた厳選されたアプリケーションのコレクションをご覧ください。",tabs:{community:"コミュニティ",workspace:"ワークスペース",myTemplates:"マイテンプレート"},categories:{marketingAndSales:"マーケティング&営業",operations:"オペレーション",dataAndAnalytics:"データ&分析",contentGeneration:"コンテンツ生成",hrAndLegal:"人事&法務",finance:"財務",education:"教育",community:"コミュニティ",lifestyleAndHobbies:"ライフスタイル&趣味",gamesAndEntertainment:"ゲーム&エンターテインメント","Marketing & Sales":"マーケティング・営業",Operations:"オペレーション","Data & Analytics":"データ・分析","Content Generation":"コンテンツ生成","HR & Legal":"人事・法務",Finance:"ファイナンス",Education:"教育",Community:"コミュニティ","Lifestyle & Hobbies":"ライフスタイル・趣味","Games & Entertainment":"ゲーム・エンタメ"},sort:{popular:"人気順",newest:"新しい順",oldest:"古い順"},languagePlaceholder:"言語",pricePlaceholder:"価格",noAppsFound:"アプリが見つかりません",adjustSearchOrFilters:"検索条件またはフィルターを調整してください",templateNotFound:"テンプレートが見つからないか、利用できません。",viewAllCommunityTemplates:"すべてのコミュニティテンプレートを表示",loadingMore:"さらに読み込み中...",viewDetails:"詳細を見る",workspaceBadge:"ワークスペース",purchasedBadge:"購入済み",free:"無料",unknownUser:"不明なユーザー",private:"プライベート",howTo:{title:"アプリをコミュニティと共有する方法",intro:"以下の簡単な手順に従ってください:",step1Title:"アプリのビルダーを開く",step1Desc:"作成したアプリまたは管理者アクセス権を持つアプリに移動します",step2Title:"カタログ設定に移動",step2Path:"ワークスペース → 設定 → アプリテンプレート → リスティングを管理",step3Title:"リスティングを公開",step3Desc:"説明やスクリーンショットを追加し、リスティングの公開範囲を設定します",tipFull:"<bold>ヒント:</bold> アプリがデプロイされており、魅力的な説明があることを確認して、より多くのユーザーを惹きつけましょう!"},modal:{close:"閉じる",prevScreenshot:"前のスクリーンショット",nextScreenshot:"次のスクリーンショット",screenshotAlt:"スクリーンショット {{index}}",goToScreenshot:"スクリーンショット {{index}} へ",createdBy:"{{creatorName}} 作",unknownCreator:"不明",usages_one:"{{count}} 回利用",usages_other:"{{count}} 回利用",private:"非公開",workspaceTemplate:"ワークスペーステンプレート",clonePurchase:"購入済みをクローン",processing:"処理中...",purchaseFor:"${{price}} で購入",useTemplate:"テンプレートを使用",viewApp:"アプリを見る",paymentInfo:"全額クリエイターに支払われます",backendFunctionsEnabled:"バックエンド機能が有効",usesIntegrations:"インテグレーションを使用",aboutThisApp:"このアプリについて",noDescription:"説明はありません",termsOfUse:"利用規約",success:"成功",error:"エラー",purchaseFailed:"購入失敗",failedToPurchase:"購入を開始できませんでした",listingApproved:"アプリリストが正常に承認されました",approveListingFailed:"リストを承認できませんでした",listingDeclined:"アプリリストが正常に拒否されました",declineListingFailed:"リストを拒否できませんでした",pendingUpdate:"レビュー待ちの更新",codeChangesPending:"アプリコードの変更が保留中",metadataChanges:"リストのメタデータ変更:",manageListing:"リストを管理",approveUpdate:"更新を承認",declineUpdate:"更新を拒否",approveListing:"リストを承認",declineListing:"リストを拒否",approving:"承認中...",declining:"拒否中...",cloneAsAdmin:"管理者としてクローン"}},_H={subscriptionOverdue:"サブスクリプションの支払い期限超過",overdueMessage:"サブスクリプションの支払いが期限を超過しています。一部の機能へのアクセスが制限されています。フルアクセスを回復するには、お支払い方法を更新してください。",goToBilling:"請求へ移動",creditLimitReached:"今月の上限に達しました。アプリの作成を続けるには",upgradePlan:"プランをアップグレード"},xH={viewerAccess:"閲覧者アクセス権限のため、アプリを作成できません。エディターへのアップグレードについてはワークスペース管理者にお問い合わせください。"},IH={fillApiKeys:"送信前にすべての必須APIキーを入力してください。",createAppFailed:"アプリの作成に失敗しました。もう一度お試しください。"},RH={title:"URLから開始",description:"任意のWebサイトを新しいサイトの出発点として使用できます。",urlLabel:"WebサイトURL",urlPlaceholder:"例: www.example.com",errorEmpty:"URLを入力してください",errorInvalid:"有効なWebサイトURLを入力してください(例: www.example.com)",errorTooLong:"URLが長すぎます。短いURLをお使いください。",modeFull:"コンテンツ&デザイン",modeFullDescription:"類似サイトを構築します。",modeDesign:"デザインのみ",modeDesignDescription:"同じスタイルで新しいサイトを作成します。",modeContent:"コンテンツのみ",legalNotice:"コンテンツの権利を持つURLのみ使用してください。",cancel:"キャンセル",add:"追加",learnMore:"URLからの作成について詳しく",capturedUrl:"キャプチャしたURL",appReady:"アプリの準備ができました!カスタマイズしたり、新しい機能を追加できます。",banner:{headline:"アプリを作成中",headlineDesign:"アプリを作成中",subtitle:"通常より少し時間がかかることがあります - 素晴らしいものをお届けします。",activity:{msg1:"サイトを調べています...",msg2:"デザインを分析しています...",msg3:"パーツを組み立てています...",msg4:"特別なものを作成しています...",msg5:"作業中です...",msg6:"仕上げています...",msg7:"もう少しお待ちください..."}}},zH={count:"連携: {{count}}",loading:"連携を読み込み中...",selectedIntegrations:"選択された連携:"},MH={menuItem:"コネクター",dialogTitle:"コネクター",dialogDescription:"ツールやデータソースを接続して、アプリを強化しましょう",search:"検索",add:"追加",added:"追加済み",remove:"削除",noResults:"コネクターが見つかりません",suggestionCardTitle:"統合リクエストの詳細を教えてください:",choosePrompt:"続行するオプションを選択してください。",somethingElse:"その他",cancel:"キャンセル",send:"送信",connectTo:"<name>{{name}}</name>に接続",upgradeToConnect:"{{name}}をアプリに接続するためにプランをアップグレードしてください。",connecting:"{{names}}に接続中…",cancelled:"キャンセル済み",subtitles:{stripe:"商品やサブスクリプションを販売してオンラインで収益を得る。",salesforce:"CRMレコードを自動化・同期する。",slack:"ユーザーとしてメッセージ送信やSlack管理を行う。",slackbot:"ブランドボットとしてSlackワークスペースに投稿する。",notion:"ナレッジやプロジェクトデータを整理・同期する。",googlecalendar:"スケジュールやカレンダーイベントを管理する。",googledrive:"アプリで生成したファイルをエクスポート・バックアップする。",gmail:"メール送信と受信トレイ管理を自動化する。",googlesheets:"スプレッドシートデータを同期・管理する。",googleslides:"プレゼンテーションを生成・管理する。",googledocs:"ドキュメント作成を管理・自動化する。",googlebigquery:"分析データのクエリと同期を行う。",hubspot:"CRMデータを同期してマーケティングを自動化する。",linkedin:"投稿を共有してプロフェッショナルプロフィールにアクセスする。",tiktok:"プロフィール統計の確認や動画の閲覧を行う。",discord:"チャンネルに通知してDiscordコミュニティと連携する。",wix:"Wixサイトのデータやビジネスツールにアクセスする。",github:"リポジトリ、Issue、プルリクエストを管理する。",gitlab:"プロジェクト、MR、CI/CDパイプラインを管理する。",bamboohr:"従業員ディレクトリとHR管理。",wrike:"プロジェクト計画とチーム連携。",box:"安全なクラウドコンテンツ管理。",clickup:"プロジェクトを整理してチームの作業を追跡する。",google_analytics:"ウェブトラフィックとユーザーインサイトを追跡する。",outlook:"メールとカレンダー。",linear:"課題管理とプロジェクトマネジメント。",dropbox:"クラウドでファイルを保存・同期する。",google_search_console:"SEOと検索アナリティクス。",google_classroom:"教育とコース管理。",airtable:"柔軟なデータベースとスプレッドシート。",splitwise:"費用の分割とグループ請求の管理。",microsoft_teams:"チームチャット、チャンネル、会議。",share_point:"ドキュメント管理とコラボレーション。",one_drive:"クラウドファイルストレージ。",typeform:"フォーム、アンケート、データ収集。"}},NH={label:"プラン",tooltip:"プランモードを有効にすると、AIがアプリを構築する前に詳細な計画を作成します。"},FH="すべて表示",LH="エラー",jH={menuLabel:"Figmaからインポート",title:"Figmaフレームから生成",description:"フレームのリンクを貼り付けて、デザインに基づくアプリを生成します。",labelUrl:"Figmaフレームのリンク",placeholderUrl:"例: https://www.figma.com/frame-link",urlHelp:"ファイルやページではなく、1つのフレームへのリンクを使用してください。",learnPrepare:"Figmaフレームの準備方法を学ぶ",connectTitle:"Figmaに接続",connectDescription:"デザインをインポートするため、Figmaアカウントへのアクセスを許可してください。",connectButton:"Figmaに接続",connectedToFigma:"Figmaに接続済み",errorMissingUrl:"FigmaフレームのURLを入力してください",errorNotFigmaUrl:"FigmaフレームのURLを入力してください",errorNotFrameUrl:"ファイルやページではなく、1つのフレームのURLを入力してください。",errorRateLimit:"FigmaのAPIが一時的に混雑しています。数分後にもう一度お試しください。",errorForbidden:"Figma接続が無効または期限切れです。Figmaアカウントを再接続してください。",errorNotFound:"Figmaファイルが見つかりません。URLを確認し、アクセス権があることを確認してください。",errorGeneric:"このFigmaデザインにアクセスできません。URLを確認して再試行してください。",validating:"確認中...",switchAccount:"Figmaアカウントを切り替え",cancel:"キャンセル",generate:"生成",viewerCannotGenerate:"閲覧専用アクセスのためアプリを作成できません。エディターにアップグレードするにはワークスペース管理者にお問い合わせください。",figmaFile:"Figmaファイル",justNow:"たった今",importingMessage:"このFigmaフレームのデザインからアプリを生成します。"},OH={connectFailed:"Figmaの接続に失敗しました。もう一度お試しください。",popupBlocked:"ポップアップがブロックされました。ポップアップを許可して再試行してください。",disconnected:"Figmaを切断しました",disconnectFailed:"Figmaの切断に失敗しました。もう一度お試しください。"},BH={capturing:"キャプチャ中...",figmaDescription:"Figmaのデザインシステムを分析中。レイアウト、タイポグラフィ、カラートークンを抽出してアプリを構築しています。"},UH={webApp:"アプリ",aiAgent:"スーパーエージェント",recentApps:"最近のアプリ",templates:"テンプレート",favoritesComingSoon:"お気に入りは近日公開"},qH={new:"新機能",message:"本当のパーソナルエージェントにご挨拶ください",cta:"今すぐ試してみる"},VH={greeting:"こんにちは {{name}}さん、",greetingGeneric:"こんにちは、",title:"自分だけのAIパーソナルエージェントを作ろう",createTitle:"自分だけのスーパーエージェントを作ろう",newBadge:"新機能",subtitle:"タスクを実行し、ツールと連携して24時間365日あなたのために働くAIエージェント",cta:"スーパーエージェントを作成",creating:"作成中...",continueHero:{heading:"前回の続きから再開",continueBtn:"{{name}}を続ける",or:"または",createNew:"新しいスーパーエージェントを作成",activeAgo:"アクティブ {{time}}",you:"あなた"},features:{hassleFree:{title:"手間いらず",desc:"Docker不要、サーバー不要、セットアップ不要。スーパーエージェントを実行するだけ。"},alwaysOn:{title:"常時稼働",desc:"24時間365日、タスクと自動化を実行します。"},actions:{title:"実際のアクションを実行",desc:"タスクを処理し、更新を送信し、自動的に反応します。"},remembers:{title:"すべてを記憶",desc:"あなたの目標、好み、コンテキストを把握し続けます。"},everywhere:{title:"どこにでも存在",desc:"WhatsApp、Telegram、Slack、ブラウザで動作します。"},secure:{title:"デフォルトで安全",desc:"許可したもののみにアクセスします。"}},untitled:"無題のエージェント",active:"アクティブ",noDescription:"説明はありません",edited:"{{time}}編集",updated:"{{time}}更新",failedToCreate:"エージェントの作成に失敗しました。もう一度お試しください。",errorPage:{title:"問題が発生しました",descriptionLine1:"技術的な問題が発生しました。",descriptionLine2:"エージェント作成ページに戻って、もう一度お試しください",goToAgents:"エージェントへ →"}},$H={edited:"{{time}}編集",updated:"{{time}}更新",updatedRecently:"最近更新しました"},WH={emptyTitle:"まだアプリを作成していません。",emptySubtitle:"上のフォームを使って最初のアプリを作成しましょう!"},GH={dialogTitle:"クイックナビゲーション",dialogDescription:"ホームページからアプリ、テンプレート、請求、ワークスペース設定へすばやく移動できます。",searchPlaceholder:"アプリ、設定、テンプレート、請求を検索...",searching:"ワークスペースのアプリを検索中...",emptyTitle:"一致する移動先がありません",emptyDescription:"アプリ名、設定セクション、または請求やテンプレートのようなページ名を試してください。",allApps:"すべてのアプリ",backToWorkspace:"ワークスペースに戻る",templates:"テンプレート",billing:"請求",groups:{apps:"アプリ",navigate:"ページ",workspace:"ワークスペース",account:"アカウント"},subtitles:{favoriteApp:"お気に入りのアプリ",recentApp:"最近のアプリ",page:"ページ"}},HH={label:"何を作りたいですか?",more:"もっと",moreIdeas:"もっとアイデア",categories:{CRM:"顧客管理","Dev productivity":"開発者ツール",Educational:"教育","Content Generation and Editing":"コンテンツ作成・編集","Personal Finance":"個人金融","Health and Wellness":"健康・ウェルネス",Productivity:"生産性","Travel Planning":"旅行計画",Entertainment:"エンターテインメント",Environmental:"環境","Home Management":"家庭管理","Creative Tools":"クリエイティブツール",Tasks:"タスク","CRM & Sales":"CRM・営業",Portfolio:"ポートフォリオ",Finance:"財務","Scheduling & Booking":"スケジュール・予約",eCommerce:"eコマース","Construction & Trade":"建設・職人","Events & Community":"イベント・コミュニティ",Wellness:"ウェルネス","Operations & Logistics":"オペレーション・物流","Tasks & Workflows":"タスク・ワークフロー","Content & Sites":"コンテンツ・サイト",Booking:"予約","E-commerce":"Eコマース",Projects:"プロジェクト",Operations:"オペレーション"}},YH={hero:CH,recentApps:DH,recentAgents:TH,chat:EH,catalog:PH,billing:_H,permissions:xH,validation:IH,urlCapture:RH,integrations:zH,connectors:MH,planMode:NH,viewAll:FH,error:LH,figmaDialog:jH,figmaOAuth:OH,statusBanner:BH,tabs:UH,tryAgentBanner:qH,agent:VH,appCard:$H,appsList:WH,commandPalette:GH,ideas:HH},KH={title:"インテグレーション",subtitle:"APIやサービス、ツールに接続してアプリの可能性を広げる、事前構築済みのインテグレーションをご活用ください。"},ZH={placeholder:"インテグレーションを検索..."},JH={title:"一致するインテグレーションが見つかりません",description:"検索条件やフィルター設定を調整してみてください。"},QH={title:"コネクター",subtitle:"Base44がサポートする人気サービスへのクイックOAuth接続。"},XH={howToUse:"使い方",dialog:{getStarted:"始め方",navigateInstruction:"アプリのインテグレーションタブで{{name}}を接続すると、パーソナライズされたプロンプトが利用できます。",upgradeNotice:"このインテグレーションにはバックエンド関数が必要で、Builderプラン以上でのみ利用可能です。<seePlansLink>プランを見る</seePlansLink>"}},eY={stripe:"製品やサブスクリプションを販売してオンラインで収益を得る。",salesforce:"CRMレコードを自動化・同期。",slack:"ユーザーとしてメッセージを送信し、Slackを管理。",slackbot:"Slackワークスペースにブランドボットとして投稿。",notion:"ナレッジとプロジェクトデータを整理・同期。",googlecalendar:"スケジュールとカレンダーイベントを管理。",googledrive:"アプリで生成したファイルをエクスポート・バックアップ。",gmail:"メール送信と受信トレイを自動化。",googlesheets:"スプレッドシートデータを同期・管理。",googleslides:"プレゼンテーションを作成・管理。",googledocs:"ドキュメントの管理と作成を自動化。",googlebigquery:"分析データをクエリ・同期。",googletasks:"ToDoリストとタスクを管理。",googlemeet:"ビデオ会議とミーティング。",hubspot:"CRMデータを同期してマーケティングを自動化。",linkedin:"近況をシェアしてプロフェッショナルプロフィールにアクセス。",tiktok:"プロフィール統計を追跡して動画を確認。",discord:"チャンネルに通知してDiscordコミュニティと連携。",wix:"Wixサイトデータとビジネスツールにアクセス。",github:"リポジトリ、Issue、プルリクエストを管理。",gitlab:"プロジェクト、MR、CI/CDパイプラインを管理。",bamboohr:"従業員ディレクトリとHR管理。",wrike:"プロジェクト計画とチームコーディネーション。",box:"安全なクラウドコンテンツ管理。",clickup:"プロジェクトを整理してチームの作業を追跡。",google_analytics:"ウェブサイトトラフィックとユーザーインサイトを追跡。",outlook:"メールとカレンダー。",linear:"課題追跡とプロジェクト管理。",dropbox:"ファイルをクラウドに保存・同期。",google_search_console:"SEOと検索分析。",google_classroom:"教育とコース管理。",airtable:"柔軟なデータベースとスプレッドシート。",splitwise:"費用の分割とグループ請求管理。",microsoft_teams:"チームチャット、チャンネル、ミーティング。",share_point:"ドキュメント管理とコラボレーション。",one_drive:"クラウドファイルストレージ。",typeform:"フォーム、アンケート、データ収集。",hugging_face:"AI推論とモデルリポジトリ。",calendly:"予約の自動スケジュール管理。",contentful:"ヘッドレスCMSとコンテンツ管理。",supabase:"スキーマの参照、データの読み取り、プロジェクトステータスの確認(読み取り専用)。"},tY={page:KH,search:ZH,emptyState:JH,connectors:QH,connector:XH,catalog:eY},aY={title:"Launchpad",subtitle:"コミュニティが作成したアプリを発見・探索しよう",shareApp:"アプリを共有する",allApps:"すべてのアプリ",noAppsFound:"アプリが見つかりません",noAppsHint:"フィルターをクリアするか、別のキーワードで検索してみてください。",noAppsEmpty:"Launchpadで最初のアプリを公開しましょう!",clearFilters:"フィルターをクリア",goToFirstPage:"最初のページへ",retry:"再試行",publishedToast:"あなたのアプリがLaunchpadで公開されました!"},nY={placeholder:"Launchpadでアプリを検索..."},iY={all:"すべて"},rY={title:"トレンド"},oY={title:"トップアプリ",empty:"この期間のトップアプリはまだありません。",thisWeek:"今週",thisMonth:"今月",allTime:"全期間"},sY={live:"ライブ",someone:"誰かが",sentences:{vote:"{{user}}がたった今{{app}}に投票しました",like:"{{user}}がたった今{{app}}にいいねしました",publish:"{{user}}がたった今{{app}}を公開しました",default:"{{user}}がたった今{{app}}を操作しました"}},lY={signInPrompt:"Launchpadにアプリを公開するにはサインインしてください。",signIn:"サインイン",back:"戻る",next:"次へ",publish:"公開する",publishing:"公開中...",stepOf:"ステップ {{current}} / {{total}}",successToast:"あなたのアプリがLaunchpadで公開されました!",failedDefault:"公開に失敗しました。もう一度お試しください。",categoriesLoadFailed:"カテゴリの読み込みに失敗しました。閉じてからもう一度お試しください。",categoriesRetry:"再試行",steps:{selectApp:"アプリを選択",details:"詳細",preview:"プレビュー"},appPicker:{chooseApp:"Launchpadに公開するアプリを選んでください。",searchPlaceholder:"アプリを検索...",loadFailed:"アプリを読み込めませんでした。",tryAgain:"再試行",noApps:"まだアプリがありません。",noAppsForQuery:"「{{query}}」に一致するアプリが見つかりません",loadMore:"もっと読み込む"},preview:{caption:"Launchpadのグリッドでの表示プレビュー:",creatorFallback:"あなた"},categoryPicker:{count:"{{current}}/{{max}} カテゴリを選択中"},validation:{nameRequired:"アプリ名は必須です",descriptionRequired:"短い説明は必須です",descriptionTooLong:"最大 {{max}} 文字",categoriesRequired:"1つ以上のカテゴリを選択してください",screenshotsRequired:"1つ以上のスクリーンショットをアップロードしてください"}},cY={uploadFailed:"一部のスクリーンショットのアップロードに失敗しました。もう一度お試しください。",uploading:"アップロード中...",addImage:"画像を追加",count:"{{current}}/{{max}} スクリーンショット。ドラッグで並べ替え。"},dY={previous:"前へ",next:"次へ",pageOf:"{{page}} / {{totalPages}} ページ"},uY={justNow:"たった今",minutesAgo:"{{count}}分前",hoursAgo:"{{count}}時間前",daysAgo:"{{count}}日前"},pY={appName:"アプリ名",shortDescription:"簡単な説明",shortDescriptionPlaceholder:"アプリの機能を簡潔に説明してください",longDescription:"詳細な説明",longDescriptionPlaceholder:"アプリについてもっと詳しく教えてください...",optional:"任意",categories:"カテゴリ",screenshots:"スクリーンショット",generateWithAi:"AIで生成",aiComingSoon:"AI生成は近日公開予定です"},mY={tryApp:"アプリを試す",share:"共有",shareToast:"リンクをクリップボードにコピーしました!",shareError:"共有に失敗しました",about:"概要",moreByCreator:"{{name}}の他のアプリ",backToLaunchpad:"Launchpadに戻る",notFound:"アプリが見つかりません",notFoundHint:"このアプリは削除または非公開になった可能性があります。",loadFailed:"アプリの詳細の読み込みに失敗しました。",unknownCreator:"この作成者"},gY={title:"コメント",placeholder:"コメントを書く...",submit:"投稿",submitting:"投稿中...",empty:"まだコメントはありません。最初のコメントを投稿しましょう!",loadMore:"さらにコメントを読み込む",deleteFailed:"コメントの削除に失敗しました。",postFailed:"コメントの投稿に失敗しました。",signInToComment:"コメントするにはサインインしてください",anonymous:"匿名"},hY={likeFailed:"いいねの更新に失敗しました。",voteFailed:"投票の更新に失敗しました。",selfVoteError:"自分のアプリには投票できません。"},fY={loadFailed:"Launchpadのデータを読み込めませんでした。もう一度お試しください。",browseFailed:"アプリを読み込めませんでした。もう一度お試しください。",topAppsFailed:"トップアプリを読み込めませんでした。もう一度お試しください。",categoriesFailed:"カテゴリを読み込めませんでした。",refreshFailed:"更新に失敗しました — ページを再読み込みしてください。"},vY={page:aY,search:nY,categories:iY,trending:rY,topApps:oY,liveActivity:sY,publish:lY,screenshots:cY,pagination:dY,relativeTime:uY,fillDetails:pY,detail:mY,comments:gY,engagement:hY,errors:fY},bY={title:"アプリ",allAgentsTitle:"すべてのエージェント",createNewApp:"新しいアプリを作成",createNewAgent:"新しいエージェントを作成",tabRecents:"最近",tabFavorites:"お気に入り",tabAllApps:"すべてのアプリ",tabAllAgents:"すべてのエージェント",searchPlaceholder:"アプリを検索",gridView:"グリッド表示",listView:"リスト表示",appTypeLabel:"アプリの種類",appTypeApps:"アプリ",appTypeAgents:"エージェント",tableHeaderName:"名前",tableHeaderDescription:"説明",tableHeaderActions:"アクション",folderActionAddApps:"アプリを追加",folderActionRename:"名前を変更",folderActionDelete:"削除",filterOwnedByMe:"自分が所有",filterMyAppsPersonal:"自分のアプリ(個人ワークスペース)",filterAllPlatform:"すべてのアプリ(プラットフォーム全体)",filterMyAppsWorkspace:"{{workspaceName}}ワークスペースの自分のアプリ",filterAllAppsWorkspace:"{{workspaceName}}ワークスペースのすべてのアプリ",addNewFolder:"新しいフォルダを追加",sortLastUpdated:"最終更新",sortLastCreated:"最終作成",sortNameAsc:"名前 (A-Z)",sortNameDesc:"名前 (Z-A)",filterCreatedByMe:"自分が作成",filterCreatedByAnyone:"すべてのユーザー",filterAllPlatformApps:"すべてのプラットフォームアプリ",filterMyApps:"{{workspaceName}}の自分のアプリ",planModeDescription:"このアプリケーションは現在プランモードにあり、まだ作成されていません。",noDescription:"説明なし",byCreator:"作成者:{{name}}",createdAgo:"{{timeAgo}}に作成",untitledPlan:"無題のプラン",tableHeaderApp:"アプリ",tableHeaderLastUpdated:"最終更新",tableHeaderCreatedBy:"作成者",emptyFolderTitle:"アプリがまだ追加されていません",emptyFolderMessage:"追加するとここにアプリが表示されます",addExistingApps:"既存のアプリを追加",emptyFavoritesTitle:"お気に入りのアプリがありません",emptyFavoritesMessage:"アプリに星をつけるとここに追加されます。",emptyRecentsTitle:"最近のアクティビティなし",emptyRecentsMessage:"開いたアプリがここに表示されます。",emptySearchTitle:"アプリが見つかりません",emptySearchMessage:"条件に一致するアプリが見つかりません。",clearFilters:"フィルターをクリア",previous:"前へ",next:"次へ",failedToUpdateStar:"スターの更新に失敗しました",failedToUpdateFavorite:"お気に入りの更新に失敗しました",pleaseRetry:"もう一度お試しください",folderCreated:"フォルダを作成しました",folderRenamed:"フォルダ名を変更しました",folderDeleted:"フォルダを削除しました",folderUpdated:"フォルダを更新しました",filter:"フィルター"},yY={showAll:"すべて表示",appCount_one:"{{count}}個のアプリ",appCount_other:"{{count}}個のアプリ",addApps:"アプリを追加",rename:"名前を変更",delete:"削除",cancel:"キャンセル",save:"保存",saving:"保存中...",create:"作成",deleting:"削除中...",createFirstFolder:"最初のフォルダを作成",createNewFolder:"新しいフォルダを作成",renameFolder:"フォルダ名を変更",folderVisibilityDescription:"フォルダの整理はワークスペース全体に表示されます。",folderNamePlaceholder:"フォルダ名",visibility:"表示設定",scopeWorkspace:"ワークスペース",scopePersonal:"個人",personalScopeHint:"あなただけに表示",deleteFolder:"フォルダを削除",deleteFolderDescription:'"{{name}}"を削除しますか?このフォルダのアプリは削除されず、フォルダのみ削除されます。',manageFolders:"フォルダを管理",manageFoldersDescription:"このアプリをフォルダに追加または削除します。",searchFoldersPlaceholder:"フォルダを検索...",createNewFolderButton:"新しいフォルダを作成",noFoldersMatchSearch:"検索に一致するフォルダがありません",noFoldersYet:"フォルダがまだありません",allFolders:"すべてのフォルダ",searchFolders:"フォルダを検索",scopeFilterAll:"すべて",sortNameAsc:"名前 A–Z",sortNameDesc:"名前 Z–A",sortMostApps:"アプリ数が多い順",sortFewestApps:"アプリ数が少ない順",noFoldersFound:"フォルダが見つかりません",noFoldersMatchCriteria:"検索条件に一致するフォルダがありません。",clearSearch:"検索をクリア",manageAppsInFolder:"フォルダ内のアプリを管理",manageAppsDescription:'"{{name}}"のアプリを追加または削除します。',searchAppsPlaceholder:"アプリを検索...",noAppsMatchSearch:"検索に一致するアプリがありません",noAppsFound:"アプリが見つかりません",loadMore:"もっと読み込む",appUpdatedAgo:"{{timeAgo}}に更新",saveWithCount:"{{label}}({{count}}件)",operationFailed:"操作に失敗しました。もう一度お試しください。"},kY={viewLiveApp:"ライブアプリを表示",share:"共有",rename:"名前を変更",cloneApp:"アプリを複製",appSettings:"アプリ設定",delete:"削除",appDeleted:"アプリを削除しました",appDeletedDescription:"「{{name}}」が削除されました",failedToDelete:"アプリの削除に失敗しました",failedToDeleteDescription:"アプリの削除中にエラーが発生しました",manageFolders:"フォルダを管理",removeFromFolder:"フォルダから削除",goToAppSettings:"アプリ設定へ",deleteApp:"アプリを削除",deleteAppTitle:'"{{name}}"を削除しますか?',deleteAppDescription:"このアプリとそのすべてのデータが完全に削除されます。この操作は元に戻せません。",appRemovedFromFolder:"アプリをフォルダから削除しました",failedToRemoveFromFolder:"フォルダからアプリを削除できませんでした",addedToFolders_one:"アプリを{{count}}個のフォルダに追加",addedToFolders_other:"アプリを{{count}}個のフォルダに追加",removedFromFolders_one:"アプリを{{count}}個のフォルダから削除",removedFromFolders_other:"アプリを{{count}}個のフォルダから削除",failedToUpdateFolders:"フォルダの更新に失敗しました",foldersUpdated:"{{added}}、{{removed}}",removeFromFavorites:"お気に入りから削除",addToFavorites:"お気に入りに追加"},wY={title:"アプリ名を変更",description:"アプリ名はあなたとユーザーに表示されます。",inputPlaceholder:"アプリ名を入力",urlUpdateNote:"アプリ名を変更すると、アプリのURLも更新されます。",cancel:"キャンセル",save:"保存",saving:"保存中...",nameRequired:"アプリ名は必須です",enterDifferentName:"別の名前を入力してください",successTitle:"アプリ名を変更しました",successDescription:"アプリ名を「{{name}}」に変更しました",successDescriptionUrlFailed:"アプリ名を「{{name}}」に変更しましたが、URLを更新できませんでした。",failedTitle:"アプリ名の変更に失敗しました",failedDescription:"アプリ名の変更中にエラーが発生しました"},AY="読み込み中...",SY="(コピー)",CY={cloningTitle:"{{appName}}をクローン中",cloningDescription:"少し時間がかかる場合があります。準備ができたらAppsページに表示されます",goToApps:"Appsへ移動",confirmingPurchaseTitle:"購入を確認中...",confirmingPurchaseSubtitle:"通常は数秒で完了します",errorTitle:"エラー",goBack:"戻る",cloneNotAllowedTitle:"クローンできません",cloneNotAllowedDescription:"このアプリはバックエンド機能が必要です。クローンするにはBuilderプラン以上が必要です。",configureSecrets:"シークレットを設定",cloneTitle:"{{name}}をクローン",cloneButton:"{{name}}をクローン",cloningButton:"{{name}}をクローン中...",defaultAppName:"アプリ",preparing:"準備中...",errorCloningApp:"アプリのクローン中にエラーが発生しました",errorFetchingRequirements:"クローン要件の取得中にエラーが発生しました",errorPurchaseTimeout:"購入の確認に予想より時間がかかっています。確認メールをご確認ください。問題が解決しない場合はサポートにお問い合わせください。",errorVerifyPurchase:"購入を確認できませんでした。もう一度お試しください。"},DY={userApps:bY,folders:yY,appActions:kY,renameApp:wY,loading:AY,copySuffix:SY,remixPage:CY},TY={title:"Base44 アプリテンプレートマーケットプレイス - 利用規約",lastUpdated:"最終更新日:2025年11月18日"},EY={header:TY},PY={home:"ホーム",allApps:"すべてのアプリ",apps:"アプリ",integrations:"連携",appTemplates:"アプリテンプレート",hirePartner:"パートナーを探す",affiliates:"アフィリエイト",docsSupport:"ドキュメント&サポート",admins:"管理者",referFriends:"友達を紹介",language:"言語",startBuilding:"作成を開始"},_Y={title:"ワークスペースを作成",subtitle:"ワークスペースメンバーとのコラボレーションを始めましょう",back:"戻る",formTitle:"ワークスペース情報",nameLabel:"ワークスペース名",namePlaceholder:"ワークスペース名を入力してください",nameHint:"ワークスペースを表す名前を選んでください",nameRequiredError:"ワークスペース名は必須です",createFailedError:"ワークスペースの作成に失敗しました",limitReachedError:"ワークスペースの上限に達しました。最大3つのワークスペースを作成できます。",cancelButton:"キャンセル",createButton:"ワークスペースを作成",creatingButton:"ワークスペースを作成中...",whatHappensNext:{title:"次に何が起こりますか?",ownerPermissions:"あなたはワークスペースのオーナーとして、完全な管理権限を持ちます",inviteMembers:"ワークスペースメンバーを招待し、ライセンスを管理できます",accessDashboard:"ワークスペースのダッシュボードにアクセスして始めましょう"}},xY={workspace:"ワークスペース",backToWorkspace:"{{workspaceName}} に戻る",settings:"設定",inviteMembers:"メンバーを招待",myWorkspaces:"マイワークスペース",createWorkspace:"ワークスペースを作成",noWorkspacesFound:"ワークスペースが見つかりません",accountSettings:"アカウント設定",apiKey:"APIキー",helpSupport:"ヘルプ&サポート",becomeAffiliate:"アフィリエイトになる",defaultUser:"ユーザー",defaultUserInitial:"ユ",referFriend:"友達を紹介する",giftCards:"ギフトカード",sendGiftCard:"ギフトカードを送る",notifications:"通知",logOut:"ログアウト",aboutApp:"アプリについて",upgradePlan:"プランをアップグレード",winCredits:"無料クレジットを獲得",pricingPlans:"料金プラン",documentation:"ドキュメント",getHelp:"ヘルプ",memberCount_one:"{{count}} メンバー",memberCount_other:"{{count}} メンバー",myProfile:"マイプロフィール",viewProfile:"プロフィールを見る",failedToLoadProfile:"プロフィールの読み込みに失敗しました",user:"ユーザー"},IY={ariaLabel:"エージェントメニュー",agentFallback:"エージェント"},RY={integrationCredits:"連携クレジット",monthlyCredits:"月間クレジット",messageCredits:"メッセージクレジット",dailyCredits:"日間クレジット",giftCardCredits:"ギフトクレジット",renewsAt:"更新日: {{date}}",giftCardTooltip:"ギフトカードクレジットはプランクレジットより先に使用されます。",percentUsed:"{{percent}}% 使用済み",messagesRemaining_one:"残り {{count}} メッセージ",messagesRemaining_other:"残り {{count}} メッセージ",upgradeYourPlan:"プランをアップグレード",getMoreOutOfYourApps:"アプリをもっと活用しましょう",upgradeYourPlanToPro:"プランをProにアップグレード",redeemDescription:"引き換え後、クレジットはあなたのワークスペースに適用されます。",creditsRemaining_one:"残り {{count}} クレジット",creditsRemaining_other:"残り {{count}} クレジット"},zY={label:"コミュニティ",appTemplates:"アプリテンプレート",appTemplatesDesc:"コミュニティテンプレートで素早く開始。",hirePartner:"パートナーを探す",hirePartnerDesc:"パートナーを見つけてコラボレーションを始めましょう。",spotlight:"スポットライト",spotlightDesc:"注目のアプリケーションを探索。",affiliateProgram:"アフィリエイトプログラム",affiliateProgramDesc:"Base44アフィリエイトになる。",joinUsOn:"フォローする"},MY=JSON.parse(`{"title":"設定","lockedFeature":{"includedInPlan":"{{plan}}プラン以上に含まれています","includedInPlanExact":"{{plan}}プランに含まれています","viewPlans":"プランを見る","talkToSales":"営業に相談する","authSecurity":{"title":"ワークスペースアクセスを管理する","body":"規制産業やセキュリティを重視する組織に不可欠","ssoAccess":"シングルサインオン(SSO)でパスワードリスクを軽減","domainVerification":"ドメイン検証で参加者を管理","ipWhitelisting":"信頼できるIPアドレスからのみアクセスを許可"},"integrations":{"title":"一度設定すれば、ワークスペース全体で利用","body":"アプリ全体でAPIと外部ツールを標準化するチーム向け。","configureOnce":"すべてのアプリとチームメイト向けにAPI連携を一度だけ設定","sharedAccess":"ワークスペースの誰もが接続ツールをすぐに利用可能","consistentConnections":"すべてのアプリで外部接続の一貫性を維持"},"appsConfiguration":{"title":"アプリの可視性とSSOルールを設定","body":"内部ツールや機密アプリを管理するチーム向け。","publicAppControl":"このワークスペースで公開アプリを作成できる人を決定","defaultVisibility":"新しいアプリの初期表示設定を行う","enforceSso":"すべてのアプリにワークスペースSSOを適用"},"analytics":{"title":"チームがBase44をどのように使っているか確認","body":"利用状況と普及を追跡するワークスペースオーナーと管理者向け。","creditTracking":"チーム全体でクレジットがどのように使われているかを追跡","activeUsers":"どのチームメイトがBase44を積極的に利用しているかを確認","licenseUsage":"現在使用されているライセンス数を把握"},"skills":{"title":"AIに再利用可能なスキルを与える","body":"すべてのアプリで機能する一貫したAI動作を定義。","reusableInstructions":"AIがアプリを構築する方法を形づくるカスタム指示セット(スキル)を作成","autoActivation":"一度作成すれば、すべてのアプリで再利用","teamConsistency":"トーン、フォーマット、ロジック、標準化したい動作をガイド"},"mcpConnections":{"title":"MCPで外部ツールを接続","body":"外部ツールからライブデータを直接アプリに取り込む。","externalTools":"AIビルダーが作業中にリアルタイムのコンテキストにアクセス","customServers":"カスタムMCPサーバーを接続してすべてのアプリで使用","extendCapabilities":"Amplitude、Linearなどのツールにビルド中にアクセス"}},"membersTitle":"メンバー","inviteMembers":"メンバーを招待","inviteByEmail":"メールで招待","bulkInviteCsv":"一括招待 (CSV)","close":"閉じる","createInviteLink":"招待リンクを作成","manageInviteLinks":"招待リンクを管理","backToMembers":"メンバーに戻る","backToMenu":"設定メニューに戻る","inviteLinks":{"title":"招待リンク","breadcrumb":"招待リンク","description":"このワークスペースの招待リンクを作成・管理します。","createInviteLink":"招待リンクを作成","noLinksYet":"招待リンクはまだありません","noLinksSubtitle":"招待リンクを作成して、このワークスペースへのアクセスを簡単に共有しましょう。","copyLink":"リンクをコピー","copyLinkLower":"リンクをコピー","deleteTooltip":"招待リンクを削除","deleteButton":"削除","deleteLinkButton":"リンクを削除","deleteConfirmTitle":"招待リンクを削除しますか?","deleteConfirmActive":"このリンクでワークスペースに参加できなくなります。この操作は取り消せません。","deleteConfirmInactive":"このリンクとその履歴がワークスペースから削除されます。","copiedToClipboard":"招待リンクをクリップボードにコピーしました。","columnName":"名前","columnStatus":"ステータス","columnUsage":"使用状況","columnRole":"ロール","columnExpiration":"有効期限","columnDomains":"許可ドメイン","statusActive":"有効","statusRevoked":"無効化","statusExpired":"期限切れ","statusLimitReached":"上限到達","usageUnlimited":"無制限","dialogTitle":"招待リンクを作成","dialogMobileTitle":"リンクを作成","linkName":"リンク名(任意)","linkNamePlaceholder":"例: 新入社員オンボーディング","role":"ロール","selectRole":"ロールを選択","roleViewer":"閲覧者","roleEditor":"編集者","roleMember":"メンバー","expiration":"有効期限","selectExpiration":"有効期限を選択","nDays_one":"{{count}}日","nDays_other":"{{count}}日","never":"なし","maximumUses":"最大使用回数","selectLimit":"上限を選択","unlimited":"無制限","nUses_one":"{{count}}回","nUses_other":"{{count}}回","allowedDomains":"許可メールドメイン(任意)","allowedDomainsPlaceholder":"例: company.com, partner.org","domainsHelp":"複数のドメインはカンマで区切ってください。","domainsError":"無効な入力です。カンマ区切りのドメインを使用してください(例: company.com, partner.org)","securityWarning":"このリンクを持つ人は誰でもワークスペースに参加し、データにアクセスできます。信頼できる人にのみ共有してください。","advancedOptions":"詳細オプション","cancel":"キャンセル","creating":"作成中...","create":"作成","linkCreatedAndCopied":"招待リンクを作成してコピーしました。","manageInvitations":"招待を管理"},"postPaymentInvite":{"title":"準備完了!","description":"プランが有効になりました。友人や同僚を招待して、一緒に開発を始めましょう。","createInviteLink":"招待リンクを作成","inviteByEmail":"メールで招待","maybeLater":"後で","inviteLinkReady":"招待リンク準備完了","subtitleNoDomain":"このリンクを持つ誰でも<bold>{{role}}</bold>として参加できます","subtitleWithDomain":"{{domains}}メールを持つ誰でも<bold>{{role}}</bold>として参加できます","copied":"コピー済み","manageInvitationsPrompt":"<inviteLink>招待リンク</inviteLink>の設定ページからすべての招待リンクを管理できます。","copyLink":"コピー","close":"閉じる","expires":"{{time}}に期限切れ","remainingUses_one":"残り{{count}}回使用可能","remainingUses_other":"残り{{count}}回使用可能"},"sections":{"workspace":"ワークスペース","integrations":"インテグレーション","account":"アカウント"},"creditUsage":{"pageDescription":"クレジットの消費状況と使用パターンを監視します。","currentPlan":"現在{{planName}}プランをご利用中です","overLimit":"制限超過","updatePayment":"支払いを更新","upgrade":"アップグレード","paymentOverdue":"支払い期限超過","pastDueDescription":"サブスクリプションの支払いが期限を超えています。表示されるクレジットと制限は最後に支払ったプラン({{plan}})に基づいています。","tryAgain":"再試行","trying":"試行中...","monthlyMessages":"月間メッセージ","workspaceTotal":"ワークスペース合計","workspaceUsage":"ワークスペース使用量","dailyMessages":"日次メッセージ","loadError":"使用統計の読み込みに失敗しました","portalError":"支払い管理を開けませんでした。もう一度お試しください。","portalErrorTitle":"エラー","creditsRenewIn":"クレジットが{{timeLeft}}後に更新されます","expired":"期限切れ","dailyUsageTitle":"日次使用量(メッセージ)","noUsageData":"使用データがありません","messagesLabel":"メッセージ","timeDaysHours":"{{days}}日{{hours}}時間","timeHoursMinutes":"{{hours}}時間{{minutes}}分","timeMinutes":"{{minutes}}分"},"basicInformation":{"pageTitle":"基本情報","pageSubtitleEditable":"ワークスペースの詳細と設定を管理します。","pageSubtitleReadOnly":"ワークスペースの詳細を表示します。編集できるのはオーナーと管理者のみです。","loadingMessage":"ワークスペース情報を読み込み中...","workspaceNameLabel":"ワークスペース名","workspaceNamePlaceholder":"ワークスペース名を入力","workspaceDescriptionLabel":"ワークスペースの説明","workspaceDescriptionPlaceholder":"ワークスペースを説明してください...","workspaceNameEmptyErrorMessage":"ワークスペース名は空にできません","cancelButton":"キャンセル","saveButton":"変更を保存","savingButton":"保存中...","saveSuccessMessage":"ワークスペース設定が正常に更新されました!","saveErrorMessage":"ワークスペース設定の更新に失敗しました: {{error}}","unknownError":"不明なエラー"},"leaveWorkspace":{"title":"ワークスペースを退出","description":"このワークスペースを退出すると、関連するすべてのアプリへのアクセスが失われます。アプリの所有権はワークスペースのオーナーに移転されます。","button":"ワークスペースを退出","soleOwnerNote":"唯一のオーナーであるため、ワークスペースを退出できません。","successMessage":"ワークスペースを退出しました。","workspaceNameFallback":"ワークスペース","dialog":{"title":"{{name}}を退出しますか?","confirmQuestion":"<bold>{{name}}</bold>を退出してもよろしいですか?","transferWarning":"このワークスペース内のアプリはワークスペースのオーナーに移転され、アクセスできなくなります。","cancelButton":"キャンセル","confirmButton":"ワークスペースを退出"}},"menu":{"basicInformation":"基本情報","planAndBilling":"プランと請求","creditUsage":"クレジット使用量","members":"メンバー","seatsAndMembers":"シートとメンバー","authAndSecurity":"認証とセキュリティ","integrations":"連携","appsConfiguration":"アプリ設定","analytics":"アナリティクス","accountSettings":"アカウント設定","mcpConnections":"MCP接続","skills":"スキル","connectors":"コネクタ","manageSubscription":"サブスクリプション管理","secrets":"シークレット","dataResidency":"データレジデンシー"},"guests":{"tabMembers":"メンバー","tabGuests":"ゲスト","title":"ゲスト","infoBanner":"ゲストは特定のアプリに招待された外部ユーザーです。ワークスペースの共有クレジットプールからクレジットを消費します。","searchPlaceholder":"メールまたはアプリで検索...","columnGuest":"ゲスト","columnApp":"アプリ","columnInvitedBy":"招待者","columnCreditsUsed":"使用クレジット","pending":"保留中","promoteToEditor":"エディターに昇格","promoteToViewer":"ビューアーに昇格","removeFromWorkspace":"ワークスペースから削除","emptyTitle":"まだゲストがいません","emptySubtitle":"ゲストはアプリのコラボレーター招待フローから追加できます。","noResults":"ゲストが見つかりません","noResultsSubtitle":"\\"{{searchTerm}}\\"に一致するゲストはありません","promoted":"{{email}}を{{role}}に昇格しました","promoteFailed":"ロールの更新に失敗しました","setCreditLimit":"クレジット上限を設定","upgradeForCreditLimit":"この機能にはEnterpriseプランへのアップグレードが必要です","viewAppAccess":"アプリアクセスを表示","removeMember":"メンバーを削除","guestRole":"ゲスト","appAccessTitle":"{{name}}のアプリアクセス","appAccessDescription":"このゲストがワークスペースでアクセスできるアプリを表示します。","appAccessLoading":"読み込み中...","appAccessEmpty":"アプリアクセスが見つかりません。","appAccessColumnApp":"アプリ","appAccessDone":"完了"},"members":{"pageTitle":"メンバー","pageDescription":"このワークスペースのメンバーとロールを表示・管理します。","tableTitle":"メンバー ({{count}})","columnMembers":"メンバー","columnCreditsUsed":"使用クレジット","columnCreditsUsedWithLimit":"使用クレジット({{limit}}中)","columnCreditLimit":"クレジット上限","columnRole":"ロール","roleOwner":"オーナー","roleAdmin":"管理者","roleEditor":"エディター","roleViewer":"閲覧者","pending":"保留中","expired":"期限切れ","searchPlaceholder":"名前またはメールで検索...","searchPlaceholderMobile":"検索...","inviteMembers":"メンバーを招待","inviteByEmail":"メンバーを招待","bulkInvite":"一括招待","setCreditLimit":"クレジット上限を設定","removeMember":"メンバーを削除","upgradeTooltip":"この機能を利用するにはEnterpriseプランにアップグレードしてください","default":"(デフォルト)","emptyTitle":"まだメンバーがいません","emptyTitleNoResults":"メンバーが見つかりません","emptySubtitlePersonal":"個人ワークスペースにはあなただけが含まれています","emptySubtitleShared":"最初のメンバーを招待して始めましょう","emptySubtitleNoResults":"「{{searchTerm}}」に一致するメンバーはいません","cantChangeOwnRole":"自分のロールは変更できません。ワークスペースのオーナーに更新を依頼してください。","creditLimitTooltip":"各メンバーがワークスペースプールから使用できるクレジットの上限を設定します。個別に制限を設定するか、全メンバーに均等に配分できます。","tableTitleFiltered":"メンバー({{totalCount}}件中{{filteredCount}}件)","clearSearch":"検索をクリア"},"seatsAndMembers":{"pageTitle":"シートとメンバー","pageDescription":"ワークスペースのシートとチームメンバーを管理します。","emptyTitle":"ワークスペースシートを始める","emptyDescription":"シートを購入してメンバーを招待し、コラボレーションを開始しましょう。","buyFirstSeats":"最初のシートを購入","planSeats":"{{planName}}シート","seatsUsage":"シート使用状況","addSeats":"シートを追加","removeSeats":"シートを削除","seatsAvailable_one":"{{count}}シート利用可能","seatsAvailable_other":"{{count}}シート利用可能","buyMoreSeats":"シートを追加購入","expandWorkspace":"ワークスペースを拡張する","searchPlaceholder":"メール、役割、ステータス、またはシートタイプで検索(例:スターター、プロ)...","searchTip":"ヒント:「スターター」「ビルダー」「プロ」「エリート」「シートなし」などのシートタイプで検索できます"},"inviteDialog":{"title":"メンバーを招待","emailAddress":"メールアドレス","role":"ロール","cancel":"キャンセル","invite":"招待","inviting":"招待中...","roleViewer":"閲覧者","roleEditor":"エディター","roleAdmin":"管理者","roleMember":"メンバー","errorNoEmail":"メールアドレスを1つ以上入力してください","errorInvalidEmail":"1つ以上のメールアドレスが無効です。","errorFallback":"ユーザーの招待に失敗しました","toastSingle":"招待を{{email}}に送信しました","toastMultiple":"{{count}}件の招待を送信しました"},"dataResidency":{"title":"データレジデンシー","tooltip":"このワークスペース内のアプリのデータストレージリージョンを設定します。","edit":"編集","upgradeRequired":"データレジデンシーを設定するにはEliteプラン以上が必要です。","appliesToNewApps":"新しく作成されるアプリに適用されます。既存のアプリは現在のリージョンを保持します。","editModal":{"title":"ワークスペースデータレジデンシー","description":"このワークスペースで作成するアプリのデータを保存する場所を選択してください。","label":"データレジデンシー","appliesToNewApps":"新しく作成されるアプリに適用されます。既存のアプリは現在のデータリージョンを保持します。","viewAllApps":"ワークスペース内のすべてのアプリのデータレジデンシーを表示","cancel":"キャンセル","save":"保存","saving":"保存中...","updateSuccess":"データレジデンシーが正常に更新されました","updateError":"データレジデンシーの更新に失敗しました:{{detail}}","unknownError":"不明なエラー"},"appsModal":{"title":"アプリデータレジデンシー","description":"このワークスペース内の各アプリのデータがどこに保存されているかを確認します。","appName":"アプリ名","dataRegion":"データリージョン","loading":"読み込み中...","noApps":"このワークスペースにはアプリがありません。","migrationInfo":"アプリを別のリージョンに移動する必要がありますか? <a>移行をリクエストする。</a>","supportTitle":"データリージョン移行リクエスト — {{name}}","supportContent":"アプリデータを別のリージョンに移行したいです。\\n\\nワークスペース: {{name}} ({{id}})\\n現在のデフォルトリージョン: {{region}}\\n移行先リージョン: \\n移行するアプリ: "}},"mcp":{"title":"MCP接続","addMcp":"MCPを追加","limitReached":"MCPサーバーの上限({{max}}件)に達しました。新しい接続を追加するには1つ削除してください。","description":"カスタムMCPサーバーを接続して、外部ツールやデータでBase44の構築機能を拡張します。","descriptionWithLink":"カスタムMCPサーバーを接続して、外部ツールやデータでBase44の構築機能を拡張します。<a>MCPについて詳しく<icon/></a>","learnMore":"MCPについて詳しく","emptyTitle":"MCPサーバーが接続されていません","addCustomMcp":"カスタムMCPを追加","aria":{"enableConnection":"{{name}}を有効にする","disableConnection":"{{name}}を無効にする","actionsFor":"{{name}}の操作"},"actions":{"editDetails":"詳細を編集","removeMcp":"MCPを削除"},"deleteConfirm":{"title":"MCP接続を削除","description":"「{{name}}」を削除してもよろしいですか?この操作は元に戻せません。","confirm":"削除","cancel":"キャンセル"},"tools":{"availableTools_one":"{{count}}個の利用可能なツール","availableTools_other":"{{count}}個の利用可能なツール","more":"+{{count}}件","showLess":"折りたたむ","loadingTools":"ツールを読み込み中..."},"addDialog":{"title":"カスタムMCPサーバーを追加","name":"名前","namePlaceholder":"例: マイMCPサーバー","url":"URL","urlExists":"MCPサーバーは既に存在します。","authentication":"認証","authNone":"不要","authNoneDescription":"認証情報なしで接続","authOAuth":"OAuth","authOAuthDescription":"次のステップで認証","customHeaders":"カスタムヘッダー","optional":"任意","headersDescription":"すべてのリクエストに送信されるヘッダーを追加(例: APIキー)","headerName":"ヘッダー名","headerValue":"値","addHeader":"ヘッダーを追加","connectionFailed":"接続に失敗しました","serverReady":"MCPサーバーは接続準備ができています。","serverReadyWithTools_one":"MCPサーバーは接続準備ができています。1個のツールが見つかりました。","serverReadyWithTools_other":"MCPサーバーは接続準備ができています。{{count}}個のツールが見つかりました。","toolsFound_one":"{{count}}個のツールが見つかりました。","toolsFound_other":"{{count}}個のツールが見つかりました。","oauthConfirmed":"サーバーが確認されました。「認証して追加」をクリックしてOAuth認証を完了してください。","test":"テスト","testAndAdd":"テスト&追加","authorizeAndAdd":"認証して追加","cancel":"キャンセル","urlRequired":"サーバーURLを入力してください。","fieldsRequired":"すべての必須フィールドを入力してください。","authRequired":"このサーバーには認証が必要です。OAuthを選択して続行してください。","authNotRequired":"このサーバーはOAuthを必要としません。OAuthなしで追加してみてください。","testFailed":"接続テストに失敗しました。"},"editDialog":{"title":"接続済みMCPを編集","enabled":"有効","nameRequired":"名前を入力してください。","changeInfo":"URLや認証方法を変更するには、新しいMCP接続を作成してください。","saveChanges":"変更を保存","removeMcp":"MCPを削除","cancel":"キャンセル"},"toast":{"added":"MCP接続を追加しました","addedDescription":"MCPサーバーに正常に接続しました。","addedWithName":"接続「{{name}}」を正常に追加しました。","saved":"変更を保存しました","savedDescription":"MCP接続が正常に更新されました。"}},"skills":{"title":"スキル","addSkill":"スキルを追加","addSkillLower":"スキルを追加","editSkill":"スキルを編集","viewSkill":"スキルを表示","deleteSkill":"スキルを削除","limitReached":"スキルの上限({{max}}件)に達しました。新しいスキルを追加するには1つ削除してください。","description":"AIビルダーが会話中にアクティブにできる再利用可能な指示セットを作成します。","emptyDescription":"スキルは、AIがアプリを構築する方法を形作る保存されたガイドラインです。必要に応じて自動的に有効になり、ルールとベストプラクティスに従います。","emptyDescriptionWithLink":"スキルは、AIがアプリを構築する方法を形作る保存されたガイドラインです。必要に応じて自動的に有効になり、ルールとベストプラクティスに従います。<a>詳細を見る</a>","learnMore":"詳細を見る","getStartedWithTemplate":"テンプレートから始める","viewMore":"もっと見る","failedToLoadTemplates":"スキルテンプレートの読み込みに失敗しました","templatesUnavailable":"プリセットテンプレートが利用できない場合があります。","failedToLoadTemplate":"テンプレートの読み込みに失敗しました","form":{"skillName":"スキル名","namePlaceholder":"例: brand-guidelines","nameRequired":"名前は必須です","nameMaxLength":"名前は{{max}}文字以内にしてください","namePattern":"小文字、数字、ハイフンのみ(例: code-review)","nameExists":"この名前のスキルは既に存在します","description":"説明","descriptionHint":"エージェントにこのスキルをいつ使うか伝えてください。これを読んで有効にするかどうか判断します。","descriptionPlaceholder":"例:すべてのページとコンポーネントにブランドカラー、タイポグラフィ、デザインパターンを適用します。新しいページの作成、スタイルの更新、またはユーザーがブランドやデザインシステムについて言及した時に使用します。","instructions":"指示","instructionsHint":"このスキルが有効になったときにエージェントが従うステップバイステップのルール。新しいチームメンバーをトレーニングするように書いてください。","instructionsPlaceholder":"## ブランドカラー\\nプライマリ: #1E40AF(ナビゲーション、ボタン)\\nアクセント: #F59E0B(ハイライト、CTA)\\n背景: #F8FAFC、サーフェス: 白\\n\\n## タイポグラフィ\\n見出し: 太字、ダークスレート\\n本文: text-sm text-slate-600\\nセクション間のスペースを統一\\n\\n## コンポーネントパターン\\n- データセクションには控えめなシャドウのCardを使用\\n- ローディング状態と空状態を必ず含める\\n- フォーム: 作成/編集にはSheetダイアログを使用\\n- テーブル: ストライプ行、ソート可能な列","reviewHint":"AIで調整済み。保存前に自由に編集してください。"},"dialog":{"reviewTitle":"スキルを確認","reviewSubtitle":"保存前に説明と指示を確認してください。いつでも編集できます。","pickerTitle":"スキルを追加するか、ゼロから始める","startFromScratch":"ゼロから始める","cancel":"キャンセル","backToOriginal":"元に戻す","saveSkill":"スキルを保存","saveChanges":"変更を保存","refineAndReview":"調整して確認","refineShort":"調整","close":"閉じる","add":"追加","enabled":"有効"},"toast":{"created":"スキルを作成しました","createdDescription":"「{{name}}」を追加しました。","failedToCreate":"スキルの作成に失敗しました","updated":"スキルを更新しました","updatedDescription":"「{{name}}」を保存しました。","failedToUpdate":"スキルの更新に失敗しました","refinedTooLong":"調整したスキルが長すぎます","refinedTooLongDescription":"要約を試みましたが、結果が文字数制限を超えています。内容を短くして再度調整してください。","failedToPolish":"スキルの調整に失敗しました","failedToLoad":"スキルの読み込みに失敗しました","failedToLoadList":"スキルの読み込みに失敗しました","retryLater":"後でもう一度お試しください。","retryAgain":"もう一度お試しください。","removed":"スキルを削除しました","removedDescription":"スキルが削除されました。"},"deleteConfirm":{"description":"「{{name}}」を削除してもよろしいですか?この操作は元に戻せません。","confirm":"削除","cancel":"キャンセル"},"aria":{"enableSkill":"{{name}}を有効にする","disableSkill":"{{name}}を無効にする","actionsFor":"{{name}}の操作"}},"secrets":{"title":"シークレット","description":"ワークスペースへのプログラムアクセスのための認証情報とアクセストークンを管理します。","apiKeys":{"title":"APIキー","description":"ワークスペースへのプログラムアクセス用APIキーを作成・管理します。これらのキーを使用して、監査ログをストリーミングしたり、SCIMでIDプロバイダーを接続したり、Monitoring APIを通じてワークスペースデータを外部システムに取り込んだりすることができます。","createButton":"APIキーを作成","limitReached":"APIキーの上限{{max}}件に達しました。新しいキーを作成するには既存のキーを削除してください。","table":{"name":"名前","key":"キー","createdBy":"作成者","created":"作成日","lastUsed":"最終使用日","status":"ステータス","never":"なし"},"status":{"active":"有効","disabled":"無効"},"emptyState":{"title":"APIキーがありません","description":"ワークスペースAPIキーはワークスペースAPIへのプログラムアクセスを提供します(SIEM、SCIM、カスタムインテグレーション)。"},"actions":{"edit":"編集","disableKey":"キーを無効化","enableKey":"キーを有効化","deleteKey":"キーを削除","actionsFor":"{{name}}のアクション"},"sheet":{"editButton":"編集","disableButton":"無効化","enableButton":"有効化"},"disableConfirm":{"title":"APIキーを無効化しますか?","description":"APIキー<strong>\\"{{name}}\\"</strong>は即座に無効化されます。このキーを使用しているインテグレーションは機能しなくなります。","note":"後で再度有効化できます。","confirm":"キーを無効化","cancel":"キャンセル"},"enableConfirm":{"title":"APIキーを有効化しますか?","description":"APIキー<strong>\\"{{name}}\\"</strong>が再度有効化されます。このキーを使用しているインテグレーションが再び機能します。","confirm":"キーを有効化","cancel":"キャンセル"},"deleteConfirm":{"title":"APIキーを削除しますか?","description":"APIキー<strong>\\"{{name}}\\"</strong>は完全に削除されます。この操作は取り消せません。このキーを使用しているインテグレーションは即座に機能しなくなります。","confirm":"キーを削除","cancel":"キャンセル"},"toast":{"loadError":"APIキーの読み込みに失敗しました","loadErrorDescription":"もう一度お試しください。","disabled":"APIキーが無効化されました","disabledDescription":"\\"{{name}}\\"が無効化されました。","disableError":"APIキーの無効化に失敗しました","enabled":"APIキーが有効化されました","enabledDescription":"\\"{{name}}\\"が再度有効化されました。","enableError":"APIキーの有効化に失敗しました","deleted":"APIキーが削除されました","deletedDescription":"\\"{{name}}\\"が完全に削除されました。","deleteError":"APIキーの削除に失敗しました","createError":"APIキーの作成に失敗しました","updateError":"APIキーの更新に失敗しました","copyError":"APIキーのコピーに失敗しました","updated":"APIキーが更新されました","updatedDescription":"\\"{{name}}\\"が保存されました。"},"createDialog":{"title":"APIキーを作成","titleReveal":"APIキーが作成されました","namePlaceholder":"例:SIEMインテグレーション","descriptionPlaceholder":"このキーの用途は?","cancelButton":"キャンセル","createButton":"キーを作成","creatingButton":"作成中...","warningMessage":"このキーを今すぐコピーしてください – 再度表示されることはありません。パスワードと同様に扱ってください:APIを通じてワークスペースデータへのアクセスを許可します。","yourApiKey":"APIキー","doneButton":"完了","copyAria":"APIキーをコピー"},"editDialog":{"title":"APIキーを編集","cancelButton":"キャンセル","saveButton":"保存","savingButton":"保存中..."},"formFields":{"name":"名前","description":"説明","descriptionOptional":"(任意)"}}},"authSecurity":{"title":"認証とセキュリティ","description":"ワークスペースの認証とセキュリティ設定を構成します。","sso":{"title":"シングルサインオン設定","configureTooltip":"ワークスペースのSSOを設定する","description":"SSOを有効にして、ワークスペースメンバーの認証を簡素化します。","settingUp":"設定中...","setUp":"設定する","setUpConfiguration":"SSO設定","enforcedTooltip":"このSSOはワークスペース内のすべてのアプリに適用されており、認証に自動的に使用されます。適用設定を更新するには、アプリ設定に移動してください。","enforcedBadge":"アプリに適用済み","setUpAction":"設定する","configure":"設定","selectProvider":"SSOプロバイダーを選択","cancelSetup":"設定をキャンセル","dismiss":"閉じる","saving":"保存中...","enableSSO":"SSOを有効化","saveSSOSettings":"SSO設定を保存","notAvailableTitle":"利用不可","notAvailableDesc":"シングルサインオン(SSO)は個人ワークスペースでは利用できません。","limitedAccessTitle":"制限付きアクセス","limitedAccessDesc":"SSO設定を構成できるのはワークスペース管理者のみです。","toast":{"error":"エラー","failedToLoadSettings":"SSO設定の読み込みに失敗しました","failedToLoadAppSettings":"アプリ設定の読み込みに失敗しました","ssoEnabled":"SSO有効化","ssoEnabledDesc":"ワークスペースのシングルサインオンが有効になりました","ssoDisabled":"SSO無効化","ssoDisabledDesc":"シングルサインオンが無効になりました","failedToUpdateStatus":"SSO状態の更新に失敗しました","success":"成功","settingsUpdated":"SSO設定が正常に更新されました","failedToUpdate":"SSO設定の更新に失敗しました"},"fields":{"client_id":"クライアントID","client_secret":"クライアントシークレット","scope":"スコープ","discovery_url":"ディスカバリーURL","tenant_id":"テナントID","okta_domain":"Oktaドメイン","auth_endpoint":"認証エンドポイント","token_endpoint":"トークンエンドポイント","userinfo_endpoint":"ユーザー情報エンドポイント","jwks_uri":"JWKS URI","name":"プロバイダー名"},"autoGenerated":"(自動生成)","placeholders":{"client_id":"クライアントIDを入力","client_secret":"クライアントシークレットを入力","scope":"スコープを入力","discovery_url":"ディスカバリーURLを入力","tenant_id":"Azure ADテナントIDを入力","okta_domain":"あなたの会社","auth_endpoint":"認証エンドポイントを入力","token_endpoint":"トークンエンドポイントを入力","userinfo_endpoint":"ユーザー情報エンドポイントを入力","jwks_uri":"JWKS URIを入力","name":"プロバイダー名を入力"},"tooltips":{"clientId":"IDプロバイダーから提供されたOAuthクライアントID","clientSecret":"IDプロバイダーから提供されたOAuthクライアントシークレット(機密として扱ってください)","scopeGeneral":"要求するOAuthスコープ(openid、email、profileが一般的に使用されます)","scopeGithub":"要求するOAuthスコープ(GitHubの場合はuser:email)","discoveryUrlGoogle":"OIDCディスカバリーエンドポイント(Google用に事前設定済み)","discoveryUrlMicrosoft":"テナントIDから自動生成されるOIDCディスカバリーエンドポイント","discoveryUrlOkta":"OktaドメインからOIDCディスカバリーエンドポイントが自動生成されます","discoveryUrlAdvanced":"OIDCディスカバリーエンドポイントURL(プロバイダーがサポートしている場合)","tenantId":"Azure ADディレクトリ(テナント)ID - Azureポータル → Azure Active Directory → 概要で確認できます","oktaDomain":"Oktaドメイン名(例:your-company.okta.comの'your-company'の部分)","authEndpointGithub":"GitHub OAuth認証エンドポイント(事前設定済み)","authEndpointGeneral":"OAuth認証エンドポイントURL","tokenEndpointGithub":"GitHub OAuthトークンエンドポイント(事前設定済み)","tokenEndpointGeneral":"OAuthトークンエンドポイントURL","userinfoEndpointGithub":"GitHub APIユーザーエンドポイント(事前設定済み)","userinfoEndpointGeneral":"OAuthユーザー情報エンドポイントURL","jwksUri":"トークン検証用のJSON Web Key Set URI","providerName":"SSOプロバイダーのカスタム名"},"providerFallback":"{{name}} シングルサインオン","providers":{"advanced":"詳細設定 / 手動設定"}},"domainVerification":{"title":"ドメイン検証","label":"ワークスペースドメイン","placeholder":"ドメインを追加","hint":"ワークスペースにリンクされたドメイン","check":"確認する","verified":"検証済み","checking":"確認中","copyFailed":"クリップボードへのコピーに失敗しました","dnsTimedOut":"DNS検証がタイムアウトしました。DNS設定を確認して再試行してください。","domainVerifiedSuccess":"ドメインが正常に検証されました!","enterDomainFirst":"先にドメインを入力してください","domainSaved":"ドメインが保存されました。所有権を確認するためにDNSレコードを追加してください。","configFailed":"ドメイン検証の設定に失敗しました","verificationReset":"ドメイン検証がリセットされました","resetFailed":"ドメイン検証のリセットに失敗しました","addDnsRecords":"{{domain}}のDNSレコードを追加","dnsInstructions":"ドメインプロバイダーにログインし、DNS設定に移動して、このTXTレコードを追加してください。","type":"タイプ","hostName":"ホスト / 名前","value":"値","dnsCheckNote":"DNS検証には数分かかる場合があります。すべてが更新されると、ドメインが自動的に検証されます。","checkingDns":"DNSレコードを確認中...","resetting":"リセット中...","reset":"リセット","copyLabel":"{{label}}をコピー"}}}`),NY={earnBonusCredits:"ボーナスクレジットを獲得"},FY={apps:"アプリ",superagents:"スーパーエージェント",newAgent:"新しいエージェント",emptyAgents:"最初のエージェントを作成すると、ここに会話が表示されます。",allAgents:"すべてのエージェント",settings:"設定",inviteMembers:"メンバーを招待",allWorkspaces:"すべてのワークスペース",org:"組織",createNewWorkspace:"新しいワークスペースを作成",recents:"最近の項目",favorites:"お気に入り",noFavoritesYet:"お気に入りはまだありません",addAppsForQuickAccess:"アプリを追加してすばやくアクセス",view_all:"すべて表示"},LY={pageTitle:"Base44ギフトカードを購入",pageSubtitle:"ものづくりの喜びを贈ろう。友達にギフトカードを送ろう。",tabBuy:"ギフトカードを購入",tabPurchased:"購入済み",successTitle:"ギフトカードが正常に購入されました!",successDescription:"受取人にギフトカードコードが記載されたメールが送信されます。",successDescriptionPdf:"印刷して直接お渡しできるギフトカードについて、メールをご確認ください。",dismissSuccess:"成功メッセージを閉じる",amount:"金額",customAmount:"$ カスタム",customAmountPlaceholder:"{{symbol}} カスタム金額",customAmountError:"金額は{{min}}〜{{max}}の範囲で入力してください",creditsInfo:"このギフトカードには<strong>{{credits}}メッセージクレジット</strong>が含まれます",deliveryMethodTitle:"配送方法を選択",deliveryEmail:"受取人にメールを送信(購入後すぐ)",deliveryPdf:"自分にメールを送信(印刷用PDF)",recipientTitle:"宛先",recipientName:"名前",recipientNamePlaceholder:"受取人の名前",recipientEmail:"メール",recipientEmailPlaceholder:"受取人のメールアドレス",messageLabel:"ギフトカードメッセージ(任意)",messagePlaceholder:"メッセージを追加...",suggestMessage:"メッセージを提案",suggestFallbackName:"友達",messageCharCount:"{{count}}/300文字",senderTitle:"差出人",senderName:"あなたの名前",senderNamePlaceholder:"あなたの名前",submitButton:"購入手続きへ",submitting:"処理中...",errorGeneric:"エラーが発生しました",historyEmpty:"まだギフトカードはありません。友達にプレゼントしよう!",historyTo:"{{name}}さんへ",historyCodeLabel:"ギフトカードコード",historyCopy:"コピー",historyCopied:"コピー済み",historyRedeemed:"このギフトカードは使用済みです",historyRedeemedOn:"このギフトカードは{{date}}に使用されました",historySentTo:"{{email}}に送信済み",statusSent:"送信済み",statusRedeemed:"使用済み",statusExpired:"期限切れ",statusProcessing:"処理中",statusPending:"保留中",statusRevoked:"取り消し済み",designTitle:"デザインを選択",historyActions:"アクション",designClassic:"クラシック",designSunrise:"サンライズ",designOcean:"オーシャン",cardLabel:"ギフトカード",cardCreditsLabel:"メッセージクレジット",cardFor:"{{name}}さんへ",cardDefaultName:"お友達",historyError:"ギフトカードの読み込みに失敗しました。もう一度お試しください。",historyDateIssued:"発行日",historyRecipient:"受取人",historyAmount:"金額",historyStatus:"ステータス",historyCode:"コード",historySenderDetails:"送信者詳細",historySentToYou:"あなたに送信済み",historyViewCode:"コードを表示",historyHideCode:"コードを非表示",historyDownloadPdf:"PDFをダウンロード",historyResend:"再送信",historyResendSuccess:"ギフトカードメールを再送信しました!",historyResendError:"メールの再送信に失敗しました。もう一度お試しください。",historyDownloadError:"ダウンロードに失敗しました。もう一度お試しください。",historyCredits:"クレジット",emailInvalid:"有効なメールアドレスを入力してください",buyGiftCard:"ギフトカードを購入",giftAndReferrals:"ギフト&紹介",redeemTitle:"ギフトカードを受け取りました!",redeemDescription:"引き換え後、クレジットはあなたのワークスペースに適用されます。",redeemSelectWorkspace:"ワークスペースを選択",redeemBackToWorkspace:"ワークスペースに戻る",redeemCheckCreditUsage:"クレジット使用状況を確認",redeemErrorDescription:"このコードはすでに使用されており、再度引き換えることはできません。何が起きたか不明な場合は、クレジットを確認するか、サポートにお問い合わせください。",redeemDefaultWorkspace:"この",error:"エラー",redeemSuccess:"ギフトカードを引き換えました!",redeemSuccessDescription:"{{credits}}クレジットが{{workspace}}に追加されました。",redeemButton:"ギフトカードを引き換える",redeemNotNow:"後で",redeemDocsLink:"ギフトカードクレジットの仕組みについては<docsLink>ドキュメント</docsLink>をご覧ください",redeemCouponDescription:"引き換えると、サブスクリプションが{{amount}}分の割引になります。",redeemCouponAppliedTitle:"ギフトカードが適用されました!",redeemCouponReadyTitle:"ギフトカードの準備ができました!",redeemCouponNoWorkspace:"ワークスペースが選択されていません",coupon:{title:"クーポンまたはギフトカードを引き換える",description:"コードを入力してクレジットを追加してください。",placeholder:"コードを入力",apply:"適用",success:"クーポンが正常に適用されました!",invalidCode:"コードが無効です。もう一度お試しください。",notFound:"クーポンコードが見つかりません。コードを確認してもう一度お試しください。",giftCardNotFound:"ギフトカードが見つかりません。コードを確認してもう一度お試しください。",redeemFailed:"ギフトカードの引き換えに失敗しました。もう一度お試しください。"},errors:{invalidRecipientEmail:"有効なメールアドレスを入力してください",recipientEmailRequired:"受取人のメールアドレスは必須です",checkoutFailed:"購入を開始できませんでした。もう一度お試しください。",confirmPurchaseFailed:"購入を確認できませんでした。もう一度お試しください。",alreadyRedeemed:"このギフトカードはすでに使用済みです",notAvailable:"このギフトカードは引き換えできません",expired:"このギフトカードは有効期限が切れています",notWorkspaceMember:"選択したワークスペースのメンバーではありません",networkError:"ネットワークエラーです。インターネット接続を確認してもう一度お試しください。",rateLimitExceeded:"試行回数が多すぎます。しばらくしてからもう一度お試しください。",permissionDenied:"ギフトカードを引き換えられるのはワークスペースのオーナーのみです。オーナーにこのコードの適用を依頼してください。",invalidPlanPrice:"このプランはギフトカードでのお支払いに対応していません。別のプランを選択してください。"},creditBanner:"アカウントに{{amount}}のギフトカードクレジットがあります。次回の請求書に自動的に適用されます。",upgradeGiftCardWarning:"現在のプランはギフトカードで購入されました。ギフトカードのクレジットはアップグレード時に引き継がれません — 日割り料金が請求されます。"},jY={back:"戻る"},OY="読み込み中...",BY={message:"<strong>{{email}}</strong>としてサインインしています — 想定されたアカウントと一致しません。",switchAccount:"アカウントを切り替える",dismiss:"バナーを閉じる"},UY={topBar:PY,createWorkspacePage:_Y,workspaceMenu:xY,agentEditorMenu:IY,credits:RY,community:zY,workspaceSettings:MY,referralCta:NY,sidebar:FY,giftCards:LY,common:jY,loading:OY,userMismatch:BY},qY={notifications:"通知",latestNews:"最新ニュース"},VY={loading:"読み込み中...",loadingMore:"さらに読み込み中...",errorLoading:"通知の読み込みに失敗しました",noNotifications:"通知はまだありません",noMoreNotifications:"通知はこれ以上ありません",noNews:"ニュースはまだありません"},$Y={markAllAsRead:"すべて既読にする",readMore:"続きを読む",showLess:"折りたたむ",upgrade:"アップグレード",percentOff:"{{percent}}%オフ"},WY={tabs:qY,states:VY,actions:$Y},GY="プランと請求",HY="サブスクリプション管理",YY={planAndBilling:"プランと請求"},KY={details:"サブスクリプション詳細",cancelPlan:"プランを解約",cancelling:"キャンセル中...",explorePlans:"プランを見る",reactivatePlan:"プランを再有効化",reactivating:"再有効化中...",upgradePlan:"プランをアップグレード",updatePayment:"支払いを更新",managePlan:"プランを管理",yourPlan:"現在のプラン",creditsPerMonth:"月間クレジット",price:"料金",nextBillingDate:"次回請求日",highlights:"プランの特徴",cancelChange:"変更をキャンセル",cancelTooltip:"サブスクリプションをキャンセルするには、まずスケジュールされたダウングレードをキャンセルしてください",currentlyUsing:"現在 <bold>{{plan}}</bold> プランをご利用中です",subscriptionEndsOn:"サブスクリプションは{{date}}に終了します",subscriptionRenewsOn:"サブスクリプションは{{date}}に更新されます",noActiveSubscription:"有効なサブスクリプションなし",keepSubscription:"サブスクリプションを継続しますか?<manageLink>プランを管理</manageLink>をクリックして変更をキャンセルしてください。",planChangeNotice:"現在の請求サイクル終了時にプランが{{plan}}に変更されます。",cancelOnDate:"プランは{{date}}に解約される予定です。現在のクレジットと機能を維持するには再有効化してください。",cancelNoDate:"サブスクリプションはキャンセルされる予定です。現在のクレジットと機能を維持するには再有効化してください。",free:"無料",monthly:"月",yearly:"年",subscriptionCancelled:"サブスクリプションがキャンセルされました",staysActiveUntil:"{{date}}まですべての機能が有効です",creditsFormat:"{{messageCredits}} メッセージ | {{integrationCredits}} インテグレーション",priceFormat:"{{symbol}}{{amount}}/{{period}}"},ZY={privateApps:"プライベートアプリ",inAppCodeEditing:"アプリ内コード編集",unlimitedApps:"無制限のアプリ",removeBase44Badge:"Base44バッジを非表示",connectDomain:"ドメインを接続",backendFunctions:"バックエンド関数",github2WaySync:"GitHub双方向同期",customOAuth:"Google ConsoleからカスタムOAuth",aiModelSelection:"AIモデル選択",stripeIntegration:"Stripe連携",customEmailDomain:"カスタムメールドメイン",appStoreFileDownloads:"アプリストアファイルダウンロード"},JY={title:"支払い期限超過",description:"サブスクリプションの支払いが期限を超えています。支払い方法を更新してプラン機能へのフルアクセスを回復してください。",tryAgain:"再試行",trying:"処理中..."},QY={title:"支払い方法",manage:"管理",noPaymentMethod:"支払い方法が登録されていません",default:"デフォルト",expires:"有効期限 {{month}}/{{year}}"},XY={title:"請求情報",manage:"管理",name:"名前",email:"メールアドレス",billingAddress:"請求先住所",noInformation:"請求情報がありません"},e2={title:"請求履歴",noHistory:"請求履歴がありません",loading:"請求履歴を読み込み中...",loadError:"請求データの読み込みに失敗しました",planDescription:"{{plan}} プラン",downloadInvoice:"請求書をダウンロード"},t2={managingBillingFor:"<bold>{{name}}</bold> の請求を管理中",subscriptionRenewsOn:"ワークスペースのサブスクリプションは{{date}}に更新されます",noActiveSubscription:"有効なワークスペースサブスクリプションなし",manage:"管理",defaultName:"ワークスペース",addSeats:"ユーザーを追加",loadError:"ワークスペースの請求履歴の読み込みに失敗しました",workspaceSeats:"ワークスペースユーザー",contactAdmin:{title:"ワークスペースプラン",subtitle:"ワークスペースで管理されています",body:"クレジットがもっと必要ですか?ワークスペース管理者に連絡して、チームのプランをアップグレードしてください。"}},a2={portalError:"課金ポータルを開けませんでした。後でもう一度お試しいただくか、サポートにお問い合わせください。",paymentPortalError:"支払い管理を開けませんでした。もう一度お試しください。",scheduleCancelSuccess:"サブスクリプションスケジュールが正常にキャンセルされました",scheduleCancelError:"サブスクリプションスケジュールのキャンセルに失敗しました。後でもう一度お試しください。",subscriptionCancelError:"サブスクリプションのキャンセルに失敗しました。もう一度お試しください。"},n2={title:GY,manageSubscription:HY,breadcrumb:YY,subscription:KY,features:ZY,pastDue:JY,paymentMethod:QY,billingInformation:XY,billingHistory:e2,workspace:t2,toasts:a2},i2={title:"お問い合わせ",subtitle:"私たちのチームにお問い合わせいただき、Base44 が貴社のお役に立てる方法をご確認ください。",form:{firstName:"名*",lastName:"姓*",workEmail:"会社メールアドレス*",companyWebsite:"会社ウェブサイト*",role:"役職*",discussion:"ご相談内容をお聞かせください",submit:"送信"},success:{title:"お問い合わせありがとうございます!",description:"メッセージを受け取りました。24 時間以内にチームよりご連絡いたします。Base44をご利用いただくことを楽しみにしています!"}},r2={iso27001:{title:"ISO 27001",subtitle:"ISO セキュリティ管理"},soc2:{title:"SOC 2 タイプ II",subtitle:"サービス組織向け SOC"},gdpr:{title:"GDPR",subtitle:"データ保護とプライバシー規制"}},o2={fiveApps:"5つのアプリ",unlimitedCollaborators:"無制限のコラボレーター",userAnalytics:"ユーザー分析",aiAgents:"AIエージェント",limitedDb:"512MB DB(制限あり)",unlimitedApps:"無制限のアプリ",unlimitedNumberOfApps:"無制限のアプリ数",connectDomain:"ドメインの接続",connectorsIntegrations:"コネクターと連携",backendFunctions:"バックエンド機能",scaledUserAnalytics:"スケーラブルなユーザー分析",privateApps:"プライベートアプリ",flexibleAiModelControl:"柔軟なAIモデル制御",removeBase44Branding:"Base44ブランディングを削除",inAppCodeEditing:"アプリ内コード編集",inAppCodeEdits:"アプリ内コード編集",freeDomainOneYear:"1年間無料ドメイン",creditsToShare:"友達にシェアできる25クレジット",githubTwoWayIntegration:"GitHub双方向連携",githubIntegration:"GitHub連携",earlyAccessBeta:"ベータ機能への早期アクセス",premiumSupport:"プレミアムサポート",sso:"シングルサインオン(SSO)",prioritySupport:"優先サポート",workspacePublishingControls:"ワークスペース公開管理",workspaceTemplates:"ワークスペーステンプレート",ipWhitelisting:"IPホワイトリスト",workspaceUsageAnalytics:"ワークスペース使用状況分析",userRolesPermissions:"ユーザーロールと権限",dataTrainingOptOut:"データ学習のオプトアウト",scim:"SCIM",creditConsumptionControl:"クレジット消費管理",dedicatedAccountManager:"専任アカウントマネージャー",dedicatedSolutionEngineer:"専任ソリューションエンジニア",enterpriseSupport:"エンタープライズサポート",customSecurityCapabilities:"カスタムセキュリティ機能",customDatabaseStorage:"カスタムデータベースストレージ",customRateLimits:"カスタムレート制限",tailoredOnboarding:"カスタマイズされたオンボーディングと利用開始支援",workspaceMonitoringApi:"ワークスペース監視API"},s2={unlimitedApps:"無制限のアプリ",unlimitedCollaboratorsSharedCredits:"共有クレジット付き無制限のコラボレーター",customDomain:"カスタムドメイン",removeBase44Branding:"Base44ブランディングを削除",builtInIntegrations:"組み込みインテグレーション",automations:"オートメーション",chooseAiModel:"AIモデルを選択",inAppCodeEditing:"アプリ内コード編集",twoWayGithubSync:"双方向GitHubシンク",privateTemplates:"プライベートテンプレート",earlyAccessNewFeatures:"新機能への早期アクセス",prioritySupport:"優先サポート"},l2={choosePlan:"あなたに合ったプランをお選びください",usage:"利用状況",back:"戻る",chooseBillingCycleUpgrade:"{{planName}}へのアップグレードに向けて請求サイクルをお選びください",selectBillingCycle:"{{planName}}プランの請求サイクルをお選びください",viewBilling:"請求を表示",seePricing:"料金を見る"},c2={desktop:"Base44は<wixLogo/>の一部です - 世界中で2億5000万人以上に信頼されています",mobile:{line1:"Base44は<wixLogo/>の一部です",line2:"世界中で2億5000万人以上に信頼されています"}},d2={badge:{recommended:"おすすめ",popular:"人気",mostPopular:"一番人気",currentPlan:"現在のプラン",discountOff:"{{discount}}オフ"},button:{processing:"処理中...",notAvailable:"利用不可",manageSubscription:"サブスクリプションを管理",managePlan:"プランを管理",currentPlan:"現在のプラン",upgradePlan:"プランをアップグレード",upgradeTo:"{{planName}}にアップグレード",downgradeTo:"{{planName}}にダウングレード",downgradePlan:"プランをダウングレード",switchPlan:"プランを切り替える",subscribeTo:"{{planName}}に登録",bookDemo:"デモを予約",getPlan:"{{planName}}を取得"},credits:{monthly:"月間クレジット",integration:"連携クレジット",monthlyLower:"月間クレジット",integrationLower:"連携クレジット",messageCredits:"メッセージクレジット",perMonth:"/月",sharedAcrossUsers:"無制限のユーザーで共有",messageShort:"メッセージ",integrationShort:"連携"},features:{highlights:"プランの特徴:",allInBusinessPlus:"ビジネスのすべて+:",allInBuilderPlus:"ビルダーのすべて+:",unlimitedAgents:"エージェント数無制限"},free:{dailyCredits:"1日{{dailyCredits}}クレジット(最大{{monthlyMax}}/月)",integrationCredits:"{{amount}}連携クレジット"},enterprise:{description:"エンタープライズグレードのガバナンス、スケーラビリティ、サポートを<bold>カスタム料金</bold>モデルとカスタムクレジット量でご利用いただけます。"}},u2={offTiers:"30%割引プラン",currentPlan:"現在のプラン",popular:"人気",messageCredits:"メッセージクレジット",integrationCredits:"連携クレジット",perMonth:"/月",placeholder:"クレジットを選択",footer:{cantFind:"適切なプランが見つかりませんか?",contactUs:"お問い合わせ"}},p2={button:{cancel:"キャンセル",confirmUpgrade:"アップグレードを確認",confirmDowngrade:"ダウングレードを確認",confirmSwitch:"切り替えを確認",processing:"処理中...",continue:"続ける"},upgrade:{title:"サブスクリプションのアップグレードを確認",upgradeDescription:"{{planName}}プランに<price/>でアップグレードしようとしています。サブスクリプションはすぐに更新され、現在の請求サイクルの残りの按分金額が請求されます。",upgradeDescriptionYearly:"{{planName}}年間プランに<price/>でアップグレードしようとしています。サブスクリプションはすぐに更新され、現在の請求サイクルの残りの按分金額が請求されます。",upgradeDescriptionShort:"{{planName}}プランに<price/>でアップグレードしようとしています。サブスクリプションはすぐに更新され、按分金額が請求されます。"},downgrade:{title:"サブスクリプションのダウングレードを確認",description:"{{planName}}プランに{{price}}/月でダウングレードします。この変更は現在の請求サイクルの終了時に有効になります。"},switch:{title:"プランを切り替える",switchDescription:"{{planName}}プランに切り替えると、利用可能な機能が更新され、月間制限が<bold>メッセージクレジット{{messageCredits}}、連携クレジット{{integrationCredits}}</bold>に変更されます。",nextBillingDate:"これらの変更は{{date}}、次の請求サイクルの開始時に有効になります。",nextBillingCycle:"これらの変更は次の請求サイクルの開始時に有効になります。"},manageSubscription:{title:"サブスクリプションを管理",description:"{{planName}}サブスクリプションの管理方法を選択してください。",upgradeToYearly:"年間プランにアップグレード",upgradeToYearlySavings:"節約して無料ドメイン+25クレジットをシェア",upgradeToYearlySavingsStarter:"節約して25クレジットをシェア",managePayments:"支払い管理",managePaymentsDescription:"支払い方法の更新、請求書の確認など",managePaymentsDescriptionAlt:"支払い方法の更新、請求書の確認など"},upgradeToYearly:{titleV1:"サブスクリプションのアップグレードを確認",titleV2:"プランをアップグレード",descriptionV2:"アップグレード後、現在のプランの残り期間に応じた按分金額が請求されます。次の請求日から、{{price}} × 12ヶ月のプラン全額が請求されます。",benefitsTitle:"🎁 年間特典",freeDomain:"1年間の無料ドメイン",shareCredits:"友達と25クレジットをシェア",betterValue:"年間料金でよりお得に"}},m2={title:"よくある質問",whatIsBase44:{question:"Base44とは何ですか?",answer:{description:"Base44は、コーディングなしでカスタムソフトウェアアプリケーションを構築できるAIパワードプラットフォームです。自然言語処理を使用して要件を理解し、説明に基づいて機能的なソフトウェアを生成します。",accessibility:"私たちのプラットフォームは、技術的でないユーザーにも使いやすく設計されており、AIとのシンプルな会話を通じて強力なアプリケーションを作成できます。"}},freePlan:{question:"無料プランには何が含まれていますか?",answer:{allowances:"無料プランでは、1日5件のメッセージと月間合計25件のメッセージが利用できます。また、認証、データベース、分析などのさまざまなインテグレーションを試すための100インテグレーションクレジットも付与されます。",coreAccess:"無料プランでは、すべてのコアインテグレーションタイプにアクセスでき、ユーザー認証やデータストレージなどを含む完全に機能するアプリケーションを無料で構築できます。"}},integrationCredits:{question:"インテグレーションクレジットとは何ですか?",answer:{definition:"インテグレーションクレジットは、アプリケーション内でBase44のさまざまなインテグレーションにアクセスするために使用されます。",capabilities:"これらのインテグレーションにより、LLM、ファイルアップロード、画像理解、画像生成、メール送信、SMS送信、データベースクエリなど、アプリの機能が強化されます。プランのインテグレーションクレジット数によって、1ヶ月にこれらのリクエストをどれだけ行えるかが決まります。",expiration:"未使用のクレジットは、月次請求サイクルの終了時(リセット日)に失効します。",learnMore:"クレジットの使用方法について、詳しくはナレッジベースをご覧ください。"}},appTypes:{question:"Base44でどのようなアプリケーションを構築できますか?",answer:{examples:"Base44は汎用性が高く、完全に機能するSaaS製品、バックオフィスツール、個人生産性アプリ、顧客ポータル、ビジネスプロセス自動化ツールなど、幅広いアプリケーションの構築に使用できます。",prototyping:"また、ラピッドプロトタイピングやMVPの作成にも使用でき、高価な開発リソースに投資することなくアイデアを素早く検証できます。"}},ownership:{question:"Base44で作成したアプリケーションの所有権は誰にありますか?",answer:{yourProperty:"あなたとBase44の間では、プラットフォームを通じて生成されたすべてのアプリケーションとコンテンツはあなたの財産とみなされます。Base44はあなたが作成したものに対して所有権を主張しません。",intellectualProperty:"あなたの知的財産はあなたのものであり、法律で認められる範囲で生成されたアプリケーションを自由に使用、変更、配布、または販売することができます。"}},deployment:{question:"Base44のアプリケーションはどのようにデプロイされますか?",answer:{instantAccess:"Base44では、デプロイは非常に簡単です。アプリケーションは作成後すぐに使用可能になり、共有できます。アプリのURLを使用して他の人と共有するだけです。",noHosting:"別途ホスティングやデプロイ手順は不要で、アプリケーションをすぐに起動することができます。"}},planLimits:{question:"プランの制限に達した場合はどうなりますか?",answer:{limitations:"1日のメッセージ制限に達した場合、翌日まで待つ必要があります。月間制限に達した場合、次の請求サイクルが始まるまで追加のメッセージを送信したり、インテグレーションリクエストを行うことができなくなります。",upgradeOption:"アプリの開発と使用の中断を避けるために、請求ダッシュボードからいつでも制限が増加した上位プランにアップグレードできます。"}}},g2={pendingChange:{title:"保留中のサブスクリプション変更",message:"現在の請求サイクルの終了時に{{tierName}}プランへのサブスクリプション変更が予定されています。",subMessage:"注意: サブスクリプションをキャンセルするには、まずこの変更をキャンセルしてから、「支払い管理」を使用してキャンセルしてください。",cancelChange:"変更をキャンセル",cancelling:"キャンセル中..."},cancellation:{title:"サブスクリプションのキャンセルが予定されています",message:"サブスクリプションは{{endDate}}に終了します。それまではすべての機能に完全にアクセスできます。",subMessage:"サブスクリプションを継続しますか?ワンクリックで再開できます。",managePayments:"支払い管理",processing:"処理中..."}},h2={currentPlan:"現在のプランは{{displayName}}、",withCredits:"{{messageCredits}}メッセージクレジットと{{integrationCredits}}インテグレーションクレジット付き。"},f2={title:"Base44の特典:",responsiveVisualEditor:"レスポンシブビジュアルエディター",builtInBackend:"組み込みバックエンド",userManagement:"ユーザー管理"},v2={title:"サブスクリプションの支払いが延滞しています",tryAgain:"再試行",trying:"試行中...",updatePaymentMethod:"支払い方法を更新",description:"前回の支払いが処理されませんでした。再試行するか、支払い方法を更新して、プランへの完全なアクセスを復元してください。"},b2={error:"エラー",success:"成功",checkoutError:"チェックアウトセッションの作成に失敗しました。後でもう一度お試しください。",subscriptionUpdated:"サブスクリプションが更新されました",downgradeScheduled:"請求サイクルの終了時にサブスクリプションのダウングレードが予定されました。",upgradeSuccess:"サブスクリプションが正常にアップグレードされました。変更はまもなく反映されます。",updateError:"サブスクリプションの更新に失敗しました。後でもう一度お試しください。",portalError:"請求ポータルを開けませんでした。後でもう一度お試しください。",scheduleCancelSuccess:"サブスクリプションスケジュールが正常にキャンセルされました",scheduleCancelError:"サブスクリプションスケジュールのキャンセルに失敗しました。後でもう一度お試しください。",paymentPortalError:"支払い管理を開けませんでした。もう一度お試しください。"},y2={loadError:"ワークスペースの請求情報を読み込めませんでした",loadErrorAlert:"ワークスペースの請求情報を読み込めませんでした。後でもう一度お試しください。",seatTypePlan:"{{seatType}}プラン",currentPlanContact:"現在{{seatType}}プランをご利用中です。変更するには、ワークスペースの{{adminType}}にお問い合わせください。",workspaceOwner:"ワークスペースオーナー:",workspaceAdmin:"ワークスペース管理者:",viewerAccess:"閲覧者アクセス",viewerAccessDescription:"このワークスペースでは現在閲覧者アクセスです。フルアクセスのシートを取得するには、ワークスペースの{{adminType}}にお問い合わせください。",adminAccessMessage:"<strong>管理者アクセス:</strong> <a>ワークスペースダッシュボード</a>でシート、請求、チームメンバーを管理できます。",adminTypes:{owner:"オーナー",administrator:"管理者"}},k2={loadError:"ワークスペース情報を読み込めませんでした。後でもう一度お試しください。",workspacePlan:"ワークスペースプラン:",renews:"更新日:",workspaceOwner:"ワークスペースオーナー",contactOwner:"請求の変更やサブスクリプションに関する質問は、ワークスペースオーナーにお問い合わせください。",ownerLabel:"ワークスペースオーナー:",adminAccessMessage:"<strong>管理者アクセス:</strong> <a>ワークスペースメンバー</a>ページでメンバーを管理できます。",billingManagedByOwner:"請求はワークスペースオーナーが管理しています。請求に関する質問は、上記のオーナーにお問い合わせください。",roles:{owner:{title:"オーナー",description:"ワークスペースの請求、設定、メンバー管理への完全なアクセス権。"},admin:{title:"管理者",description:"ワークスペースの設定とメンバーを管理できますが、請求は変更できません。"},editor:{title:"エディター",description:"このワークスペース内でアプリを作成・編集できます。"},viewer:{title:"閲覧者",description:"このワークスペースのアプリを読み取り専用で閲覧できます。"},member:{title:"メンバー",description:"ワークスペースアプリにアクセスできるチームメンバー。"},guest:{title:"ゲスト",description:"このワークスペースの特定のアプリにアクセスできる外部コラボレーター。"}}},w2={title:"セキュリティとコンプライアンス",iso:{title:"ISO/IEC 27001",subtitle:"ISO/IECセキュリティマネジメント"},soc2:{title:"SOC 2 Type II",subtitle:"サービス組織向けSOC"},gdpr:{title:"GDPR",subtitle:"データ保護およびプライバシー規制"}},A2={title:"Base44 エンタープライズ",subtitle:"大規模な組織が、チームに最適なソリューションを安全にスケールして構築できるよう支援します",contactUs:"お問い合わせ",features:{onboarding:{title:"オンボーディングとトレーニング",description:"管理者とエンドユーザーが迅速に導入できるよう、ライブトレーニングとリソースを組み合わせた、カスタマイズされたオンボーディングプランを提供します。"},accountTeam:{title:"専任アカウントチーム",description:"専任のアカウントマネージャーとソリューションエンジニアが、直接的なガイダンス、エスカレーション、ロードマップの調整を提供します。"},prioritySupport:{title:"優先サポート、保証付き",description:"専用サポートチャンネルから、保証された優先サポートと定義された応答時間を受けられます。"},capabilities:{title:"エンタープライズグレードの機能",description:"セキュリティ、コンプライアンス、管理、監視機能により、大規模に必要なコントロールと柔軟性を提供します。"}}},S2={yearly:"年間",monthly:"月額",yearlyInline:"年間",monthlyInline:"月額",monthlyCredits:"月間クレジット",integrationCredits:"インテグレーションクレジット",priceSuffixYearly:" × 12ヶ月",priceSuffixMonthly:" / 毎月",off:"割引",save:"お得",discountBadge:"{{discount}}割引",saveBadge:"{{amount}}お得",planNotFound:"プラン料金が利用できません。戻ってもう一度お試しください。",upgradeDialogTitle:"サブスクリプションアップグレードの確認",upgradeDialogDescription:"{{planName}}プランに月額<price/>でアップグレードしようとしています。サブスクリプションはすぐに更新され、現在の請求サイクルの残り期間に対して日割り計算で請求されます。",noteMonthlyExcludes:"注:月額サブスクリプションには以下が含まれません:",whatsIncluded:"{{period}}プランに含まれるもの",chooseYearly:"<yearlyLink>年間</yearlyLink>サブスクリプションを選択して、プレミアムプランを最大限に活用しましょう",yearlyFeatures:{discount:"特別割引でお得に",freeDomain:"1年間無料ドメイン",shareCredits:"友達と共有できる25クレジット"},monthlyFeatures:{discount:"特別割引と節約",freeDomain:"1年間無料ドメイン",shareCredits:"友達と共有できる25クレジット"},planNotAvailable:"プランの価格が利用できません。もう一度お試しください。",goBack:"戻る",continueToCheckout:"お支払いに進む",confirmSubscriptionUpgrade:"サブスクリプションアップグレードの確認",upgradeDescription:"{{planName}}プランに<strikethrough>{{originalPrice}}</strikethrough>{{price}}/月でアップグレードしようとしています。サブスクリプションはすぐに更新され、現在の請求サイクルの残り期間に対して日割り計算で請求されます。",cancel:"キャンセル",confirmUpgrade:"アップグレードを確認",processing:"処理中...",studentDiscountFootnote:"本オファーは新規Starterプランの初年度(12か月)に適用されます。1ユーザーにつき1回限り。解約後に割引を再度利用することはできません。"},C2={bannerTitle:"学生または教員ですか?Starterプランが最大{{percent}}%オフ",bannerSubtitle:"大学のメールアドレスを確認して割引価格をご利用ください",verifiedWith:"{{email}}で確認済み - 最大{{percent}}%オフ",starterPlan:"Starterプラン",active:"有効",dialogTitle:"学生割引",surveyTitle:"あなたについて教えてください",alreadyActiveDesc:"学生割引はすでに有効です。",emailStepDesc:"大学のメールアドレスを確認して学生価格をご利用ください。",codeStepDesc:"{{email}}に6桁のコードを送信しました",surveyStepDesc:"確認を完了するためにいくつかの簡単な質問にお答えください。",benefitDiscount:"最大{{percent}}%オフ",benefitDiscountDetail:"Starterプラン",benefitAccess:"フルアクセス",benefitAccessDetail:"すべてのStarter機能",benefitClaimOnce:"1回限り",benefitClaimOnceDetail:"Starterでいつでも使用可能",alreadyApplied:"学生割引はすでに適用されています",alreadyAppliedDesc:"{{email}}で確認済み。割引価格は上記の対象プランに表示されています。",gotIt:"了解",emailPlaceholder:"あなた@大学.edu",emailHint:".edu、.ac.uk、.ac.ilおよびその他の大学ドメインを受け付けています。",sending:"送信中...",sendCode:"確認コードを送信",codePlaceholder:"6桁のコードを入力",verifying:"確認中...",verifyCode:"コードを確認",changeEmail:"メールアドレスを変更",resendCooldown:"コードを再送信({{seconds}}秒)",resendCode:"コードを再送信",role:"役割",student:"学生",teacher:"教員",intendedUseLabel:"Base44をどのように使用する予定ですか?",intendedUsePlaceholder:"例:授業プロジェクト、研究ツール、論文...",fieldOfStudy:"専攻分野は何ですか?",fieldOfTeaching:"担当教科は何ですか?",selectField:"専攻分野を選択...",searchFields:"分野を検索...",other:"その他",specifyField:"具体的に入力してください...",graduationDate:"卒業予定日",month:"月",year:"年",activating:"有効化中...",verifyingEmail:"メール確認中...",activateDiscount:"割引を有効化",errorNoEmail:"大学のメールアドレスを入力してください。",errorInvalidEmail:"有効なメールアドレスを入力してください。",errorSendFailed:"確認コードの送信に失敗しました。もう一度お試しください。",errorEmailAlreadyClaimed:"この大学のメールアドレスは既に別のアカウントに紐づけられています。",errorNoCode:"メールに届いた6桁のコードを入力してください。",errorInvalidCode:"無効または期限切れのコードです。もう一度お試しください。",errorNoIntendedUse:"Base44の使用目的を教えてください。",errorNoField:"専攻分野を選択してください。",errorNoFieldOther:"専攻分野を入力してください。",errorNoGraduation:"卒業予定日を選択してください。",toastActivatedTitle:"学生割引が有効化されました",toastActivatedDesc:"学生価格が対象プランに適用されました。上にスクロールして更新された価格をご確認ください。",errorActivateFailed:"割引の有効化に失敗しました。もう一度お試しください。",toastResentTitle:"コードを再送信しました",toastResentDesc:"新しい確認コードがメールに送信されました。",errorResendFailed:"コードの再送信に失敗しました。しばらく待ってからもう一度お試しください。"},D2="現在のプランはギフトカードで購入されました。ギフトカードのクレジットはアップグレード時に引き継がれません — 日割り料金が請求されます。",T2={title:"購入完了",redirecting:"{{seconds}}秒後にアプリに戻ります...",button:"アプリに戻る"},E2={modal:i2,certificates:r2,features:o2,borderTag:s2,header:l2,messageLabel:c2,card:d2,dropdown:u2,dialog:p2,faq:m2,notices:g2,manageSubscription:h2,benefits:f2,overduePayment:v2,toasts:b2,workspaceBilling:y2,workspaceRoles:k2,security:w2,enterprise:A2,periodSelector:S2,studentDiscount:C2,upgradeGiftCardWarning:D2,returnToApp:T2},P2="友達を招待してクレジットを獲得",_2="友達を招待して<br/>クレジットを獲得",x2="招待してクレジットを獲得",I2="あなたのリンクを共有して、友達が最初のアプリを公開すると {{credits}} クレジットを獲得できます",R2={title:"素晴らしい!最大招待数に達しました",description:"最大{{maxReferrals}}人の友達を招待できます",extra:"(さらに{{extra}}人追加してもクレジットは獲得できません)"},z2={tryAgain:"もう一度試す",copied:"クリップボードにコピーしました!",copyButton:"コピー",copiedButton:"コピー済み"},M2={title:"仕組み",shareLink:"ユニークな紹介リンクを友達とシェアする",signupBonus:"友達がサインアップすると<bold> {{credits}} クレジット</bold>もらえます",publishReward:"友達が最初のアプリを公開すると<bold> {{credits}} クレジット</bold>もらえます"},N2="あなたの紹介 ({{current}}/{{max}})",F2={registered:"登録済み",earned:"獲得済み"},L2={back:"戻る",close:"閉じる",srTitle:"紹介プログラム",baseDayBadge:"Base44 Day",creditsCount:"{{credits}} クレジット",earnCredits:"{{credits}} クレジットを獲得",termsAndConditions:"利用規約",termsDescription:"紹介プログラムの利用規約"},j2={title:"利用規約",eligibility:{title:"資格",newUsersOnly:"この紹介オファーに参加できるのは新規ユーザーのみです。既存アカウントは対象外です。",shareResponsibly:"紹介リンクは責任を持って共有してください。無関係またはスパム的な場所への投稿は、プログラムからの除外につながる可能性があります。"},credits:{title:"紹介クレジット",earnOnPublish:"紹介した友達が最初のアプリを公開すると {{credits}} クレジットを獲得",bonusOnSignup:"紹介された友達は登録時に {{credits}} ボーナスクレジットを受け取る",maxPerAccount:"1アカウントあたり最大5回の成功した紹介",noCashValue:"クレジットに現金価値はなく、譲渡もできません"},restrictions:{title:"制限事項",voidFraudulent:"Base44は不正な紹介を無効にする権利を留保します",nonTransferable:"紹介コードは譲渡不可です"},footer:"Base44はいつでも本紹介プログラムを変更または終了する権利を留保します。変更はプラットフォームを通じて通知されます。"},O2={title:P2,titleDesktop:_2,titleMobile:x2,subtitle:I2,maxReached:R2,link:z2,howItWorks:M2,yourReferrals:N2,status:F2,dialog:L2,terms:j2},B2={title:"スポットライト",subtitle:"Base44で作られた優れたアプリとウェブサイトを探索しましょう",loading:"スポットライトを読み込み中…",errorMessage:"スポットライトを読み込めませんでした。後でもう一度お試しください。",empty:"スポットライトアプリはまだありません。"},U2={title:"エラー",description:"スポットライトアプリの読み込みに失敗しました。"},q2={label:"本日のスポットライト",byCreator:"{{creator}} 作",screenshotAlt:"{{appName}}のスクリーンショット",logoAlt:"{{appName}}のロゴ"},V2={"beautifully-designed":"美しいデザイン","loved-by-the-community":"コミュニティで人気",saas:"SaaS",education:"教育","e-commerce":"Eコマース",websites:"ウェブサイト"},$2={screenshotAlt:"{{appName}}のスクリーンショット",logoAlt:"{{appName}}のロゴ",viewDetailsLabel:"詳細を見る",viewDetailsAriaLabel:"{{appName}}の詳細を見る"},W2={backButton:"スポットライト",byCreator:"{{creator}} 作",iframeTitle:"{{appName}}のプレビュー",previewNotAvailable:"プレビューは利用できません"},G2={ariaLabel:"スポットライトにアプリを申請",heading:"あなたのアプリをここに掲載しませんか?",description:"Base44で作ったものを見せてください。スポットライトに申請してコミュニティにインスピレーションを与えましょう。",buttonText:"アプリを申請する"},H2={title:"スポットライトにアプリを申請",selectAppSubtitle:"スポットライトページに推薦するアプリを選んでください。",detailsSubtitle:"なぜあなたのアプリがスポットライトページに掲載されるべきか教えてください。",back:"戻る",cancel:"キャンセル",next:"次へ",searchPlaceholder:"アプリを検索...",aboutLabel:"このアプリについて",aboutPlaceholder:"あなたのアプリについて面白いことを教えてください – 特別な機能、スマートな工夫、またはコミュニティが喜んで発見するようなこと",screenshotLabel:"スクリーンショット<optional>(任意)</optional>",screenshotHint:"PNG、JPG、またはWebP — 最小800×450px、最大2MB",submit:"申請する",submitting:"申請中…",submitError:"スポットライトの申請に失敗しました。",successAlreadyInSpotlight:"すでにスポットライトに掲載されています",successRequestReceived:"申請を受け付けました",successDescription:'"{{appName}}"をスポットライトのために確認します。近日中にご連絡します。'},Y2={viewApp:"アプリを見る",share:"シェア",upvote:"いいね",alreadyUpvoted:"いいね済み",thankYouForVote:"投票ありがとうございます!",voteError:"投票を登録できませんでした",voteErrorDescription:"後でもう一度お試しください。",linkShared:"リンクを共有しました",linkCopied:"リンクをクリップボードにコピーしました",shareError:"共有できませんでした"},K2={label:"ご存知ですか?"},Z2={editedAgo:"{{timeAgo}}に更新",editedRecently:"最近更新しました",noAppsFound:"アプリが見つかりません",noAppsAvailable:"利用可能なアプリがありません",loadMore:"さらに読み込む",loading:"読み込み中…"},J2={page:B2,fetchError:U2,featured:q2,sections:V2,card:$2,detailModal:W2,submitBanner:G2,requestModal:H2,actions:Y2,didYouKnow:K2,appPicker:Z2},Q2={page:{title:"ヘルプ&サポート",subtitle:"BASE44で素晴らしいアプリケーションを構築するために必要なサポートを受けましょう"},getStarted:"始める",cards:{documentation:{title:"ドキュメント",description:"Base44でのビルドに関する包括的なガイド、チュートリアル、FAQ、ベストプラクティスを探索しましょう。"},discord:{title:"Discordコミュニティ",description:"仲間のビルダーと繋がり、アクティブなコミュニティから即座のサポートを受けましょう。"},supportTicket:{title:"サポートチケットを開く",description:"詳細なサポートチケットを提出し、個別のサポートを受けましょう。"}},appContext:{title:"アプリ固有のサポート",description:"サポートリクエストはアプリ <appId>{{appId}}</appId> に関連付けられます"},quickActions:{title:"クイックアクション",subtitle:"サポート体験を管理する",myTickets:{title:"マイサポートチケット",description:"既存のサポートチケットを確認・管理する"},communityForum:{title:"コミュニティフォーラム",description:"新しく開設されたRedditコミュニティ"}}},X2={fallbackTitle:"サポート会話",appLink:"アプリ"},eK={title:"私のサポートチケット",backToSupport:"サポートに戻る",showingTicketsForApp:"アプリのチケットを表示: <app>{{appId}}</app>",filteredByApp:"アプリでフィルタリング: <app>{{appId}}</app>"},tK={title:"サポートチケットを送信",titleResume:"サポートチケットを送信する"},aK={helpMessage:"すぐにサポートが必要ですか? <normal>こちらの</normal><docsLink>ドキュメント</docsLink><normal>をご確認いただくか、こちらの</normal><discordLink>Discordコミュニティ</discordLink><normal>にご参加ください。</normal>"},nK={heading:"サポートリクエストを続けますか?",description:"以前にサポートチケットの作成を開始しました。",chooseHowToProceed:"どのように進めるか選択してください:",continueWhereLeftOff:"前回の続きから",continueWhereLeftOffDesc:"以前の入力内容を復元し、前回のステップから続けます。",startNewTicket:"新しいチケットを作成",startNewTicketDesc:"下書きを破棄して、新しいサポートリクエストを開始します。",continue:"続ける"},iK={tellUsAboutYourIssue:"問題についてお聞かせください",whatTypeOfIssue:"どのような問題が発生していますか?",selectApp:"問題に関連するアプリを選択してください"},rK={instruction:"何をしていたか、何が問題だったか、再現方法をお知らせください。",descriptionLabel:"説明",descriptionPlaceholder:`例:
• 何をしようとしていたか
• 代わりに何が起こったか
• エラーメッセージ
• 再現手順(関連する場合)`,attachmentsLabel:"添付ファイル",viewApp:"アプリを表示",dragAndDropFiles:"ファイルをここにドラッグ&ドロップ",dropFilesHere:"ファイルをここにドロップ",browseFiles:"ファイルを選択",uploading:"アップロード中...",unsupportedFileType:"ファイルタイプ「{{type}}」はサポートされていません。サポートされているタイプ:jpg、jpeg、png、pdf。",invalidFile:"無効なファイル",failedToUpload:"ファイルのアップロードに失敗しました"},oK={analyzingIssue:"問題を分析中...",categoryFullDescription:"お客様の問題はこれらのカテゴリのいずれかに該当するようです。<br/>最も当てはまるものを選択してください — 適切な解決策へのご案内に役立ちます。"},sK={authentication:"認証",billing:"請求",bug_report:"バグ報告",domain:"ドメイン",integrations_and_backend_functions:"インテグレーション&バックエンド",chat_issues:"チャットの問題",security:"セキュリティ",social_post_bonus_credits:"ソーシャル投稿ボーナスクレジット",superagent:"スーパーエージェント",other:"その他"},lK={searchPlaceholder:"アプリを検索...",addAppLink:"アプリリンクを追加",addAppLinkPlaceholder:"例:https://your-app-url.com または https://yourapp.base44.app",invalidUrl:"http://またはhttps://で始まる有効なURLを入力してください",noAppsFound:"アプリが見つかりません",noAppsAvailable:"利用可能なアプリがありません",loadingMore:"読み込み中...",loadMore:"さらにアプリを読み込む",edited:"{{time}}に更新"},cK={loading:"会話を読み込んでいます...",errorTitle:"会話の読み込みエラー",noConversationTitle:"会話が見つかりません",noConversationMessage:"この会話は存在しないか、アクセス権がありません。",tryAgain:"再試行",ticketFallbackTitle:"サポートチケット",categoryFallback:"一般",closeTicket:"チケットを閉じる",closing:"閉じています...",aiAssistantInfo:"AIアシスタント・誤りが生じる場合があります",talkToSpecialist:"サポートスペシャリストに相談する",handledBySpecialist:"サポートスペシャリストが対応中",notifyWhenResponds:"サポートが返信したら通知する",ticketResolvedTitle:"このチケットは解決済みです",ticketResolvedMessage:"追加のサポートが必要な場合は新しいチケットを作成してください",conversationClosed:"この会話は終了しました",aiHandlingTicket:"AIエージェントがこのチケットを処理中です。手動で返信するには<bold>引き継ぐ</bold>をクリックしてください。",typeResponse:"返信を入力してください...",typeMessage:"メッセージを入力してください...",failedLoadConversation:"会話の読み込みに失敗しました。もう一度お試しください。",ticketAlreadyResolved:"このチケットは解決済みです。追加のサポートが必要な場合は新しいチケットを作成してください。",failedCloseTicket:"チケットを閉じることができませんでした。もう一度お試しください。",failedEscalate:"チケットのエスカレーションに失敗しました。もう一度お試しください。",confirmCloseTicket:"このチケットを閉じますか?解決済みとしてマークされます。",premiumSupportTier:"プレミアムサポート",standardSupportTier:"スタンダードサポート",premiumSupportMessage:"オフラインサポート、48時間以内に優先返信",standardSupportMessage:"オフラインサポート、48時間以内に返信",templates:{label:"クイックテンプレート",less:"閉じる"},draft:{title:"AI提案の返信",collapse:"折りたたむ",viewAll:"すべて表示",use:"使用"},escalateModal:{title:"人によるサポートをリクエスト",description:"チケットはサポートチームに転送され、個別の対応を受けます。",cancel:"キャンセル",requesting:"リクエスト中...",requestButton:"人によるサポートをリクエスト"}},dK={supportTeam:"サポートチーム",attachedFile:"添付ファイル",translatedFrom:"{{language}}から翻訳",internalNote:"内部メモ",emptyTitle:"会話を始めましょう",emptyMessage:"メッセージを送信してサポート会話を開始してください",translating:"翻訳中...",showingTranslations:"翻訳を表示中",translateToEnglish:"英語に翻訳",confirmDeleteMessage:"このメッセージを削除してもよろしいですか?",failedDeleteMessage:"メッセージの削除に失敗しました。もう一度お試しください。",failedTranslate:"メッセージの翻訳に失敗しました。もう一度お試しください。",attachedContent:"添付コンテンツ",videoNotSupported:"お使いのブラウザは動画再生に対応していません。",noteBy:"{{name}} による",adminFallback:"管理者",events:{unknownActor:"誰か",statusChange:"{{actor}} がステータスを {{status}} に変更しました",unassigned:"{{actor}} が割り当てを解除しました",assigned:"{{actor}} が {{assignee}} に割り当てました",reassigned:"{{actor}} が {{assignee}} に再割り当てしました",escalated:"{{actor}} がエスカレーションしました",removedEscalation:"{{actor}} がエスカレーションを解除しました",categoryChange:"{{actor}} がカテゴリを {{category}} に変更しました",labelChangeAdded:"{{actor}} が {{labels}} を追加しました",labelChangeRemoved:"{{actor}} が {{labels}} を削除しました",labelChangeBoth:"{{actor}} が {{added}} を追加し、{{removed}} を削除しました",updated:"{{actor}} がチケットを更新しました",markedAbusive:"{{actor}} がコンテンツを不適切として報告しました",clearedAbusive:"{{actor}} が不適切コンテンツの報告を解除しました"}},uK={uploading:"アップロード中...",uploadFiles:"ファイルをアップロード",fileTypeError:"追加のファイルタイプのサポートは<link>feedback.base44.com</link>でリクエストしてください"},pK={open:"オープン",closed:"クローズ",all:"すべて"},mK={open:"オープン",resolved:"解決済み"},gK={noOpenTickets:"オープンチケットなし",noClosedTickets:"クローズチケットなし",noTickets:"チケットなし",descriptionOpen:"現在、オープンなサポートチケットはありません。",descriptionClosed:"クローズされたチケットは見つかりません。",descriptionAll:"まだサポートチケットを提出していません。"},hK={appLabel:"アプリ: {{appId}}",dateNotAvailable:"利用不可"},fK={loadingTitle:"チケットの読み込みエラー",loadingFailed:"サポートチケットの読み込みに失敗しました。もう一度お試しください。",ticketLimitTitle:"チケット上限に達しました",ticketLimitDescription:"読み込み可能な件数を超えています。最新の1000件のみ読み込まれました。"},vK={free:"無料"},bK={cancel:"キャンセル",back:"戻る",skip:"スキップ",continue:"続ける",submitting:"送信中...",refresh:"更新",newTicket:"新しいチケット",createNewTicket:"新しいチケットを作成",tryAgain:"再試行",bannedAlert:"Base44サポートの利用規約違反により、Base44サポートへのアクセスが制限されました。詳細については、お送りしたメールをご確認ください。"},yK={descriptionRequired:"説明を入力してください",descriptionTooShort:"もう少し詳しく入力してください。最低20文字必要です。",appRequired:"問題が発生しているアプリを選択するか、リンクを追加してください。",submissionFailed:"サポートチケットを送信できませんでした。もう一度お試しください。"},kK={dailyLimitReached:"1日の制限に達しました",somethingWentWrong:"問題が発生しました",dailyLimitMessage:"1日のサポート会話数の上限に達しました。現在のプランでは1日{{limit}}件まで会話を作成できます。",tryAgain:"再試行",cancel:"キャンセル",close:"閉じる"},wK={help:Q2,sidebar:X2,page:eK,modal:tK,footer:aK,resumeStep:nK,steps:iK,tellUsAboutYourIssue:rK,whatTypeOfIssue:oK,categories:sK,selectApp:lK,chat:cK,messages:dK,input:uK,tabs:pK,status:mK,emptyState:gK,ticketCard:hK,errors:fK,tiers:vK,actions:bK,validation:yK,submissionError:kK},AK={sectionTitle:"Configurações da conta",sectionDescription:"Gerencie suas preferências e configurações pessoais de conta.",heading:"Conta",email:{label:"E-mail",placeholder:"Nenhum e-mail definido"},fullName:{label:"Nome completo",placeholder:"Digite seu nome completo",profileHint:"É assim que você aparecerá no seu <profileLink>perfil</profileLink> público do Base44."},phoneNumber:{label:"Número de telefone",placeholder:"Digite seu número de telefone",smsConsent:"Ao inserir seu número de telefone, você concorda em receber notificações por SMS de nossa parte."},defaultAgents:{label:"Agentes padrão",toggleLabel:"Habilitar agentes para novos apps por padrão",description:"Quando habilitado, novos apps terão agentes habilitados automaticamente, permitindo que executem tarefas autônomas e usem ferramentas."},defaultTestData:{label:"Dados de teste padrão",toggleLabel:"Habilitar dados de teste para novos apps por padrão",description:"Quando habilitado, novos apps iniciam com dados de teste ativados para que você possa testar alterações com segurança sem afetar dados ao vivo.",upgradeRequired:"Este recurso requer o plano Builder ou superior.",seePlans:"Ver planos"},apiKey:{label:"Chave API",copyTitle:"Copiar chave API",copied:"Copiado!",regenerate:"Regenerar",regenerating:"Regenerando...",regenShort:"Regen.",regenShortLoading:"Regen...",description:"Sua chave API fornece acesso ao seu espaço de trabalho. Não a compartilhe com outras pessoas.",notGenerated:"Ainda não gerada — clique em Regenerar"},backofficeApiKey:{title:"Chave API do Backoffice",description:"Use esta chave para autenticar requisições programáticas ao serviço de backoffice. Ela não funciona no serviço de plataforma. Mantenha-a em segredo.",yourKey:"Sua chave API do backoffice",copySuccess:"Chave API copiada",copyError:"Falha ao copiar a chave API",regenSuccess:"Chave API do backoffice regenerada",regenError:"Falha ao regenerar: {{error}}",warning:"A regeneração invalida imediatamente a chave anterior. Clientes que a utilizam precisarão ser atualizados.",existsPlaceholder:"•••••••••••••••••• (chave existe — apenas o hash é armazenado; regenere para ver uma nova)",showOnceWarning:"Copie esta chave agora. É exibida apenas uma vez e não pode ser recuperada depois."},unsavedChanges:"Alterações não salvas",discard:"Descartar",save:"Salvar",saving:"Salvando...",saveSuccess:"Configurações da conta atualizadas com sucesso!",saveError:"Falha ao atualizar as configurações da conta: {{error}}",unknownError:"Erro desconhecido",apiKeyCopySuccess:"Chave API copiada para a área de transferência!",apiKeyCopyError:"Falha ao copiar a chave API",apiKeyRegenSuccess:"Chave API regenerada com sucesso!",apiKeyRegenError:"Falha ao regenerar a chave API: {{error}}"},SK={title:"Autenticação de dois fatores",description:"Adicione uma camada extra de proteção ao fazer login. Será solicitado um código a cada login.",twoFactorEnabled:"A autenticação de dois fatores está ativada.",statsLine:"{{used}}/{{total}} códigos de recuperação usados · {{devices}} dispositivos confiáveis",totp:{name:"Aplicativo de autenticação",description:"Use um aplicativo como Google Authenticator ou Duo para gerar códigos de login seguros.",setupTitle:"Configure seu aplicativo de autenticação",scanQr:"Escaneie o código QR com seu aplicativo de autenticação",cantScan:"Não consegue escanear o código? Digite-o manualmente:",enterCodeTitle:"Digite um código do seu aplicativo de autenticação",enterDigitCode:"Digite o código de 6 dígitos",codesRefresh:"Os códigos são atualizados a cada 30 segundos.",qrCodeAlt:"Código QR para configuração do aplicativo de autenticação",enabled:"Aplicativo de autenticação ativado",disabled:"Aplicativo de autenticação desativado"},sms:{name:"Mensagens de texto",description:"Receba códigos de login enviados para seu telefone por mensagem de texto.",enterPhone:"Digite seu número de telefone",phoneLabel:"Número de telefone",phonePlaceholder:"(555) 000-0000",verificationWillBeSent:"Um código de verificação será enviado para este número para confirmar que é seu.",verifyPhone:"Verificar seu número de telefone",codeSentTo:"Um código de 6 dígitos foi enviado para {{phone}}",standardRates:"Taxas padrão de mensagens e dados podem ser aplicadas.",invalidPhone:"Número de telefone inválido. Verifique o número e tente novamente.",enabled:"MFA por mensagem de texto ativado",disabled:"Mensagens de texto desativadas"},recovery:{saveTitle:"Salve seus códigos de recuperação",saveDescription:"Guarde estes códigos de recuperação em um local seguro. Você vai precisar deles caso perca o acesso ao seu telefone ou aplicativo de autenticação.",eachCodeOnce:"Cada código de recuperação pode ser usado apenas uma vez. Guarde-os em um local seguro e acessível.",eachCodeOnceShort:"Cada código de recuperação pode ser usado apenas uma vez.",copyAll:"Copiar tudo",download:"Baixar",copied:"Copiado",enterRecoveryCode:"Digite o código de recuperação"},disable:{title:"Desativar autenticação de dois fatores",turnOff:"Desativar a autenticação de dois fatores?",turnOffDescription:"Para continuar, você precisará verificar com um código enviado para seu telefone ou um código de recuperação.",verifyWithPhone:"Verificar com um código enviado para seu telefone",verifyWithApp:"Digite um código do seu aplicativo de autenticação",enterRecoveryToDisable:"Digite um dos seus códigos de recuperação para desativar a autenticação de dois fatores.",useRecoveryCode:"Usar código de recuperação",verifyViaApp:"Verificar via aplicativo",verifyAndDisable:"Verificar e desativar"},regenerate:{title:"Regenerar códigos de recuperação",trustedDevicesCount_one:"{{count}} dispositivo confiável",trustedDevicesCount_other:"{{count}} dispositivos confiáveis",codesUsed:"{{used}}/{{total}} códigos de recuperação usados",descriptionChoose:"Escolha um método de verificação para regenerar seus códigos de recuperação. Isso invalidará todos os códigos existentes.",descriptionSms:"Enviaremos um código de verificação para seu telefone para confirmar.",descriptionSmsVerify:"Digite um código de verificação para regenerar seus códigos de recuperação. Isso invalidará todos os códigos existentes.",descriptionTotpVerify:"Digite um código de verificação para regenerar seus códigos de recuperação. Isso invalidará todos os códigos existentes.",verifyWithApp:"Digite um código do seu aplicativo de autenticação",verifyWithSms:"Verificar com um código enviado para seu telefone",smsMethodLabel:"Mensagem SMS",enterCodeLabel:"Digite o código de 6 dígitos",helperTotp:"Abra seu aplicativo de autenticação para obter o código",helperSms:"Digite o código enviado para seu telefone",verifyAndRegenerate:"Verificar e regenerar",enterCode:"Digite o código"},reauth:{title:"Verifique sua identidade",description:"Por segurança, confirme sua identidade antes de adicionar {{method}} como método de login.",actionTotp:"Digite o código de 6 dígitos do seu aplicativo de autenticação.",actionSms:"Digite o código enviado para {{phone}}."},common:{enable:"Ativar",enabled:"Ativado",cancel:"Cancelar",close:"Fechar",back:"Voltar",done:"Concluído",verify:"Verificar",sendCode:"Enviar código",regenerate:"Regenerar",regenerateRecoveryCodes:"Regenerar códigos de recuperação",disable:"Desativar",continue:"Continuar",fullCodeError:"Digite o código completo de 6 dígitos",fullRecoveryError:"Digite o código de recuperação completo",enterVerificationCode:"Digite um código de verificação",didntReceive:"Não recebeu um código?",resendIn:"Reenviar em {{seconds}}s",resend:"Reenviar",verificationSent:"Código de verificação enviado",failedToSetup:"Falha ao configurar o autenticador",failedToSendCode:"Falha ao enviar o código",failedToResend:"Falha ao reenviar",invalidCode:"Código inválido",lockedOut:"Muitas tentativas com falha. Tente novamente em {{minutes}} min.",lockedOutShort:"Temporariamente bloqueado ({{minutes}} min)"}},CK={section:{title:"Excluir conta",description:"Exclua sua conta junto com todos os dados, configurações e atividades associados.",accessNote:"Você terá acesso à sua conta por 1 semana após solicitar a exclusão.",deleteButton:"Excluir conta",enterpriseTooltip:"A exclusão de conta não está disponível para usuários empresariais. Entre em contato com o administrador da sua organização."},pendingRequest:{willBeDeleted:"Sua conta, assinatura, aplicativos próprios e espaços de trabalho serão excluídos em <bold>{{daysRemaining}} dias</bold> ({{formattedEnd}}) e a exclusão será permanente a partir dessa data. Até então, você pode cancelar a exclusão.",processing:"A exclusão está sendo processada...",cancelButton:"Cancelar solicitação",renewalWarning:"Se sua assinatura estiver programada para renovar durante esses {{daysRemaining}} dias, a renovação ainda ocorrerá a menos que você cancele a assinatura manualmente antes da data de renovação"},toast:{submitSuccess:"Solicitação de exclusão enviada. Revisaremos e processaremos após o período de carência de 7 dias.",submitError:"Falha ao enviar a solicitação de exclusão. Por favor, tente novamente.",cancelSuccess:"Solicitação de exclusão cancelada com sucesso.",cancelError:"Falha ao cancelar a solicitação. Por favor, tente novamente.",preflightError:"Não foi possível verificar o status da conta. Por favor, tente novamente."},dialog:{title:"Excluir sua conta",description:"Isso agendará sua conta e todos os dados associados para exclusão permanente.",whatWillBeDeleted:"O que será excluído:",itemAccountProfile:"Sua conta e perfil",itemAllApps:"Todos os aplicativos que você criou",itemAllData:"Todos os dados armazenados nos seus aplicativos",itemUploadedFiles:"Arquivos e mídias enviados",gracePeriodNote:"Você terá 7 dias para cancelar esta solicitação. Depois disso, nossa equipe revisará e processará sua exclusão em breve.",subscriptionNote:"O cancelamento da assinatura é definitivo e sem reembolsos",cancelButton:"Cancelar",deleteButton:"Excluir conta"},subscriptions:{dialogTitle:"Cancele as assinaturas antes de excluir sua conta",warning:"Você ainda tem assinaturas ativas. Por favor, cancele-as primeiro.",listLabel:"Assinaturas ativas:",personalPlan:"Plano pessoal",planAndBilling:"Plano e cobrança",yearly:"anual",monthly:"mensal",cancelFirst:"Cancele todas as assinaturas acima, depois volte aqui para excluir sua conta.",closeButton:"Fechar",manageButton:"Gerenciar assinaturas"},workspaceOwner:{titleStep1:"Você possui espaços de trabalho",titleStep2:"Confirmar exclusão do espaço de trabalho",memberCount_one:"{{count}} membro",memberCount_other:"{{count}} membros",warningOwner_one:"Você atualmente possui o seguinte espaço de trabalho. Se continuar, todos os aplicativos neste espaço de trabalho serão excluídos permanentemente e todos os membros perderão o acesso.",warningOwner_other:"Você atualmente possui os seguintes espaços de trabalho. Se continuar, todos os aplicativos nestes espaços de trabalho serão excluídos permanentemente e todos os membros perderão o acesso.",leaveWorkspaces_one:"Você também sairá deste espaço de trabalho e perderá o acesso:",leaveWorkspaces_other:"Você também sairá destes espaços de trabalho e perderá o acesso:",confirmInstructions:"Digite o nome de cada espaço de trabalho abaixo para confirmar a exclusão. Esta ação é irreversível.",typeToConfirm:'Digite <bold>"{{name}}"</bold> para confirmar',deleteAnyway:"Excluir mesmo assim",deleteAccount:"Excluir conta",cancel:"Cancelar"},memberInfo:{title_one:"Você sairá deste espaço de trabalho",title_other:"Você sairá destes espaços de trabalho",description_one:"Ao excluir sua conta, você será removido do seguinte espaço de trabalho. Você perderá o acesso a todos os aplicativos e dados do espaço de trabalho.",description_other:"Ao excluir sua conta, você será removido dos seguintes espaços de trabalho. Você perderá o acesso a todos os aplicativos e dados dos espaços de trabalho.",cancel:"Cancelar",continueWithDeletion:"Continuar com a exclusão"}},DK={title:"Conta do GitHub",addAccount:"Adicionar sua conta do GitHub",unlockWithBuilder:"Desbloqueie este recurso com o plano Builder.",loading:"Carregando...",connecting:"Conectando...",reconnect:"Reconectar",connectionLost:"A conexão com o GitHub foi perdida. Reconecte sua conta do GitHub para continuar.",connected:"Conectado",connectedDescription:"Sua conta do GitHub está conectada",disconnect:"Desconectar",tryAgain:"Tentar novamente",connectGitHub:"Conectar GitHub",disconnectDialog:{title:"Desconectar do GitHub?",accountDescription:"Desconectar sua conta do GitHub não afetará nenhum app conectado.<br/>Você só precisará reconectar sua conta se quiser conectar ou reconectar um repositório.",repoDescription:"Isso desconectará o app do repositório {{repoName}}.",repoDescriptionNoName:"Isso desconectará o app do repositório do GitHub.",repoDetail1:"Seu repositório do GitHub permanecerá sem alterações — não será excluído nem removido.",repoDetail2:"Você pode continuar trabalhando no seu app como antes, mas o GitHub não será mais a fonte da verdade para o seu código e a sincronização bidirecional será desativada.",disconnectingProgress:"Desconectando… Isso pode levar alguns minutos.",cancel:"Cancelar",disconnect:"Desconectar",disconnecting:"Desconectando…"}},TK={title:"Google Drive",connected:"Conectado",connectedDescription:"Seu Google Drive está conectado",disconnectedDescription:"Conecte seu Google Drive para importar arquivos",connect:"Conectar",connecting:"Conectando...",disconnect:"Desconectar",disconnecting:"Desconectando...",loading:"Carregando...",connectTitle:"Conectar ao Google Drive",connectDescription:"Autorize o acesso para usar arquivos do Google Drive como contexto do chat de IA.",benefitImport:"Importe Documentos, Planilhas e Apresentações do seu Google Drive",benefitChoose:"Escolha quais arquivos usar a cada vez",benefitSecure:"O conteúdo selecionado é armazenado com segurança para uso no seu aplicativo",connectButton:"Conectar Google Drive",cancel:"Cancelar",privacyNote:"Apenas os arquivos que você selecionar serão acessados.",disconnectAnytime:"Você pode desconectar a qualquer momento nas configurações da conta."},EK={title:"Configurações do chat",sendMessageShortcut:"Atalho para enviar mensagem",insertNewLineShortcut:"Atalho para nova linha",soundPreferences:"Preferências de som",browserNotifications:"Notificações do navegador",notificationsHelpText:"Notificações ativas mas não as recebe? <docLink>Consultar a documentação</docLink>",notificationOptions:{onFirstPromptOnly:"Apenas no primeiro prompt",onEveryPromptCompletion:"A cada conclusão de prompt",disableNotificationSounds:"Desativar sons de notificação",disableBrowserNotifications:"Desativar notificações do navegador"}},PK={account:AK,mfa:SK,deleteAccount:CK,github:DK,googleDrive:TK,chatSettings:EK},_K={title:"Solicitar acesso a {{appName}}",subtitleDefault:"Solicite acesso ou mude para uma conta que já tenha permissão.",subtitleRequested:"Você será notificado por e-mail quando sua solicitação for aprovada.",requestAccess:"Solicitar acesso",requestSubmitted:"Solicitação enviada",loggedInAs:"Você está conectado como {{email}}",switchAccount:"Trocar conta",errorMessage:"Algo deu errado. Tente novamente ou mude para uma conta diferente.",tooManyAttempts:"Muitas tentativas. Tente novamente mais tarde.",backToLogin:"Voltar ao login"},xK={title:"Acesso restrito",subtitle:"Você deve ser membro deste espaço de trabalho para acessar o aplicativo."},IK={accessRequired:_K,workspaceRestricted:xK},RK={title:"Bem-vindo ao Base44",loginWithGoogle:"Entrar com Google",loginWithGithub:"Entrar com GitHub",loggingIn:"Entrando...",or:"Ou",emailLabel:"E-mail",emailPlaceholder:"Digite seu endereço de e-mail",edit:"Editar",lastUsed:"Último uso",ssoEnabled:"O SSO está habilitado para <strong>{{workspace}}</strong>",ssoClickBelow:"Clique abaixo para continuar com o login da sua organização",passwordLabel:"Senha",forgotPassword:"Esqueceu a senha?",passwordPlaceholder:"Digite sua senha",checkingAuth:"Verificando método de autenticação...",checking:"Verificando...",continue:"Continuar",continueWithSSO:"Continuar com {{provider}}",logIn:"Entrar",noAccount:"Não tem uma conta?",signUp:"Cadastre-se",verifyEmailFirst:"Por favor, verifique seu e-mail antes de entrar. Confira seu e-mail para o código de verificação.",resendVerificationCode:"Reenviar código de verificação",enterEmailFirst:"Por favor, digite seu endereço de e-mail primeiro",invalidEmail:"Por favor, digite um endereço de e-mail válido",ssoError:"Erro de configuração SSO. Por favor, tente novamente.",invalidCredentials:"E-mail ou senha inválidos",loginFailed:"Falha no login. Por favor, tente novamente.",failedResendVerification:"Falha ao reenviar código de verificação. Por favor, tente novamente.",passwordResetRequired:"Por razões de segurança, você deve redefinir sua senha antes de fazer login. Verifique seu e-mail para um link de redefinição.",resetLinkSent:"Um link de redefinição de senha foi enviado para seu e-mail.",resendResetLink:"Reenviar link de redefinição",failedResendResetLink:"Falha ao enviar o link de redefinição. Tente novamente.",termsAndPrivacy:"<terms>Termos de Serviço</terms> e <privacy>Política de Privacidade</privacy>."},zK={title:"Crie sua conta",agreeToTerms:'Ao clicar em "Cadastrar", você concorda com nossos <terms>Termos de Serviço</terms> e <privacy>Política de Privacidade</privacy>.',signUpWithGoogle:"Cadastrar com Google",signUpWithGithub:"Cadastrar com GitHub",signingUp:"Cadastrando...",creatingAccount:"Criando conta...",signUpButton:"Cadastrar",alreadyHaveAccount:"Já tem uma conta Base44?",logIn:"Entrar",validatingReferral:"Validando código de indicação...",invalidReferral:"Código de indicação inválido",youveBeenInvited:"Você foi convidado!",invitedToJoin:"<strong>{{name}}</strong> convidou você para o Base44",signUpFreeCredits:"Cadastre-se para ganhar 10 créditos gratuitos!",signUpBaseDayCredits:"Cadastre-se e ganhe 44 créditos grátis!",letsBuild:"Vamos construir algo incrível juntos!",registrationFailed:"Falha no cadastro. Por favor, tente novamente.",failedValidateReferral:"Falha ao validar código de indicação",completeVerification:"Por favor, complete a verificação",weakPassword:"Senha fraca"},MK={title:"Redefinir sua senha",subtitle:"Digite o endereço de e-mail usado no cadastro e enviaremos um link para redefinir sua senha.",backToLogin:"Voltar ao login",loginEmail:"E-mail de login",emailPlaceholder:"ex.: nome@email.com",sending:"Enviando...",verifyEmail:"Verificar e-mail",invalidEmail:"Endereço de e-mail inválido",failedSendReset:"Falha ao enviar link de redefinição. Por favor, tente novamente."},NK={title:"Verifique seu e-mail",subtitle:"Enviamos instruções de redefinição de senha para <strong>{{email}}</strong>.",backToReset:"Voltar para redefinir senha",checkInfo:"Por favor, verifique seu e-mail para o link de redefinição de senha.",mayTakeMinutes:"Pode levar alguns minutos para chegar.",goToSignIn:"Ir para login",didntGetEmail:"Não recebeu o e-mail?",resending:"Reenviando...",resendEmail:"Reenviar e-mail",emailNotFound:"Endereço de e-mail não encontrado. Por favor, volte e tente novamente.",newResetSent:"Novo e-mail de redefinição de senha enviado. Por favor, verifique sua caixa de entrada.",failedResendEmail:"Falha ao reenviar e-mail. Por favor, tente novamente."},FK={title:"Definir nova senha",subtitle:"Digite sua nova senha para o Base44",newPasswordLabel:"Nova senha",newPasswordPlaceholder:"Digite sua nova senha",confirmPasswordLabel:"Confirmar nova senha",confirmPasswordPlaceholder:"Confirme sua nova senha",resetting:"Redefinindo...",resetButton:"Redefinir senha",backToLogIn:"Voltar ao login",invalidToken:"Token de redefinição inválido ou ausente. Por favor, solicite uma nova redefinição de senha.",passwordsMismatch:"As senhas não coincidem. Por favor, tente novamente.",weakPassword:"Por favor, crie uma senha de pelo menos força média.",resetSuccess:"Senha redefinida com sucesso! Redirecionando para o login...",resetSuccessLogin:"Senha redefinida com sucesso! Por favor, entre com sua nova senha.",failedReset:"Falha ao redefinir a senha. Por favor, tente novamente.",invalidOrExpiredToken:"Token de redefinição inválido ou expirado"},LK={verifyTitle:"Verifique sua identidade",verification:{chooseMethod:"Escolha um método de autenticação",authenticatorApp:"Aplicativo autenticador",smsMessage:"Mensagem SMS",recoveryCode:"Código de recuperação",continue:"Continuar",backToLogin:"Voltar ao login",chooseAnotherMethod:"Escolher outro método",verifyViaText:"Verificar por SMS",verifyViaApp:"Verificar pelo aplicativo autenticador",enterRecoveryCode:"Digite o código de recuperação",rememberDevice:"Lembrar este dispositivo por 30 dias",verifying:"Verificando...",verify:"Verificar",useRecoveryCode:"Usar um código de recuperação",sendingCodeTo:"Enviando código para {{phone}}…",enterCodeSentTo:"Digite o código enviado para {{phone}}",enterCodeFromApp:"Digite o código do seu aplicativo autenticador",yourPhone:"seu telefone",didntReceiveCode:"Não recebeu o código?",resendIn:"Reenviar em {{seconds}}s",resend:"Reenviar",enterCompleteRecoveryCode:"Por favor, digite o código de recuperação completo",enterCompleteCode:"Por favor, digite o código de 6 dígitos completo",verificationFailed:"Falha na verificação. Por favor, tente novamente.",failedSendCode:"Falha ao enviar código. Por favor, tente reenviar."}},jK={buildingApp:"Construindo seu aplicativo",verifyEmailSubtitle:"Verifique seu e-mail para continuar",signUpSubtitle:"Cadastre-se para vê-lo ganhar vida",loginSubtitle:"Entre para vê-lo ganhar vida"},OK={completeVerification:"Por favor, complete a verificação de segurança"},BK={title:"Verifique seu e-mail",subtitle:"Enviamos um código de verificação para {{email}}",verificationCode:"Código de verificação",fillAllFields:"Por favor, preencha todos os campos.",enterCodeSent:"Digite o código de verificação enviado para seu e-mail",verifying:"Verificando...",verifyEmail:"Verificar e-mail",wrongEmail:"E-mail errado? Alterar",didntReceiveCode:"Não recebeu o código?",resendEmail:"Reenviar e-mail",emailVerifiedLogin:"E-mail verificado com sucesso! Você já pode entrar.",emailVerifiedContinue:"E-mail verificado com sucesso! Por favor, entre para continuar.",invalidCode:"Código de verificação inválido. Por favor, tente novamente.",verificationFailed:"Falha na verificação. Por favor, tente novamente.",newCodeSent:"Novo código de verificação enviado para seu e-mail.",failedResendCode:"Falha ao reenviar código de verificação. Por favor, tente novamente."},UK={login:RK,register:zK,forgotPassword:MK,checkEmail:NK,resetPassword:FK,mfa:LK,authModal:jK,turnstile:OK,otp:BK},qK={notFound:"Perfil não encontrado",notFoundDescription:"O perfil de builder @{{username}} não existe."},VK={edit:"Editar",done:"Concluído",cancel:"Cancelar",appCount_one:"{{count}} App",appCount_other:"{{count}} Apps",joined:"Entrou em {{date}}",namePlaceholder:"Seu nome",displayNameLabel:"Nome de exibição",usernameLabel:"Nome de usuário",changeUsername:"Alterar nome de usuário",saveChanges:"Salvar alterações",partnerBadge:"Base44 Partner"},$K={label:"Bio",placeholder:"Escreva uma breve bio sobre você...",emptyPlaceholder:"Conte aos visitantes sobre você — adicione uma breve bio.",hint:"Máx. 220 caracteres",maxChars:"Máx. {{max}} caracteres"},WK={viewTitle:"Apps",appsHeader:"Apps ({{count}})",appsHeaderEmpty:"Apps",featuredCounter_one:"{{count}} em destaque",featuredCounter_other:"{{count}} em destaque",editHint:"Selecione quais apps aparecem no seu perfil público.",noPublishedApps:"Nenhum app publicado encontrado. Publique um app primeiro!",noPublishedAppsTitle:"Nenhum app publicado",noPublishedAppsDescription:"Você ainda não publicou nenhum app. Vá para seu espaço de trabalho para finalizar um rascunho e publicá-lo para exibi-lo no seu perfil.",viewMyApps:"Ver meus apps",untitled:"Sem título",updated:"Apps fixados atualizados!",updateFailed:"Falha ao atualizar apps fixados",manageApps:"Gerenciar apps",chooseTitle:"Escolher apps para exibir",chooseDescription:"Selecione até {{max}} apps publicados para aparecer no seu perfil público",selectAll:"Selecionar tudo",deselectAll:"Desmarcar tudo",saveChanges:"Salvar",searchApps:"Buscar apps...",publicBadge:"Público",privateBadge:"Privado",showMore:"Mostrar mais",showLess:"Mostrar menos",maxReached:"Máximo de {{max}} apps permitidos",close:"Fechar",noSearchResults:"Nenhum app corresponde à sua busca",updatedRecently:"atualizado recentemente",selectAllCount:"Selecionar tudo ({{count}})",deselectAllCount:"Desselecionar tudo ({{count}})"},GK={editTooltip:"Editar links sociais",addLinks:"Adicionar links sociais",addLink:"Adicionar link",cancelTooltip:"Cancelar",removeTooltip:"Remover",label:"Redes sociais",hint:"Adicione até 6 links sociais",linkLabel:"Link",addCustomLink:"Adicionar link personalizado",pastePlaceholder:"Cole a URL aqui",enterUsernameOrUrl:"Digite seu nome de usuário ou URL completa do perfil",movedTo:"Movido para {{platform}}",addedAsCustom:"Adicionado como link personalizado",fieldOccupied:"Parece um link do {{platform}} — esse campo já tem uma URL",customSlotsFull:"Parece um link do {{platform}}. Remova um link personalizado para adicioná-lo."},HK={profileUpdated:"Perfil atualizado!",profileUpdateFailed:"Falha ao atualizar o perfil",usernameClaimed:"Nome de usuário obtido!",usernameClaimFailed:"Falha ao obter nome de usuário",loadFailed:"Falha ao carregar o perfil",invalidImageType:"Envie uma imagem válida (JPG, PNG, GIF ou WebP)",imageTooLarge:"A imagem deve ter menos de 5 MB",avatarUpdated:"Imagem de perfil atualizada!",avatarUploadFailed:"Falha ao enviar a imagem",avatarRemoveFailed:"Falha ao remover a imagem"},YK={title:"Descartar alterações?",description:"Você tem alterações não salvas que serão perdidas.",confirm:"Descartar"},KK={title:"Alterar nome de usuário",placeholder:"nome de usuário",checking:"Verificando...",available:"Disponível!",notAvailable:"Não disponível",urlWarning:"Sua URL de perfil mudará para /@{{username}}. Links antigos deixarão de funcionar.",cancel:"Cancelar",claim:"Obter nome de usuário",tryInstead:"Tente:"},ZK={locationLabel:"Localização",locationPlaceholder:"ex. São Paulo, Brasil",showEmailLabel:"Exibir o email da sua conta"},JK={title:"Atualizar imagem de capa",description:"Escolha um dos nossos gradientes ou envie sua própria imagem",uploadFile:"Enviar imagem personalizada",orUseTemplate:"Ou use um modelo",cancel:"Cancelar",saveChanges:"Salvar alterações",updated:"Imagem de capa atualizada!",updateFailed:"Falha ao atualizar a imagem de capa",uploadFailed:"Falha ao enviar a imagem",dragToReposition:"Arraste para reposicionar",replaceImage:"Substituir imagem",reposition:"Reposicionar"},QK={title:"Atividade",mon:"Seg",wed:"Qua",fri:"Sex",less:"Menos",more:"Mais",messages_one:"{{count}} prompt",messages_other:"{{count}} prompts",founderMode:"Founder mode",noActivity:"Sem atividade",onDate:"em {{date}}",showOnProfile:"Mostrar no perfil"},XK={customize:"Personalize seu perfil",title:"Ainda sem apps públicos",description:"Seu perfil é o melhor lugar para compartilhar seu trabalho com a comunidade Base44. Selecione entre seus apps publicados para exibi-los aqui, ou comece um novo projeto para aumentar sua atividade.",anonDescription:"Este builder ainda não tornou nenhum de seus apps público. Volte mais tarde para ver a atividade mais recente, ou explore o que outros criadores estão construindo.",startCreating:"Começar a criar",chooseFromApps:"Escolher dos meus apps"},e5={page:qK,header:VK,bio:$K,pinnedApps:WK,social:GK,toast:HK,discardDialog:YK,usernameDialog:KK,details:ZK,coverImage:JK,activity:QK,emptyState:XK},t5=JSON.parse(`{"title":"Agentes IA","beta":"Beta","subtitle":"Integre agentes IA no seu aplicativo usando a infraestrutura de agentes IA do Base44","disabled":"Desabilitado","setupAgents":"Configurar agentes","enableAgents":"Habilitar agentes","turnOnToggle":"Ative o botão para permitir a criação de agentes","addFirstAgent":"Adicione seu primeiro agente","creditsUsed":"{{credits}} créditos utilizados","creditsUsedTooltip":"Créditos de integração mensais utilizados","askChatToCreate":"Peça ao chat para criar um agente para você. Descreva qual papel o agente deve ter e quais tarefas deve executar.","defineInConfig":"Defina seus agentes em arquivos de configuração locais e sincronize-os com seu aplicativo usando o CLI do Base44.","viewDocumentation":"Ver documentação","noAgentsYet":"Nenhum agente ainda","promptChatToCreate":"Peça ao chat para criar seu primeiro agente IA","agentsTab":"Agentes","conversationsTab":"Conversas","searchConversations":"Pesquisar conversas...","filterAll":"Todos","filterMine":"Minhas","filterUsers":"Usuários","noConversationsYet":"Nenhuma conversa ainda","noConversationsMatchSearch":"Nenhuma conversa corresponde à sua pesquisa","tryDifferentSearch":"Tente um termo de pesquisa diferente","goToAgentsTab":"Vá para a aba Agentes para iniciar uma conversa","conversationStarted":"Conversa iniciada","agentConfiguration":"Configuração do agente","guidelines":"Diretrizes","tools":"Ferramentas","whatsapp":"WhatsApp","toolsAndCapabilities":"Ferramentas e capacidades","descriptionLabel":"Descrição","systemPromptDesc":"Este é o prompt do sistema que define o comportamento do agente","briefDescription":"Breve descrição do que este agente faz...","instructions":"Instruções","instructionsDesc":"Diretrizes e regras específicas que o agente deve seguir","detailedInstructions":"Instruções detalhadas para o agente...","availableTools":"Ferramentas disponíveis","configureTools":"Configure quais ferramentas e dados este agente pode acessar","add":"Adicionar","allEntitySlotsUsed":"Todos os slots de entidade usados","addEntityTool":"Adicionar ferramenta de entidade","entityToolDesc":"Operações de banco de dados e acesso CRUD","allFunctionSlotsUsed":"Todos os slots de função usados","addBackendFunction":"Adicionar função backend","backendFunctionDesc":"Lógica backend personalizada e integrações","noToolsConfigured":"Nenhuma ferramenta configurada","addToolsDesc":"Adicione ferramentas de entidade ou funções backend para dar capacidades ao agente","entityTool":"Ferramenta de entidade","selectEntity":"Selecionar entidade","allowedOperations":"Operações permitidas","deleteWarning":"Cuidado, dados excluídos pelo agente não podem ser restaurados","backendFunction":"Função backend","selectBackendFunction":"Selecionar função backend","functionDescription":"Descrição da função","describeFunction":"Descreva quando e como esta função deve ser usada...","whatsappIntegration":"Integração WhatsApp","whatsappDesc":"Conecte seu agente ao WhatsApp para comunicação perfeita","testChat":"Chat de teste","addWhatsapp":"Adicione WhatsApp ao seu aplicativo","whatsappEnableDesc":"Habilite o acesso WhatsApp para seus usuários com um único comando","addWhatsappButton":"Adicionar um botão WhatsApp para o {{agent}}","sendToChat":"Enviar ao chat","fullChatCapabilities":"Todas as capacidades do chat","fullChatDesc":"Todas as funcionalidades do chat web funcionam perfeitamente no WhatsApp, incluindo ferramentas e acesso a dados","voiceMediaSupport":"Suporte a voz e mídia","voiceMediaDesc":"Usuários podem enviar notas de voz e imagens para interação natural","customNumbers":"Números personalizados","customNumbersDesc":"Conecte seus próprios números WhatsApp Business","easyUiIntegration":"Integração UI fácil","easyUiDesc":"Adicione um botão WhatsApp ao seu aplicativo com um simples comando no chat","welcomeMessage":"Mensagem de boas-vindas","welcomeMessageDesc":"Crie uma saudação calorosa que apresente seu agente e defina expectativas","charCount":"{{count}}/500","editAgent":"Editar agente","edit":"Editar","startChat":"Iniciar chat","chat":"Chat","functionCount":"{{count}} função(ões)","noDescriptionProvided":"Nenhuma descrição fornecida","entities":"Entidades:","activeConversation":"Conversa ativa","readOnlyConversation":"Conversa somente leitura","startConversation":"Inicie sua conversa","typeMessageBelow":"Digite uma mensagem abaixo para começar","typeYourMessage":"Digite sua mensagem...","cancel":"Cancelar","saving":"Salvando...","save":"Salvar","commandAddedToChat":"Comando adicionado ao chat. Pressione Enter para enviar.","failedToSaveAgentConfiguration":"Falha ao salvar configuração do agente","promptAddedToChat":"Prompt adicionado ao chat","unableToLoadSuggestions":"Não foi possível carregar as sugestões. Tente novamente mais tarde.","createAgent":"Criar agente","createAgentTitle":"Criar um agente","createAgentDescription":"Peça ao chat para criar um agente para você. Descreva qual função o agente deve ter e quais tarefas deve realizar.","manageAgentsAndConversations":"Gerenciar agentes e conversas","skills":"Habilidades","skillsEnabledLimit":"Você pode habilitar até {{count}} habilidades por agente.","appSkillsTitle":"Habilidades de Aplicativo","appSkillsDescription":"Habilidades de instrução reutilizáveis para agentes neste aplicativo.","addSkill":"Adicionar Habilidade","noAppSkillsYet":"Ainda não há habilidades de aplicativo. Crie uma para reutilizar entre agentes neste aplicativo.","workspaceSkillsTitle":"Habilidades de Espaço de Trabalho","workspaceSkillsDescription":"Habilidades compartilhadas deste espaço de trabalho. Ative-as para habilitá-las neste agente.","loadingWorkspaceSkills":"Carregando habilidades de espaço de trabalho...","noWorkspaceSkillsAvailable":"Não há habilidades compartilhadas de espaço de trabalho disponíveis atualmente.","manageWorkspaceSkills":"Gerenciar habilidades de espaço de trabalho","workspaceSkillSource":"espaço de trabalho","appSkillSource":"aplicativo","unavailable":"indisponível","addAppSkill":"Adicionar Habilidade de Aplicativo","editAppSkill":"Editar {{name}}","skillName":"Nome da habilidade","skillNameHint":"Use letras minúsculas, números e hífens.","skillNameInvalid":"O nome deve ser alfanumérico em minúsculas com hífens, sem hífens no início/final (ex. 'code-review', 'sql-expert').","skillDescription":"Descrição","skillInstructions":"Instruções","enableForCurrentAgent":"Habilitar para o agente atual","enableForCurrentAgentDescription":"Isso altera o estado atual do editor e é salvo com o agente.","createSkill":"Criar Habilidade","saveChanges":"Salvar Alterações","workspaceSkillUnavailableDescription":"Esta habilidade de espaço de trabalho não está mais habilitada ou disponível.","appSkillUnavailableDescription":"Esta habilidade de aplicativo não existe mais na biblioteca de habilidades do aplicativo.","skillValidationRequired":"Nome, descrição e instruções são obrigatórios","skillCreated":"Habilidade criada","skillUpdated":"Habilidade atualizada","failedToSaveSkill":"Falha ao salvar habilidade","skillSavedButAssignmentsFailed":"A habilidade foi salva, mas falhou ao anexá-la ao agente","skillSavedButAssignmentsRefreshDelayed":"O editor não conseguiu atualizar automaticamente. Recarregue para verificar o estado mais recente.","skillSavedButSyncFailed":"A habilidade foi salva, mas falhou a sincronização do estado do agente","skillSavedButSyncRefreshDelayed":"A habilidade foi salva, mas o editor não conseguiu atualizar automaticamente. Recarregue para verificar o estado mais recente.","skillSavedStateRefreshed":"Habilidade salva. O editor foi atualizado para corresponder ao estado salvo mais recente.","skillSavedRefreshDelayed":"A habilidade foi salva, mas o editor não conseguiu atualizar automaticamente. Recarregue para verificar o estado mais recente.","skillDeleted":"Habilidade excluída","skillDeletedRefreshDelayed":"A habilidade foi excluída, mas o editor não conseguiu atualizar automaticamente. Recarregue para verificar o estado mais recente.","failedToDeleteSkill":"Falha ao excluir habilidade","skillLimitReached":"Este agente já atingiu o número máximo de habilidades habilitadas.","skillTemplatePickerTitle":"Escolha uma habilidade inicial","startFromScratch":"Começar do zero","startFromScratchDescription":"Crie uma habilidade personalizada com suas próprias instruções.","useTemplate":"Usar modelo","skillTemplates":{"refundPolicy":{"description":"Modelo para regras de reembolso, elegibilidade e quais detalhes o agente deve coletar antes de escalar."},"supportEscalation":{"description":"Modelo para quando encaminhar ao suporte humano e qual resumo o agente deve preparar."},"pricingAndPlans":{"description":"Modelo para explicar planos, ciclos de cobrança, upgrades e quando encaminhar pedidos enterprise."},"brandVoice":{"description":"Modelo para tom, estilo de escrita e regras de comunicação para que o agente soe alinhado à marca."}},"memory":"Memória","memoryTitle":"Memória do agente","memorySubtitle":"Ative a memória de longo prazo para que seu agente lembre informações entre conversas","enableMemory":"Ativar memória","enableMemoryDesc":"Quando ativado, o agente pode salvar e recuperar informações entre conversas","memoryScope":"Escopo da memória","memoryScopeDesc":"Escolha quais tipos de memórias o agente pode criar","memoryScopeGlobalAndUser":"Global e por usuário","memoryScopeGlobalAndUserDesc":"O agente pode salvar memórias compartilhadas e pessoais","memoryScopeGlobal":"Apenas global","memoryScopeGlobalDesc":"Memórias compartilhadas entre todos os usuários","memoryScopeUser":"Apenas por usuário","memoryScopeUserDesc":"Memórias específicas para cada usuário","memoryInstructions":"Instruções de memória","memoryInstructionsDesc":"Oriente o agente sobre quando salvar memórias e o que incluir","memoryInstructionsPlaceholder":"Ex., Salve memórias globais para atualizações de produtos, anúncios da empresa e conhecimento compartilhado. Salve memórias de usuário para preferências pessoais como estilo de comunicação, tom e interesses específicos.","savedMemories":"Memórias salvas","refresh":"Atualizar","noMemoriesYet":"Nenhuma memória salva ainda","noMemoriesDesc":"As memórias aparecerão aqui quando o agente salvá-las durante as conversas","memoryItemDeleted":"Item de memória excluído","memoryDeleteFailed":"Falha ao excluir item de memória","defaultDescription":"Padrão: {{description}}"}`),a5={writing:"Escrevendo",wrote:"Escreveu",reading:"Lendo",read:"Leu",deleting:"Excluindo",deleted:"Excluído",editing:"Editando",edited:"Editado",creating:"Criando",created:"Criado",updating:"Atualizando",updated:"Atualizado",update:"Atualizar",delete:"Excluir",importing:"Importando",imported:"Importado",import:"Importar",searching:"Pesquisando",searched:"Pesquisado",searchingForBugs:"Pesquisando bugs...",searchedBugs:"Bugs pesquisados",install:"Instalar",installing:"Instalando",installed:"Instalado",analyzing:"Analisando",running:"Executando",failed:"Falhou",run:"Executar",settingSecrets:"Configurando segredos",setSecret:"Segredo configurado",setSecrets:"Segredos configurados",testing:"Testando",checking:"Verificando",tested:"Testado",checked:"Verificado",fetching:"Buscando",fetched:"Buscado",waitingForApproval:"Aguardando aprovação...",searchedDocsFor:"Documentação pesquisada para",searchingDocsFor:"Pesquisando documentação para",searchedFor:"Pesquisado por",searchingFor:"Pesquisando por",foundResult_one:"{{count}} resultado encontrado",foundResult_other:"{{count}} resultados encontrados",toggling:"Alternando",toggled:"Alternado",listing:"Listando",listed:"Listado",approvalRequired:"Aprovação necessária",approve:"Aprovar",approving:"Aprovando...",reject:"Rejeitar",rejected:"rejeitado",previousApproval:"Esta solicitação de aprovação é de uma mensagem anterior",query:"Consulta:",updateWith:"Atualizar com:",importComplete:"Importação concluída",importingData:"Importando dados...",percentComplete:"{{percent}}% concluído",recordsProgress:"{{current}} / {{total}} registros",preparing:"Preparando...",otherToolsAfterApproval:"Outras ferramentas serão executadas após aprovação",countPackages:"{{num}} pacotes:",updateAllEntityRecords:"Atualizar todos os registros de <entity>{{entityName}}</entity>",updateEntityRecordsMatching:"Atualizar registros de <entity>{{entityName}}</entity> correspondentes a:",deleteAllEntityRecords:"Excluir todos os registros de <entity>{{entityName}}</entity>",deleteEntityRecordsMatching:"Excluir registros de <entity>{{entityName}}</entity> correspondentes a:",importDataFromInto:"Importar dados de <file>{{fileName}}</file> para <entity>{{entityName}}</entity>",importDataFromSheetInto:"Importar dados de <file>{{fileName}}</file> (planilha: <sheet>{{sheetName}}</sheet>) para <entity>{{entityName}}</entity>",countRecordsIntoEntity:"{{num}} registros em <entity>{{entityName}}</entity>",dataIntoEntity:"dados em <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} registros <entity>{{entityName}}</entity>",allEntityRecords:"todos os registros de <entity>{{entityName}}</entity>",entityRecords:"registros de <entity>{{entityName}}</entity>",grepSearching:'Pesquisando "{{pattern}}"...',grepSearchComplete:"Pesquisa concluída",grepFoundResults_one:"{{count}} resultado encontrado",grepFoundResults_other:"{{count}} resultados encontrados",grepInFiles_one:"em {{count}} arquivo",grepInFiles_other:"em {{count}} arquivos"},n5={agents:t5,tools:a5},i5={title:"Automações",subtitle:"Crie e gerencie automações no seu aplicativo.",newAutomation:"Nova automação",chooseAutomation:"Escolha uma automação",selectHowStarts:"Selecione como esta automação será iniciada.",scheduled:"Agendada",scheduledDescription:"Execute esta automação em um cronograma recorrente ou em um horário específico.",dataEvent:"Evento de dados",dataEventDescription:"Execute esta automação quando um registro é criado, atualizado ou excluído.",connector:"Conector",connectorDescription:"Execute esta automação quando uma integração conectada enviar um evento.",connectorBetaTooltip:"Este conector é gratuito durante o beta.",beta:"Beta",connectorNewAutomation:"Nova automação de conector",connectorIntegrationType:"Integração",connectorSelectIntegration:"Selecionar uma integração",connectorNoIntegrations:"Nenhuma integração conectada",connectorNoIntegrationsHint:"Para habilitar a automação, você precisa criar uma integração primeiro.",connectorCreateIntegration:"Criar integração",connectorCreateNewIntegration:"Criar nova integração",connectorEvents:"Eventos",connectorSelectEvents:"Selecionar eventos para escutar",connectorSelectEvent:"Selecionar um evento",connectorAvailableEvents:"Eventos disponíveis ({{count}})",connectorType:"Conector",allEvents:"todos os eventos",deleteAutomation:"Excluir automação?",deleteAutomationDesc:'Isso excluirá permanentemente "{{name}}" e todo o seu histórico de execução. Esta ação não pode ser desfeita.',delete:"Excluir",deleting:"Excluindo...",cancel:"Cancelar",copyOutput:"Copiar saída",scheduledType:"Agendada",dataEventType:"Evento de dados",someRunsFailed:"Algumas execuções falharam",reviewLogsOrFix:"Revise os logs ou deixe a IA corrigir os erros.",fixing:"Corrigindo...",fixWithAI:"Corrigir com IA",failedToGetErrorContext:"Falha ao obter contexto do erro",logsTab:"Logs",noLogsYet:"Nenhum log ainda",back:"Voltar",close:"Fechar",saving:"Salvando...",save:"Salvar",active:"Ativo",archived:"Arquivado",archivedAutomations:"Automações arquivadas",nameAndDescription:"Nome e descrição",typeColumn:"Tipo",lastRun:"Última execução",failed:"Falhou",loading:"Carregando...",editAutomation:"Editar automação",runNow:"Executar agora",archive:"Arquivar",duplicate:"Duplicar",unlockAutomations:"Desbloquear automações",unlockAutomationsDesc:"Para executar automações no seu aplicativo, você precisa de funções backend habilitadas. Atualize para habilitar funções backend e começar a usar automações.",enableBackendFunctions:"Habilite funções backend para começar",enableBackendFunctionsDesc:"Automações executam funções backend em um cronograma ou quando os dados mudam. Ative funções backend em Configurações para usar automações.",openSettings:"Abrir configurações",createBackendFunction:"Crie uma função backend para adicionar automações",createBackendFunctionDesc:"Para criar uma automação, você precisa primeiro de uma função backend no seu código. Escreva uma função backend no seu código ou peça ajuda no chat.",noAutomationsYet:"Nenhuma automação ainda",noAutomationsDesc:"Crie uma automação para executar tarefas automaticamente no seu aplicativo.",noArchivedAutomations:"Nenhuma automação arquivada",noArchivedDesc:"Automações que você arquivar ou que atingirem sua data final aparecerão aqui.",runAutomation:"Executar automação",selectRecord:"Selecione um registro de <entity>{{entity}}</entity> para executar a automação.",searchRecords:"Pesquisar registros de {{entity}}...",noRecordsFound:"Nenhum registro de {{entity}} encontrado.",noRecordsMatch:'Nenhum registro corresponde a "{{query}}"',recordsCount:"{{filtered}} de {{total}} registros",totalRecords:"{{total}} registros",running:"Executando...",automationName:"Nome da automação",describeAutomation:"Descreva o que esta automação faz.",functionToRun:"Função a executar",selectFunction:"Selecione uma função backend do seu código. A função receberá os dados da entidade quando a automação disparar.",noBackendFunctions:"Nenhuma função backend disponível",selectAFunction:"Selecionar uma função",runsWhen:"Executa quando",noItems:"Nenhum item",selectItem:"Selecionar item",is:"É",selectEvent:"Selecionar evento",automationNameRequired:"O nome da automação é obrigatório.",selectEntity:"Por favor, selecione uma entidade.",selectEventType:"Por favor, selecione pelo menos um tipo de evento.",selectFunctionRequired:"Por favor, selecione uma função para executar.",newDataAutomation:"Nova automação de dados",details:"Detalhes",logsWillAppearAfterFire:"Os logs aparecerão aqui após esta automação disparar.",selectFunctionFromCode:"Selecione uma função backend do seu código. Para adicionar ou editar uma função, atualize-a no seu código ou peça ajuda no chat.",recurring:"Recorrente",oneTime:"Uma vez",repeatsEvery:"Repete a cada",minute:"Minuto",hour:"Hora",day:"Dia",week:"Semana",month:"Mês",startAt:"Início em",at:"Às",repeatsOn:"Repete em",repeatsOnDay:"Repete no dia",ends:"Termina",never:"Nunca",on:"Em",after:"Após",occurrences:"ocorrências",runOn:"Executar em",atTime:"No horário",oneTimeDateRequired:"Agendamentos únicos requerem uma data especificada.",oneTimeTimeRequired:"Agendamentos únicos requerem um horário especificado.",oneTimePastError:"A data e horário do agendamento único não podem estar no passado.",minMinutesInterval:"O intervalo mínimo para agendamentos baseados em minutos é de {{min}} minutos.",selectDayForWeekly:"Por favor, selecione pelo menos um dia para o agendamento semanal.",monthlyDayRequired:"Agendamentos mensais requerem a seleção de um dia do mês.",endDateRequired:"A data de término é obrigatória quando 'Termina' está definido como 'Em'.",endDatePast:"A data de término não pode estar no passado.",occurrenceCountMin:"O número de ocorrências deve ser pelo menos 1.",newScheduledAutomation:"Nova automação agendada",logsWillAppearAfterRun:"Os logs aparecerão aqui após esta automação ser executada.",description:"Descrição",nameField:"Nome",typeField:"Tipo",automationUpdated:"Automação atualizada com sucesso",automationCreated:"Automação criada com sucesso",failedToSave:"Falha ao salvar a automação",functionArgs:"Argumentos (JSON)",functionArgsPlaceholder:'{"key": "value"}',functionArgsTooltip:"Objeto JSON opcional passado para a função como argumentos adicionais.",functionArgsInvalidJson:"Os argumentos devem ser JSON válido.",advanced:"Avançado",triggerConditions:"Condições de acionamento",conditionsSetByAI:"As condições são configuradas pelo construtor de IA e não podem ser editadas manualmente.",conditionsSummaryError:"Não foi possível carregar o resumo das condições.",connectorNoManualIntegrations:"Nenhuma integração disponível para criação manual",connectorNoManualIntegrationsHint:"Algumas integrações requerem condições de acionamento e só podem ser criadas através do construtor de IA.",suggestedForYou:"Sugestões para você",basedOnYourContext:"Com base no contexto do seu app",createFromScratch:"Criar do zero"},r5={automations:i5},o5={title:"Integrações",myIntegrations:"Minhas integrações",browse:"Explorar",payments:"Pagamentos",failedToLoad:"Falha ao carregar conexões do aplicativo",successfullySwitched:"Conta alterada com sucesso para {{name}}",cancelled:"Cancelado",connectionCancelled:"A conexão do aplicativo foi cancelada",disconnected:"{{name}} foi desconectado",failedToDisconnect:"Falha ao desconectar conexão do aplicativo",stripeRemoved:"A integração Stripe foi removida",wixPaymentsDisconnected:"Wix Payments foi desconectado",integrationRemoved:"{{name}} foi removido",failedToRemove:"Falha ao remover integração",connectedAccountsWarning:"Contas conectadas podem expor dados sensíveis a qualquer pessoa com acesso.",unlockFeature:"Desbloquear esta funcionalidade",unlockFeatureDesc:"Esta funcionalidade está disponível apenas no plano Builder ou superior. Atualize para continuar trabalhando sem limites",upgradeToUseConnector:"Fazer upgrade para usar o recurso",access:"Acesso {{name}}",disconnectAccount:"Desconectar conta?",disconnectDesc:"O acesso de <bold>{{email}}</bold> em <bold>{{name}}</bold> será revogado.<br/>O registro da integração será preservado para reconexão futura.",disconnecting:"Desconectando...",disconnect:"Desconectar",removeIntegration:"Remover integração?",removeDesc:"<bold>{{name}}</bold> será permanentemente removido deste aplicativo.<br/>Para criar uma conexão novamente, você precisará configurá-la do zero.",removing:"Removendo...",remove:"Remover",cancel:"Cancelar",reject:"Rejeitar",new:"Novo",done:"Concluído",success:"Sucesso",error:"Erro",setupIntegrations:"Configurar integrações",setupIntegrationsDesc:"Vincule facilmente seu aplicativo a conectores como Google Calendar, Google Drive, Slack, Notion, Salesforce, HubSpot e mais.",setupIntegrationsChat:"Apenas descreva o que você quer conectar no chat, e ele configurará para você.",viewAccess:"Ver acesso",connecting:"Conectando...",switchAccount:"Trocar conta",reconnect:"Reconectar",disconnectAccount2:"Desconectar conta",use:"Usar",examplePrompts:"Exemplos de prompts",clickPromptToAdd:"Clique em um prompt para adicioná-lo ao seu chat.",unableToLoadSuggestions:"Não foi possível carregar sugestões. Por favor, tente novamente mais tarde.",requiresBackendFunctions:"Esta integração requer funções backend, uma funcionalidade disponível apenas no nível Builder e superior. ",seePlans:"Ver planos",promptAddedToChat:"Prompt adicionado ao chat. Pressione Enter para enviar.",connectors:"Conectores",connectorsDesc:"Conecte seu aplicativo a serviços populares com conexões OAuth rápidas.",searchConnectors:"Pesquisar conectores",noSearchResults:"Sem resultados para sua pesquisa",noSearchResultsDesc:"Tente usar palavras-chave diferentes ou verifique a ortografia. Você também pode ordenar por nome ou adicionados recentemente.",sort:{title:"Ordenar",mostUsed:"Mais usados",recentlyAdded:"Adicionados recentemente",az:"A-Z",za:"Z-A"},revoked:"Revogado",connectionLost:"A conexão foi perdida — por favor, reconecte",configModal:{connectTo:"Conectar a {{name}}",configureConnection:"Configure sua conexão a {{name}}",loadingConfig:"Carregando configuração...",retryHint:"Você pode tentar novamente.",connect:"Conectar",connecting:"Conectando...",validationRequired:"{{name}} é obrigatório",validationInvalid:"{{name}} não é válido",fetchError:"Falha ao carregar a configuração.",retry:"Tentar novamente"},wixPayments:{title:"Wix Payments",live:"Ativo",disconnected:"Desconectado",acceptingPayments:"Aceitando pagamentos",integrationDisconnected:"Integração desconectada",openingWixPayments:"Abrindo o Wix Payments...",popupBlocked:"O Wix Payments foi bloqueado pelo seu navegador. Use o link abaixo para abrir manualmente o painel de pagamentos.",errors:{noUrl:"Falha ao obter a URL do Wix Payments. Tente novamente.",fetchFailed:"Falha ao abrir o Wix Payments. Tente novamente.",invalidRedirect:"Falha ao abrir o Wix Payments. Tente novamente."},openDashboard:"Abrir painel de pagamentos",managePayments:"Gerenciar pagamentos",disconnect:"Desconectar",disconnectIntegration:"Desconectar integração?",disconnectDesc:"<bold>Wix Payments</bold> será desconectado deste aplicativo.<br/>Você pode reconectá-lo mais tarde pelo chat.",disconnecting:"Desconectando...",disconnectButton:"Desconectar",enterNamePrompt:"Por favor, insira seu nome para continuar:",firstNamePlaceholder:"Nome",lastNamePlaceholder:"Sobrenome"},stripe:{unableToClaimSandbox:"Não foi possível reivindicar o sandbox",sandboxExpired:"O sandbox pode ter expirado ou já foi reivindicado. Por favor, atualize a página.",failedGetClaimUrl:"Falha ao obter URL de reivindicação",pleaseTryAgain:"Por favor, tente novamente ou atualize a página.",pendingSetup:"Configuração pendente",completeSetupGuide:"Conclua o guia de configuração para aceitar pagamentos reais",live:"Ativo",stripe:"Stripe",loadingStripe:"Carregando...",acceptingPayments:"Aceitando pagamentos reais",accountDetails:"Detalhes da conta Stripe",hideGuide:"Ocultar guia",showGuide:"Mostrar guia",goToStripe:"Ir para o Stripe",aboutIntegration:"Sobre a integração",aboutStripeIntegration:"Sobre a integração Stripe",stripeDesc:"O Stripe permite aceitar pagamentos, enviar transferências e gerenciar seu negócio online. Esta integração permite:",acceptCards:"Aceitar cartões de crédito e outros métodos de pagamento",createProducts:"Criar produtos e assinaturas",manageCustomers:"Gerenciar clientes e faturamento",close:"Fechar",tryTestPayment:"Testar um pagamento de teste",claimSandbox:"Reivindique seu sandbox Stripe",addLiveKeys:"Adicione suas chaves de API live do Stripe",copiedCard:"Copiado!",testCardCopied:"Número do cartão de teste copiado para a área de transferência.",failedToCopy:"Falha ao copiar",copyManually:"Por favor, copie manualmente: 4242 4242 4242 4242",keysSaved:"Chaves de API salvas com sucesso.",failedSaveKeys:"Falha ao salvar chaves de API. Por favor, tente novamente.",movedOutOfTestMode:"Você saiu do modo de teste.",noNeedTestPayments:"Não é mais necessário realizar pagamentos de teste.",useTestCard:"Use este cartão de teste para simular uma compra:",testCardNumber:"4242 4242 4242 4242",anyFutureExpiry:", qualquer data de validade futura, qualquer CVC de 3 dígitos.",publishAndOpen:"Publique seu aplicativo e abra em uma nova aba para testar a experiência de checkout",copyCardNumber:"Copiar número do cartão",connectStripeDesc:"Conecte-se à sua conta Stripe existente ou crie uma nova para começar a aceitar pagamentos reais.",claimAndGoLive:"Reivindicar e ativar",copyLiveKeys:"Copie suas chaves Publishable e Secret live do seu <link>Painel Stripe</link> para concluir a configuração e habilitar pagamentos reais no seu aplicativo.",publishableKey:"Chave pública",secretKey:"Chave secreta",enterValue:"Digite o valor",savingKeys:"Salvando...",saveApiKeys:"Salvar chaves de API",completeStepInStripe:"Para concluir esta etapa, reivindique o sandbox e conclua a configuração no Stripe"}},s5={title:"Integrações do aplicativo",subtitle:"Conecte seu aplicativo a serviços de terceiros e estenda suas funcionalidades.",integrationCatalog:"Catálogo de integrações",payments:"Pagamentos",zapier:"Zapier",couldNotLoad:"Não foi possível carregar detalhes da integração. Por favor, tente novamente.",loadingDetails:"Carregando detalhes...",backToCatalog:"Voltar ao catálogo",integrationAdded:"Integração adicionada (provisório)",wouldBeAdded:"{{name}} seria adicionado ao seu aplicativo. Valores secretos registrados.",requiresConfiguration:"Configuração necessária",requiresSecrets:"Esta integração requer {{count}} valor(es) secreto(s) a ser(em) configurado(s).",addToApp:"Adicionar ao aplicativo",paymentProcessing:"Processamento de pagamentos",paymentProcessingDesc:"Aceite pagamentos no seu aplicativo com processadores de pagamento populares. Em breve!",leadingPaymentPlatform:"Plataforma de pagamento líder",globallyRecognized:"Pagamentos globalmente reconhecidos",configurePayment:"Configure provedores de pagamento para habilitar assinaturas, compras únicas e mais no seu aplicativo.",zapierIntegration:"Integração Zapier",zapierDesc:"Conecte seu aplicativo a milhares de outros serviços através do Zapier.",automateWithZapier:"Automatize com Zapier",linkBase44:"Vincule o Base44 aos seus aplicativos favoritos como Slack, Google Sheets, Mailchimp e mais.",exploreOnZapier:"Explorar Base44 no Zapier",configureIntegration:"Configurar {{name}}",configureDesc:"Esta integração requer a configuração de alguns valores secretos. Eles são armazenados com segurança e criptografados.",saveAndAdd:"Salvar e adicionar integração"},l5={title:"Habilidades",description:"Adicione habilidades para moldar como a IA constrói seus apps.",manage:"Gerenciar"},c5=JSON.parse('{"title":"Conectores","connectorsForAppUsers":"Conectores para usuários do app","connectorsForAppUsersDesc":"Configure conectores para que os usuários do app possam vincular suas contas pessoais aos apps deste workspace.","connectorsForAppUsersDialogDesc":"Permita que os usuários do app conectem suas contas pessoais aos apps deste workspace.","addConnector":"Adicionar conector","browseConnectors":"Explorar conectores","noConnectorsYet":"Ainda não há conectores","noConnectorsYetDesc":"Adicione conectores para que os usuários do app possam vincular suas contas pessoais.","view":"Visualizar","edit":"Editar","connections":"Conexões","addConnection":"Adicionar conexão","viewConnector":"Visualizar conector","connectorName":"Nome do conector","connector":"Conector {{name}}","examplePrompts":"Prompts de exemplo","back":"Voltar","configureConnection":"Configure sua conexão","configureConnectionDesc":"Forneça seu ID do cliente, segredo e permissões.","connectorNameDesc":"Digite um nome curto para identificar este conector","clientId":"ID do cliente","clientSecret":"Segredo do cliente","clientSecrets":"Segredos do cliente","scopes":"Escopos","scopesDesc":"Digite os escopos que seu app precisa. Escreva cada escopo em uma linha separada.","scopesPlaceholder":"Digite escopos, um por linha","scopesPlaceholderExample":"ex.\\nhttps://www.googleapis.com/auth/calendar.readonly\\nemail","connectionConfig":"Configuração de conexão","cancel":"Cancelar","close":"Fechar","addingConnector":"Adicionando...","savingConnector":"Salvando...","saveChanges":"Salvar alterações","deleteConnector":"Excluir conector","deleteConfirm":"Excluir {{name}}? Esta ação não pode ser desfeita.","deleting":"Excluindo...","addConnectionTitle":"Adicionar conexão {{name}}","editConnectionTitle":"Editar conexão {{name}}","connectorReadOnly":"Conector {{name}}","readOnlyDesc":"Visualização somente leitura dos detalhes do conector","builtInConnectors":"Conectores integrados","promptExamples":"Exemplos de prompts para começar","adminOnlyTooltip":"Apenas administradores ou proprietários do workspace podem conectar integrações para usuários do app","settingUp":"Configurando conector...","configured":"Conector configurado","setUp":"Configurar conector de usuário do app {{type}}","setUpGeneric":"Configurar conector de usuário do app","connecting":"Conectando...","connect":"Conectar","reject":"Rejeitar","workspaceLevelNote":"Esta integração estará acessível no nível do workspace e será aplicada a todas as aplicações criadas dentro desse workspace.","previousMessage":"Esta configuração de conector é de uma mensagem anterior","toastErrorTitle":"Erro","toastCreated":"Conector criado","toastCreateFailed":"Falha ao criar o conector","toastDuplicateName":"Já existe um conector com este nome neste workspace","toastUpdated":"Conector atualizado","toastUpdateFailed":"Falha ao atualizar o conector","toastDeleted":"Conector excluído","toastDeleteFailed":"Falha ao excluir o conector","configFetchFailed":"Falha ao carregar a configuração da conexão. Campos obrigatórios podem estar ausentes.","retry":"Tentar novamente","toastLoadFailed":"Falha ao carregar conectores OAuth","namePlaceholder":"ex. Marketing {{label}}","clientIdPlaceholder":"Digite o ID do cliente OAuth","clientSecretPlaceholderNew":"Digite o novo segredo do cliente","clientSecretPlaceholder":"Digite o segredo do cliente OAuth","extraDetails":{"googlecalendar":{"longDescription":"Conecte-se ao Google Calendar para permitir que os usuários do seu app visualizem, criem e gerenciem eventos de calendário. Sincronize agendas, automatize a criação de reuniões a partir de envios de formulários e crie fluxos de agendamento.","examplePrompt0":"Sincronizar reuniões futuras em um painel dentro do app.","examplePrompt1":"Criar eventos de calendário a partir de envios de formulários.","examplePrompt2":"Mostrar uma visualização da agenda diária para o usuário logado.","examplePrompt3":"Enviar lembretes antes de eventos próximos."},"slack":{"longDescription":"Conecte-se ao Slack para compartilhar mensagens e criar canvas diretamente, simplificando a colaboração e aumentando a produtividade. Pesquise e recupere mensagens, canais, threads, arquivos e usuários, dando ao Claude o contexto para otimizar seu trabalho.","examplePrompt0":"Sincronizar novos usuários do app em um canal do Slack.","examplePrompt1":"Enviar atualizações de status de build para #devops.","examplePrompt2":"Publicar erros do app no canal #alertas.","examplePrompt3":"Notificar a equipe sobre novos feedbacks de clientes."},"salesforce":{"longDescription":"Conecte-se ao Salesforce para acessar contatos, leads, oportunidades e objetos personalizados. Permita que os usuários do seu app visualizem e atualizem dados do CRM, acompanhem negócios e automatizem fluxos de vendas.","examplePrompt0":"Mostrar um painel de oportunidades abertas.","examplePrompt1":"Criar um novo lead a partir de um envio de formulário.","examplePrompt2":"Sincronizar atualizações de contatos de volta para o Salesforce.","examplePrompt3":"Notificar a equipe quando um negócio for fechado."},"hubspot":{"longDescription":"Conecte-se ao HubSpot para gerenciar contatos, empresas, negócios e campanhas de marketing. Permita que os usuários do seu app sincronizem dados do CRM, acompanhem o engajamento e automatizem fluxos de marketing.","examplePrompt0":"Exibir uma lista de negócios recentes no app.","examplePrompt1":"Adicionar novos contatos a partir de formulários de cadastro.","examplePrompt2":"Sincronizar resultados de campanhas de e-mail em um painel.","examplePrompt3":"Atualizar etapas de negócios a partir do app."},"notion":{"longDescription":"Conecte-se ao Notion para acessar páginas, bancos de dados e conteúdo do workspace. Permita que os usuários do seu app leiam e atualizem seu workspace do Notion, sincronizem dados estruturados e automatizem fluxos de conteúdo.","examplePrompt0":"Puxar listas de tarefas de um banco de dados do Notion.","examplePrompt1":"Criar novas páginas a partir de envios de formulários.","examplePrompt2":"Sincronizar atualizações de status do projeto para o Notion.","examplePrompt3":"Exibir conteúdo do Notion dentro do app."},"slackbot":{"longDescription":"Conecte um Bot do Slack para postar mensagens como um bot com nome e ícone personalizados. Responda a menções do app, use comandos de barra e automatize fluxos centrados em bot no seu workspace do Slack.","examplePrompt0":"Publicar resumos diários de standup em #geral.","examplePrompt1":"Responder a comandos de barra com dados do app.","examplePrompt2":"Enviar alertas automatizados quando tarefas estiverem atrasadas.","examplePrompt3":"Notificar canais quando novos pedidos chegarem."},"googledrive":{"longDescription":"Conecte-se ao Google Drive para fazer upload, organizar e gerenciar arquivos. Permita que os usuários do seu app salvem documentos gerados, façam backup de dados e acessem seus arquivos do Drive diretamente do seu app.","examplePrompt0":"Salvar relatórios gerados em uma pasta compartilhada do Drive.","examplePrompt1":"Fazer upload de arquivos enviados por usuários para o Google Drive.","examplePrompt2":"Listar arquivos recentes de uma pasta específica.","examplePrompt3":"Fazer backup automático de exportações de dados do app no Drive."},"gmail":{"longDescription":"Conecte-se ao Gmail para enviar, ler e gerenciar e-mails programaticamente. Permita que os usuários do seu app automatizem fluxos de e-mail, leiam mensagens da caixa de entrada e enviem e-mails personalizados da própria conta.","examplePrompt0":"Enviar um e-mail de confirmação após envio de formulário.","examplePrompt1":"Exibir as mensagens mais recentes da caixa de entrada do usuário.","examplePrompt2":"Responder automaticamente a e-mails que atendam certos critérios.","examplePrompt3":"Redigir e enviar e-mails personalizados de prospecção."},"googlesheets":{"longDescription":"Conecte-se ao Google Sheets para ler, escrever e atualizar dados de planilhas. Permita que os usuários do seu app sincronizem registros, importem dados de planilhas e exportem dados do app para suas planilhas.","examplePrompt0":"Importar dados de produtos de uma planilha do Google.","examplePrompt1":"Exportar relatórios diários de vendas para uma planilha.","examplePrompt2":"Sincronizar envios de formulários em uma planilha de acompanhamento.","examplePrompt3":"Ler dados de preços de uma planilha compartilhada."},"googleslides":{"longDescription":"Conecte-se ao Google Slides para criar e editar apresentações. Permita que os usuários do seu app gerem apresentações a partir de modelos, adicionem conteúdo dinâmico e automatizem a criação de apresentações.","examplePrompt0":"Gerar uma apresentação de pitch a partir de dados de formulários.","examplePrompt1":"Adicionar um novo slide com métricas semanais.","examplePrompt2":"Criar apresentações a partir de modelos de relatório.","examplePrompt3":"Atualizar o conteúdo dos slides com os dados mais recentes."},"googledocs":{"longDescription":"Conecte-se ao Google Docs para criar, ler e editar documentos. Permita que os usuários do seu app gerem contratos, preencham modelos e gerenciem documentos diretamente do seu app.","examplePrompt0":"Gerar um contrato a partir de um modelo.","examplePrompt1":"Criar atas de reunião a partir de dados de formulário.","examplePrompt2":"Preencher um modelo de documento com dados do usuário.","examplePrompt3":"Adicionar novo conteúdo a um documento existente."},"googlebigquery":{"longDescription":"Conecte-se ao Google BigQuery para executar consultas SQL e analisar grandes conjuntos de dados. Permita que os usuários do seu app consultem seu data warehouse, criem painéis e extraiam análises para seu app.","examplePrompt0":"Consultar dados de vendas e exibir em um gráfico.","examplePrompt1":"Puxar análises de usuários de tabelas do BigQuery.","examplePrompt2":"Executar um relatório programado a partir dos dados do warehouse.","examplePrompt3":"Mostrar os produtos com melhor desempenho a partir dos resultados da consulta."},"linkedin":{"longDescription":"Conecte-se ao LinkedIn para acessar dados de perfil e compartilhar publicações. Permita que os usuários do seu app publiquem atualizações, recuperem perfis profissionais e automatizem fluxos de mídia social no LinkedIn.","examplePrompt0":"Publicar atualizações da empresa no LinkedIn automaticamente.","examplePrompt1":"Puxar detalhes do perfil do usuário logado.","examplePrompt2":"Compartilhar posts do blog no LinkedIn a partir do app.","examplePrompt3":"Exibir informações do perfil do LinkedIn em um painel."},"tiktok":{"longDescription":"Conecte-se ao TikTok para acessar informações de perfil, estatísticas de seguidores e dados de vídeos. Permita que os usuários do seu app acompanhem seu desempenho no TikTok e naveguem por seus vídeos publicados.","examplePrompt0":"Mostrar contagem de seguidores e estatísticas do perfil.","examplePrompt1":"Listar os vídeos mais recentes do usuário no TikTok.","examplePrompt2":"Exibir métricas de desempenho de vídeos em um painel.","examplePrompt3":"Acompanhar o crescimento de seguidores ao longo do tempo."},"discord":{"longDescription":"Conecte-se ao Discord para enviar mensagens, gerenciar servidores e interagir com guildas e canais. Permita que os usuários do seu app automatizem notificações, publiquem atualizações e integrem com sua comunidade do Discord.","examplePrompt0":"Enviar notificações de pedidos para um canal do Discord.","examplePrompt1":"Publicar alertas do app em um canal #notificações.","examplePrompt2":"Listar canais disponíveis em um servidor do Discord.","examplePrompt3":"Notificar a equipe quando um novo usuário se cadastrar."},"wix":{"longDescription":"Conecte-se ao Wix para acessar dados do site, gerenciar conteúdo e interagir com soluções de negócios Wix como Stores, Bookings e CRM. Permita que os usuários do seu app sincronizem produtos, pedidos e dados de clientes.","examplePrompt0":"Sincronizar produtos da loja Wix para o app.","examplePrompt1":"Puxar pedidos recentes do Wix Stores.","examplePrompt2":"Exibir disponibilidade de agendamento do Wix Bookings.","examplePrompt3":"Gerenciar contatos do CRM Wix a partir do seu app."},"github":{"longDescription":"Conecte-se ao GitHub para acessar repositórios, gerenciar issues e pull requests e automatizar fluxos de desenvolvimento. Permita que os usuários do seu app acompanhem alterações de código, criem issues e otimizem seu processo de desenvolvimento.","examplePrompt0":"Listar issues abertas de um repositório.","examplePrompt1":"Criar uma nova issue a partir de um formulário de relatório de bug.","examplePrompt2":"Mostrar pull requests recentes em um painel.","examplePrompt3":"Acompanhar atividade de commits em repositórios."},"wrike":{"longDescription":"Conecte-se ao Wrike para gerenciar projetos, tarefas e colaboração em equipe. Permita que os usuários do seu app criem e atualizem tarefas, acompanhem o progresso de projetos e coordenem o trabalho entre equipes.","examplePrompt0":"Criar tarefas a partir de envios de formulários.","examplePrompt1":"Exibir cronogramas de projetos em um painel.","examplePrompt2":"Atualizar o status de tarefas de dentro do app.","examplePrompt3":"Mostrar a carga de trabalho da equipe e atribuições de tarefas."},"box":{"longDescription":"Conecte-se ao Box para fazer upload, gerenciar e compartilhar arquivos e pastas. Permita que os usuários do seu app armazenem documentos com segurança, organizem arquivos e colaborem em conteúdo no Box.","examplePrompt0":"Fazer upload de documentos gerados para uma pasta do Box.","examplePrompt1":"Listar arquivos em um diretório compartilhado do Box.","examplePrompt2":"Baixar arquivos do Box para o app.","examplePrompt3":"Compartilhar um link de arquivo do Box com membros da equipe."},"clickup":{"longDescription":"Conecte-se ao ClickUp para gerenciar tarefas, projetos e fluxos de trabalho da equipe. Permita que os usuários do seu app criem tarefas, atualizem status e acompanhem o progresso de projetos diretamente do seu app.","examplePrompt0":"Criar tarefas no ClickUp a partir de envios de formulários.","examplePrompt1":"Mostrar o status do quadro de tarefas em um painel.","examplePrompt2":"Atualizar prioridades de tarefas a partir do app.","examplePrompt3":"Listar tarefas atrasadas do sprint atual."},"google_analytics":{"longDescription":"Conecte-se ao Google Analytics para acessar dados de tráfego do site, comportamento de usuários e desempenho de marketing. Permita que os usuários do seu app visualizem relatórios de análise e acompanhem métricas-chave de dentro do app.","examplePrompt0":"Exibir visualizações de página e sessões em um painel.","examplePrompt1":"Mostrar as principais fontes de tráfego da última semana.","examplePrompt2":"Acompanhar taxas de conversão entre campanhas.","examplePrompt3":"Puxar dados demográficos e de comportamento dos usuários."},"outlook":{"longDescription":"Conecte-se ao Outlook para enviar e ler e-mails, gerenciar eventos de calendário e acessar o correio e calendário do Microsoft 365. Permita que os usuários do seu app automatizem fluxos de e-mail e sincronizem sua agenda.","examplePrompt0":"Enviar e-mails de acompanhamento a partir do app.","examplePrompt1":"Exibir próximos eventos do calendário.","examplePrompt2":"Criar eventos de calendário a partir de envios de formulários.","examplePrompt3":"Mostrar e-mails recentes em um painel."},"linear":{"longDescription":"Conecte-se ao Linear para criar e gerenciar issues, projetos e ciclos. Permita que os usuários do seu app acompanhem fluxos de trabalho da equipe, organizem sprints e fiquem por dentro do progresso de engenharia.","examplePrompt0":"Criar issues no Linear a partir de formulários de relatório de bug.","examplePrompt1":"Mostrar issues do sprint ativo em um painel.","examplePrompt2":"Atualizar o status de issues de dentro do app.","examplePrompt3":"Acompanhar o progresso do ciclo e a velocidade da equipe."},"dropbox":{"longDescription":"Conecte-se ao Dropbox para fazer upload, download e gerenciar arquivos e pastas. Permita que os usuários do seu app armazenem arquivos na nuvem, sincronizem dados e acessem o conteúdo do Dropbox a partir do seu app.","examplePrompt0":"Fazer upload de relatórios exportados para o Dropbox.","examplePrompt1":"Listar arquivos em uma pasta específica do Dropbox.","examplePrompt2":"Baixar arquivos compartilhados para o app.","examplePrompt3":"Sincronizar backups de dados do app para o Dropbox."}},"builtIn":{"sendEmail":{"name":"Enviar e-mails","rowDescription":"Envie e-mails para pessoas no seu app Base44 com nomes de remetente personalizáveis e conteúdo HTML rico.","subtitle":"Envie e-mails automatizados aos seus usuários diretamente do seu app.","longDescription":"Envie e-mails automaticamente do seu app como parte de workflows ou automações. Esta integração pode ser acionada a partir de fluxos, funções backend ou agentes para enviar notificações como confirmações, alertas, resumos ou links de acesso aos usuários.","examplePrompt0":"Quando um ticket de suporte for atualizado para \\"resolvido\\", use SendEmail para notificar o solicitante com um resumo da resolução.","examplePrompt1":"Crie uma automação semanal que use SendEmail para enviar aos admins um resumo de novos pedidos e métricas-chave.","examplePrompt2":"Adicione um fluxo diário que use SendEmail para enviar aos admins um resumo de novos cadastros neste app.","examplePrompt3":"Crie uma automação que use SendEmail para lembrar os usuários 24 horas antes do compromisso agendado."},"uploadFile":{"name":"Upload de arquivo","rowDescription":"Permita que pessoas façam upload de arquivos no seu app. Use a URL do arquivo retornada em outras integrações ou workflows.","subtitle":"Permita que pessoas façam upload de arquivos no seu app. Use a URL do arquivo retornada em outras integrações ou workflows.","longDescription":"Permita que os usuários façam upload de arquivos no seu app e os anexem a registros. Esta integração alimenta componentes de upload para que você possa coletar documentos, imagens, recibos, contratos, capturas de tela, fotos de perfil, arquivos CSV ou planilhas, e armazenar apenas a URL segura do arquivo nos seus dados.","examplePrompt0":"Adicione um campo de upload de arquivo a este formulário usando Upload de arquivo e salve a URL do arquivo no registro relacionado.","examplePrompt1":"Crie uma página onde os usuários possam fazer upload de fotos de perfil com Upload de arquivo e armazenar a URL da imagem na entidade de usuário.","examplePrompt2":"Configure uma área de upload para arquivos CSV usando Upload de arquivo para que eu possa importar esses arquivos posteriormente nas minhas tabelas de dados."},"invokeLlm":{"name":"Invocar LLM","rowDescription":"Gere respostas de IA usando modelos de linguagem integrados, prompts, arquivos e saídas estruturadas.","subtitle":"Gere respostas de IA usando modelos de linguagem integrados, prompts, arquivos e saídas estruturadas.","longDescription":"Use um modelo de linguagem para gerar respostas a partir de prompts. Esta integração pode retornar saídas JSON estruturadas, analisar imagens, usar anexos de arquivo como contexto e realizar buscas na web quando necessário. Pode ser usada para alimentar agentes, workflows e outros recursos impulsionados por IA no seu app.","examplePrompt0":"Gere respostas de IA a partir da entrada do usuário usando Invocar LLM e mostre a resposta nesta página.","examplePrompt1":"Use Invocar LLM para resumir mensagens longas de feedback em três insights armazenados em cada registro de Feedback.","examplePrompt2":"Adicione um recurso \\"reescrever este texto\\" que envia o texto do usuário para Invocar LLM e retorna uma versão mais clara e amigável.","examplePrompt3":"Use Invocar LLM para classificar cada ticket de suporte como \\"bug\\", \\"solicitação de recurso\\" ou \\"pergunta\\" e salvar o rótulo no registro do ticket."},"generateImage":{"name":"Gerar imagem","rowDescription":"Crie imagens a partir de prompts de texto detalhados. Retorna uma URL para a imagem gerada.","subtitle":"Simplesmente forneça um prompt de texto descrevendo a imagem desejada, e ele retorna uma URL para a imagem gerada.","longDescription":"Gere imagens usando IA a partir de prompts de texto ou fluxos no seu app. Esta integração permite que seu app crie imagens de capa, miniaturas, avatares, placeholders de produto ou visuais de marketing simples sob demanda sem conectar a um provedor de imagens externo.","examplePrompt0":"Use Gerar imagem para criar uma imagem de produto padrão quando um novo produto é adicionado sem fotos.","examplePrompt1":"Adicione um recurso onde os usuários podem inserir uma descrição curta e Gerar imagem retorna uma URL de imagem de capa salva na publicação.","examplePrompt2":"Crie um fluxo que use Gerar imagem para gerar imagens de avatar para novos usuários com base na cor ou tema favorito."},"extractData":{"name":"Extrair dados de arquivos enviados","rowDescription":"Extraia dados estruturados de arquivos enviados (CSV, PNG, JPG, JPEG, PDF) usando esquemas JSON. Útil para importação de dados em massa.","subtitle":"Extraia dados estruturados de arquivos enviados (CSV, PNG, JPG, JPEG, PDF) usando esquemas JSON. Útil para importação de dados em massa.","longDescription":"Extraia automaticamente dados estruturados de arquivos enviados ao seu app e armazene-os nas suas entidades. Esta integração lê documentos e planilhas e transforma seu conteúdo em campos estruturados que você pode usar em registros, relatórios ou automações.","examplePrompt0":"Quando alguém fizer upload de uma fatura PDF, use Extrair dados para obter o fornecedor, valor total e data de vencimento em uma entidade de Faturas.","examplePrompt1":"Use Extrair dados para ler um CSV de contatos e criar um registro de contato por linha.","examplePrompt2":"Depois que um usuário fizer upload de uma imagem de recibo, use Extrair dados para extrair o comerciante, data e itens em um registro estruturado de Despesas."},"whatsapp":{"name":"WhatsApp","rowDescription":"Conecte seu agente ao WhatsApp para que as pessoas possam enviar mensagens ao agente do seu app diretamente do celular, sem abrir o app.","subtitle":"Conecte seu agente ao WhatsApp para que as pessoas possam enviar mensagens ao agente do seu app diretamente do celular, sem abrir o app.","longDescription":"Conecte seu agente ao WhatsApp para que as pessoas possam enviar mensagens ao agente do seu app diretamente do celular. Use esta integração para lidar com suporte, coletar dados ou enviar atualizações pelo WhatsApp enquanto o agente acessa os dados e workflows do seu app nos bastidores.","examplePrompt0":"Conecte meu agente de suporte ao WhatsApp para que os clientes possam fazer perguntas lá e o agente responda usando o conhecimento do meu app.","examplePrompt1":"Configure um fluxo do WhatsApp onde novas mensagens criem ou atualizem registros na minha entidade de Contatos e o agente confirme os detalhes.","examplePrompt2":"Quando o status de um pedido mudar para \\"enviado\\", faça o agente enviar uma mensagem no WhatsApp com o link de rastreamento e informações-chave do pedido."}}}'),d5={title:"Conectores para usuários do app",description:"Configure conectores para que os usuários do app possam vincular suas contas pessoais.",manage:"Gerenciar"},u5={connections:o5,integrations:s5,skillsBanner:l5,oauthConnectors:c5,oauthConnectorsBanner:d5},p5={importSuccessful:"Importação bem-sucedida",importSuccessfulMsg:"{{count}} registros de {{name}} importados com sucesso",importFailed:"Falha na importação",exportSuccessful:"Exportação bem-sucedida",exportSuccessfulMsg:"Entidades exportadas para CSV com sucesso",exportFailed:"Falha na exportação",moveAllToTrash:"Mover todos os registros para a lixeira",moveAllToTrashConfirm:"Tem certeza que deseja mover todos os registros para a lixeira? Você poderá restaurá-los depois da lixeira.",moveToTrash:"Mover para a lixeira",success:"Sucesso",allMovedToTrash:"Todos os registros foram movidos para a lixeira com sucesso",error:"Erro",add:"Adicionar",addItem:"Adicionar item",import:"Importar",export:"Exportar",schema:"Esquema",recentlyDeleted:"Excluídos recentemente",deleteAll:"Excluir tudo",permissions:"Permissões",permissionsDesc:"Crie regras para controlar quem pode ler e gravar registros. Múltiplas regras são combinadas com lógica OU.",saveRules:"Salvar Regras",permissionsIssueDetected:"Problema de permissões detectado",learnMoreAboutPermissions:"<a>Saiba mais <icon/></a> sobre permissões e regras de segurança",customize:"Personalizar",apply:"Aplicar",checkingPermissions:"Verificando segurança de permissões",failedCheckPermissions:"Falha ao verificar permissões",permissionsCheckPassed:"Verificação de permissões aprovada",recommendedRules:"Regras recomendadas",editRecord:"Editar {{entity}}",addNewRecord:"Adicionar novo {{entity}}",test:"Teste",production:"Produção",filters:"Filtros",schemaEditor:"Editor de esquema",noRecordsFound:"Nenhum registro encontrado",getStartedAdding:"Comece adicionando seu primeiro registro.",loadingEntity:"Carregando {{entity}}..."},m5={production:"Produção",test:"Teste"},g5={back:"Voltar",trashTitle:"{{entity}}: Lixeira",test:"(Teste)",production:"(Produção)",trashDescription:`Visualize, restaure ou exclua permanentemente itens.
Itens são excluídos permanentemente após 30 dias.`,permanentlyDelete:"Excluir registro permanentemente",permanentlyDeleteConfirm:"Tem certeza que deseja excluir permanentemente este registro? Esta ação não pode ser desfeita.",deletePermanently:"Excluir permanentemente",restoreSelected:"Restaurar registros selecionados",restoreSelectedConfirm:"Tem certeza que deseja restaurar {{count}} registro(s) selecionado(s)?",restore:"Restaurar",restoreAll:"Restaurar todos os registros",restoreAllConfirm:"Tem certeza que deseja restaurar todos os registros da lixeira?",restoreAllBtn:"Restaurar tudo",deletedDate:"Data de exclusão",actions:"Ações",failedToLoad:"Falha ao carregar registros excluídos",tryAgain:"Tentar novamente",loadingDeleted:"Carregando registros excluídos...",noDeletedRecords:"Nenhum registro excluído encontrado",restoreCount:"Restaurar {{count}} selecionado(s)",restoring:"Restaurando..."},h5={data:p5,toolbar:m5,trash:g5},f5=JSON.parse(`{"title":"Domínios","subtitle":"Compre, conecte e gerencie seus domínios.","learnMore":"Saiba mais","expired":"Expirou há {{days}} dias","expiresIn":"Expira em {{days}} dias","lastChecked":"Última verificação: {{time}}","domainLinked":"Domínio vinculado","domainLinkedMsg":"O domínio foi vinculado ao seu projeto","errorLinkingDomain":"Erro ao vincular domínio","linking":"Vinculando...","linkDomain":"Vincular domínio","checkStatus":"Verificar status","checking":"Verificando...","verifyDomain":"Verificar","verifying":"Verificando...","unlinkDomain":"Desvincular domínio","unlinking":"Desvinculando...","unlinked":"Desvinculado","domainActive":"Domínio ativo","waitingDns":"Aguardando propagação DNS","verified":"Verificado","error":"Erro","pending":"Pendente","domainUnlinked":"Domínio desvinculado","domainUnlinkedMsg":"O domínio foi desvinculado do seu projeto","errorUnlinkingDomain":"Erro ao desvincular domínio","domainDeleted":"Domínio excluído","errorDeletingDomain":"Erro ao excluir domínio","errorCheckingStatus":"Erro ao verificar status","verificationInitiated":"Verificação iniciada","checkBackMinutes":"Por favor, verifique novamente em alguns minutos","errorVerifyingDomain":"Erro ao verificar domínio","deleteDomain":"Excluir domínio","deleteConfirm":"Tem certeza que deseja excluir?","deleting":"Excluindo...","unlinkDialogDescription":"Este domínio foi comprado através do Base44.\\n\\nEle permanecerá listado nos seus domínios, mas não estará mais conectado ao seu projeto.","wantToUseDomain":"Quer usar seu domínio?","customDomainsAvailable":"Domínios personalizados estão disponíveis no plano Builder e superior.<br/>Atualize para conectar seu domínio a este aplicativo.","viewPlans":"Ver planos","getNewDomain":"Obter um novo domínio","getNewDomainDescription":"Dê ao seu aplicativo uma aparência profissional com um domínio único.","suggestedForApp":"Sugerido para seu aplicativo: <bold>{{domain}}</bold>","suggestedForApp_prefix":"Sugerido para seu aplicativo:","buyNewDomain":"Comprar novo domínio","buyAnother":"Comprar outro","buyThisDomain":"Comprar este domínio","orConnectExisting":"Ou conecte um domínio existente que você já possui","connectExistingDomain":"Conectar domínio existente","getYourCustomDomain":"Obtenha seu domínio personalizado","upgradeDescription":"Domínios personalizados estão disponíveis no plano Builder e superior.","upgradeYourPlan":"Atualize seu plano","processing":"Processando...","loading":"Carregando...","domainLimitReached":"Limite de domínios atingido","domainLimitMsg":"Você atingiu o máximo de {{max}} domínios para este aplicativo ({{current}}/{{max}}).\\nPor favor, remova alguns domínios antes de adicionar novos.","noCustomDomainYet":"Você ainda não conectou um domínio personalizado","connectDescription":"Conecte seu aplicativo Base44 ao seu próprio domínio para destacar sua marca e facilitar a localização e o compartilhamento do seu aplicativo.","buyDomain":"Comprar domínio","neverExpires":"Nunca expira","editUrl":"Editar URL","domainPurchased":"Domínio comprado!","domainPurchasedMsg":"Seu domínio {{domain}} foi comprado com sucesso. Aguardando sua aparição nos seus domínios...","domainPurchaseFailed":"Falha na compra do domínio","purchaseFailedMsg":"Falha na compra de {{domain}}.","domainLimitReachedToast":"Limite de domínios atingido","domainLimitToastMsg":"Você pode ter até {{max}} domínios por aplicativo. Por favor, remova alguns domínios primeiro.","domainAddedSuccessfully":"Domínio adicionado com sucesso.","verifyToComplete":"Por favor, verifique seu domínio para concluir a configuração.","failedToConnect":"Falha ao conectar seu domínio","connectYourDomain":"Conectar","builtInDomain":"URL integrada","customDomains":"Domínios personalizados","adminCanAdd":"Admin: pode adicionar qualquer domínio","domainDisabled":"Domínio desativado","domainEnabled":"Domínio ativado","domainDisabledMsg":"O domínio foi desativado e não servirá mais tráfego.","domainEnabledMsg":"O domínio foi reativado e voltará a servir tráfego.","errorTogglingDomain":"Erro ao alternar o domínio","disabledBadge":"Desativado","enableDomain":"Ativar","disableDomain":"Desativar","enableDomainTitle":"Ativar domínio (admin)","disableDomainTitle":"Desativar domínio (admin)","errorFetchingDomains":"Erro ao buscar domínios","cancel":"Cancelar","cannotPurchase":"Não é possível comprar domínio","domainPurchaseDisabled":"A compra de domínios está atualmente desativada","entriNotReady":"O Entri ainda não está pronto. Por favor, tente novamente em um momento.","errorPurchasingDomain":"Erro ao comprar domínio","loadingEntri":"Carregando Entri...","addNewDomain":"Adicionar novo domínio","enterDomainFormat":"Digite o nome do seu domínio abaixo. Certifique-se de que segue o formato: app.example.com","enterDomainPlaceholder":"Digite o domínio (ex.: app.example.com)","invalidDomain":"Isso não parece um domínio válido.\\nDigite um domínio válido, ex.: example.com ou app.example.com.","domainAlreadyConnected":"Este domínio já está conectado ao seu aplicativo.","configureDnsAtRegister":"Configurar DNS no registrador","addDomain":"Adicionar domínio","adding":"Adicionando...","domainConnectionNeeded":"Conexão de domínio necessária","retryFromEmailSettings":"Por favor, tente novamente nas configurações de domínio de e-mail.","emailDomainSubmitted":"Domínio de e-mail enviado.","addDnsRecords":"Por favor, adicione os registros DNS no seu provedor de domínio.","verificationMayTake48h":"A verificação pode levar até 48 horas.","senderDetailsUpdated":"Detalhes do remetente atualizados.","editSenderDetails":"Editar detalhes do remetente","setSenderDetails":"Defina seus detalhes de remetente","saveChanges":"Salvar alterações","connectDomain":"Conectar domínio","saving":"Salvando...","connecting":"Conectando...","usersWillGetEmails":"Seus usuários receberão e-mails com esses detalhes de remetente.","senderName":"Nome do remetente","customAddress":"Endereço personalizado","noReply":"no-reply","noReplyEmailAddress":"no-reply@base44-apps.com","domain":"Domínio","copyToClipboard":"Copiar para a área de transferência","addCnameRecord":"Adicionar registro CNAME: ","wwwToDomain":"www → base44.onrender.com","addAnameRecord":"Adicionar registro ANAME/ALIAS: ","emptyOrAtDomain":"vazio ou @ → base44.onrender.com","ifNoAnameSupport":"Se seu provedor DNS não suporta ANAME/ALIAS, use um registro A:","aRecordIp":"@ → 216.24.57.1","removeAaaaRecords":"Remova todos os registros AAAA do seu domínio durante a configuração DNS. Registros AAAA mapeiam para um endereço IPv6, e o Base44 usa IPv4. Esses registros podem causar comportamento inesperado no seu domínio personalizado.","dnsChangesNote":"Por favor, note que após adicionar registros DNS, pode levar algum tempo para as alterações se propagarem pela internet. Durante esse tempo, o domínio pode não funcionar corretamente.","addDnsRecordsFor":"1. Adicione estes registros DNS no seu provedor de domínio para ","type":"Tipo","nameColumn":"Nome","hostColumn":"Host","tabAnameAlias":"ANAME/ALIAS","tabARecord":"Registro A","addRecordsStepIntro":"Adicione estes registros no painel do seu provedor para concluir a configuração:","removeAaaaShort":"Remova os registros AAAA (IPv6), pois eles podem bloquear conexões.","customDomainStep2Verify":"Depois de atualizar todos os registros no painel do seu provedor, clique em «<bold>Verificar domínio</bold>». As alterações de DNS podem levar até 48–78 horas para propagar.","closeModal":"Fechar","verifyDomainButton":"Verificar domínio","dnsTargetFallback":"base44.onrender.com","value":"Valor","onceConfiguredVerify":"2. Uma vez configurado, clique em '<bold>Verificar</bold>' no cartão de domínio de e-mail para verificar a configuração. As alterações DNS podem levar até 48-78 horas para se propagar.","emailDnsChangesNote":"Por favor, note que após adicionar registros DNS, as alterações podem levar até 48 horas para se propagar. Durante esse tempo, os e-mails serão enviados do endereço de e-mail atual.","configureDnsForEmail":"Configurar DNS para domínio de e-mail","connectDomainDns":"Conecte seu domínio através do seu provedor DNS","followInstructions":"Siga as instruções abaixo para configurar os registros DNS.","addRecordsInProvider":"Adicione estes registros no painel do seu provedor para concluir a configuração.","done":"Concluído","needHelp":"Precisa de ajuda? Crie um chamado em ","supportSystem":"sistema de suporte","urlUpdated":"URL atualizada","customUrlRemoved":"URL personalizada removida. Seu aplicativo agora está disponível em {{url}}","appAvailableAt":"Seu aplicativo agora está disponível em {{url}}","urlAlreadyTaken":"Esta URL já está em uso. Experimente uma das sugestões abaixo ou insira outra URL.","urlAlreadyTakenNoSuggestions":"Esta URL já está em uso. Por favor, tente outra URL.","suggestedAlternatives":"Alternativas disponíveis:","urlReserved":"Esta URL é reservada. Por favor, tente outra.","urlInvalid":"Esta URL é inválida. Por favor, tente outra.","slugInvalidClient":"Esta URL é inválida. Use apenas letras minúsculas, números e hífenes.","slugResetToDefault":"Slug redefinido para o padrão","errorResettingSlug":"Erro ao redefinir slug","failedResetSlug":"Falha ao redefinir para slug padrão","editUrlTitle":"Editar URL","builtInDomainLabel":"URL integrada Base44","resetToDefault":"Redefinir para padrão","urlEditingRequiresPlan":"A edição de URL requer um plano starter. ","upgradeToPremium":"Atualizar para Premium","changing":"Alterando...","change":"Alterar","emailDomain":"Domínio de e-mail","sendingFromDefault":"Enviar do domínio padrão custa 1 crédito de integração por e-mail. Usar um domínio personalizado custa 2 créditos de integração.","useCustomDomain":"Use seu domínio personalizado","sendingFrom":"Nome do remetente: {{name}}","connectDomainForCustom":"Conecte um domínio para usar um endereço de remetente personalizado.","buyADomain":"Comprar um domínio","dnsConfiguration":"Configuração DNS","pleaseWaitTryAgain":"Por favor, aguarde um momento e tente novamente.","dnsConfigFailed":"Falha na configuração DNS","dnsPleaseTryLater":"Por favor, tente novamente mais tarde.","verificationFailed":"Falha na verificação","dnsNotVerified":"Os registros DNS ainda não foram verificados. Por favor, verifique sua configuração DNS e tente novamente.","domainVerificationFailed":"Falha na verificação do domínio","couldntVerifyDns":"Não foi possível verificar seus registros DNS. Por favor, verifique-os e tente novamente.","completeSetup":"Concluir configuração","opening":"Abrindo...","cancelling":"Cancelando...","connectionFailed":"Falha na conexão","retry":"Tentar novamente","retrying":"Tentando novamente...","couldntCompleteDns":"Não foi possível concluir a configuração DNS. Por favor, tente novamente.","couldntConnectEmail":"Não foi possível conectar o domínio ao provedor de e-mail. Por favor, tente novamente.","pendingVerification":"Verificação pendente","emailBeingVerified":"Seu endereço de e-mail está sendo verificado.","makeSureDnsCorrect":"Certifique-se de que os registros DNS foram adicionados corretamente ao seu provedor de domínio.","verify":"Verificar","notConfigured":"Não configurado","active":"Ativo","editSenderDetailsAction":"Editar detalhes do remetente","detachCustomDomain":"Desconectar domínio personalizado","suspended":"Suspenso","disabled":"Desativado","blocked":"Bloqueado","propagationBlocked":"Propagação bloqueada","propagationBlockedTooltip":"A propagação DNS pode demorar. Compare os seus registos DNS com as nossas instruções se algo ainda estiver incorreto.","pendingConnection":"Conexão pendente","completeSetupToSend":"Conclua a configuração para começar a enviar e-mails do seu domínio. Os e-mails são atualmente enviados de ","emailCurrentlySentFrom":"Seu endereço de e-mail está sendo verificado. Os e-mails são atualmente enviados de ","dnsNotVerifiedYet":"Os registros DNS ainda não foram verificados. Certifique-se de que estão configurados corretamente e clique em 'Verificar'.","couldntConnectMakeSure":"Não foi possível conectar o domínio ao provedor de e-mail. Certifique-se de que os registros DNS foram adicionados corretamente ao seu provedor de domínio e tente novamente.","base44Domain":"Domínio Base44","maxDomainsReached":"Máximo de {{max}} domínios atingido para este aplicativo","viewDnsRecords":"Ver registros DNS","upgradeBannerText":"Domínios personalizados requerem um plano Builder ou superior. Atualize para ativá-los.","upgradeToUseDomain":"Atualize seu plano para usar este domínio.","emailDomainPurchasedOnly":"A configuração do domínio de e-mail está disponível atualmente apenas para domínios adquiridos através do Base44.","save":"Salvar","urlHint":"Use apenas letras minúsculas, números e hífens","copyUrl":"Copiar URL","builtInUrlTooltip":"Seu aplicativo estará sempre disponível nesta URL.","builderPlanRequired":"Este recurso está disponível no plano Builder e superior.","somethingWentWrong":"Algo deu errado","failedToGetPurchaseConfig":"Falha ao obter configuração de compra","errorEnablingEmail":"Erro ao ativar e-mail","failedToEnableEmail":"Falha ao ativar e-mail","errorUpdatingSenderDetails":"Erro ao atualizar detalhes do remetente","failedToUpdateSenderDetails":"Falha ao atualizar detalhes do remetente","errorReplacingDomain":"Erro ao substituir domínio","failedToReplaceDomain":"Falha ao substituir domínio","failedToAddDomain":"Falha ao adicionar domínio","processingPurchase":"Processando compra...","subscriptionRequired":"Assinatura necessária"}`),v5={domains:f5},b5={title:"Explorador de logs",subtitle:"Monitore os logs do sistema no seu aplicativo.",refresh:"Atualizar",loadingLogs:"Carregando logs...",pleaseWait:"Por favor, aguarde enquanto buscamos seus logs",failedToLoad:"Falha ao carregar logs",errorFetching:"Ocorreu um erro ao buscar os logs. Por favor, tente novamente.",noLogsMatchFilters:"Nenhum log corresponde aos seus filtros",tryAdjusting:"Tente ajustar seus filtros",noLogsFound:"Nenhum log encontrado",logsWillAppear:"Os logs aparecerão aqui quando houver atividade",tryAgain:"Tentar novamente",resetFilters:"Redefinir filtros",details:"Detalhes",outputs:"Saídas",errorTab:"Erro",noAdditionalDetails:"Nenhum detalhe adicional disponível.",clearFilters:"Limpar filtros",filterByEmail:"Filtrar por e-mail...",errorsOnly:"Apenas erros",allEvents:"Todos os eventos",typeColumn:"Tipo",userColumn:"Usuário",timestamp:"Data/hora"},y5={title:"Análises",publishToCollect:"Publique seu aplicativo para começar a coletar dados."},k5={title:"Documentação API",subtitle:"Referência completa da API do seu aplicativo. Use a especificação OpenAPI com qualquer cliente API ou ferramenta de documentação.",downloadSpec:"Baixar especificação OpenAPI",copyForLLM:"Copiar para IA",copyForLLMTooltip:"Copiar documentação Markdown amigável para IA para a área de transferência",copied:"Copiado!",codeExamplesIn:"Exemplos de código em:",authTitle:"Autenticação",authDescription:"Todas as requisições API requerem um cabeçalho api_key. Você pode encontrar sua chave API no seu perfil de usuário, ou recuperá-la programaticamente via User.me() no SDK do aplicativo.",sdkAuthDescription:"Instale o SDK Base44 e inicialize o cliente com o ID do seu app. O SDK gerencia a autenticação e fornece métodos tipados para todas as operações de entidades e funções backend.",entitiesTitle:"Endpoints de Entidades",schema:"Schema",endpoints:"Endpoints",copyAll:"Copiar tudo",copyEntity:"Copiar entidade",functionsTitle:"Funções Backend",functionsDescription:"Invoque suas funções backend implantadas via HTTP. Cada função aceita qualquer payload JSON e retorna a resposta da função.",agentTitle:"Agente do App",agentDescription:"Interaja com o agente de IA do seu app através de conversas. Crie uma conversa, envie mensagens e receba respostas do agente.",copy:"Copiar",parameters:"Parâmetros",loading:"Carregando documentação da API...",error:"Falha ao carregar a documentação da API. Tente novamente."},w5={logs:b5,analytics:y5,api:k5},A5={error:"Erro",appStillLoading:"O aplicativo ainda está carregando... nome não atualizado",appNameEmpty:"O nome do aplicativo não pode estar vazio",removedFromFavorites:"Removido dos favoritos",addedToFavorites:"Adicionado aos favoritos",removedDescription:"Aplicativo removido da sua lista de favoritos",addedDescription:"Aplicativo adicionado à sua lista de favoritos",descriptionUpdated:"Descrição atualizada",descriptionUpdatedMsg:"A descrição do seu aplicativo foi atualizada com sucesso",failedUpdateDescription:"Falha ao atualizar a descrição do aplicativo",openApp:"Abrir aplicativo",shareApp:"Compartilhar aplicativo",winFreeCredits:"ganhe créditos gratuitos!",appVisibility:"Visibilidade do aplicativo",controlAccess:"Controle quem pode acessar seu aplicativo",inviteUsers:"Convidar usuários",growUserBase:"Aumente sua base de usuários convidando outras pessoas",copyLink:"Copiar link",copied:"Copiado!",sendInvites:"Enviar convites",paymentsViaStripe:"Pagamentos via Stripe",pendingSetup:"Configuração pendente",completeSetupGuide:"Conclua o guia de configuração para aceitar pagamentos reais",live:"Ativo",testModeMessage:"Você ainda está no modo de teste. Conclua a configuração para começar a receber pagamentos.",readyForPayments:"Seu aplicativo está pronto para aceitar pagamentos via Stripe.",continueSetup:"Continuar configuração",payments:"Pagamentos",poweredByWix:"Desenvolvido por Wix",manage:"Gerenciar",openingWixPayments:"Abrindo o Wix Payments...",wixPaymentsErrors:{noUrl:"Falha ao obter a URL do Wix Payments. Tente novamente.",fetchFailed:"Falha ao abrir o Wix Payments. Tente novamente.",invalidRedirect:"Falha ao abrir o Wix Payments. Tente novamente."},disconnected:"Desconectado",wixPaymentsDashboardError:"Falha ao abrir painel do Wix Payments",platformBadge:"Selo da plataforma",badgeVisible:'O selo "Editar com Base44" está atualmente visível no seu aplicativo.',hideBadge:"Ocultar selo",editAppNameAccessibilityLabel:"Editar título",editAppDescription:"Editar descrição do aplicativo",descriptionPrompt:"Forneça uma breve descrição do propósito e funcionalidades do seu aplicativo.",describeYourApp:"Descreva seu aplicativo...",cancel:"Cancelar",save:"Salvar",created:"Criado {{time}}"},S5={overview:A5},C5={title:"Segurança do aplicativo",subtitle:"Configure políticas de segurança em nível de linha para controlar quem pode acessar os dados do seu aplicativo",scanIssues:"Verificar problemas",scanTime:"A verificação geralmente leva alguns minutos",scanning:"Verificando",startSecurityCheck:"Iniciar verificação de segurança",scanResults:"Resultados da verificação",rlsRecommendations:"Recomendações RLS",rlsRecommendationsFound:"{{count}} recomendação(ões) RLS encontrada(s),",viewRecommendations:"Ver recomendações",noRlsRecommendations:"Nenhuma recomendação RLS encontrada",secrets:"Segredos",exposedSecretsFound:"{{count}} segredos expostos encontrados",noExposedSecrets:"Nenhum segredo exposto encontrado",backendFunctions:"Funções backend",unauthenticatedFunctions:"{{count}} funções backend não autenticadas encontradas",noUnauthenticatedFunctions:"Nenhuma função backend não autenticada encontrada",dataEntities:"Entidades de dados",entitiesCount:"{{count}} entidades",scanComplete:"Verificação de segurança concluída",reviewFindings:"Revise os resultados abaixo.",scanFailed:"Falha na verificação de segurança",ruleSaved:"Regra salva para {{entity}}",ruleSavedMsg:"A regra recomendada foi salva.",failedToSaveRule:"Falha ao salvar regra",createAccess:"Acesso de criação",readAccess:"Acesso de leitura",updateAccess:"Acesso de atualização",deleteAccess:"Acesso de exclusão",removeAllRules:"Remover todas as regras de segurança",removeAllRulesConfirm:"Isso removerá todas as regras de segurança desta entidade, permitindo que todos os usuários acessem todos os registros. Tem certeza que deseja continuar?",removeAllRulesBtn:"Remover todas as regras",securityRules:"Regras de segurança: {{entity}}",securityRulesTitle:"Regras de segurança",securityRulesDesc:"Crie regras para controlar quem pode ler e gravar registros. Múltiplas regras são combinadas com lógica OU.",publicAccess:"Acesso público",publicAccessDesc:"Atualmente todos os usuários podem acessar todos os registros desta entidade. Não há restrições de acesso.",createAccessRules:"Criar regras de acesso",create:"Criar",read:"Ler",update:"Atualizar",deleteAction:"Excluir",crudRules:"Regras de {{crud}}",addRule:"Adicionar regra",generatedRules:"Regras de {{crud}} geradas (JSON)",saveSecurityRules:"Salvar regras de segurança",crudAccessRules:"Regras de acesso de {{crud}}",configurePermissions:"Configurar permissões para cada ação",generatedJsonPreview:"JSON Gerado (Pré-visualização)",saveRules:"Salvar Regras",rlsRecommendation:"Recomendação RLS",dismiss:"Ignorar",applyFixes:"Aplicar correções",restricted:"Restrito",public:"Público",fullAccess:"Todos os usuários têm acesso completo",createLabel:"Criar:",readLabel:"Ler:",updateLabel:"Atualizar:",deleteLabel:"Excluir:",noRestrictions:"Sem restrições",allUsersCanAccess:"Todos os usuários podem acessar registros",creatorOnly:"Apenas criador",creatorOnlyDesc:"Usuários só podem acessar registros que criaram",entityUserComparison:"Comparação entidade-usuário",entityUserComparisonDesc:"Comparar um campo desta entidade com uma propriedade do usuário",entityField:"Campo da entidade",fieldInEntity:"Campo na entidade a comparar",userField:"Campo do usuário",fieldFromUser:"Campo do usuário a comparar",userPropertyCheck:"Verificação de propriedade do usuário",userPropertyCheckDesc:"Verificar se uma propriedade do usuário corresponde a um valor específico",userProperty:"Propriedade do usuário",selectUserProperty:"Selecionar propriedade do usuário",userRole:"Função do usuário",userEmail:"E-mail do usuário",fullName:"Nome completo",requiredValue:"Valor necessário",selectRole:"Selecionar função",adminRole:"Administrador",userRoleOption:"Usuário",noRestrictionsLabel:"Sem restrições",creatorOnlyLabel:"Apenas criador",adminOnlyLabel:"Apenas administrador",filePath:"Arquivo: {{path}}",severityCritical:"Crítico",severityHigh:"Alto",securityScanLabel:"Verificação de Segurança",upToDate:"Atualizado",upToDateTooltip:"Nenhuma alteração que afete a segurança foi feita desde a última verificação",outOfDate:"Desatualizado",outOfDateTooltip:"Alterações que afetam a segurança foram feitas desde a última verificação. Execute uma nova verificação de segurança.",runSecurityScan:"Executar Verificação de Segurança",securityPageTitle:"Segurança",securityPageSubtitle:"Gerencie suas permissões e regras de segurança. <a>Saiba mais <icon/></a>",issuesDetails:"Detalhes dos problemas",rlsIssuesTitle_one:"{{count}} Problema de RLS",rlsIssuesTitle_other:"{{count}} Problemas de RLS",rlsIssuesSubtitle:"Ative a segurança em nível de linha para proteger seus dados",exposedSecretsTitle_one:"{{count}} Segredo Exposto",exposedSecretsTitle_other:"{{count}} Segredos Expostos",exposedSecretsSubtitle:"Proteja e rotacione quaisquer segredos expostos para manter sua aplicação e dados seguros.",unauthBackendTitle_one:"{{count}} Função Backend Não Autenticada",unauthBackendTitle_other:"{{count}} Funções Backend Não Autenticadas",unauthBackendSubtitle:"Proteja endpoints de tarefas backend com autenticação.",noIssuesFound:"Nenhum problema encontrado. A segurança do seu app parece boa, mas continue verificando regularmente para manter-se protegido.",recommendedRulesLabel:"Regras recomendadas:",fix:"Corrigir",fixAll:"Corrigir Tudo",missingRlsRules:"{{entity}} não possui regras RLS",customizeSuggestion:"Personalizar sugestão",goToEntityPage:"Ir para a página da entidade",ruleColumnHeader:"Regra",allUsers:"Todos os usuários",fieldComparison:"Comparação de Campo",noScanTitle:"Verifique a segurança do seu app",noScanDescription:"Revise sua configuração, identifique riscos potenciais e aprenda como fortalecer a proteção do seu app",checkSecurity:"Verificar segurança",back:"Voltar",cancel:"Cancelar"},D5={title:"Segredos do aplicativo",secretDeleted:"Segredo excluído",errorDeletingSecret:"Erro ao excluir segredo",secretUpdated:"Segredo atualizado",errorUpdatingSecret:"Erro ao atualizar segredo",newSecretValue:"Novo valor do segredo",save:"Salvar",cancel:"Cancelar",addSecret:"Adicionar segredo",addNewSecret:"Adicionar novo segredo",addNewSecretDescription:"Digite o nome e o valor do seu segredo abaixo. Os segredos são criptografados e armazenados com segurança.",secretName:"Nome do segredo",secretNamePlaceholder:"Digite o nome do segredo (ex.: API_KEY)",secretNameNoSpaces:"O nome do segredo não pode conter espaços. Use sublinhados (ex.: API_KEY).",secretValue:"Valor do segredo",secretValuePlaceholder:"Digite o valor do segredo",adding:"Adicionando...",aboutSecretsManagement:"Sobre o gerenciamento de segredos",secretsDescription:"Segredos são variáveis de ambiente que contêm informações sensíveis como chaves de API, tokens e senhas. Eles são criptografados em repouso e injetados com segurança no seu aplicativo em tempo de execução.",secretsBullet1:"Os segredos são usados pelas suas funções backend para acessar serviços externos",secretsBullet2:"Todos os segredos são criptografados e armazenados com segurança",secretsBullet3:"Você pode adicionar, atualizar ou excluir segredos conforme necessário para seu aplicativo",needHelp:"Precisa de ajuda?",supportSystem:"Abra um chamado de suporte",configuredSecrets:"Segredos configurados",noSecretsYet:"Nenhum segredo configurado ainda. Adicione seu primeiro segredo para começar.",secretAddedSuccessfully:"Segredo adicionado com sucesso",errorCreatingSecret:"Erro ao criar segredo",errorFetchingSecrets:"Erro ao buscar segredos"},T5={security:C5,secrets:D5},E5={mainPage:"Página principal",mainPageDesc:"Defina a página inicial padrão do seu aplicativo",selectMainPage:"Selecionar página principal",appVisibility:"Visibilidade do aplicativo",controlAccess:"Controle quem pode acessar seu aplicativo",platformBadge:"Selo da plataforma",platformBadgeDesc:'Mostrar ou ocultar o selo "Editar com Base44" no seu aplicativo.',onlyForPaying:"Disponível apenas para usuários pagos.",upgradeNow:"Atualizar agora",visible:"Visível",hidden:"Oculto",hideEntityCreator:"Ocultar criador de entidade",hideEntityCreatorDesc:'Ocultar quem criou cada registro nas tabelas de dados do seu aplicativo. Quando habilitado, o campo "criado por" não será exibido aos usuários.',aiAgents:"Agentes IA",aiAgentsDesc:"Integre agentes IA no seu aplicativo usando a infraestrutura de agentes IA do Base44",aiAgentsEnabled:"Agentes IA habilitados",aiAgentsEnabledDesc:"Seu aplicativo agora tem acesso à infraestrutura de agentes IA do Base44. Você pode criar agentes inteligentes que podem ajudar os usuários com várias tarefas, responder perguntas e interagir com os dados do seu aplicativo. Use o chat para criar e configurar seus agentes.",testData:"Dados de teste",testDataDesc:"Use dados de teste para testar alterações com segurança sem afetar dados em produção.",onlyForBuilder:"Disponível apenas para o plano Builder e superior.",testDataVersionNote:"Para usar isso, você precisará de uma versão mais recente do seu aplicativo. Apenas faça uma alteração — envie uma mensagem à IA, modifique o código ou use o editor visual — e está pronto.",cloneApp:"Clonar aplicativo",cloneAppDesc:"Criar uma cópia deste aplicativo",githubConnectionIssue:"Problema de conexão com GitHub. Por favor, reconecte para clonar este aplicativo.",cantCloneOldInfra:`Você não pode clonar um aplicativo na infraestrutura antiga.
Atualize a infraestrutura para clonar seu aplicativo.`,createCopy:"Criar cópia",backendFunctions:"Funções backend",backendFunctionsDesc:"Habilitar funcionalidade do lado do servidor • Recomendado para desenvolvedores",activating:"Ativando...",activated:"Ativado",activate:"Ativar",upgradePlan:"Atualizar plano",dangerZone:"Zona de perigo",dangerZoneDesc:"Ações irreversíveis que afetam seu aplicativo",deleteApp:"Excluir aplicativo",deleteAppDesc:"Remover permanentemente este aplicativo e todos os seus dados",adminControls:"Controles de administrador",adminControlsDesc:"Gerenciar disponibilidade do aplicativo",unblockApp:"Desbloquear aplicativo",blockApp:"Bloquear aplicativo",appLogo:"Logo do aplicativo",editLogo:"Editar logo",appDescription:"Descrição do aplicativo",saveDescription:"Salvar descrição",describeYourApp:"Descreva seu aplicativo..."},P5={editAppLogo:"Editar logo do aplicativo",uploadLogo:"Enviar logo",generateLogo:"Gerar logo",dragAndDrop:"Arraste e solte ou clique para enviar",clickToUpload:"Clique para enviar ou arraste e solte",pngJpgLimit:"PNG, JPG até 5MB",upload:"Enviar",whatShouldLook:"Como deve ser a aparência do seu logo?",generating:"Gerando...",generateNew:"Gerar novo logo",cancel:"Cancelar",save:"Salvar",logoPrompt:"Prompt de geração do logo",describeLogo:"Descreva como você quer que seu logo pareça",uploading:"Enviando...",selectImage:"Selecionar imagem"},_5={removeListingConfirm:"Tem certeza que deseja remover esta listagem? Esta ação a removerá dos modelos de aplicativos.",listingRemoved:"Listagem removida do catálogo com sucesso",appTemplates:"Modelos de aplicativos",listedFor:"Listado por ${{price}} • {{sales}} vendas • {{status}}",manageTemplate:"Gerencie sua listagem de modelo",shareTemplate:"Compartilhe seu modelo com a comunidade para que outros possam descobri-lo e usá-lo.",manageListing:"Gerenciar listagem",publishToTemplates:"Publicar nos modelos de aplicativos",seeOnTemplates:"Ver nos modelos de aplicativos",removingListing:"Removendo...",removeFromTemplates:"Remover dos modelos de aplicativos",salesRevenue:"{{sales}} vendas • ${{revenue}} de receita",publishedToTemplates:"Publicado nos modelos de aplicativos",rejectedReason:"Motivo da rejeição: {{reason}}"},x5={public:"Público",private:"Privado",workspace:"Espaço de trabalho",requireLogin:"Requer login para acessar"},I5={notAvailableOnMobile:"O gerenciamento de {{feature}} não está disponível no celular",loginFromDesktop:"Por favor, acesse de um navegador desktop",okay:"Ok",domains:"domínios",security:"segurança",code:"código",apiFeature:"API",templates:"modelos"},R5={settings:E5,logo:P5,catalog:_5,visibility:x5,desktop:I5},z5={title:"Usuários",subtitle:"Gerencie os usuários do aplicativo e suas funções",inviteUser:"Convidar usuário",schema:"Esquema",searchByEmailOrName:"Pesquisar por e-mail ou nome",pendingRequests:"Solicitações pendentes",userSchemaEditor:"Editor de esquema de usuário",editUser:"Editar usuário",loadingUsers:"Carregando usuários...",noUsersFound:"Nenhum usuário encontrado",noPendingRequests:"Nenhuma solicitação pendente",noPendingRequestsDesc:"Não há solicitações de acesso aguardando aprovação no momento",inviteYourFirstUser:"Convide seu primeiro usuário",getStartedByInviting:"Comece convidando seu primeiro usuário para o aplicativo.",tryAdjustingSearch:"Tente ajustar sua pesquisa ou filtros para encontrar o que procura.",moreActions:"Mais ações",resendInvitation:"Reenviar convite",cancelInvite:"Cancelar convite",editUserAction:"Editar usuário",changeOwner:"Alterar proprietário",makeAppOwner:"Tornar proprietário do aplicativo",resendOwnershipRequest:"Reenviar solicitação de propriedade",cancelOwnershipRequest:"Cancelar solicitação de propriedade",changeRole:"Alterar função",selectNewRole:"Selecione uma nova função para {{name}}:",back:"Voltar",manageInvitation:"Gerenciar convite",approve:"Aprovar",reject:"Rejeitar",unknown:"Desconhecido",admin:"Administrador",user:"Usuário",allRoles:"todas as funções",name:"Nome",owner:"Proprietário",pendingOwnership:"Propriedade pendente",role:"Função",email:"E-mail",hasntLoggedIn:"{{role}} ainda não entrou no aplicativo.",userRemovedSuccess:"Usuário removido com sucesso",failedCancelInvitation:"Falha ao cancelar convite",userLoggedInSinceRefresh:"Este usuário entrou desde sua última atualização. Atualize a página para ver o status atualizado antes de tentar novamente.",failedRemoveUser:"Falha ao remover usuário",subscriptionRequired:"Assinatura necessária",onlyPayingCanAdmin:"Apenas usuários pagos podem tornar outros usuários administradores.",upgradeSubscription:"Atualize sua assinatura",toContinue:"para continuar.",userUpdatedSuccess:"Usuário atualizado com sucesso",userApprovedSuccess:"Usuário aprovado com sucesso",failedApproveRequest:"Falha ao aprovar solicitação de acesso",invitationRejected:"Convite rejeitado",failedDenyRequest:"Falha ao negar solicitação de acesso",invitationResentSuccess:"Convite reenviado com sucesso",failedResendInvitation:"Falha ao reenviar convite",emailSent:"E-mail enviado",ownershipTransferResent:"O convite de transferência de propriedade foi reenviado.",transferCancelled:"Transferência cancelada",ownershipTransferCancelled:"A transferência de propriedade foi cancelada.",failedCancelTransfer:"Falha ao cancelar transferência",cancelInviteAction:"Cancelar convite",removeUser:"Remover usuário",failedApproveUser:"Falha ao aprovar usuário",success:"Sucesso",error:"Erro",save:"Salvar",deleteConfirm:"Tem certeza que deseja excluir este registro?",deleteFailed:"Falha na exclusão"},M5={users:z5},N5="Conteúdo social",F5="Crie um plano de promoção social com conteúdo pronto para publicar.",L5="Carregando conteúdo social",j5={title:"Algo deu errado",description:"Ocorreu um erro inesperado. Por favor, atualize a página.",tryAgain:"Tentar novamente"},O5={emptyTitle:"Promova seu app nas redes sociais",emptyDescription:"Vamos analisar seu app e criar posts prontos para publicar nas redes sociais.",getStarted:"Criar meu plano de conteúdo",learnMore:"Saiba mais",emptyCheck1:"Defina o que você quer alcançar",emptyCheck2:"Escolha os melhores canais para seu app",emptyCheck3:"Receba ideias de posts personalizadas prontas para compartilhar",analyzingBase:"Analisando seu app",analyzingDescription:"Conhecendo seu app: o que faz, para quem é e como promovê-lo.",combiningBase:"Criando sua estratégia de conteúdo",combiningDescription:"Estamos moldando sua mensagem e selecionando os canais certos para seu lançamento.",planStep1:"Aplicando sua estratégia",planStep2:"Adaptando conteúdo para cada plataforma",planStep3:"Escrevendo os textos dos posts",planStep4:"Criando visuais para seus posts",stepOf:"Passo {{current}} de {{total}}"},B5={letsGo:"Vamos lá",next:"Próximo",back:"Voltar",creatingPlan:"Criando seu conteúdo...",creatingPlanBase:"Criando seu conteúdo",strategyReady:"Estratégia sugerida"},U5={emptyTitle:"Pronto para promover seu app?",emptyDescription:"Responda às perguntas para personalizar seu conteúdo.",generateNewPlan:"Gerar novo plano",downloadContent:"Baixar conteúdo",downloading:"Baixando...",startFresh:"Recomeçar"},q5={copy:"Copiar",copied:"Copiado",copiedToClipboard:"Copiado para a área de transferência",failedToCopy:"Falha ao copiar",cancel:"Cancelar",save:"Salvar",imageGenerationFailed:"Falha ao gerar a imagem",retryImage:"Tentar novamente",download:"Baixar imagem",expandImage:"Ver tamanho completo",close:"Fechar",regenerateImage:"Regenerar imagem",imageRefinePlaceholder:"O que você gostaria de mudar?",imageAlt:"Visual da publicação",share:"Compartilhar",editPostTitle:"Editar publicação",descriptionLabel:"Descrição",imageLabel:"Imagem",improveWithAI:"Melhorar com IA",refineInputPlaceholder:"O que você gostaria de mudar?",saveChanges:"Salvar alterações"},V5={handle:"seuperfil",displayName:"Seu Nome"},$5={reviewTitle:"Revise sua estratégia sugerida",goalLabel:"Seu objetivo",approachLabel:"Abordagem sugerida",strategyLabel:"A estratégia",showMore:"Ver mais",showLess:"Ver menos",platformsLabel:"Plataformas alvo",platformsDescription:"Pré-selecionamos as melhores plataformas para seu negócio.",editSelection:"Editar seleção",selectPlatforms:"Escolha suas plataformas",maxPlatforms:"Até 3 plataformas",toneLabel:"Combinar seu tom (opcional)",toneDescription:"Cole o link do seu perfil social e adaptaremos os posts ao seu tom.",generatePosts:"Gerar posts"},W5={resetTitle:"Gerar novo plano?",resetDescription:"Vamos gerar um plano completamente novo para você. Suas publicações e edições atuais serão substituídas e não poderão ser recuperadas.",cancel:"Cancelar",resetConfirm:"Gerar novo plano",upgradeTitle:"Créditos de integração insuficientes",upgradeDescription:"Você não tem créditos de integração suficientes para esta ação. Atualize seu plano para obter mais.",upgradeAction:"Atualizar plano"},G5={sendFailed:"Algo deu errado",sendFailedDescription:"Não foi possível contatar a IA. Por favor, tente novamente.",postUpdated:"Publicação atualizada",postUpdateFailed:"Falha ao atualizar a publicação",postRefined:"Publicação refinada",refineFailed:"Não foi possível refinar a publicação",refineFailedDescription:"A IA não conseguiu aplicar as alterações. Tente novamente.",imageGenerated:"Imagem gerada!",imageGenerateFailed:"Não foi possível gerar a imagem",imageGenerateFailedDescription:"Algo deu errado com a geração. Tente novamente.",planReset:"Conteúdo redefinido – pronto para um novo começo",planResetFailed:"Falha ao redefinir",insufficientCredits:"Créditos de integração insuficientes",insufficientCreditsDescription:"Seus créditos de integração acabaram. Faça upgrade do seu plano para obter mais.",downloadPartial:"Não foi possível baixar todo o conteúdo",downloadPartialDescription:"Algumas imagens não puderam ser baixadas. Por favor, tente novamente."},H5={pageTitle:N5,pageSubtitle:F5,loadingBase:L5,errorBoundary:j5,wizard:O5,steps:B5,toolbox:U5,post:q5,mock:V5,strategy:$5,dialog:W5,toast:G5},Y5={overview:"Visão geral",users:"Usuários",data:"Dados",analytics:"Análises",domains:"Domínios",integrations:"Integrações",security:"Segurança",code:"Código",agents:"Agentes",automations:"Automações",logs:"Logs",api:"API",settings:"Configurações",appSettings:"Configurações do aplicativo",authentication:"Autenticação",appTemplate:"Modelo de aplicativo",secrets:"Segredos",backToEditor:"Voltar ao editor",codeFiles:"Arquivos de código",search:"Pesquisar...",clearSearch:"Limpar pesquisa",virality:"Conteúdo social"},K5="Carregando dados do aplicativo...",Z5="Lixeira: {{entityName}}",J5={issuesFound:"Problemas encontrados",inComponent:"No componente {{componentName}}:",resolving:"Resolvendo...",resolveWithAI:"Resolver com IA",noCreditDeduction:"Esta ação não deduzirá créditos da sua conta."},Q5={loadingCheckpoint:"Carregando código do checkpoint...",errorFetchingFiles:"Erro ao buscar arquivos",backToPreview:"Voltar à pré-visualização"},X5={letsBuild:"Vamos construir seu aplicativo",tellMeCreate:"Diga-me o que você gostaria de criar usando o chat",loadingApp:"Carregando seu aplicativo",buildingPreview:"Construindo pré-visualização",previewPreparing:"A pré-visualização do seu aplicativo está sendo preparada.",mayTakeMoment:"Isso pode levar um momento.",previewUnavailable:"Pré-visualização indisponível",previewCouldntLoad:"A pré-visualização desta versão não pôde ser carregada.",retryBuild:"Tentar novamente",buildingIdea:"Construindo sua ideia",didYouKnow:"Você sabia?",packagePending:"Instalação de pacote pendente",approvePackage:"Por favor, aprove a instalação do pacote npm no chat para continuar",loadingPreview:"Carregando pré-visualização…",refreshPreview:"Atualizar pré-visualização",capture:{verbDiscovering:"Descobrindo",verbDesigning:"Projetando",verbBuilding:"Construindo",verbPolishing:"Polindo",verbUnveiling:"Revelando",verbStudying:"Estudando",verbExtracting:"Extraindo",verbReimagining:"Reimaginando",verbRefining:"Refinando",stageAnalyzingDesign:"Analisando design",stageExtractingColorsAndFonts:"Extraindo cores e fontes",stageBuildingPages:"Construindo páginas",stageCreatingComponents:"Criando componentes",stageRefiningDetails:"Refinando detalhes",stageAlmostThere:"Quase lá",stageStudyingDesignLanguage:"Estudando a linguagem de design",stageExtractingColorsAndTypography:"Extraindo cores e tipografia",stageCraftingYourPages:"Criando suas páginas únicas",stageApplyingDesignInspiration:"Aplicando inspiração de design",stageRefiningLookAndFeel:"Refinando a aparência",yourSite:"seu site",aSiteInspiredBy:"um site inspirado em <site>{{siteName}}</site>",progress:"Progresso"},figma:{verbFetching:"Obtendo",verbExtracting:"Extraindo",verbProcessing:"Processando",verbTransforming:"Transformando",verbBuilding:"Construindo",stageReadingDesign:"Lendo seu design do Figma",stageProcessingStructure:"Processando estrutura do design",stageHandlingAssets:"Gerenciando recursos e gerando código",stageApplyingAI:"Aplicando transformação de layout por IA",stageCompiling:"Compilando e finalizando seu app",yourFigmaDesign:"seu design do Figma",defaultName:"Importar do Figma"}},e6={canvas:"Canvas",dashboard:"Painel",preview:"Pré-visualização",exitSplitScreen:"Saia do modo tela dividida para pré-visualizar",versionHistory:"Histórico de versões",moreOptions:"Mais opções",filesUsedInPage:"Arquivos usados nesta página",seeAllFiles:"Ver todos os arquivos",activityMonitor:"Monitor de atividade",exportAsZip:"Exportar projeto como ZIP",helpCenter:"Central de ajuda",actAsUser:"Agir como usuário",viewAppNewTab:"Pré-visualizar versão atual",refreshPreview:"Atualizar pré-visualização",refresh:"Atualizar",switchToDesktop:"Mudar para visualização desktop",switchToMobile:"Mudar para visualização mobile",showChatPanel:"Mostrar painel de chat",hideChatPanel:"Ocultar painel de chat",turnOffTestData:"Desativar dados de teste",turnOnTestData:"Ativar dados de teste",shareApp:"Compartilhar aplicativo",shareInviteUsers:"Compartilhar e convidar usuários",moreActions:"Mais ações",inviteCollaborators:"Convidar colaboradores",viewOnly:"Somente leitura",viewOnlyAccess:"Você tem acesso somente leitura a este aplicativo",upgradeInfraTooltip:"Seu aplicativo está pronto para uma atualização rápida<br/>para a nova infraestrutura.",appOverview:"Visão geral do aplicativo",myApp:"Meu aplicativo",production:"Produção",test:"Teste",gitHub:"GitHub",gitHubConnection:"Conexão GitHub",collaborators:"Colaboradores",collaboratorDisplayYou:"{{name}} (Você)",collaboratorUnknown:"Desconhecido",addCollaborator:"Adicionar colaborador",saving:"Salvando...",savedAgo:"Salvo há {{time}}",unsavedChanges_one:"{{count}} alteração não salva",unsavedChanges_other:"{{count}} alterações não salvas",theme:"Tema",themeTitle:"Tema",themeDescription:"Estas cores e fontes compõem o seu tema. As alterações são aplicadas em todos os lugares.",themeColors:"Cores",themeFonts:"Fontes",noThemeColors:"Nenhuma cor de tema encontrada",themeSaveChanges:"Salvar e Aplicar",themeCancel:"Cancelar",colorPickerCustom:"Personalizado",colorPickerPalette:"Paleta",fontPickerSearch:"Pesquisar fontes...",fontPickerBrandFonts:"Fontes da marca",fontPickerAllFonts:"Todas as fontes",fontPickerNoResults:"Nenhuma fonte encontrada",fontPickerSelectFont:"Selecionar fonte"},t6={desktop:"Desktop",tablet:"Tablet",mobile:"Celular",isAvailable:"está disponível",getDomain:"Obter domínio",connectDomain:"Conectar um domínio personalizado",undo:"Desfazer",redo:"Refazer",fullscreen:"Tela cheia",breakpoints:"Pontos de interrupção",splitView:"Visualização dividida",exitSplitView:"Sair da visualização dividida",exitPreview:"Sair da pré-visualização"},a6={upgrade:"Atualizar",upgradePlan:"Atualizar plano",percentOff:"{{percent}}% de desconto",limitedTimeOffer:"Oferta de boas-vindas por tempo limitado",getDiscountOff:"Ganhe {{discount}} de desconto em planos anuais selecionados"},n6={viewingVersionHistory:"Visualizando histórico de versões",buildInProgress:"Construção em andamento...",retryBuildToEnable:"Tente novamente para habilitar esta visualização",viewApp:"Ver aplicativo",viewCode:"Ver código",restoring:"Restaurando...",restoreThisVersion:"Restaurar esta versão",publishing:"Publicando...",publishThisVersion:"Publicar esta versão",exit:"Sair",back:"Voltar",publish:"Publicar",restore:"Restaurar",latest:"Mais recente"},i6={actAs:"Agir como",actingAs:"Você está agindo como",searchUser:"Pesquisar um usuário específico",anonymousGuest:"Visitante anônimo",you:"Você",warningChanges:"Qualquer alteração feita será refletida nos dados do usuário.",carefulChanges:"- cuidado, alterações aqui afetam este usuário",exitMode:"Sair do modo",noUsersYet:"Você ainda não tem nenhum usuário",addOrInvite:"Adicione ou convide usuários para ver como seu aplicativo funciona para eles",invite:"Convidar",usersCount:"Usuários ({{count}})",noMatchingUsers:"Nenhum usuário correspondente encontrado",trySearching:"Tente pesquisar por nome ou função"},r6={pressEnterNavigate:"Pressione Enter para navegar"},o6={publishApp:"Publicar aplicativo",publish:"Publicar",publishing:"Publicando...",disabledUntilUpdate:"A publicação está desativada até que você conclua a atualização de infraestrutura.",currentlyDisabled:"A publicação está atualmente desativada",codeNotGenerated:"A publicação será habilitada assim que seu aplicativo estiver pronto",visualEditsSaveWarning:"Algumas edições visuais não puderam ser salvas antes da publicação",republishApp:"Republicar aplicativo",lastPublished:"Última publicação {{time}}"},s6={whatToChange:"O que você gostaria de alterar?",whatToDiscuss:"Sobre o que você gostaria de discutir?",saveChangesBeforeTyping:"Salve as alterações antes de digitar",exitEditModeToContinue:"Saia do modo Edição antes de digitar",fetchingFromGitHub:"Buscando do GitHub...",viewOnlyAccess:"Você tem acesso somente leitura",zeroCreditsRemaining:"0 créditos restantes",visualEdit:"Editar",visualEditDisabledAgentRunning:"Edição visual indisponível enquanto o agente está em execução",edit:"Editar",discuss:"Discutir",ask:"Editar elemento",editData:"Editar dados",discussMode:"Modo discussão",discussModeDescription:"Converse com a IA sobre qualquer coisa sem fazer alterações no código. Usa 0,3 créditos por solicitação.",thought:"Pensamento",thoughtWithDuration:"Pensou <duration>por {{duration}}</duration>",planningNextSteps:"Planejando próximos passos...",signUpToStartBuilding:"Cadastre-se para começar a construir...",suggestions:"Sugestões",latestMessages:"Mensagens recentes",aiModel:"Modelo IA",aiControls:"Controles IA",uploadFile:"Enviar do computador",uploadFileMobile:"Enviar do dispositivo",addFromGoogleDrive:"Enviar do Google Drive",connectorRequestFailed:"Falha ao enviar a solicitação do conector. Por favor, tente novamente.",designingYourWebsite:"criando seu site...",speechToText:"Fala para texto",processingAudio:"Processando áudio...",clickToStopRecording:"Clique para parar a gravação"},l6={dialogTitle:"Paleta de comandos do construtor",dialogDescription:"Pesquise páginas, arquivos, entidades, visualizações e ações rápidas no builder.",searchPlaceholder:"Pesquisar páginas, arquivos, entidades, visualizações e ações rápidas...",emptyTitle:"Nenhum comando encontrado",emptyDescription:"Tente o nome de uma página, o caminho de um arquivo, o nome de uma entidade, uma visualização do editor ou uma ação rápida como dados de teste.",homeSubtitle:"Início",navigationSubtitle:"Painel",viewSubtitle:"Visualização do editor",entityDataSubtitle:"Dados",entityCodeSubtitle:"Código",integrationsSubtitle:"Integrações",domainSubtitle:"Domínio personalizado",collaboratorsSubtitle:"Colaboradores",helpSubtitle:"Central de ajuda",publishSubtitle:"Implantar e compartilhar",publishNowSubtitle:"Publicar alterações mais recentes",versionHistorySubtitle:"Histórico de versões",securitySubtitle:"Segurança",testDataSubtitle:"Mudar para dados de teste",productionDataSubtitle:"Mudar para dados de produção",backToWorkspace:"Voltar ao espaço de trabalho",switchToPreview:"Mudar para Prévia",switchToDashboard:"Mudar para Painel",switchToCode:"Mudar para Código",switchToCanvas:"Mudar para Canvas",openEntityData:"Abrir dados de {{entityName}}",openEntityCode:"Abrir código de {{entityName}}",addIntegration:"Adicionar integração",addDomain:"Adicionar domínio",inviteCollaborator:"Convidar colaborador",getHelp:"Obter ajuda",publishMyApp:"Publicar meu app",publishNow:"Publicar agora",versionHistory:"Ver histórico de versões",startSecurityCheck:"Iniciar verificação de segurança",turnOnTestData:"Ativar dados de teste",turnOffTestData:"Desativar dados de teste",groups:{navigate:"Navegar",views:"Visualizações",files:"Arquivos",entities:"Entidades",actions:"Ações"}},c6="Visualização desconhecida",d6="Editor de aplicativo",u6="Beta",p6={title:"Convidar colaboradores",subtitle:"Dê acesso a outras pessoas para editar este aplicativo.",emailPlaceholder:"Digite e-mails, separados por vírgulas",removeIneligible:"Remover usuários inelegíveis",appCollaborators:"Colaboradores do aplicativo",you:"(Você)",owner:"Proprietário",moreActions:"Mais ações",makeAppOwner:"Tornar proprietário do aplicativo",removeCollaborator:"Remover colaborador",resendOwnershipRequest:"Reenviar solicitação de propriedade",getOwnershipLink:"Obter link de propriedade",cancelOwnershipRequest:"Cancelar solicitação de propriedade",ownershipTooltip:"O novo proprietário precisa aceitar a transferência pelo e-mail de convite. O convite expira em 7 dias. Você receberá um e-mail quando a transferência for concluída.",removeTitle:"Remover este colaborador do seu aplicativo?",removeDescription:"A remoção deste colaborador revogará imediatamente seu acesso ao editor e impedirá que faça alterações no aplicativo.",removeAccessOnly:"Remover apenas o acesso de colaborador",removeAccessOnlyDesc:"O usuário ainda aparecerá na lista de Usuários",removeEntirely:"Remover completamente do aplicativo",removeEntirelyDesc:"O usuário será removido da lista de Usuários também",cancel:"Cancelar",enterEmail:"Por favor, digite um endereço de e-mail",invalidEmail:"E-mail inválido",invalidEmails:"Um ou mais endereços de e-mail não são válidos. Por favor, verifique-os e tente novamente.",cannotInviteOwner:"Você não pode convidar o proprietário deste aplicativo",alreadyExists:"O colaborador já existe.",alreadyExist:"Os colaboradores já existem.",invitationSent:"Convite de colaboradores enviado com sucesso",invitationsSent:"{{count}} convites de colaboradores enviados com sucesso",removedFromApp:"Colaborador removido do aplicativo",accessRemoved:"Acesso do colaborador removido",ownershipResent:"Solicitação de propriedade reenviada com sucesso",ownershipLinkCopied:"Link de propriedade copiado para a área de transferência",ownershipCancelled:"Solicitação de propriedade cancelada",failedToSendInvitation:"Falha ao enviar convite",failedToRemoveCollaborator:"Falha ao remover colaborador",failedToResendOwnership:"Falha ao reenviar solicitação de propriedade",failedToGetOwnershipLink:"Falha ao obter link de propriedade",failedToCancelOwnership:"Falha ao cancelar solicitação de propriedade",creditsWarning:"Todos os colaboradores consomem créditos do espaço de trabalho.",notWorkspaceMember:"Não é membro do espaço de trabalho",notMemberDescription_one:"<bold>{{emails}}</bold> não é membro deste espaço de trabalho.",notMemberDescription_other:"<bold>{{emails}}</bold> não são membros deste espaço de trabalho.",addAsGuest:"Adicionar como convidado",addAsGuestDescription:"O usuário será adicionado como convidado com acesso apenas a este aplicativo.",addToWorkspace:"Adicionar ao espaço de trabalho",addToWorkspaceDescription:"Acesse as configurações do espaço de trabalho para adicionar como membro completo.",guestBadge:"Convidado",emailListOverflow:"{{first}} e mais {{count}}",pendingInvitationWarning_one:"Este usuário já tem um convite pendente como membro do espaço de trabalho. Adicioná-lo como convidado irá substituí-lo.",pendingInvitationWarning_other:"{{count}} destes usuários já têm convites pendentes como membros do espaço de trabalho. Adicioná-los como convidados irá substituí-los."},m6={title:"Seus créditos de integração acabaram",description:"Isso pode impedir que os usuários do seu aplicativo realizem certas ações.",upgradeLink:"Atualize o plano para obter mais créditos",dismiss:"Fechar banner"},g6={gathering:"Coletando",gathered:"Coletado",connectorsInformation:"informações de conectores",write:"Escrever",writing:"Escrevendo",wrote:"Escreveu",generatingImage:"Gerando imagem",generatedImage:"Imagem gerada",reading:"Lendo",read:"Leu",deleting:"Excluindo",deleted:"Excluído",editing:"Editando",edited:"Editado",edit:"Editar",creating:"Criando",created:"Criado",updating:"Atualizando",updated:"Atualizado",update:"Atualizar",delete:"Excluir",importing:"Importando",imported:"Importado",import:"Importar",searching:"Pesquisando",searched:"Pesquisado",searchingForBugs:"Pesquisando bugs...",searchedBugs:"Bugs pesquisados",install:"Instalar",installing:"Instalando",installed:"Instalado",analyzing:"Analisando",running:"Executando",failed:"Falhou",run:"Executar",settingSecrets:"Configurando segredos",setSecret:"Segredo configurado",setSecrets:"Segredos configurados",testing:"Testando",checking:"Verificando",tested:"Testado",checked:"Verificado",fetching:"Buscando",fetched:"Buscado",waitingForApproval:"Aguardando aprovação...",searchedDocsFor:"Documentação pesquisada para",searchingDocsFor:"Pesquisando documentação para",searchedFor:"Pesquisado por",searchingFor:"Pesquisando por",foundResult_one:"{{count}} resultado encontrado",foundResult_other:"{{count}} resultados encontrados",grepSearching:'Pesquisando "{{pattern}}"...',grepSearchComplete:"Pesquisa concluída",grepFoundResults_one:"{{count}} resultado encontrado",grepFoundResults_other:"{{count}} resultados encontrados",grepInFiles_one:"em {{count}} arquivo",grepInFiles_other:"em {{count}} arquivos",toggling:"Alternando",toggled:"Alternado",listing:"Listando",listed:"Listado",approvalRequired:"Aprovação necessária",changesPending_one:"{{count}} alteração pendente",changesPending_other:"{{count}} alterações pendentes",approve:"Aprovar",approving:"Aprovando...",reject:"Rejeitar",rejected:"rejeitado",rejecting:"Rejeitando...",approveCount:"Aprovar ({{count}})",rejectAll:"Rejeitar tudo",previousApproval:"Esta solicitação de aprovação é de uma mensagem anterior",query:"Consulta:",updateFallback:"Atualizar {{entityName}}",updateFallbackSingle:"Definir {{fieldName}} para {{fieldValue}} em {{entityName}}",updateFallbackMultiple:"Definir {{fieldName}} para {{fieldValue}} (+{{extraFields}} mais) em {{entityName}}",deleteFallback:"Excluir registros de {{entityName}}",updateWith:"Atualizar com:",importComplete:"Importação concluída",importingData:"Importando dados...",percentComplete:"{{percent}}% concluído",recordsProgress:"{{current}} / {{total}} registros",preparing:"Preparando...",otherToolsAfterApproval:"Outras ferramentas serão executadas após aprovação",loadingConfig:"Carregando configuração...",fetchConfigError:"Falha ao carregar a configuração.",retry:"Tentar novamente",countPackages:"{{num}} pacotes:",updateAllEntityRecords:"Atualizar todos os registros de <entity>{{entityName}}</entity>",updateEntityRecordsMatching:"Atualizar registros de <entity>{{entityName}}</entity> correspondentes a:",deleteAllEntityRecords:"Excluir todos os registros de <entity>{{entityName}}</entity>",deleteEntityRecordsMatching:"Excluir registros de <entity>{{entityName}}</entity> correspondentes a:",importDataFromInto:"Importar dados de <file>{{fileName}}</file> para <entity>{{entityName}}</entity>",importDataFromSheetInto:"Importar dados de <file>{{fileName}}</file> (planilha: <sheet>{{sheetName}}</sheet>) para <entity>{{entityName}}</entity>",countRecordsIntoEntity:"{{num}} registros em <entity>{{entityName}}</entity>",dataIntoEntity:"dados em <entity>{{entityName}}</entity>",countRecordsEntity:"{{num}} registros <entity>{{entityName}}</entity>",allEntityRecords:"todos os registros de <entity>{{entityName}}</entity>",entityRecords:"registros de <entity>{{entityName}}</entity>"},h6={chatOnlyDescription:"Esta configuração agora só pode ser acessada via chat.",description:"Defina a página inicial padrão do seu app",chatHint:"Para alterar isso, escreva no chat:",prompt:"Alterar a página principal para {PageName}",placeholder:"Página principal",copiedToast:"Copiado para a área de transferência"},f6={confirmMessage:"Tem certeza de que deseja despublicar este aplicativo? Ele não ficará mais acessível aos usuários até que você o publique novamente.",successTitle:"Sucesso",successDescription:"Aplicativo despublicado com sucesso",errorTitle:"Erro",errorDescription:"Falha ao despublicar aplicativo",description:"Coloque seu aplicativo offline. Você pode republicá-lo a qualquer momento.",unpublishing:"Despublicando...",button:"Despublicar"},v6={title:"Excluir app",description:"Esta ação <strong>não pode</strong> ser desfeita. O app <strong>{{appSlug}}</strong> e todos os seus dados serão excluídos permanentemente.",descriptionSimple:"<strong>{{displayName}}</strong> será excluído permanentemente.<br/>Todos os dados, histórico, usuários, domínios e integrações do app serão apagados de forma irreversível. <danger>Esta ação não pode ser desfeita.</danger>",confirmLabel:"Para confirmar, digite <strong>{{appSlug}}</strong> abaixo:",cancel:"Cancelar",deleteButton:"Excluir este app",deleting:"Excluindo...",successTitle:"Sucesso",successDescription:"App excluído com sucesso",errorTitle:"Erro",errorDescription:"Falha ao excluir o app"},b6={using:"Usando habilidade {{name}}",failed:"Falha ao usar a habilidade {{name}}",used:"Habilidade {{name}} usada"},y6={thinkingIdeas:"{{agentName}} está pensando em ideias...",ideasFrom:"Ideias de {{agentName}}"},k6="Criando automação...",w6="Falha ao criar a automação",A6="Automação",S6=JSON.parse(`{"sidebar":{"chat":"Chat","continueOnWhatsApp":"Continuar no WhatsApp","continueOnTelegram":"Continuar no Telegram","continueOnLine":"Continuar no LINE","continueOnIMessage":"Continuar no iMessage","imessage":"iMessage","brain":"Cérebro","integrations":"Integrações","knowledge":"Conhecimento","memory":"Memória","payments":"Pagamentos","tasks":"Tarefas","artifacts":"Artefatos","settings":"Configurações","secretsAndKeys":"Segredos e chaves","security":"Segurança","credits":"Créditos","whatsapp":"WhatsApp","telegram":"Telegram","line":"LINE","files":"Arquivos","uploadFile":"Enviar arquivo","refreshFiles":"Atualizar arquivos","searchFiles":"Pesquisar arquivos...","filesFolders":"{{fileCount}} arquivos · {{folderCount}} pastas","toolsPermission":"Permissões de ferramentas","apiDocs":"API","channels":"Canais","feedback":"Deixar feedback","agentSettings":"Configurações do agente","dangerZone":"Zona de perigo"},"filePanel":{"source":"Código-fonte","preview":"Pré-visualização","save":"Salvar","saveAndRedeploy":"Salvar e reimplantar","fileSaved":"Arquivo salvo","functionRedeployed":"Função salva e reimplantada","failedToSaveFile":"Falha ao salvar o arquivo","failedToRedeploy":"Falha ao reimplantar a função","failedToReadFile":"Falha ao ler o arquivo"},"modelPicker":{"automatic":"Automático","automaticDescription":"O melhor modelo de IA é selecionado automaticamente para cada solicitação","manual":"Manual","manualDescription":"Selecione um modelo de IA específico.","manualCreditNote":"O uso de créditos pode variar conforme o modelo","manualDisabledDescription":"Selecione um modelo de IA específico ({{models}}). Disponível no plano Builder e superiores.","builderPlus":"Builder+","upgradeToSelect":"Atualize para selecionar um modelo de IA"},"chat":{"loadingAgent":"Carregando agente...","agentNotFound":"Agente não encontrado","waitingForAuth":"Aguardando token de autenticação...","anErrorOccurred":"Ocorreu um erro","aiModelUpdated":"Modelo de IA atualizado","failedToUpdateModel":"Falha ao atualizar o modelo de IA","hideSidebar":"Ocultar barra lateral","showSidebar":"Mostrar barra lateral","darkMode":"Mudar para modo escuro","lightMode":"Mudar para modo claro","dropFileHere":"Solte o arquivo aqui","imagesDocsAndMore":"Imagens, documentos e mais","loadPreviousMessages":"Carregar mensagens anteriores","somethingWentWrong":"Algo deu errado","retry":"Tentar novamente","chatFromApp":"Converse comigo a partir de um app que você já usa","attachFile":"Anexar arquivos","typeMessage":"Digite uma mensagem...","toggleLiveBrowser":"Alternar navegador ao vivo","noActiveBrowser":"Nenhuma sessão de navegador ativa","stopGenerating":"Parar geração","suggestions":"Sugestões","liveBrowser":"Navegador ao vivo","fullScreen":"Tela cheia","exitFullScreen":"Sair da tela cheia","closeBrowser":"Fechar navegador","live":"Ao vivo","expandBrowser":"Expandir navegador","failedToStartConversation":"Falha ao iniciar a conversa — tente enviar uma mensagem manualmente.","failedToLoadConversation":"Falha ao carregar a conversa","failedToUploadFile":"Falha ao enviar o arquivo","tooManyFiles":"Você pode anexar até {{max}} arquivos por mensagem","failedToSendMessage":"Falha ao enviar a mensagem","failedToStopAgent":"Falha ao parar o agente","queued":"Na fila ({{count}})","queueFull":"A fila de mensagens está cheia. Aguarde o agente terminar.","failedToEditQueued":"Falha ao editar mensagem na fila","failedToDeleteQueued":"Falha ao remover mensagem da fila","deleteMessage":"Excluir mensagem","failedToDeleteMessage":"Falha ao excluir mensagem","today":"Hoje","yesterday":"Ontem","thinking":"Pensando...","you":"Você","failedToSubmitToolInput":"Falha ao enviar a entrada da ferramenta","whatsInImage":"O que há nesta imagem?","heresAFile":"Aqui está um arquivo: {{fileName}}","heresAFileAndMore":"Aqui está um arquivo: {{fileName}} (+{{count}} mais)","heresFiles":"Aqui estão {{count}} arquivos","whatsInTheseImages":"O que há nestas {{count}} imagens?","creditsRunningLow":"Seus créditos estão acabando.","purchaseMoreCredits":"Comprar mais créditos →","saleDiscount":"Obtenha {{discount}} de desconto em planos anuais selecionados","limitedTimeOffer":"Oferta por tempo limitado","upgradePlan":"Atualizar plano","reply":"Responder","copyMessage":"Copiar","copied":"Copiado"},"files":{"uploaded":"{{fileName}} enviado","failedToUpload":"Falha ao enviar {{fileName}}","failedToRead":"Falha ao ler {{fileName}}"},"dashboard":{"title":"Painel","subtitle":"Visão geral do seu agente.","created":"Criado em {{date}}","memories":"Memórias","filesLabel":"Arquivos","folders":"Pastas","agentMemory":"Memória do agente","noMemoriesYet":"Nenhuma memória ainda","noMemoriesDescription":"Seu agente armazenará informações aprendidas aqui conforme você conversa."},"creditsTab":{"title":"Créditos","description":"O uso de créditos e os detalhes de cobrança aparecerão aqui."},"settingsTab":{"settings":"Configurações","secrets":"Segredos","security":"Segurança","creditCard":"Cartão de crédito"},"agentSettingsTab":{"title":"Configurações do agente","subtitle":"Configure como seu agente opera.","cloneTitle":"Clonar agente","cloneDescription":"Crie uma cópia deste agente com todas as configurações, entidades e funções de backend.","cloneButton":"Clonar agente"},"clonePage":{"back":"Voltar","title":"Clonar agente","subtitle":"Escolha o que incluir no agente clonado.","optionChat":"Histórico de chat","optionChatDesc":"Copiar o histórico de conversas do construtor para o novo agente.","optionSkills":"Habilidades","optionSkillsDesc":"Copiar funções de backend, integrações e configurações de ferramentas.","optionTasks":"Tarefas","optionTasksDesc":"Copiar automações (agendadas, baseadas em entidades e conectores).","optionSecrets":"Chaves de API","optionSecretsDesc":"Copiar segredos e chaves de API armazenados para o novo agente.","cloneButton":"Clonar agente","cloning":"Clonando...","cloneError":"Falha ao clonar o agente"},"securityTab":{"title":"Segurança","subtitle":"Execute uma verificação de segurança para detectar vulnerabilidades potenciais.","scanning":"Verificando...","runScan":"Executar verificação de segurança","noIssues":"Nenhum problema encontrado","agentSecure":"Seu agente parece seguro.","severityCount":"Severidade {{severity}}","idleMessage":"Clique em \\"Executar verificação de segurança\\" para verificar seu agente em busca de vulnerabilidades.","scanFailed":"A verificação de segurança falhou"},"secretsTab":{"title":"Segredos","subtitle":"Variáveis de ambiente disponíveis para as funções backend do seu agente.","noSecrets":"Nenhum segredo ainda","addSecret":"Adicionar um segredo","secretNamePlaceholder":"SECRET_NAME","valuePlaceholder":"valor","add":"Adicionar","secretSaved":"Segredo {{name}} salvo","failedToSave":"Falha ao salvar o segredo","secretDeleted":"Segredo {{name}} excluído","failedToDelete":"Falha ao excluir o segredo","failedToLoad":"Falha ao carregar os segredos"},"billingTab":{"title":"Cartão de crédito do agente","subtitle":"Uso e cobrança do seu agente.","monthlyUsage":"Uso mensal","extraCredits":"+{{count}} créditos extras disponíveis","pastDue":"Pagamento em atraso","pastDueDescription":"Atualize seu método de pagamento para evitar interrupção do serviço.","goodStanding":"Conta em dia","currentPeriod":"Período atual:","nextPeriod":"Próximo período começa em:","manageBilling":"Gerenciar cobrança","failedToLoad":"Falha ao carregar dados de uso","unableToLoad":"Não foi possível carregar dados de cobrança"},"apiDocsTab":{"title":"Referência da API","subtitle":"Use a API REST para interagir com seu agente programaticamente. Crie conversas, envie mensagens e gerencie a memória a partir de qualquer aplicação.","baseUrl":"URL base","authentication":"Autenticação","authDescription":"Inclua sua chave de API no cabeçalho da solicitação:","authAlternative":"Como alternativa, passe-a como um parâmetro de consulta:","quickStart":"Início rápido","quickStartDescription":"Siga estas etapas para começar a conversar com seu agente via API:","step1CreateConversation":"1. Criar uma conversa","step2SendMessage":"2. Enviar uma mensagem","step3ListConversations":"3. Listar conversas","endpoints":"Endpoints da API","requestBody":"Corpo da solicitação","listConversationsDesc":"Liste todas as conversas do usuário autenticado","listConversationsNote":"Retorna as conversas ordenadas por data de criação. Suporta paginação por parâmetros de consulta.","getConversationDesc":"Obtenha uma conversa específica com todas as mensagens","createConversationDesc":"Crie uma nova conversa com o agente","sendMessageDesc":"Envie uma mensagem e receba a resposta do agente","sendMessageNote":"O agente processará a mensagem e retornará sua resposta. O tamanho máximo da mensagem é de 8000 caracteres.","deleteMessageDesc":"Exclua uma mensagem específica de uma conversa","listMemoryDesc":"Liste os itens de memória do agente","deleteMemoryDesc":"Exclua um item de memória específico","responseFormat":"Formato de resposta","responseFormatDescription":"As conversas são retornadas como objetos JSON contendo um array de mensagens:","rateLimits":"Limites de taxa","rateLimitsDescription":"As solicitações da API têm limite por usuário. Se você exceder o limite, receberá um código de status 429. Aguarde um pouco e tente novamente.","errorCodes":"Códigos de erro","error401":"Não autorizado - chave de API inválida ou ausente","error403":"Proibido - você não tem acesso a este recurso","error400":"Solicitação inválida - entrada inválida (ex.: mensagem muito longa)","error404":"Não encontrado - a conversa ou o recurso não existe","copy":"Copiar"},"toolsPermissionTab":{"title":"Permissões de ferramentas","subtitle":"Permitir que operações específicas sejam executadas sem exigir sua confirmação.","warning":"Quando ativado, o agente realizará essas ações por conta própria. Suas regras de segurança de dados continuam valendo.","updateData":"Atualizar dados","updateDataDescription":"Permitir que o agente atualize registros sem pedir primeiro.","deleteData":"Excluir dados","deleteDataDescription":"Permitir que o agente exclua registros sem pedir primeiro.","failedToSave":"Falha ao salvar as configurações","effectNote":"As configurações são aplicadas imediatamente. As respostas da IA nem sempre seguem as regras perfeitamente.","connectorRulesTitle":"Regras de conectores","connectorRulesSubtitle":"Defina o que o agente pode e não pode fazer com cada serviço.","connectorRulePlaceholder":"ex.: Apenas ler e-mails, nunca enviar ou excluir","loadingConnectors":"Carregando conectores...","saveRules":"Salvar","rulesSaved":"Regras de conectores salvas"},"knowledgeTab":{"noFiles":"Nenhum arquivo de conhecimento ainda","noFilesDescription":"Comece a conversar com seu agente para construir sua identidade e conhecimento","identity":"Identidade"},"memoryTab":{"title":"Memória","subtitle":"O que seu agente sabe sobre você e suas conversas.","emptyTitle":"Nada aqui ainda","emptyDescription":"Conforme você conversa, seu agente construirá memória automaticamente — contexto de mensagens recentes, resumos de sessões e fatos importantes.","addEntry":"Adicionar","saveEntry":"Salvar","cancelEdit":"Cancelar","titlePlaceholder":"O que o agente deve lembrar?","contentPlaceholder":"Adicionar mais detalhes (opcional)","saved":"Memória atualizada","failedToSave":"Falha ao atualizar","factsHeading":"Fatos salvos","factsDescription":"Fatos importantes que persistem em todas as conversas.","noMemories":"Sem fatos salvos","noMemoriesDescription":"Fatos importantes são extraídos automaticamente das conversas, ou você pode adicioná-los manualmente.","shortTermHeading":"Memória de curto prazo","shortTermDescription":"Contexto da conversa atual, atualizado a cada ~10 mensagens.","shortTermUpdated":"Atualizado","shortTermDeleted":"Excluído","deleteShortTermConfirm":"Remover este contexto? O agente perderá esta parte do histórico de conversas.","longTermHeading":"Sessões diárias","longTermDescription":"Um resumo das conversas de cada dia.","longTermDeleted":"Excluído","deleteLongTermConfirm":"Excluir a sessão deste dia? O agente perderá acesso a este histórico de conversas.","messages":"{{count}} mens.","emptyTranscript":"Transcrição vazia","noText":"(sem texto)","usedTools":"Usado: {{tools}}"},"telegramTab":{"title":"Telegram","connected":"Seu bot do Telegram está conectado e ativo.","notConnected":"Conecte um bot do Telegram para que os usuários conversem com seu agente.","verifyBanner":"Clique no botão abaixo para verificar sua identidade no Telegram. Isso garante que apenas você possa usar este bot.","verifyOnTelegram":"Verificar no Telegram","connectedBot":"Bot conectado","botName":"Nome do bot","username":"Nome de usuário","status":"Status","active":"Ativo","openTelegram":"Abrir no Telegram","scanQr":"Escaneie o código QR com seu celular para abrir o bot no Telegram.","disconnect":"Desconectar","disconnectConfirm":"Desconectar este bot do Telegram? Os usuários não receberão mais respostas.","disconnected":"Bot do Telegram desconectado","failedToDisconnect":"Falha ao desconectar","howItWorks":"Como funciona","step1":"Os usuários abrem seu bot no Telegram e enviam /start para começar.","step2":"Cada mensagem de texto é processada pelo seu agente.","step3":"A resposta do agente é enviada no chat do Telegram."},"telegramSetup":{"connectTitle":"Conectar Telegram","connectDescription":"Crie um bot do Telegram para seu agente com um clique. Ele será configurado e estará pronto para conversar automaticamente.","autoCreateButton":"Conectar bot do Telegram","autoWaitingTitle":"Aguardando a criação do bot...","autoWaitingDescription":"Confirme o bot no Telegram; em seguida configuramos tudo automaticamente.","autoTimeoutError":"Tempo esgotado ao criar o bot. Tente novamente ou use a configuração manual.","autoExpiredError":"Falha ao criar o bot. Tente novamente.","cancel":"Cancelar","alreadyHaveBot":"Já tenho um token de bot","pasteTokenTitle":"Conectar com token","manualInstructions":"Crie um bot pelo @BotFather no Telegram e cole o token aqui.","tokenPlaceholder":"Cole o token do bot...","tokenExtracted":"Token extraído","tokenNotFound":"Nenhum token válido encontrado","connectBot":"Conectar","connecting":"Conectando...","successTitle":"Bot conectado!","openTelegram":"Abrir no Telegram","failedToConnect":"Falha ao conectar o bot"},"whatsappTab":{"title":"WhatsApp","subtitle":"Permita que os usuários conversem com seu agente pelo WhatsApp.","connectTitle":"Conectar WhatsApp","connectDescription":"Clique no botão abaixo para abrir o WhatsApp e ativar a conexão. Você receberá um código de ativação para enviar ao número do WhatsApp do agente.","openWhatsApp":"Abrir WhatsApp","scanQr":"Escaneie o código QR com seu celular para abrir a conversa no WhatsApp.","howItWorks":"Como funciona","step1":"Clique em \\"Abrir WhatsApp\\" — isso abre o WhatsApp com um código de ativação pré-preenchido.","step2":"Envie o código de ativação para iniciar a conexão.","step3":"Uma vez conectado, qualquer mensagem enviada no WhatsApp será processada pelo seu agente."},"lineTab":{"title":"LINE","subtitle":"Converse com seu agente no LINE.","connectTitle":"Conectar via LINE","connectDescription":"Gere um código de ativação, escaneie o QR no celular para adicionar o bot e envie o código.","generateCode":"Gerar código de ativação","scanQrLabel":"Escanear com LINE","scanQrHint":"Abra o LINE no celular e escaneie este QR code para adicionar o bot.","activationCodeLabel":"Código de ativação","sendCodeHint":"Após adicionar o bot, envie este código como mensagem para ativar.","generating":"Gerando...","regenerate":"Gerar um novo código","codeCopied":"Código copiado!","codeExpiry":"Expira em 30 minutos","failedToGenerate":"Falha ao conectar ao LINE","howItWorks":"Como funciona","step1":"Clique em \\"Gerar código de ativação\\" para obter seu código e QR.","step2":"Escaneie o QR code com o LINE no celular para adicionar o bot como amigo.","step3":"Envie o código de ativação como mensagem ao bot para conectar."},"imessageTab":{"title":"iMessage","subtitle":"Chat with your agent via iMessage.","connectTitle":"Connect via iMessage","connectDescription":"Click the button below and iMessage will open with the activation code ready to send.","connectButton":"Connect via iMessage","manualFallback":"Didn't open automatically? Send the code manually:","phoneNumberLabel":"Text this number","activationCodeLabel":"Activation code","codeCopied":"Code copied!","codeExpiry":"Expires in 30 minutes","failedToGenerate":"Failed to generate iMessage code","capacityTitle":"iMessage temporarily unavailable","capacityMessage":"iMessage is experiencing unusually high demand right now. Please check back in a few hours — we're working on expanding capacity.","howItWorks":"How it works","step1":"Click \\"Connect via iMessage\\" — your Messages app will open with the activation code pre-filled.","step2":"Send the message and your agent is connected. That's it!"},"pluginsTab":{"builtInServices":"Serviços integrados","builtInSubtitle":"Recursos da plataforma disponíveis para seu agente por padrão.","base44Backend":"Base44 Backend","alwaysActive":"Sempre ativo","base44Description":"Banco de dados, funções, armazenamento de arquivos e automações","dataEntities":"Dados e entidades","dataEntitiesTool1":"Criar, ler, atualizar, excluir e filtrar registros de entidades","dataEntitiesTool2":"Segurança em nível de linha","backendFunctions":"Funções backend","backendFunctionsTool1":"Implantar e chamar funções serverless Deno","backendFunctionsTool2":"Gerenciar segredos de ambiente","fileStorage":"Armazenamento de arquivos","fileStorageTool1":"Enviar arquivos públicos e privados","fileStorageTool2":"Criar URLs de download assinadas","automationsLabel":"Automações","automationsTool1":"Agendar tarefas CRON","automationsTool2":"Gatilhos de alteração de entidade","connectors":"Conectores","connectorsSubtitle":"Conecte seu agente aos apps e serviços que você já usa.","addConnector":"Adicionar conector","close":"Fechar","noConnectors":"Nenhum conector. Adicione um para dar ao seu agente acesso a serviços externos.","connected":"Conectado","available":"Disponíveis ({{count}})","allConnected":"Todos os conectores já estão conectados.","revoked":"Revogado","disconnectedStatus":"Desconectado","active":"Ativo","switchAccount":"Trocar conta","reconnect":"Reconectar","disconnect":"Desconectar","remove":"Remover","connect":"Conectar","connectorConnected":"Conector conectado","connectionCancelled":"Conexão cancelada","connectorDisconnected":"Conector desconectado","failedToDisconnect":"Falha ao desconectar","connectorRemoved":"Conector removido","failedToRemove":"Falha ao remover","openAuthLinkManually":"Abrir link de autorização manualmente","connecting":"Conectando...","mcpPlugins":"Plugins MCP","mcpSubtitle":"Conexões MCP que ampliam as capacidades do seu agente.","cancel":"Cancelar","addPlugin":"Adicionar plugin","noPlugins":"Nenhum plugin conectado","noPluginsDescription":"Adicione um servidor MCP para dar novas ferramentas ao seu agente.","failedToLoad":"Falha ao carregar plugins","failedToToggle":"Falha ao alternar plugin","pluginDeleted":"Plugin excluído","failedToDelete":"Falha ao excluir plugin","pluginAdded":"Plugin adicionado","pluginNamePlaceholder":"Nome do plugin","mcpUrlPlaceholder":"URL do servidor MCP (https://...)","foundTools":"{{count}} ferramentas encontradas","connectionTestFailed":"Teste de conexão falhou","connectedTools":"Conectado — {{count}} ferramentas disponíveis","connectionFailed":"Conexão falhou","test":"Testar","save":"Salvar","failedToCreate":"Falha ao criar plugin","enabled":"Habilitado","disabled":"Desabilitado","toolsCount":"Ferramentas ({{count}})","noTools":"Nenhuma ferramenta disponível","toolsFound":"{{count}} ferramentas encontradas","testFailed":"Teste falhou","connectedChatMessage":"Acabei de conectar {{name}} pelo painel de integrações. O que posso fazer com isso?","connectedReadOnlyChatMessage":"Acabei de conectar {{name}} em modo somente leitura pelo painel de integrações. Só pode ler dados, não criar ou modificar nada. O que posso fazer com isso?","accessModeChangedMessage":"Acabei de mudar {{name}} para o modo {{mode}}. Leve isso em conta nas próximas ações.","disconnectedChatMessage":"Acabei de desconectar {{name}} pelo painel de integrações.","readOnly":"Somente leitura","fullAccess":"Pode gerenciar","switchToReadOnly":"Mudar para somente leitura","switchToFullAccess":"Mudar para gerenciar","searchConnectors":"Pesquisar conectores...","noSearchResults":"Nenhum conector encontrado","noSearchResultsDesc":"Tente palavras-chave diferentes ou limpe a pesquisa.","noConnectorsYet":"Nenhum conector conectado ainda.","base44Official":"Base44 Official","setUp":"Configurar","loadMore":"Carregar mais {{count}}","showAll":"Mostrar todos ({{count}})","moreIcons":"+{{count}} mais","sort":{"title":"Ordenar","mostUsed":"Mais usados","recentlyAdded":"Adicionados recentemente","az":"A-Z","za":"Z-A"}},"paymentsTab":{"title":"Pagamentos","stripeName":"Stripe","description":"Aceite pagamentos dos seus clientes via Stripe.","notConnected":"Stripe não está conectado","connectedDescription":"Links de pagamento, produtos e processo de pagamento disponíveis.","setupPrompt":"Peça ao seu agente no chat para configurar pagamentos Stripe. Ele vai guiá-lo.","askInChat":"Perguntar no chat","sandboxMode":"Sandbox","liveMode":"Produção","testCard":"Número do cartão de teste","claimAndGoLive":"Reivindicar e ir para produção","remove":"Remover integração","removeConfirm":"Tem certeza?","confirmRemove":"Sim, remover","cancel":"Cancelar","removed":"Integração Stripe removida","removeFailed":"Falha ao remover integração Stripe","loadFailed":"Falha ao carregar o status de pagamento","setupMessage":"Configure pagamentos Stripe para meu agente"},"integrationsTab":{"tabSkills":"Skills","tabConnectors":"Connectors","skillsTitle":"Skills","skillsSubtitle":"Reusable instructions that give your agent specialized abilities.","addSkill":"Add Skill","noSkills":"No skills yet","noSkillsHint":"Add a skill to teach your agent new capabilities.","installed":"Instalado"},"automationsTab":{"title":"Automações","subtitle":"Tarefas agendadas e webhooks.","noAutomations":"Nenhuma automação ainda","trySuggestions":"Experimente uma das ideias acima ou pergunte no chat.","askAgent":"Peça ao seu agente no chat para configurar uma.","scheduled":"Agendada","entityTriggered":"Por gatilho de entidade","webhooks":"Webhooks","active":"Ativa","paused":"Pausada","details":"Detalhes","runNow":"Executar agora","pause":"Pausar","activate":"Ativar","delete":"Excluir","trigger":"Gatilho","instructions":"Instruções","taskId":"ID da tarefa","parameters":"Parâmetros","runHistory":"Histórico de execução","totalRuns":"{{count}} no total","succeeded":"{{count}} bem-sucedidas","failedRuns":"{{count}} falharam","lastRun":"Última execução:","created":"Criado em {{date}}","runsStats":"{{total}} execuções · {{succeeded}} bem-sucedidas · {{failed}} falharam","failedToToggle":"Falha ao alternar automação","archive":"Arquivar","automationArchived":"Automação arquivada","failedToArchive":"Falha ao arquivar automação","automationDeleted":"Automação excluída","failedToDelete":"Falha ao excluir automação","automationTriggered":"Automação executada","failedToRun":"Falha ao executar automação","failedToLoad":"Falha ao carregar automações","consumesCredits":"Consome créditos de mensagens","agentRunsWhenTriggered":"O agente responde quando acionado","agentNameRunsWhenTriggered":"{{name}} responde quando acionado","creditsUsed":"{{credits}} créditos utilizados","totalCredits":"Total de créditos: {{credits}}","trackingSince":"desde {{date}}","executionLogs":"Registros de execução","noLogs":"Ainda não há registros","status":{"success":"sucesso","running":"em execução","failed":"falhado"},"archived":"Arquivadas","noArchivedAutomations":"Nenhuma automação arquivada","archivedDescription":"As automações que você arquivar aparecerão aqui.","restore":"Restaurar","automationRestored":"Automação restaurada","failedToRestore":"Falha ao restaurar automação"},"identity":{"updated":"Identidade atualizada","failedToSave":"Falha ao salvar a identidade","avatar":"Avatar","emoji":"Emoji","setEmoji":"Usar","uploadImage":"Carregar imagem","changeImage":"Alterar","removeImage":"Remover imagem","useEmoji":"Usar emoji","name":"Nome do agente","agentNamePlaceholder":"Nome do agente","userName":"Seu nome","userNameDisplay":"Seu nome: {{name}}","userNamePlaceholder":"Seu nome","userNameHint":"Como o agente se refere a você","description":"Descrição","descriptionPlaceholder":"O que este agente faz?","unnamedAgent":"Agente sem nome","cancel":"Cancelar","save":"Salvar","edit":"Editar","rawIdentity":"IDENTITY.md (texto bruto)","editInEditor":"Editar no editor","entry":"{{count}} entrada","entries":"{{count}} entradas"},"knowledgeEditor":{"fileUpdated":"O arquivo foi atualizado externamente","fileModified":"{{name}} foi modificado. Recarregue para ver as alterações.","reload":"Recarregar","saved":"{{label}} salvo","failedToSave":"Falha ao salvar","unsavedChanges":"Você tem alterações não salvas. Descartar?","rawText":"Texto bruto","readOnly":"Somente leitura","editAnyway":"Editar mesmo assim","edit":"Editar","save":"Salvar","startWriting":"Comece a escrever..."},"knowledgeFiles":{"title":"Arquivos de conhecimento","uploading":"Enviando {{count}} arquivo(s)...","new":"Novo","fileNamePlaceholder":"nome-do-arquivo","mdExtension":".md","enterFileName":"Digite um nome de arquivo","fileExists":"Já existe um arquivo com este nome","failedToCreate":"Falha ao criar arquivo","unsupportedType":"Tipo de arquivo não suportado","failedToUpload":"Falha ao enviar {{name}}","renamedTo":"Renomeado para {{name}}","failedToRename":"Falha ao renomear arquivo","failedToLoadFile":"Falha ao carregar arquivo","deleteConfirm":"Excluir \\"{{name}}\\"? Isso não pode ser desfeito.","failedToDelete":"Falha ao excluir arquivo","dropOrUpload":"Solte arquivos aqui ou clique para enviar","supportedTypes":"Documentos, imagens, CSVs, arquivos de código e mais","dropOrBrowse":"Solte arquivos ou","browse":"procurar"},"artifacts":{"description":"Pequenos mini apps para começar. Para aplicativos completos, construa no Base44.","buildFullApp":"Construir um aplicativo completo","title":"Artefatos","pageCount_one":"{{count}} página","pageCount_other":"{{count}} páginas","empty":"Nenhum artefato ainda","emptyDescription":"Peça ao seu agente para criar um mini app e ele aparecerá aqui."},"feedbackModal":{"thankYou":"Obrigado!","thankYouSubtitle":"Seu feedback nos ajuda a melhorar.","title":"Como está sua experiência?","subtitle":"Seu feedback molda o que construímos a seguir.","submitError":"Falha ao enviar feedback. Tente novamente.","placeholder":"Conte-nos o que está pensando...","sending":"Enviando...","sendFeedback":"Enviar feedback","ratingBad":"Ruim","ratingPoor":"Fraco","ratingOkay":"Regular","ratingGood":"Bom","ratingAmazing":"Adorei","openSupportTicket":"Abrir um ticket de suporte"},"dangerZoneTab":{"title":"Zona de perigo","subtitle":"Ações irreversíveis para este agente.","deleteTitle":"Excluir este agente","deleteDescription":"Removerá permanentemente este agente e todos os seus dados, conversas, arquivos e integrações. Esta ação não pode ser desfeita.","deleteButton":"Excluir este agente","deleteSuccess":"Agente excluído com sucesso","deleteFailed":"Falha ao excluir o agente"}}`),C6={live:"Live",offScreen:"Fora da tela",waiting:"Aguardando...",loading:"Carregando...",previewTitle:"Pré-visualização: {{pageName}}"},D6={main:"principal"},T6={title:"Excluir agente",description:"Isso excluirá permanentemente <strong>{{displayName}}</strong>.<br/>Todos os dados do agente, conversas, arquivos e integrações serão permanentemente apagados. <danger>Esta ação não pode ser desfeita.</danger>",cancel:"Cancelar",deleteButton:"Excluir este agente",deleting:"Excluindo..."},E6={title:"Compartilhar seu aplicativo",subtitle:"Compartilhe um link por e-mail ou nas redes sociais",sendInviteLabel:"Enviar convite",sendInvitation_one:"Enviar convite",sendInvitation_other:"Enviar convites",invalidEmailsError:"Um ou mais endereços de e-mail são inválidos. Verifique-os e tente novamente.",workspaceIneligibleError:"Tente convidar usuários do seu espaço de trabalho em vez disso.",nonWorkspaceIneligibleError:"Alguns endereços de e-mail não são elegíveis para convite.",removeIneligibleUsers:"Remover usuários não elegíveis",inviteSuccessToast:"Convite de usuário enviado com sucesso",inviteErrorToast:"Falha ao enviar convites",copyLink:"Copiar link",sendInvitationSection:"Enviar convite",inviteEmailPlaceholder:"Digite um endereço de e-mail",inviteButton:"Convidar",shareLiveAppLink:"Compartilhar link do aplicativo ao vivo",shareLiveAppLinkDesc:"Qualquer pessoa com o link pode ver seu aplicativo ao vivo, com base nas configurações de visibilidade do seu aplicativo.",linkCopied:"Link copiado",enterEmailError:"Por favor, insira um endereço de e-mail",cannotInviteOwner:"Você não pode convidar o proprietário deste aplicativo",inviteSuccess_one:"Convite enviado com sucesso",inviteSuccess_other:"{{count}} convites enviados com sucesso",inviteFailedToSend:"Falha ao enviar o convite",role_admin:"Admin",role_user:"Usuário"},P6={sidebar:Y5,loading:K5,trash:Z5,errors:J5,codeView:Q5,loader:X5,toolbar:e6,header:t6,upgrade:a6,checkpoints:n6,viewAs:i6,pages:r6,publish:o6,chat:s6,builderCommandPalette:l6,unknownView:c6,appEditor:d6,beta:u6,collaborators:p6,integrationsBanner:m6,tools:g6,mainPage:h6,unpublishApp:f6,deleteApp:v6,skillTool:b6,automations:y6,create_automation:k6,create_automation_error:w6,automation_fallback_name:A6,agentEditor:S6,canvasPage:C6,canvasToolbar:D6,deleteAgent:T6,new:"Novo",shareModal:E6},_6={title:"O que você vai construir em seguida?",titleMobile:`Olá, o que você
vai construir em seguida?`,subtitle:"Descreva sua ideia de aplicativo abaixo ou inspire-se em nossos",subtitleTemplatesLink:"modelos"},x6={title:"Aplicativos recentes"},I6={title:"Superagentes recentes"},R6={placeholder:"Descreva o aplicativo que você quer criar...",placeholderPlanMode:"Diga ao Base o que você quer",placeholderViewer:"Visualizadores não podem criar aplicativos",placeholderWithUrl:"Adicione uma descrição (opcional)...",captureFullMode:"Criar um site como este",captureDesignMode:"Criar um novo site inspirado neste design para...",uploadFile:"Enviar do computador",uploadFileMobile:"Enviar do dispositivo",captureFromUrlDescription:"Criar um ponto de partida 1:1",createFromUrl:"Iniciar a partir de URL",aiModel:"Modelo IA",selectAiModel:"Selecionar modelo de IA",addFromGoogleDrive:"Enviar do Google Drive",modelPicker:{automatic:"Automático",automaticDescription:"O melhor modelo de IA é selecionado para cada solicitação",new:"Novo",manual:"Manual",builderPlus:"Builder+",manualDescription:"Selecione um modelo de IA específico ({{models}}). Disponível no plano Builder ou superior.",upgradeToSelect:"Faça upgrade para selecionar um modelo de IA"},speechToText:"Fala para texto",processingAudio:"Processando áudio...",clickToStopRecording:"Clique para parar a gravação"},z6={exploreTemplates:"Explore modelos da comunidade",discoverDescription:"Descubra uma coleção de aplicativos criados pela nossa comunidade.",failedToLoadCatalog:"Falha ao carregar itens do catálogo",showingItems:"Mostrando {{displayed}} de {{total}} itens",searchApps:"Pesquisar aplicativos",viewAllTemplates:"Ver todos os modelos",allCategories:"Todos",priceAll:"Todos os modelos",priceFree:"Apenas gratuitos",pricePaid:"Apenas pagos",pageTitle:"Modelos de aplicativos",pageSubtitle:"Descubra uma coleção curada de aplicativos criados pela nossa comunidade.",tabs:{community:"Comunidade",workspace:"Espaço de trabalho",myTemplates:"Meus modelos"},categories:{marketingAndSales:"Marketing & Vendas",operations:"Operações",dataAndAnalytics:"Dados & Análises",contentGeneration:"Geração de conteúdo",hrAndLegal:"RH & Jurídico",finance:"Finanças",education:"Educação",community:"Comunidade",lifestyleAndHobbies:"Estilo de vida & Hobbies",gamesAndEntertainment:"Jogos & Entretenimento","Marketing & Sales":"Marketing e vendas",Operations:"Operações","Data & Analytics":"Dados e análises","Content Generation":"Geração de conteúdo","HR & Legal":"RH e jurídico",Finance:"Finanças",Education:"Educação",Community:"Comunidade","Lifestyle & Hobbies":"Estilo de vida e hobbies","Games & Entertainment":"Jogos e entretenimento"},sort:{popular:"Popular",newest:"Mais recentes",oldest:"Mais antigos"},languagePlaceholder:"Idioma",pricePlaceholder:"Preço",noAppsFound:"Nenhum aplicativo encontrado",adjustSearchOrFilters:"Tente ajustar sua pesquisa ou filtros",templateNotFound:"Modelo não encontrado ou indisponível.",viewAllCommunityTemplates:"Ver todos os modelos da comunidade",loadingMore:"Carregando mais itens...",viewDetails:"Ver detalhes",workspaceBadge:"Espaço de trabalho",purchasedBadge:"Comprado",free:"Grátis",unknownUser:"Usuário desconhecido",private:"Privado",howTo:{title:"Como compartilhar seu aplicativo com a comunidade",intro:"Siga estas etapas simples:",step1Title:"Abra o construtor do seu app",step1Desc:"Navegue até um aplicativo que você criou ou ao qual tem acesso de administrador",step2Title:"Vá para as configurações do catálogo",step2Path:"Espaço de trabalho → Configurações → Modelos de apps → Gerenciar listagem",step3Title:"Publique sua listagem",step3Desc:"Adicione uma descrição, capturas de tela e configure a visibilidade da sua listagem",tipFull:"<bold>Dica:</bold> Certifique-se de que seu aplicativo está implantado e tem uma descrição atraente para atrair mais usuários!"},modal:{close:"Fechar",prevScreenshot:"Captura anterior",nextScreenshot:"Próxima captura",screenshotAlt:"Captura {{index}}",goToScreenshot:"Ir para captura {{index}}",createdBy:"por {{creatorName}}",unknownCreator:"Desconhecido",usages_one:"{{count}} uso",usages_other:"{{count}} usos",private:"Privado",workspaceTemplate:"Modelo de workspace",clonePurchase:"Clonar compra",processing:"Processando...",purchaseFor:"Comprar por ${{price}}",useTemplate:"Usar modelo",viewApp:"Ver app",paymentInfo:"O pagamento vai inteiramente para o criador",backendFunctionsEnabled:"Funções backend habilitadas",usesIntegrations:"Usa integrações",aboutThisApp:"Sobre este app",noDescription:"Sem descrição disponível",termsOfUse:"Termos de uso",success:"Sucesso",error:"Erro",purchaseFailed:"Falha na compra",failedToPurchase:"Não foi possível iniciar a compra",listingApproved:"Listagem de app aprovada com sucesso",approveListingFailed:"Falha ao aprovar a listagem",listingDeclined:"Listagem de app recusada com sucesso",declineListingFailed:"Falha ao recusar a listagem",pendingUpdate:"Atualização pendente de revisão",codeChangesPending:"Alterações de código do app pendentes",metadataChanges:"Alterações nos metadados da listagem:",manageListing:"Gerenciar listagem",approveUpdate:"Aprovar atualização",declineUpdate:"Recusar atualização",approveListing:"Aprovar listagem",declineListing:"Recusar listagem",approving:"Aprovando...",declining:"Recusando...",cloneAsAdmin:"Clonar como admin"}},M6={subscriptionOverdue:"Pagamento de assinatura em atraso",overdueMessage:"O pagamento da sua assinatura está em atraso. O acesso a alguns recursos está atualmente limitado. Por favor, atualize seu método de pagamento para recuperar o acesso completo.",goToBilling:"Ir para faturamento",creditLimitReached:"Você atingiu o limite deste mês. Para continuar criando aplicativos",upgradePlan:"atualize seu plano"},N6={viewerAccess:"Você tem acesso de visualização e não pode criar aplicativos. Entre em contato com o administrador do seu espaço de trabalho para atualizar para Editor."},F6={fillApiKeys:"Por favor, preencha todas as chaves de API necessárias antes de enviar.",createAppFailed:"Falha ao criar o app. Por favor, tente novamente."},L6={title:"Iniciar a partir de URL",description:"Use qualquer site como ponto de partida para seu novo site.",urlLabel:"URL do site",urlPlaceholder:"ex., www.exemplo.com.br",errorEmpty:"Por favor, insira uma URL",errorInvalid:"Insira uma URL de site válida, como www.exemplo.com.br",errorTooLong:"A URL é muito longa. Por favor, use uma URL mais curta.",modeFull:"Conteúdo e design",modeFullDescription:"Criar um site similar.",modeDesign:"Apenas design",modeDesignDescription:"Criar um novo site no mesmo estilo.",modeContent:"Apenas conteúdo",legalNotice:"Use apenas URLs onde você tem direitos sobre o conteúdo.",cancel:"Cancelar",add:"Adicionar",learnMore:"Saiba mais sobre criar a partir de uma URL",capturedUrl:"URL capturada",appReady:"Seu app está pronto! Agora você pode personalizá-lo ou adicionar novos recursos.",banner:{headline:"Criando seu app",headlineDesign:"Criando seu app",subtitle:"Isso pode demorar um pouco mais do que o normal - estamos fazendo valer a pena.",activity:{msg1:"Conhecendo o site...",msg2:"Estudando o design e o estilo...",msg3:"Montando as peças...",msg4:"Criando algo especial...",msg5:"Trabalhando nisso...",msg6:"Deixando tudo perfeito...",msg7:"Aguarde, coisas incríveis chegando..."}}},j6={count:"Integrações: {{count}}",loading:"Carregando integração...",selectedIntegrations:"Integrações selecionadas:"},O6={menuItem:"Conectores",dialogTitle:"Conectores",dialogDescription:"Conecte ferramentas e fontes de dados para potencializar seu app",search:"Pesquisar",add:"Adicionar",added:"Adicionado",remove:"Remover",noResults:"Nenhum conector encontrado",suggestionCardTitle:"Ajude-me a entender sua solicitação de integração para:",choosePrompt:"Escolha uma opção para continuar.",somethingElse:"Algo mais",cancel:"Cancelar",send:"Enviar",connectTo:"Conectar a <name>{{name}}</name>",upgradeToConnect:"Atualize seu plano para conectar {{name}} ao seu aplicativo.",connecting:"Conectando {{names}}…",cancelled:"cancelado",subtitles:{stripe:"Venda produtos ou assinaturas e receba pagamentos online.",salesforce:"Automatize e sincronize registros de CRM.",slack:"Envie mensagens e gerencie o Slack como usuário.",slackbot:"Publique como bot de marca no seu workspace do Slack.",notion:"Organize e sincronize conhecimento ou dados de projetos.",googlecalendar:"Gerencie sua agenda e eventos do calendário.",googledrive:"Exporte e faça backup de arquivos gerados pelo app.",gmail:"Automatize o envio de e-mails e a gestão da caixa de entrada.",googlesheets:"Sincronize e gerencie dados de planilhas.",googleslides:"Crie e gerencie apresentações.",googledocs:"Gerencie e automatize a criação de documentos.",googlebigquery:"Consulte e sincronize dados de analytics.",hubspot:"Sincronize dados de CRM e automatize o marketing.",linkedin:"Compartilhe atualizações e acesse perfis profissionais.",tiktok:"Acompanhe estatísticas do perfil e explore seus vídeos.",discord:"Notifique canais e integre sua comunidade no Discord.",wix:"Acesse dados do seu site Wix e ferramentas de negócios.",github:"Gerencie repositórios, issues e pull requests.",gitlab:"Gerencie projetos, MRs e pipelines de CI/CD.",bamboohr:"Diretório de funcionários e gestão de RH.",wrike:"Planejamento de projetos e coordenação de equipes.",box:"Gerenciamento seguro de conteúdo na nuvem.",clickup:"Organize projetos e acompanhe o trabalho da equipe.",google_analytics:"Acompanhe o tráfego do site e insights de usuários.",outlook:"E-mail e calendário.",linear:"Gestão de issues e gerenciamento de projetos.",dropbox:"Armazene e sincronize arquivos na nuvem.",google_search_console:"SEO e análise de buscas.",google_classroom:"Educação e gerenciamento de cursos.",airtable:"Bancos de dados e planilhas flexíveis.",splitwise:"Divisão de despesas e contas em grupo.",microsoft_teams:"Chat de equipe, canais e reuniões.",share_point:"Gestão de documentos e colaboração.",one_drive:"Armazenamento de arquivos na nuvem.",typeform:"Formulários, pesquisas e coleta de dados."}},B6={label:"Planejar",tooltip:"Ative o modo Plano para que a IA crie um plano detalhado antes de construir seu aplicativo."},U6="Ver tudo",q6="Erro",V6={menuLabel:"Importar do Figma",title:"Gerar a partir de um frame do Figma",description:"Cole o link do seu frame para gerar um app baseado no seu design.",labelUrl:"Link do frame do Figma",placeholderUrl:"ex., https://www.figma.com/frame-link",urlHelp:"Use um link para um frame, não para um arquivo ou página.",learnPrepare:"Saiba como preparar seu frame do Figma",connectTitle:"Conectar ao Figma",connectDescription:"Permita acesso à sua conta do Figma para importar seu design.",connectButton:"Conectar ao Figma",connectedToFigma:"Conectado ao Figma",errorMissingUrl:"Insira uma URL de um frame do Figma",errorNotFigmaUrl:"Insira uma URL de um frame do Figma",errorNotFrameUrl:"Insira uma URL de um frame, não de um arquivo ou página.",errorRateLimit:"A API do Figma está temporariamente ocupada. Por favor tente novamente em alguns minutos.",errorForbidden:"Conexão Figma inválida ou expirada. Por favor reconecte sua conta Figma.",errorNotFound:"Arquivo Figma não encontrado. Por favor verifique a URL e certifique-se de que você tem acesso.",errorGeneric:"Não foi possível acessar este design do Figma. Por favor verifique a URL e tente novamente.",validating:"Verificando...",switchAccount:"Trocar conta Figma",cancel:"Cancelar",generate:"Gerar",viewerCannotGenerate:"Você tem acesso de somente leitura e não pode criar aplicativos. Contate o administrador do workspace para atualizar para Editor.",figmaFile:"Arquivo Figma",justNow:"Agora mesmo",importingMessage:"Gere um app baseado no seu design deste frame do Figma."},$6={connectFailed:"Falha ao conectar Figma. Por favor tente novamente.",popupBlocked:"Popup bloqueado. Por favor permita popups e tente novamente.",disconnected:"Figma desconectado",disconnectFailed:"Falha ao desconectar Figma. Por favor tente novamente."},W6={capturing:"Capturando...",figmaDescription:"Analisando o sistema de design do Figma. Extraindo layout, tipografia e tokens de cor para construir seu app."},G6={webApp:"Apps",aiAgent:"Superagentes",recentApps:"Apps recentes",templates:"Modelos",favoritesComingSoon:"Favoritos em breve"},H6={new:"Novo",message:"Diga olá para seu verdadeiro Agente Pessoal",cta:"Experimente agora"},Y6={greeting:"Olá {{name}},",greetingGeneric:"Olá,",title:"Crie seu próprio Agente Pessoal de IA",createTitle:"Crie seu próprio Superagente",newBadge:"Novo",subtitle:"Seu agente de IA que executa tarefas, conecta-se às suas ferramentas e trabalha para você 24/7",cta:"Crie seu Superagente",creating:"Criando...",continueHero:{heading:"Continue de onde parou",continueBtn:"Continuar com {{name}}",or:"Ou",createNew:"Criar um novo superagente",activeAgo:"Ativo {{time}}",you:"Você"},features:{hassleFree:{title:"Sem complicações",desc:"Sem Docker, sem servidores, sem configuração. Apenas execute seu Superagente."},alwaysOn:{title:"Sempre ativo",desc:"Executa tarefas e automações para você, 24/7."},actions:{title:"Toma ações reais",desc:"Gerencia tarefas, envia atualizações e reage automaticamente."},remembers:{title:"Lembra de tudo",desc:"Acompanha seus objetivos, preferências e contexto."},everywhere:{title:"Vive onde você está",desc:"Funciona no WhatsApp, Telegram, Slack e no seu navegador."},secure:{title:"Seguro por padrão",desc:"Acesso apenas ao que você permite."}},untitled:"Agente sem título",active:"Ativo",noDescription:"Nenhuma descrição disponível",edited:"Editado {{time}}",updated:"Atualizado {{time}}",failedToCreate:"Falha ao criar o agente. Por favor, tente novamente.",errorPage:{title:"Ops, algo deu errado",descriptionLine1:"Houve um problema técnico do nosso lado.",descriptionLine2:"Volte à página de criação de agente e tente novamente",goToAgents:"Ir para Agentes →"}},K6={edited:"Editado {{time}}",updated:"Atualizado {{time}}",updatedRecently:"Atualizado recentemente"},Z6={emptyTitle:"Você ainda não criou nenhum aplicativo.",emptySubtitle:"Crie seu primeiro aplicativo usando o formulário acima!"},J6={dialogTitle:"Navegação rápida",dialogDescription:"Acesse rapidamente apps, templates, cobrança e configurações do espaço de trabalho pela página inicial.",searchPlaceholder:"Buscar apps, configurações, templates, cobrança...",searching:"Buscando apps do espaço de trabalho...",emptyTitle:"Nenhum destino correspondente",emptyDescription:"Tente o nome de um app, uma seção de configurações ou uma página como cobrança ou templates.",allApps:"Todos os apps",backToWorkspace:"Voltar ao espaço de trabalho",templates:"Templates",billing:"Cobrança",groups:{apps:"Apps",navigate:"Páginas",workspace:"Espaço de trabalho",account:"Conta"},subtitles:{favoriteApp:"App favorito",recentApp:"App recente",page:"Página"}},Q6={label:"O que você gostaria de criar?",more:"Mais",moreIdeas:"Mais ideias",categories:{CRM:"CRM","Dev productivity":"Produtividade Dev",Educational:"Educacional","Content Generation and Editing":"Geração e edição de conteúdo","Personal Finance":"Finanças pessoais","Health and Wellness":"Saúde e bem-estar",Productivity:"Produtividade","Travel Planning":"Planejamento de viagens",Entertainment:"Entretenimento",Environmental:"Ambiental","Home Management":"Gestão doméstica","Creative Tools":"Ferramentas criativas",Tasks:"Tarefas","CRM & Sales":"CRM e vendas",Portfolio:"Portfólio",Finance:"Finanças","Scheduling & Booking":"Agendamento e reservas",eCommerce:"eCommerce","Construction & Trade":"Construção e ofícios","Events & Community":"Eventos e comunidade",Wellness:"Bem-estar","Operations & Logistics":"Operações e logística","Tasks & Workflows":"Tarefas e fluxos","Content & Sites":"Conteúdo e sites",Booking:"Reservas","E-commerce":"E-Commerce",Projects:"Projetos",Operations:"Operações"}},X6={hero:_6,recentApps:x6,recentAgents:I6,chat:R6,catalog:z6,billing:M6,permissions:N6,validation:F6,urlCapture:L6,integrations:j6,connectors:O6,planMode:B6,viewAll:U6,error:q6,figmaDialog:V6,figmaOAuth:$6,statusBanner:W6,tabs:G6,tryAgentBanner:H6,agent:Y6,appCard:K6,appsList:Z6,commandPalette:J6,ideas:Q6},eZ={title:"Integrações",subtitle:"Descubra integrações pré-construídas que permitem conectar APIs, serviços e ferramentas para expandir as capacidades do seu app."},tZ={placeholder:"Pesquisar integrações..."},aZ={title:"Nenhuma integração correspondente encontrada",description:"Tente ajustar sua pesquisa ou as configurações de filtro."},nZ={title:"Conectores",subtitle:"Conexões OAuth rápidas com serviços populares, suportadas pela Base44."},iZ={howToUse:"Como usar",dialog:{getStarted:"Começar",navigateInstruction:"Navegue até a aba de Integrações do seu app para conectar o {{name}} e obter prompts personalizados.",upgradeNotice:"Esta integração requer funções de backend, disponíveis apenas no plano Builder e superior. <seePlansLink>Ver planos</seePlansLink>"}},rZ={stripe:"Venda produtos ou assinaturas e receba pagamentos online.",salesforce:"Automatize e sincronize registros de CRM.",slack:"Envie mensagens e gerencie o Slack como usuário.",slackbot:"Publique como um bot personalizado no seu workspace do Slack.",notion:"Organize e sincronize conhecimento e dados de projetos.",googlecalendar:"Gerencie sua agenda e eventos de calendário.",googledrive:"Exporte e faça backup de arquivos gerados pelo app.",gmail:"Automatize o envio de e-mails e o gerenciamento da caixa de entrada.",googlesheets:"Sincronize e gerencie dados de planilhas.",googleslides:"Crie e gerencie apresentações.",googledocs:"Gerencie e automatize a criação de documentos.",googlebigquery:"Consulte e sincronize dados analíticos.",googletasks:"Gerencie listas de tarefas.",googlemeet:"Videoconferências e reuniões.",hubspot:"Sincronize dados de CRM e automatize o marketing.",linkedin:"Compartilhe atualizações e acesse perfis profissionais.",tiktok:"Acompanhe estatísticas do perfil e navegue pelos seus vídeos.",discord:"Notifique canais e integre com sua comunidade no Discord.",wix:"Acesse dados do site Wix e ferramentas de negócio.",github:"Gerencie repositórios, issues e pull requests.",gitlab:"Gerencie projetos, MRs e pipelines de CI/CD.",bamboohr:"Diretório de funcionários e gestão de RH.",wrike:"Planejamento de projetos e coordenação de equipes.",box:"Gerenciamento seguro de conteúdo na nuvem.",clickup:"Organize projetos e acompanhe o trabalho da equipe.",google_analytics:"Monitore tráfego do site e insights de usuários.",outlook:"E-mail e calendário.",linear:"Rastreamento de issues e gerenciamento de projetos.",dropbox:"Armazene e sincronize arquivos na nuvem.",google_search_console:"SEO e análise de pesquisa.",google_classroom:"Educação e gerenciamento de cursos.",airtable:"Bancos de dados e planilhas flexíveis.",splitwise:"Divisão de despesas e contas em grupo.",microsoft_teams:"Chat de equipe, canais e reuniões.",share_point:"Gerenciamento de documentos e colaboração.",one_drive:"Armazenamento de arquivos na nuvem.",typeform:"Formulários, pesquisas e coleta de dados.",hugging_face:"Inferência de IA e repositórios de modelos.",calendly:"Agendamento automático de compromissos.",contentful:"CMS headless e gerenciamento de conteúdo.",supabase:"Explore esquemas, leia dados e veja o status do projeto (somente leitura)."},oZ={page:eZ,search:tZ,emptyState:aZ,connectors:nZ,connector:iZ,catalog:rZ},sZ={title:"Launchpad",subtitle:"Descubra e explore apps criados pela comunidade",shareApp:"Compartilhe seu app",allApps:"Todos os apps",noAppsFound:"Nenhum app encontrado",noAppsHint:"Tente limpar os filtros ou pesquisar por outra coisa.",noAppsEmpty:"Seja o primeiro a publicar um app no Launchpad!",clearFilters:"Limpar filtros",goToFirstPage:"Ir para a primeira página",retry:"Tentar novamente",publishedToast:"Seu app está no ar no Launchpad!"},lZ={placeholder:"Pesquisar apps no Launchpad..."},cZ={all:"Todos"},dZ={title:"Em alta agora"},uZ={title:"Apps em destaque",empty:"Ainda não há apps em destaque para este período.",thisWeek:"Esta semana",thisMonth:"Este mês",allTime:"Todo o período"},pZ={live:"Ao vivo",someone:"Alguém",sentences:{vote:"{{user}} acabou de votar em {{app}}",like:"{{user}} acabou de curtir {{app}}",publish:"{{user}} acabou de publicar {{app}}",default:"{{user}} acabou de interagir com {{app}}"}},mZ={signInPrompt:"Faça login para publicar seu app no Launchpad.",signIn:"Entrar",back:"Voltar",next:"Próximo",publish:"Publicar",publishing:"Publicando...",stepOf:"Passo {{current}} de {{total}}",successToast:"Seu app está no ar no Launchpad!",failedDefault:"Falha ao publicar. Por favor, tente novamente.",categoriesLoadFailed:"Falha ao carregar categorias. Feche e tente novamente.",categoriesRetry:"Tentar novamente",steps:{selectApp:"Selecionar app",details:"Detalhes",preview:"Pré-visualização"},appPicker:{chooseApp:"Escolha qual app você gostaria de publicar no Launchpad.",searchPlaceholder:"Pesquisar seus apps...",loadFailed:"Falha ao carregar seus apps.",tryAgain:"Tentar novamente",noApps:"Você ainda não tem nenhum app.",noAppsForQuery:'Nenhum app encontrado para "{{query}}"',loadMore:"Carregar mais"},preview:{caption:"Veja como seu app aparecerá na grade do Launchpad:",creatorFallback:"Você"},categoryPicker:{count:"{{current}}/{{max}} categorias selecionadas"},validation:{nameRequired:"O nome do app é obrigatório",descriptionRequired:"A descrição curta é obrigatória",descriptionTooLong:"Máx. {{max}} caracteres",categoriesRequired:"Selecione pelo menos 1 categoria",screenshotsRequired:"Envie pelo menos 1 captura de tela"}},gZ={uploadFailed:"Algumas capturas de tela falharam ao enviar. Por favor, tente novamente.",uploading:"Enviando...",addImage:"Adicionar imagem",count:"{{current}}/{{max}} capturas de tela. Arraste para reordenar."},hZ={previous:"Anterior",next:"Próximo",pageOf:"Página {{page}} de {{totalPages}}"},fZ={justNow:"agora mesmo",minutesAgo:"há {{count}} min",hoursAgo:"há {{count}} h",daysAgo:"há {{count}} d"},vZ={appName:"Nome do app",shortDescription:"Descrição breve",shortDescriptionPlaceholder:"Uma breve descrição do que seu app faz",longDescription:"Descrição detalhada",longDescriptionPlaceholder:"Conte mais sobre seu app...",optional:"Opcional",categories:"Categorias",screenshots:"Capturas de tela",generateWithAi:"Gerar com IA",aiComingSoon:"Geração com IA em breve"},bZ={tryApp:"Experimentar App",share:"Compartilhar",shareToast:"Link copiado para a área de transferência!",shareError:"Falha ao compartilhar",about:"Sobre",moreByCreator:"Mais de {{name}}",backToLaunchpad:"Voltar ao Launchpad",notFound:"App não encontrado",notFoundHint:"Este app pode ter sido removido ou despublicado.",loadFailed:"Falha ao carregar os detalhes do app.",unknownCreator:"este criador"},yZ={title:"Comentários",placeholder:"Escreva um comentário...",submit:"Publicar",submitting:"Publicando...",empty:"Ainda não há comentários. Seja o primeiro!",loadMore:"Carregar mais comentários",deleteFailed:"Falha ao excluir o comentário.",postFailed:"Falha ao publicar o comentário.",signInToComment:"Faça login para deixar um comentário",anonymous:"Anônimo"},kZ={likeFailed:"Falha ao atualizar a curtida.",voteFailed:"Falha ao atualizar o voto.",selfVoteError:"Você não pode votar no seu próprio app."},wZ={loadFailed:"Falha ao carregar os dados do Launchpad. Por favor, tente novamente.",browseFailed:"Falha ao carregar os apps. Por favor, tente novamente.",topAppsFailed:"Falha ao carregar os apps em destaque. Por favor, tente novamente.",categoriesFailed:"Falha ao carregar categorias.",refreshFailed:"Falha ao atualizar — por favor, recarregue a página."},AZ={page:sZ,search:lZ,categories:cZ,trending:dZ,topApps:uZ,liveActivity:pZ,publish:mZ,screenshots:gZ,pagination:hZ,relativeTime:fZ,fillDetails:vZ,detail:bZ,comments:yZ,engagement:kZ,errors:wZ},SZ={title:"Apps",allAgentsTitle:"Todos os agentes",createNewApp:"Criar novo app",createNewAgent:"Criar novo agente",tabRecents:"Recentes",tabFavorites:"Favoritos",tabAllApps:"Todos os apps",tabAllAgents:"Todos os agentes",searchPlaceholder:"Pesquisar apps",gridView:"Visualização em grade",listView:"Visualização em lista",appTypeLabel:"Tipo de app",appTypeApps:"Apps",appTypeAgents:"Agentes",tableHeaderName:"Nome",tableHeaderDescription:"Descrição",tableHeaderActions:"Ações",folderActionAddApps:"Adicionar apps",folderActionRename:"Renomear",folderActionDelete:"Excluir",filterOwnedByMe:"De minha propriedade",filterMyAppsPersonal:"Meus apps (espaço de trabalho pessoal)",filterAllPlatform:"Todos os apps (em toda a plataforma)",filterMyAppsWorkspace:"Meus apps no espaço de trabalho {{workspaceName}}",filterAllAppsWorkspace:"Todos os apps no espaço de trabalho {{workspaceName}}",addNewFolder:"Adicionar nova pasta",sortLastUpdated:"Última atualização",sortLastCreated:"Última criação",sortNameAsc:"Nome (A-Z)",sortNameDesc:"Nome (Z-A)",filterCreatedByMe:"Criado por mim",filterCreatedByAnyone:"Criado por todos",filterAllPlatformApps:"Todos os apps da plataforma",filterMyApps:"Meus apps em {{workspaceName}}",planModeDescription:"Este aplicativo está atualmente no modo de planejamento e ainda não foi criado.",noDescription:"Sem descrição",byCreator:"Por {{name}}",createdAgo:"Criado {{timeAgo}}",untitledPlan:"Plano sem título",tableHeaderApp:"App",tableHeaderLastUpdated:"Última atualização",tableHeaderCreatedBy:"Criado por",emptyFolderTitle:"Nenhum app adicionado ainda",emptyFolderMessage:"Os apps aparecerão aqui quando você os adicionar",addExistingApps:"Adicionar apps existentes",emptyFavoritesTitle:"Nenhum app favorito ainda",emptyFavoritesMessage:"Marque um app com estrela para adicioná-lo aqui.",emptyRecentsTitle:"Nenhuma atividade recente",emptyRecentsMessage:"Os apps que você abrir aparecerão aqui.",emptySearchTitle:"Nenhum app encontrado",emptySearchMessage:"Nenhum app encontrado correspondendo aos seus critérios.",clearFilters:"Limpar filtros",previous:"Anterior",next:"Próximo",failedToUpdateStar:"Falha ao atualizar favorito",failedToUpdateFavorite:"Falha ao atualizar favorito",pleaseRetry:"Por favor, tente novamente",folderCreated:"Pasta criada",folderRenamed:"Pasta renomeada",folderDeleted:"Pasta excluída",folderUpdated:"Pasta atualizada",filter:"Filtrar"},CZ={showAll:"Ver tudo",appCount_one:"{{count}} app",appCount_other:"{{count}} apps",addApps:"Adicionar apps",rename:"Renomear",delete:"Excluir",cancel:"Cancelar",save:"Salvar",saving:"Salvando...",create:"Criar",deleting:"Excluindo...",createFirstFolder:"Criar sua primeira pasta",createNewFolder:"Criar nova pasta",renameFolder:"Renomear pasta",folderVisibilityDescription:"A organização das pastas é visível para o seu espaço de trabalho.",folderNamePlaceholder:"Nome da pasta",visibility:"Visibilidade",scopeWorkspace:"Espaço de trabalho",scopePersonal:"Pessoal",personalScopeHint:"Visível apenas para você",deleteFolder:"Excluir pasta",deleteFolderDescription:'Você está prestes a excluir "{{name}}"? Os apps nesta pasta não serão excluídos, apenas a pasta.',manageFolders:"Gerenciar pastas",manageFoldersDescription:"Adicionar ou remover este app de pastas.",searchFoldersPlaceholder:"Pesquisar pastas...",createNewFolderButton:"Criar nova pasta",noFoldersMatchSearch:"Nenhuma pasta corresponde à sua pesquisa",noFoldersYet:"Nenhuma pasta ainda",allFolders:"Todas as pastas",searchFolders:"Pesquisar pastas",scopeFilterAll:"Todas",sortNameAsc:"Nome A–Z",sortNameDesc:"Nome Z–A",sortMostApps:"Mais apps",sortFewestApps:"Menos apps",noFoldersFound:"Nenhuma pasta encontrada",noFoldersMatchCriteria:"Nenhuma pasta corresponde aos seus critérios de pesquisa.",clearSearch:"Limpar pesquisa",manageAppsInFolder:"Gerenciar apps na pasta",manageAppsDescription:'Adicionar ou remover apps em "{{name}}".',searchAppsPlaceholder:"Pesquisar apps...",noAppsMatchSearch:"Nenhum app corresponde à sua pesquisa",noAppsFound:"Nenhum app encontrado",loadMore:"Carregar mais",appUpdatedAgo:"Atualizado {{timeAgo}}",saveWithCount:"{{label}} ({{count}})",operationFailed:"Operação falhou. Por favor, tente novamente."},DZ={viewLiveApp:"Ver app ao vivo",share:"Compartilhar",rename:"Renomear",cloneApp:"Clonar app",appSettings:"Configurações do app",delete:"Excluir",appDeleted:"App excluído",appDeletedDescription:'"{{name}}" foi excluído',failedToDelete:"Falha ao excluir o app",failedToDeleteDescription:"Ocorreu um erro ao excluir o app",manageFolders:"Gerenciar pastas",removeFromFolder:"Remover da pasta",goToAppSettings:"Ir para as configurações do app",deleteApp:"Excluir app",deleteAppTitle:'Excluir "{{name}}"?',deleteAppDescription:"Isso excluirá permanentemente este app e todos os seus dados. Esta ação não pode ser desfeita.",appRemovedFromFolder:"App removido da pasta",failedToRemoveFromFolder:"Falha ao remover o app da pasta",addedToFolders_one:"App adicionado a {{count}} pasta",addedToFolders_other:"App adicionado a {{count}} pastas",removedFromFolders_one:"App removido de {{count}} pasta",removedFromFolders_other:"App removido de {{count}} pastas",failedToUpdateFolders:"Falha ao atualizar pastas",foldersUpdated:"{{added}} e {{removed}}",removeFromFavorites:"Remover dos favoritos",addToFavorites:"Adicionar aos favoritos"},TZ={title:"Renomear app",description:"O nome do app é visível para você e seus usuários.",inputPlaceholder:"Digite o nome do app",urlUpdateNote:"Alterar o nome do app também atualizará a URL do app.",cancel:"Cancelar",save:"Salvar",saving:"Salvando...",nameRequired:"O nome do app é obrigatório",enterDifferentName:"Por favor, insira um nome diferente",successTitle:"App renomeado",successDescription:'App renomeado para "{{name}}"',successDescriptionUrlFailed:'App renomeado para "{{name}}", mas a URL não pôde ser atualizada.',failedTitle:"Falha ao renomear o app",failedDescription:"Ocorreu um erro ao renomear o app"},EZ="Carregando...",PZ="(Cópia)",_Z={cloningTitle:"Clonando {{appName}}",cloningDescription:"Isso pode levar alguns instantes. Você o encontrará na página Apps quando estiver pronto",goToApps:"Ir para Apps",confirmingPurchaseTitle:"Confirmando sua compra...",confirmingPurchaseSubtitle:"Isso geralmente leva apenas alguns segundos",errorTitle:"Erro",goBack:"Voltar",cloneNotAllowedTitle:"Clonagem não permitida",cloneNotAllowedDescription:"Este app requer funções de backend. Você precisa estar no plano Builder ou superior para cloná-lo.",configureSecrets:"Configurar segredos",cloneTitle:"Clonar {{name}}",cloneButton:"Clonar {{name}}",cloningButton:"Clonando {{name}}...",defaultAppName:"App",preparing:"Preparando...",errorCloningApp:"Ocorreu um erro ao clonar o app",errorFetchingRequirements:"Ocorreu um erro ao buscar os requisitos de clonagem",errorPurchaseTimeout:"A confirmação da sua compra está demorando mais do que o esperado. Verifique seu e-mail para confirmação, ou entre em contato com o suporte se o problema persistir.",errorVerifyPurchase:"Não foi possível verificar a compra. Por favor, tente novamente."},xZ={userApps:SZ,folders:CZ,appActions:DZ,renameApp:TZ,loading:EZ,copySuffix:PZ,remixPage:_Z},IZ={title:"Base44 App Templates Marketplace - Termos de Serviço",lastUpdated:"Última atualização: 18 de novembro de 2025"},RZ={header:IZ},zZ={home:"Início",allApps:"Todos os aplicativos",apps:"Aplicativos",integrations:"Integrações",appTemplates:"Modelos de aplicativos",hirePartner:"Contratar um parceiro",affiliates:"Afiliados",docsSupport:"Docs e suporte",admins:"Administradores",referFriends:"Indicar amigos",language:"Idioma",startBuilding:"Começar a criar"},MZ={title:"Criar um espaço de trabalho",subtitle:"Comece a colaborar com os membros do seu espaço de trabalho",back:"Voltar",formTitle:"Informações do espaço de trabalho",nameLabel:"Nome do espaço de trabalho",namePlaceholder:"Digite o nome do seu espaço de trabalho",nameHint:"Escolha um nome que represente seu espaço de trabalho",nameRequiredError:"O nome do espaço de trabalho é obrigatório",createFailedError:"Falha ao criar espaço de trabalho",limitReachedError:"Limite de espaços de trabalho atingido. Você pode criar no máximo 3 espaços de trabalho.",cancelButton:"Cancelar",createButton:"Criar espaço de trabalho",creatingButton:"Criando espaço de trabalho...",whatHappensNext:{title:"O que acontece a seguir?",ownerPermissions:"Você será o proprietário do espaço de trabalho com permissões de gerenciamento completas",inviteMembers:"Você pode convidar membros e gerenciar vagas",accessDashboard:"Acesse o painel do seu espaço de trabalho para começar"}},NZ={workspace:"Espaço de trabalho",backToWorkspace:"Voltar para {{workspaceName}}",settings:"Configurações",inviteMembers:"Convidar membros",myWorkspaces:"Meus espaços de trabalho",createWorkspace:"Criar um espaço de trabalho",noWorkspacesFound:"Nenhum espaço de trabalho encontrado",accountSettings:"Configurações da conta",apiKey:"Chave API",helpSupport:"Ajuda e suporte",becomeAffiliate:"Tornar-se afiliado",defaultUser:"Usuário",defaultUserInitial:"U",referFriend:"Indicar um amigo",giftCards:"Cartões Presente",sendGiftCard:"Enviar cartão presente",notifications:"Notificações",logOut:"Sair",aboutApp:"Sobre o aplicativo",upgradePlan:"Atualizar plano",winCredits:"Ganhe créditos gratuitos",pricingPlans:"Planos de preços",documentation:"Documentação",getHelp:"Obter ajuda",memberCount_one:"{{count}} membro",memberCount_other:"{{count}} membros",myProfile:"Meu perfil",viewProfile:"Ver perfil",failedToLoadProfile:"Falha ao carregar o perfil",user:"Usuário"},FZ={ariaLabel:"Menu do agente",agentFallback:"Agente"},LZ={integrationCredits:"Créditos de integrações",monthlyCredits:"Créditos mensais",messageCredits:"Créditos de mensagens",dailyCredits:"Créditos diários",giftCardCredits:"Créditos de Presente",renewsAt:"Renova em {{date}}",giftCardTooltip:"Os créditos de cartão presente são usados antes dos créditos do seu plano.",percentUsed:"{{percent}}% usado",messagesRemaining_one:"{{count}} mensagem restante",messagesRemaining_other:"{{count}} mensagens restantes",upgradeYourPlan:"Atualize seu plano",getMoreOutOfYourApps:"Aproveite mais dos seus apps",upgradeYourPlanToPro:"Atualize seu plano para Pro",redeemDescription:"Após o resgate, os créditos serão aplicados ao seu espaço de trabalho.",creditsRemaining_one:"{{count}} crédito restante",creditsRemaining_other:"{{count}} créditos restantes"},jZ={label:"Comunidade",appTemplates:"Modelos de aplicativos",appTemplatesDesc:"Comece mais rápido com modelos da comunidade.",hirePartner:"Contratar um parceiro",hirePartnerDesc:"Encontre parceiros e comece a colaborar.",spotlight:"Destaques",spotlightDesc:"Explore aplicativos em destaque.",affiliateProgram:"Programa de afiliados",affiliateProgramDesc:"Torne-se um afiliado Base44.",joinUsOn:"Junte-se a nós no"},OZ=JSON.parse(`{"title":"Configurações","lockedFeature":{"includedInPlan":"Incluído no plano {{plan}} e acima","includedInPlanExact":"Incluído no plano {{plan}}","viewPlans":"Ver planos","talkToSales":"Falar com vendas","authSecurity":{"title":"Controle o acesso ao espaço de trabalho","body":"Essencial para indústrias regulamentadas e organizações preocupadas com segurança","ssoAccess":"Use login único (SSO) para reduzir riscos de senha","domainVerification":"Controle quem pode entrar com verificação de domínio","ipWhitelisting":"Permita acesso apenas de endereços IP confiáveis"},"integrations":{"title":"Configure uma vez, use em todo o espaço de trabalho","body":"Para equipes padronizando APIs e ferramentas externas entre aplicativos.","configureOnce":"Configure integrações de API uma vez para todos os aplicativos e colegas","sharedAccess":"Permita que todos no seu espaço de trabalho usem ferramentas conectadas instantaneamente","consistentConnections":"Mantenha conexões externas consistentes em cada aplicativo"},"appsConfiguration":{"title":"Defina visibilidade de aplicativos e regras de SSO","body":"Para equipes gerenciando ferramentas internas e aplicativos sensíveis.","publicAppControl":"Decida quem pode criar aplicativos públicos neste espaço de trabalho","defaultVisibility":"Defina a visibilidade inicial para novos aplicativos","enforceSso":"Aplique o SSO do espaço de trabalho em todos os aplicativos"},"analytics":{"title":"Veja como sua equipe usa o Base44","body":"Para proprietários e administradores de espaços de trabalho acompanhando uso e adoção.","creditTracking":"Acompanhe como os créditos estão sendo usados pela sua equipe","activeUsers":"Veja quais colegas estão usando ativamente o Base44","licenseUsage":"Entenda quantas licenças estão em uso atualmente"},"skills":{"title":"Dê à sua IA skills reutilizáveis","body":"Defina um comportamento de IA consistente que funcione em todos os seus aplicativos.","reusableInstructions":"Crie um conjunto de instruções personalizadas (um skill) que moldam como a IA desenvolve seus aplicativos","autoActivation":"Crie uma vez, reutilize em todos os seus aplicativos","teamConsistency":"Guie o tom, formatação, lógica ou qualquer comportamento que você queira padronizar"},"mcpConnections":{"title":"Conecte ferramentas externas com MCP","body":"Traga dados ao vivo de ferramentas externas diretamente para seus aplicativos.","externalTools":"Dê ao seu criador de IA acesso a contexto em tempo real enquanto trabalha","customServers":"Conecte servidores MCP personalizados para usar em todos os seus aplicativos","extendCapabilities":"Acesse ferramentas como Amplitude, Linear e mais enquanto desenvolve"}},"membersTitle":"Membros","inviteMembers":"Convidar membros","inviteByEmail":"Convidar por e-mail","bulkInviteCsv":"Convite em massa (CSV)","close":"Fechar","createInviteLink":"Criar link de convite","manageInviteLinks":"Gerenciar links de convite","backToMembers":"Voltar aos membros","backToMenu":"Voltar ao menu de configurações","inviteLinks":{"title":"Links de convite","breadcrumb":"Links de convite","description":"Crie e gerencie links de convite para este workspace.","createInviteLink":"Criar link de convite","noLinksYet":"Nenhum link de convite ainda","noLinksSubtitle":"Crie um link de convite para compartilhar facilmente o acesso a este workspace.","copyLink":"Copiar link","copyLinkLower":"Copiar link","deleteTooltip":"Excluir link de convite","deleteButton":"Excluir","deleteLinkButton":"Excluir link","deleteConfirmTitle":"Excluir link de convite?","deleteConfirmActive":"As pessoas não poderão mais entrar usando este link. Esta ação não pode ser desfeita.","deleteConfirmInactive":"Este link e seu histórico serão removidos deste workspace.","copiedToClipboard":"Link de convite copiado para a área de transferência.","columnName":"Nome","columnStatus":"Status","columnUsage":"Uso","columnRole":"Função","columnExpiration":"Data de expiração","columnDomains":"Domínios permitidos","statusActive":"Ativo","statusRevoked":"Revogado","statusExpired":"Expirado","statusLimitReached":"Limite atingido","usageUnlimited":"Ilimitado","dialogTitle":"Criar link de convite","dialogMobileTitle":"Criar link","linkName":"Nome do link (Opcional)","linkNamePlaceholder":"ex., Integração de novos funcionários","role":"Função","selectRole":"Selecionar função","roleViewer":"Visualizador","roleEditor":"Editor","roleMember":"Membro","expiration":"Expiração","selectExpiration":"Selecionar expiração","nDays_one":"{{count}} dia","nDays_other":"{{count}} dias","never":"Nunca","maximumUses":"Usos máximos","selectLimit":"Selecionar limite","unlimited":"Ilimitado","nUses_one":"{{count}} uso","nUses_other":"{{count}} usos","allowedDomains":"Domínios de e-mail permitidos (Opcional)","allowedDomainsPlaceholder":"ex., empresa.com, parceiro.org","domainsHelp":"Separe múltiplos domínios com vírgulas.","domainsError":"Entrada inválida. Use domínios separados por vírgulas (ex., empresa.com, parceiro.org)","securityWarning":"Qualquer pessoa com este link pode entrar no seu workspace e acessar seus dados. Compartilhe apenas com pessoas de confiança.","advancedOptions":"Opções avançadas","cancel":"Cancelar","creating":"Criando...","create":"Criar","linkCreatedAndCopied":"Link de convite criado e copiado.","manageInvitations":"Gerenciar convites"},"postPaymentInvite":{"title":"Tudo pronto!","description":"Seu plano está ativo. Convide seus amigos e colegas para começarem a construir juntos.","createInviteLink":"Criar link de convite","inviteByEmail":"Convidar por e-mail","maybeLater":"Talvez mais tarde","inviteLinkReady":"Link de convite pronto","subtitleNoDomain":"Qualquer pessoa com este link pode entrar como <bold>{{role}}</bold>","subtitleWithDomain":"Qualquer pessoa com um e-mail {{domains}} pode entrar como <bold>{{role}}</bold>","copied":"Copiado","manageInvitationsPrompt":"Você pode gerenciar todos os seus links de convite na página de configurações de <inviteLink>Links de convite</inviteLink>.","copyLink":"Copiar","close":"Fechar","expires":"Expira {{time}}","remainingUses_one":"{{count}} uso restante","remainingUses_other":"{{count}} usos restantes"},"sections":{"workspace":"Espaço de trabalho","integrations":"Integrações","account":"Conta"},"creditUsage":{"pageDescription":"Monitore o consumo de créditos e os padrões de uso.","currentPlan":"Você está atualmente no Plano {{planName}}","overLimit":"Acima do limite","updatePayment":"Atualizar pagamento","upgrade":"Fazer upgrade","paymentOverdue":"Pagamento em atraso","pastDueDescription":"O pagamento da sua assinatura está em atraso. Os créditos e limites exibidos são baseados no seu último plano pago ({{plan}}).","tryAgain":"Tentar novamente","trying":"Tentando...","monthlyMessages":"Mensagens mensais","workspaceTotal":"Total do workspace","workspaceUsage":"Uso do workspace","dailyMessages":"Mensagens diárias","loadError":"Falha ao carregar estatísticas de uso","portalError":"Não foi possível abrir o gerenciamento de pagamentos. Tente novamente.","portalErrorTitle":"Erro","creditsRenewIn":"Créditos se renovam em {{timeLeft}}","expired":"Expirado","dailyUsageTitle":"Uso diário (Mensagens)","noUsageData":"Nenhum dado de uso disponível","messagesLabel":"mensagens","timeDaysHours":"{{days}}d : {{hours}}h","timeHoursMinutes":"{{hours}}h : {{minutes}}m","timeMinutes":"{{minutes}}m"},"basicInformation":{"pageTitle":"Informações básicas","pageSubtitleEditable":"Gerencie os detalhes e as configurações do seu espaço de trabalho.","pageSubtitleReadOnly":"Visualize os detalhes do espaço de trabalho. Apenas proprietários e administradores podem editar.","loadingMessage":"Carregando informações do espaço de trabalho...","workspaceNameLabel":"Nome do espaço de trabalho","workspaceNamePlaceholder":"Insira o nome do espaço de trabalho","workspaceDescriptionLabel":"Descrição do espaço de trabalho","workspaceDescriptionPlaceholder":"Descreva seu espaço de trabalho...","workspaceNameEmptyErrorMessage":"O nome do espaço de trabalho não pode estar vazio","cancelButton":"Cancelar","saveButton":"Salvar alterações","savingButton":"Salvando...","saveSuccessMessage":"Configurações do espaço de trabalho atualizadas com sucesso!","saveErrorMessage":"Falha ao atualizar as configurações do espaço de trabalho: {{error}}","unknownError":"Erro desconhecido"},"leaveWorkspace":{"title":"Sair do espaço de trabalho","description":"Se você sair deste espaço de trabalho, perderá o acesso a todos os aplicativos associados. A propriedade dos seus aplicativos será transferida para o proprietário do espaço de trabalho.","button":"Sair do espaço de trabalho","soleOwnerNote":"Você não pode sair do espaço de trabalho porque é o único proprietário.","successMessage":"Você saiu do espaço de trabalho.","workspaceNameFallback":"espaço de trabalho","dialog":{"title":"Sair do {{name}}?","confirmQuestion":"Tem certeza de que deseja sair do <bold>{{name}}</bold>?","transferWarning":"Seus aplicativos neste espaço de trabalho serão transferidos para o proprietário do espaço de trabalho e você perderá o acesso.","cancelButton":"Cancelar","confirmButton":"Sair do espaço de trabalho"}},"menu":{"basicInformation":"Informações básicas","planAndBilling":"Plano e faturamento","creditUsage":"Uso de créditos","members":"Membros","seatsAndMembers":"Vagas e membros","authAndSecurity":"Autenticação e segurança","integrations":"Integrações","appsConfiguration":"Configuração de aplicativos","analytics":"Análises","accountSettings":"Configurações da conta","mcpConnections":"Conexões MCP","skills":"Habilidades","connectors":"Conectores","manageSubscription":"Gerenciar assinatura","secrets":"Segredos","dataResidency":"Residência de dados"},"guests":{"tabMembers":"Membros","tabGuests":"Convidados","title":"Convidados","infoBanner":"Convidados são usuários externos convidados para aplicativos específicos. Eles consomem créditos do pool compartilhado do espaço de trabalho.","searchPlaceholder":"Pesquisar por e-mail ou aplicativo...","columnGuest":"Convidados","columnApp":"Aplicativo","columnInvitedBy":"Convidado por","columnCreditsUsed":"Créditos usados","pending":"Pendente","promoteToEditor":"Promover a Editor","promoteToViewer":"Promover a Visualizador","removeFromWorkspace":"Remover do espaço de trabalho","emptyTitle":"Nenhum convidado ainda","emptySubtitle":"Convidados podem ser adicionados pelo fluxo de convite de colaboradores do aplicativo.","noResults":"Nenhum convidado encontrado","noResultsSubtitle":"Nenhum convidado corresponde a \\"{{searchTerm}}\\"","promoted":"{{email}} promovido a {{role}}","promoteFailed":"Falha ao atualizar a função","setCreditLimit":"Definir limite de créditos","upgradeForCreditLimit":"Atualize para o plano Enterprise para este recurso","viewAppAccess":"Ver acesso aos apps","removeMember":"Remover membro","guestRole":"Convidado","appAccessTitle":"Acesso aos apps de {{name}}","appAccessDescription":"Veja os apps que este convidado pode acessar no espaço de trabalho.","appAccessLoading":"Carregando...","appAccessEmpty":"Nenhum acesso a apps encontrado.","appAccessColumnApp":"Aplicativo","appAccessDone":"Concluído"},"members":{"pageTitle":"Membros","pageDescription":"Visualizar e gerenciar membros e funções deste espaço de trabalho.","tableTitle":"Membros ({{count}})","columnMembers":"Membros","columnCreditsUsed":"Créditos utilizados","columnCreditsUsedWithLimit":"Créditos utilizados (de {{limit}})","columnCreditLimit":"Limite de créditos","columnRole":"Função","roleOwner":"Proprietário","roleAdmin":"Admin","roleEditor":"Editor","roleViewer":"Visualizador","pending":"Pendente","expired":"Expirado","searchPlaceholder":"Pesquisar por nome ou e-mail...","searchPlaceholderMobile":"Pesquisar...","inviteMembers":"Convidar membros","inviteByEmail":"Convidar membros","bulkInvite":"Convite em massa","setCreditLimit":"Definir limite de créditos","removeMember":"Remover membro","upgradeTooltip":"Atualize para o plano Enterprise para desbloquear este recurso","default":"(padrão)","emptyTitle":"Nenhum membro ainda","emptyTitleNoResults":"Nenhum membro encontrado","emptySubtitlePersonal":"Espaços de trabalho pessoais contêm apenas você","emptySubtitleShared":"Comece convidando seu primeiro membro","emptySubtitleNoResults":"Nenhum membro corresponde a \\"{{searchTerm}}\\"","cantChangeOwnRole":"Você não pode alterar sua própria função. Peça a um proprietário do espaço de trabalho para atualizá-la.","creditLimitTooltip":"Limite quantos créditos cada membro pode usar do pool do espaço de trabalho. Defina limites individualmente ou distribua igualmente entre todos os membros.","tableTitleFiltered":"Membros ({{filteredCount}} de {{totalCount}})","clearSearch":"Limpar pesquisa"},"seatsAndMembers":{"pageTitle":"Vagas e membros","pageDescription":"Gerencie as vagas do espaço de trabalho e os membros da equipe.","emptyTitle":"Comece com as vagas do espaço de trabalho","emptyDescription":"Compre vagas para convidar membros do espaço de trabalho e começar a colaborar.","buyFirstSeats":"Compre suas primeiras vagas","planSeats":"Vagas {{planName}}","seatsUsage":"Uso de vagas","addSeats":"Adicionar vagas","removeSeats":"Remover vagas","seatsAvailable_one":"{{count}} vaga disponível","seatsAvailable_other":"{{count}} vagas disponíveis","buyMoreSeats":"Comprar mais vagas","expandWorkspace":"Expanda o tamanho do seu espaço de trabalho","searchPlaceholder":"Pesquisar por e-mail, função, status ou tipo de vaga (ex., starter, pro)...","searchTip":"Dica: Pesquise por tipos de vagas como \\"starter\\", \\"builder\\", \\"pro\\", \\"elite\\" ou \\"sem vaga\\""},"inviteDialog":{"title":"Convidar membros","emailAddress":"Endereço de e-mail","role":"Função","cancel":"Cancelar","invite":"Convidar","inviting":"Convidando...","roleViewer":"Visualizador","roleEditor":"Editor","roleAdmin":"Admin","roleMember":"Membro","errorNoEmail":"Por favor, insira pelo menos um endereço de e-mail","errorInvalidEmail":"Um ou mais endereços de e-mail são inválidos.","errorFallback":"Falha ao convidar usuários","toastSingle":"Convite enviado para {{email}}","toastMultiple":"{{count}} convites enviados com sucesso"},"dataResidency":{"title":"Residência de dados","tooltip":"Define a região de armazenamento de dados para aplicativos neste espaço de trabalho.","edit":"Editar","upgradeRequired":"Plano Elite ou superior necessário para configurar a residência de dados.","appliesToNewApps":"Aplica-se a aplicativos recém-criados. Aplicativos existentes mantêm sua região atual.","editModal":{"title":"Residência de dados do espaço de trabalho","description":"Escolha onde armazenar dados para aplicativos que você criar neste espaço de trabalho.","label":"Residência de dados","appliesToNewApps":"Aplica-se a aplicativos recém-criados. Aplicativos existentes mantêm sua região de dados atual.","viewAllApps":"Ver residência de dados para todos os aplicativos do espaço de trabalho","cancel":"Cancelar","save":"Salvar","saving":"Salvando...","updateSuccess":"Residência de dados atualizada com sucesso","updateError":"Falha ao atualizar residência de dados: {{detail}}","unknownError":"Erro desconhecido"},"appsModal":{"title":"Residência de dados do aplicativo","description":"Veja onde os dados estão armazenados para cada aplicativo neste espaço de trabalho.","appName":"Nome do aplicativo","dataRegion":"Região de dados","loading":"Carregando...","noApps":"Nenhum aplicativo neste espaço de trabalho.","migrationInfo":"Precisa mover um aplicativo para uma região diferente? <a>Solicitar uma migração.</a>","supportTitle":"Solicitação de migração de região de dados — {{name}}","supportContent":"Gostaria de migrar os dados do aplicativo para uma região diferente.\\n\\nEspaço de trabalho: {{name}} ({{id}})\\nRegião padrão atual: {{region}}\\nRegião de destino: \\nAplicativos a migrar: "}},"mcp":{"title":"Conexões MCP","addMcp":"Adicionar MCP","limitReached":"Você atingiu o limite de {{max}} servidores MCP. Remova um para adicionar uma nova conexão.","description":"Conecte servidores MCP personalizados para expandir as capacidades de construção do Base44 com ferramentas e dados externos.","descriptionWithLink":"Conecte servidores MCP personalizados para expandir as capacidades de construção do Base44 com ferramentas e dados externos. <a>Saiba mais sobre MCP<icon/></a>","learnMore":"Saiba mais sobre MCP","emptyTitle":"Nenhum servidor MCP conectado ainda","addCustomMcp":"Adicionar MCP personalizado","aria":{"enableConnection":"Ativar {{name}}","disableConnection":"Desativar {{name}}","actionsFor":"Ações para {{name}}"},"actions":{"editDetails":"Editar detalhes","removeMcp":"Remover MCP"},"deleteConfirm":{"title":"Remover conexão MCP","description":"Tem certeza de que deseja remover \\"{{name}}\\"? Esta ação não pode ser desfeita.","confirm":"Remover","cancel":"Cancelar"},"tools":{"availableTools_one":"{{count}} ferramenta disponível","availableTools_other":"{{count}} ferramentas disponíveis","more":"+{{count}} mais","showLess":"Mostrar menos","loadingTools":"Carregando ferramentas..."},"addDialog":{"title":"Adicionar servidor MCP personalizado","name":"Nome","namePlaceholder":"ex.: Meu servidor MCP","url":"URL","urlExists":"O servidor MCP já existe.","authentication":"Autenticação","authNone":"Não necessária","authNoneDescription":"Conectar sem credenciais","authOAuth":"OAuth","authOAuthDescription":"Autorizar na próxima etapa","customHeaders":"Headers personalizados","optional":"opcional","headersDescription":"Adicione headers que serão enviados com cada requisição (ex.: chaves API)","headerName":"Nome do header","headerValue":"Valor","addHeader":"Adicionar header","connectionFailed":"Conexão falhou","serverReady":"O servidor MCP está pronto para conectar.","serverReadyWithTools_one":"O servidor MCP está pronto para conectar. 1 ferramenta encontrada.","serverReadyWithTools_other":"O servidor MCP está pronto para conectar. {{count}} ferramentas encontradas.","toolsFound_one":"{{count}} ferramenta encontrada.","toolsFound_other":"{{count}} ferramentas encontradas.","oauthConfirmed":"Servidor confirmado. Clique em \\"Autorizar e adicionar\\" para completar a autenticação OAuth.","test":"Testar","testAndAdd":"Testar e adicionar","authorizeAndAdd":"Autorizar e adicionar","cancel":"Cancelar","urlRequired":"Por favor, insira uma URL do servidor.","fieldsRequired":"Por favor, preencha todos os campos obrigatórios.","authRequired":"A autenticação é necessária para este servidor. Selecione OAuth para continuar.","authNotRequired":"Este servidor não requer OAuth. Tente adicionar sem OAuth.","testFailed":"O teste de conexão falhou."},"editDialog":{"title":"Editar MCP conectado","enabled":"Ativado","nameRequired":"Por favor, insira um nome.","changeInfo":"Para alterar a URL ou método de autenticação, crie uma nova conexão MCP.","saveChanges":"Salvar alterações","removeMcp":"Remover MCP","cancel":"Cancelar"},"toast":{"added":"Conexão MCP adicionada","addedDescription":"Conectado com sucesso ao servidor MCP.","addedWithName":"Conexão \\"{{name}}\\" adicionada com sucesso.","saved":"Alterações salvas","savedDescription":"Conexão MCP atualizada com sucesso."}},"skills":{"title":"Habilidades","addSkill":"Adicionar habilidade","addSkillLower":"adicionar habilidade","editSkill":"Editar habilidade","viewSkill":"Ver habilidade","deleteSkill":"Excluir habilidade","limitReached":"Você atingiu o limite de {{max}} habilidades. Remova uma para adicionar uma nova.","description":"Crie conjuntos de instruções reutilizáveis que o construtor de IA pode ativar durante as conversas.","emptyDescription":"Habilidades são diretrizes salvas que moldam como a IA constrói seus aplicativos. Elas são ativadas quando necessário para seguir suas regras e melhores práticas automaticamente.","emptyDescriptionWithLink":"Habilidades são diretrizes salvas que moldam como a IA constrói seus aplicativos. Elas são ativadas quando necessário para seguir suas regras e melhores práticas automaticamente. <a>Saiba mais</a>","learnMore":"Saiba mais","getStartedWithTemplate":"Começar com um modelo","viewMore":"Ver mais","failedToLoadTemplates":"Falha ao carregar modelos de habilidades","templatesUnavailable":"Os modelos predefinidos podem estar indisponíveis.","failedToLoadTemplate":"Falha ao carregar o modelo","form":{"skillName":"Nome da habilidade","namePlaceholder":"ex.: brand-guidelines","nameRequired":"O nome é obrigatório","nameMaxLength":"O nome deve ter no máximo {{max}} caracteres","namePattern":"Apenas letras minúsculas, números e hífens (ex.: code-review)","nameExists":"Já existe uma habilidade com este nome","description":"Descrição","descriptionHint":"Diga ao agente quando usar esta habilidade. Ele lê isso para decidir se deve ativá-la.","descriptionPlaceholder":"ex. Aplica cores da marca, tipografia e padrões de design em todas as páginas e componentes. Usar ao criar novas páginas, atualizar estilos ou quando o usuário mencionar a marca ou o sistema de design.","instructions":"Instruções","instructionsHint":"As regras passo a passo que seu agente segue quando esta habilidade é ativada. Escreva como se estivesse treinando um novo membro da equipe.","instructionsPlaceholder":"## Cores da Marca\\nPrimária: #1E40AF (navegação, botões)\\nDestaque: #F59E0B (realces, CTAs)\\nFundo: #F8FAFC, Superfície: branco\\n\\n## Tipografia\\nTítulos: negrito, slate escuro\\nCorpo: text-sm text-slate-600\\nEspaçamento consistente entre seções\\n\\n## Padrões de Componentes\\n- Usar Card com sombra sutil para seções de dados\\n- Sempre incluir estados de carregamento e vazios\\n- Formulários: usar diálogos Sheet para criar/editar\\n- Tabelas: linhas listradas, colunas ordenáveis","reviewHint":"Refinado pela IA. Sinta-se à vontade para ajustar antes de salvar."},"dialog":{"reviewTitle":"Revisar sua habilidade","reviewSubtitle":"Verifique a descrição e as instruções antes de salvar. Você pode editar a qualquer momento.","pickerTitle":"Adicionar habilidade ou começar do zero","startFromScratch":"Começar do zero","cancel":"Cancelar","backToOriginal":"Voltar ao original","saveSkill":"Salvar habilidade","saveChanges":"Salvar alterações","refineAndReview":"Refinar e revisar","refineShort":"Refinar","close":"Fechar","add":"Adicionar","enabled":"Ativado"},"toast":{"created":"Habilidade criada","createdDescription":"\\"{{name}}\\" foi adicionada.","failedToCreate":"Falha ao criar a habilidade","updated":"Habilidade atualizada","updatedDescription":"\\"{{name}}\\" foi salva.","failedToUpdate":"Falha ao atualizar a habilidade","refinedTooLong":"A habilidade refinada é muito longa","refinedTooLongDescription":"Tentamos condensar, mas o resultado ainda excede o limite de caracteres. Tente encurtar o conteúdo e refinar novamente.","failedToPolish":"Falha ao refinar a habilidade","failedToLoad":"Falha ao carregar a habilidade","failedToLoadList":"Falha ao carregar as habilidades","retryLater":"Por favor, tente novamente mais tarde.","retryAgain":"Por favor, tente novamente.","removed":"Habilidade removida","removedDescription":"A habilidade foi removida."},"deleteConfirm":{"description":"Tem certeza de que deseja excluir \\"{{name}}\\"? Esta ação não pode ser desfeita.","confirm":"Excluir","cancel":"Cancelar"},"aria":{"enableSkill":"Ativar {{name}}","disableSkill":"Desativar {{name}}","actionsFor":"Ações para {{name}}"}},"secrets":{"title":"Segredos","description":"Gerencie credenciais e tokens de acesso para acesso programático ao seu workspace.","apiKeys":{"title":"Chaves de API","description":"Crie e gerencie chaves de API para acesso programático ao seu workspace. Use essas chaves para transmitir logs de auditoria, conectar seu provedor de identidade via SCIM ou extrair dados do workspace para um sistema externo via a API de Monitoramento.","createButton":"Criar chave de API","limitReached":"Você atingiu o limite máximo de {{max}} chaves de API. Exclua uma chave existente para criar uma nova.","table":{"name":"Nome","key":"Chave","createdBy":"Criado por","created":"Criado","lastUsed":"Último uso","status":"Status","never":"Nunca"},"status":{"active":"Ativo","disabled":"Desativado"},"emptyState":{"title":"Nenhuma chave de API ainda","description":"As chaves de API do workspace fornecem acesso programático às APIs do workspace (SIEM, SCIM, integrações personalizadas)."},"actions":{"edit":"Editar","disableKey":"Desativar chave","enableKey":"Ativar chave","deleteKey":"Excluir chave","actionsFor":"Ações para {{name}}"},"sheet":{"editButton":"Editar","disableButton":"Desativar","enableButton":"Ativar"},"disableConfirm":{"title":"Desativar chave de API?","description":"A chave de API <strong>\\"{{name}}\\"</strong> será desativada imediatamente. As integrações que usam esta chave pararão de funcionar.","note":"Você pode reativá-la mais tarde.","confirm":"Desativar chave","cancel":"Cancelar"},"enableConfirm":{"title":"Ativar chave de API?","description":"A chave de API <strong>\\"{{name}}\\"</strong> será reativada. As integrações que usam esta chave voltarão a funcionar.","confirm":"Ativar chave","cancel":"Cancelar"},"deleteConfirm":{"title":"Excluir chave de API?","description":"A chave de API <strong>\\"{{name}}\\"</strong> será excluída permanentemente. Esta ação não pode ser desfeita. As integrações que usam esta chave pararão de funcionar imediatamente.","confirm":"Excluir chave","cancel":"Cancelar"},"toast":{"loadError":"Falha ao carregar chaves de API","loadErrorDescription":"Por favor, tente novamente.","disabled":"Chave de API desativada","disabledDescription":"\\"{{name}}\\" foi desativada.","disableError":"Falha ao desativar chave de API","enabled":"Chave de API ativada","enabledDescription":"\\"{{name}}\\" foi reativada.","enableError":"Falha ao ativar chave de API","deleted":"Chave de API excluída","deletedDescription":"\\"{{name}}\\" foi excluída permanentemente.","deleteError":"Falha ao excluir chave de API","createError":"Falha ao criar chave de API","updateError":"Falha ao atualizar chave de API","copyError":"Falha ao copiar a chave de API","updated":"Chave de API atualizada","updatedDescription":"\\"{{name}}\\" foi salva."},"createDialog":{"title":"Criar chave de API","titleReveal":"Chave de API criada","namePlaceholder":"ex. Integração SIEM","descriptionPlaceholder":"Para que é usada esta chave?","cancelButton":"Cancelar","createButton":"Criar chave","creatingButton":"Criando...","warningMessage":"Copie esta chave agora – você não poderá vê-la novamente. Trate-a como uma senha: ela concede acesso aos dados do seu workspace via API.","yourApiKey":"Sua chave de API","doneButton":"Concluído","copyAria":"Copiar chave de API"},"editDialog":{"title":"Editar chave de API","cancelButton":"Cancelar","saveButton":"Salvar","savingButton":"Salvando..."},"formFields":{"name":"Nome","description":"Descrição","descriptionOptional":"(opcional)"}}},"authSecurity":{"title":"Autenticação e segurança","description":"Defina as configurações de autenticação e segurança do seu espaço de trabalho.","sso":{"title":"Configuração de Login Único","configureTooltip":"Configure o SSO para o seu espaço de trabalho","description":"Ative o SSO para simplificar a autenticação para os membros do seu espaço de trabalho.","settingUp":"Configurando...","setUp":"Configurar","setUpConfiguration":"Configurar SSO","enforcedTooltip":"Este SSO é aplicado a todos os aplicativos no espaço de trabalho, o que significa que eles o utilizam automaticamente para autenticação. Para atualizar as configurações de aplicação, acesse Configuração de Aplicativos.","enforcedBadge":"Aplicado nos aplicativos","setUpAction":"Configurar","configure":"Configurar","selectProvider":"Selecionar provedor SSO","cancelSetup":"Cancelar configuração","dismiss":"Fechar","saving":"Salvando...","enableSSO":"Ativar SSO","saveSSOSettings":"Salvar configurações SSO","notAvailableTitle":"Não disponível","notAvailableDesc":"O Login Único (SSO) não está disponível para espaços de trabalho pessoais.","limitedAccessTitle":"Acesso limitado","limitedAccessDesc":"Apenas administradores do espaço de trabalho podem configurar o SSO.","toast":{"error":"Erro","failedToLoadSettings":"Falha ao carregar configurações SSO","failedToLoadAppSettings":"Falha ao carregar configurações do aplicativo","ssoEnabled":"SSO ativado","ssoEnabledDesc":"O Login Único foi ativado para o seu espaço de trabalho","ssoDisabled":"SSO desativado","ssoDisabledDesc":"O Login Único foi desativado","failedToUpdateStatus":"Falha ao atualizar o status do SSO","success":"Sucesso","settingsUpdated":"Configurações SSO atualizadas com sucesso","failedToUpdate":"Falha ao atualizar configurações SSO"},"fields":{"client_id":"ID do cliente","client_secret":"Segredo do cliente","scope":"Escopo","discovery_url":"URL de descoberta","tenant_id":"ID do locatário","okta_domain":"Domínio Okta","auth_endpoint":"Endpoint de autorização","token_endpoint":"Endpoint de token","userinfo_endpoint":"Endpoint de informações do usuário","jwks_uri":"URI JWKS","name":"Nome do provedor"},"autoGenerated":"(Gerado automaticamente)","placeholders":{"client_id":"Digite o ID do cliente","client_secret":"Digite o segredo do cliente","scope":"Digite o escopo","discovery_url":"Digite a URL de descoberta","tenant_id":"Seu ID de locatário do Azure AD","okta_domain":"sua-empresa","auth_endpoint":"Digite o endpoint de autorização","token_endpoint":"Digite o endpoint de token","userinfo_endpoint":"Digite o endpoint de informações do usuário","jwks_uri":"Digite a URI JWKS","name":"Digite o nome do provedor"},"tooltips":{"clientId":"O ID de cliente OAuth fornecido pelo seu provedor de identidade","clientSecret":"O segredo de cliente OAuth fornecido pelo seu provedor de identidade (mantenha em sigilo)","scopeGeneral":"Escopos OAuth a solicitar (openid, email, profile são comumente usados)","scopeGithub":"Escopos OAuth a solicitar (user:email para GitHub)","discoveryUrlGoogle":"Endpoint de descoberta OIDC (pré-configurado para Google)","discoveryUrlMicrosoft":"Endpoint de descoberta OIDC gerado automaticamente a partir do seu ID de locatário","discoveryUrlOkta":"Endpoint de descoberta OIDC gerado automaticamente a partir do seu domínio Okta","discoveryUrlAdvanced":"URL do endpoint de descoberta OIDC (se suportado pelo seu provedor)","tenantId":"ID de locatário do Azure AD. No Portal Azure → Azure Active Directory → Visão geral","oktaDomain":"Seu nome de domínio Okta (ex.: 'sua-empresa' de sua-empresa.okta.com)","authEndpointGithub":"Endpoint de autorização OAuth do GitHub (pré-configurado)","authEndpointGeneral":"URL do endpoint de autorização OAuth","tokenEndpointGithub":"Endpoint de token OAuth do GitHub (pré-configurado)","tokenEndpointGeneral":"URL do endpoint de token OAuth","userinfoEndpointGithub":"Endpoint de usuário da API do GitHub (pré-configurado)","userinfoEndpointGeneral":"URL do endpoint de informações do usuário OAuth","jwksUri":"URI do conjunto de chaves web JSON para verificação de tokens","providerName":"Nome personalizado para o seu provedor SSO"},"providerFallback":"SSO {{name}}","providers":{"advanced":"Configuração avançada / manual"}},"domainVerification":{"title":"Verificação de domínio","label":"Domínio do espaço de trabalho","placeholder":"Adicione o seu domínio","hint":"O domínio vinculado ao seu espaço de trabalho","check":"Verificar","verified":"Verificado","checking":"Verificando","copyFailed":"Falha ao copiar para a área de transferência","dnsTimedOut":"A verificação DNS expirou. Verifique suas configurações DNS e tente novamente.","domainVerifiedSuccess":"Domínio verificado com sucesso!","enterDomainFirst":"Por favor, insira um domínio primeiro","domainSaved":"Domínio salvo. Adicione o registro DNS para verificar a propriedade.","configFailed":"Falha ao configurar a verificação de domínio","verificationReset":"A verificação de domínio foi redefinida","resetFailed":"Falha ao redefinir a verificação de domínio","addDnsRecords":"Adicionar registros DNS para {{domain}}","dnsInstructions":"Faça login no seu provedor de domínio, acesse as configurações DNS e adicione este registro TXT.","type":"Tipo","hostName":"Host / Nome","value":"Valor","dnsCheckNote":"A verificação DNS pode levar alguns minutos. Assim que tudo estiver atualizado, verificaremos automaticamente o seu domínio.","checkingDns":"Verificando seus registros DNS...","resetting":"Redefinindo...","reset":"Redefinir","copyLabel":"Copiar {{label}}"}}}`),BZ={earnBonusCredits:"Ganhe créditos bônus"},UZ={apps:"Apps",superagents:"Superagentes",newAgent:"Novo Agente",emptyAgents:"Crie seu primeiro agente e veja suas conversas aqui.",allAgents:"Todos os Agentes",settings:"Configurações",inviteMembers:"Convidar membros",allWorkspaces:"Todos os Espaços",org:"Organização",createNewWorkspace:"Criar novo espaço",recents:"Recentes",favorites:"Favoritos",noFavoritesYet:"Nenhum favorito ainda",addAppsForQuickAccess:"Adicione seus apps para acesso rápido",view_all:"Ver tudo"},qZ={pageTitle:"Comprar Cartão Presente Base44",pageSubtitle:"Dê o presente de construir. Envie um cartão presente para um amigo.",tabBuy:"Comprar Cartão Presente",tabPurchased:"Comprados",successTitle:"Cartão presente comprado com sucesso!",successDescription:"O destinatário receberá um e-mail com o código do cartão presente.",successDescriptionPdf:"Verifique seu e-mail para um cartão presente imprimível para dar pessoalmente.",dismissSuccess:"Fechar mensagem de sucesso",amount:"Valor",customAmount:"$ Personalizado",customAmountPlaceholder:"{{symbol}} Valor personalizado",customAmountError:"O valor deve ser entre {{min}} e {{max}}",creditsInfo:"Este cartão presente inclui <strong>{{credits}} créditos de mensagens</strong> para criar apps",deliveryMethodTitle:"Escolha o método de entrega",deliveryEmail:"Enviar e-mail ao destinatário (imediatamente após a compra)",deliveryPdf:"Enviar e-mail para mim (PDF para imprimir)",recipientTitle:"Para",recipientName:"Nome",recipientNamePlaceholder:"Nome do destinatário",recipientEmail:"E-mail",recipientEmailPlaceholder:"E-mail do destinatário",messageLabel:"Mensagem do cartão presente (opcional)",messagePlaceholder:"Adicionar uma mensagem pessoal...",suggestMessage:"Sugerir uma mensagem",suggestFallbackName:"amigo",messageCharCount:"{{count}}/300 caracteres",senderTitle:"De",senderName:"Seu nome",senderNamePlaceholder:"Seu nome",submitButton:"Continuar para compra",submitting:"Processando...",errorGeneric:"Algo deu errado",historyEmpty:"Nenhum cartão presente ainda. Compre um para um amigo!",historyTo:"Para {{name}}",historyCodeLabel:"Código do cartão presente",historyCopy:"Copiar",historyCopied:"Copiado",historyRedeemed:"Este cartão presente foi resgatado",historyRedeemedOn:"Este cartão presente foi resgatado em {{date}}",historySentTo:"Enviado para {{email}}",statusSent:"Enviado",statusRedeemed:"Resgatado",statusExpired:"Expirado",statusProcessing:"Processando",statusPending:"Pendente",statusRevoked:"Revogado",designTitle:"Escolher um design",historyActions:"Ações",designClassic:"Clássico",designSunrise:"Nascer do Sol",designOcean:"Oceano",cardLabel:"Cartão Presente",cardCreditsLabel:"créditos de mensagens",cardFor:"Para {{name}}",cardDefaultName:"Seu Amigo",historyError:"Não foi possível carregar os cartões presente. Tente novamente.",historyDateIssued:"Data de emissão",historyRecipient:"Destinatário",historyAmount:"Valor",historyStatus:"Status",historyCode:"Código",historySenderDetails:"Detalhes do remetente",historySentToYou:"Enviado para você",historyViewCode:"Ver código",historyHideCode:"Ocultar código",historyDownloadPdf:"Baixar PDF",historyResend:"Reenviar",historyResendSuccess:"E-mail do cartão presente reenviado com sucesso!",historyResendError:"Falha ao reenviar e-mail. Tente novamente.",historyDownloadError:"Falha no download. Tente novamente.",historyCredits:"créditos",emailInvalid:"Por favor, digite um endereço de e-mail válido",buyGiftCard:"Comprar Cartão Presente",giftAndReferrals:"Presentes & Indicações",redeemTitle:"Você recebeu um cartão presente!",redeemDescription:"Após o resgate, os créditos serão aplicados ao seu espaço de trabalho.",redeemSelectWorkspace:"Selecionar um espaço de trabalho",redeemBackToWorkspace:"Voltar ao espaço de trabalho",redeemCheckCreditUsage:"Verificar uso de créditos",redeemErrorDescription:"Este código já foi utilizado e não pode ser resgatado novamente. Se não tiver certeza do que aconteceu, verifique seus créditos ou entre em contato com o suporte.",redeemDefaultWorkspace:"este",error:"Erro",redeemSuccess:"Cartão presente resgatado!",redeemSuccessDescription:"{{credits}} créditos adicionados a {{workspace}}.",redeemButton:"Resgatar cartão presente",redeemNotNow:"Agora não",redeemDocsLink:"Saiba como os créditos de cartões presente funcionam em <docsLink>nossa documentação</docsLink>",redeemCouponDescription:"Resgate-o para obter {{amount}} de desconto na sua assinatura.",redeemCouponAppliedTitle:"Cartão presente aplicado!",redeemCouponReadyTitle:"Cartão presente pronto para usar!",redeemCouponNoWorkspace:"Nenhum espaço de trabalho selecionado",coupon:{title:"Resgatar um cupom ou cartão presente",description:"Digite seu código para adicionar créditos ao seu saldo.",placeholder:"Digite seu código",apply:"Aplicar",success:"Cupom aplicado com sucesso!",invalidCode:"O código é inválido. Tente novamente.",notFound:"Código de cupom não encontrado. Verifique o código e tente novamente.",giftCardNotFound:"Cartão presente não encontrado. Verifique o código e tente novamente.",redeemFailed:"Não foi possível resgatar o cartão presente. Tente novamente."},errors:{invalidRecipientEmail:"Por favor, insira um endereço de e-mail válido",recipientEmailRequired:"O e-mail do destinatário é obrigatório",checkoutFailed:"Não foi possível iniciar a compra. Tente novamente.",confirmPurchaseFailed:"Não foi possível confirmar a compra. Tente novamente.",alreadyRedeemed:"Este cartão presente já foi resgatado",notAvailable:"Este cartão presente não está disponível para resgate",expired:"Este cartão presente expirou",notWorkspaceMember:"Você não é membro do espaço de trabalho selecionado",networkError:"Erro de rede. Por favor, verifique sua conexão com a internet e tente novamente.",rateLimitExceeded:"Muitas tentativas. Tente novamente mais tarde.",permissionDenied:"Apenas proprietários do espaço de trabalho podem resgatar cartões presente. Peça a um proprietário para aplicar este código.",invalidPlanPrice:"Este plano não está disponível para pagamento com cartão presente. Selecione outro plano."},creditBanner:"Você tem {{amount}} de crédito de cartão presente na sua conta. Será aplicado automaticamente na sua próxima fatura.",upgradeGiftCardWarning:"Seu plano atual foi adquirido com um cartão presente. O crédito do cartão presente não é transferido em atualizações — você será cobrado pelo preço proporcional."},VZ={back:"Voltar"},$Z="Carregando...",WZ={message:"Conectado como <strong>{{email}}</strong> — não corresponde à conta esperada.",switchAccount:"Trocar conta",dismiss:"Fechar banner"},GZ={topBar:zZ,createWorkspacePage:MZ,workspaceMenu:NZ,agentEditorMenu:FZ,credits:LZ,community:jZ,workspaceSettings:OZ,referralCta:BZ,sidebar:UZ,giftCards:qZ,common:VZ,loading:$Z,userMismatch:WZ},HZ={notifications:"Notificações",latestNews:"Últimas notícias"},YZ={loading:"Carregando...",loadingMore:"Carregando mais...",errorLoading:"Falha ao carregar notificações",noNotifications:"Sem notificações ainda",noMoreNotifications:"Sem mais notificações",noNews:"Sem notícias ainda"},KZ={markAllAsRead:"Marcar tudo como lido",readMore:"Leia mais",showLess:"Ver menos",upgrade:"Fazer upgrade",percentOff:"{{percent}}% de desconto"},ZZ={tabs:HZ,states:YZ,actions:KZ},JZ="Plano e faturamento",QZ="Gerenciar Assinatura",XZ={planAndBilling:"Plano e faturamento"},e8={details:"Detalhes da Assinatura",cancelPlan:"Cancelar Plano",cancelling:"Cancelando...",explorePlans:"Explorar Planos",reactivatePlan:"Reativar Plano",reactivating:"Reativando...",upgradePlan:"Fazer Upgrade",updatePayment:"Atualizar Pagamento",managePlan:"Gerenciar Plano",yourPlan:"Seu Plano",creditsPerMonth:"Créditos por mês",price:"Preço",nextBillingDate:"Próxima Data de Cobrança",highlights:"Destaques do plano",cancelChange:"Cancelar Alteração",cancelTooltip:"Para cancelar sua assinatura, primeiro cancele o downgrade agendado",currentlyUsing:"Você está usando o plano <bold>{{plan}}</bold>",subscriptionEndsOn:"Sua assinatura encerrará em {{date}}",subscriptionRenewsOn:"Sua assinatura renova em {{date}}",noActiveSubscription:"Sem assinatura ativa",keepSubscription:"Quer manter sua assinatura? Clique em <manageLink>Gerenciar Plano</manageLink> e cancele a alteração.",planChangeNotice:"Seu plano mudará para {{plan}} ao final do ciclo de cobrança atual.",cancelOnDate:"Seu plano será cancelado em {{date}}. Reative para manter seus créditos e recursos atuais.",cancelNoDate:"Sua assinatura está programada para ser cancelada. Reative para manter seus créditos e recursos atuais.",free:"Gratuito",monthly:"mensal",yearly:"anual",subscriptionCancelled:"Assinatura Cancelada",staysActiveUntil:"Tudo permanece ativo até {{date}}",creditsFormat:"{{messageCredits}} mensagem | {{integrationCredits}} integração",priceFormat:"{{amount}} {{symbol}}/{{period}}"},t8={privateApps:"Aplicativos privados",inAppCodeEditing:"Edição de código no app",unlimitedApps:"Aplicativos ilimitados",removeBase44Badge:"Remover badge Base44",connectDomain:"Conectar um domínio",backendFunctions:"Funções de backend",github2WaySync:"Sincronização bidirecional com Github",customOAuth:"OAuth personalizado do Google Console",aiModelSelection:"Seleção de modelo de IA",stripeIntegration:"Integração com Stripe",customEmailDomain:"Domínio de e-mail personalizado",appStoreFileDownloads:"Downloads de arquivos da loja de apps"},a8={title:"Pagamento em atraso",description:"O pagamento da sua assinatura está em atraso. Por favor, atualize seu método de pagamento para restaurar o acesso completo aos recursos do seu plano.",tryAgain:"Tentar novamente",trying:"Tentando..."},n8={title:"Método de Pagamento",manage:"Gerenciar",noPaymentMethod:"Nenhum método de pagamento cadastrado",default:"Padrão",expires:"Expira {{month}}/{{year}}"},i8={title:"Informações de Faturamento",manage:"Gerenciar",name:"Nome",email:"E-mail",billingAddress:"Endereço de Faturamento",noInformation:"Nenhuma informação de faturamento disponível"},r8={title:"Histórico de Faturamento",noHistory:"Nenhum histórico de faturamento disponível",loading:"Carregando histórico de faturamento...",loadError:"Falha ao carregar dados de faturamento",planDescription:"Plano {{plan}}",downloadInvoice:"Baixar Fatura"},o8={managingBillingFor:"Gerenciando faturamento para <bold>{{name}}</bold>",subscriptionRenewsOn:"A assinatura do espaço de trabalho renova em {{date}}",noActiveSubscription:"Sem assinatura ativa no espaço de trabalho",manage:"Gerenciar",defaultName:"espaço de trabalho",addSeats:"Adicionar Licenças",loadError:"Falha ao carregar histórico de faturamento do espaço de trabalho",workspaceSeats:"Licenças do Espaço de Trabalho",contactAdmin:{title:"Plano do espaço de trabalho",subtitle:"Gerenciado pelo seu espaço de trabalho",body:"Precisa de mais créditos? Entre em contato com o administrador do seu espaço de trabalho para fazer upgrade do plano da equipe."}},s8={portalError:"Falha ao abrir o portal de cobrança. Tente novamente mais tarde ou entre em contato com o suporte.",paymentPortalError:"Falha ao abrir o gerenciamento de pagamento. Por favor, tente novamente.",scheduleCancelSuccess:"Agendamento de assinatura cancelado com sucesso",scheduleCancelError:"Falha ao cancelar o agendamento de assinatura. Por favor, tente novamente mais tarde.",subscriptionCancelError:"Falha ao cancelar a assinatura. Por favor, tente novamente."},l8={title:JZ,manageSubscription:QZ,breadcrumb:XZ,subscription:e8,features:t8,pastDue:a8,paymentMethod:n8,billingInformation:i8,billingHistory:r8,workspace:o8,toasts:s8},c8={title:"Vamos conversar",subtitle:"Conecte-se com nossa equipe para ver como o Base44 pode ajudar sua organização.",form:{firstName:"Nome*",lastName:"Sobrenome*",workEmail:"E-mail corporativo*",companyWebsite:"Site da empresa*",role:"Cargo*",discussion:"O que você gostaria de discutir?",submit:"Enviar"},success:{title:"Agradecemos por entrar em contato!",description:"Recebemos sua mensagem e nossa equipe entrará em contato em até 24 horas. Estamos animados para ajudá-lo em sua jornada com o Base44!"}},d8={iso27001:{title:"ISO 27001",subtitle:"Gestão de segurança ISO"},soc2:{title:"SOC 2 Tipo II",subtitle:"SOC para organizações de serviços"},gdpr:{title:"RGPD",subtitle:"Regulamento de proteção de dados e privacidade"}},u8={fiveApps:"5 aplicativos",unlimitedCollaborators:"Colaboradores ilimitados",userAnalytics:"Análises de usuário",aiAgents:"Agentes de IA",limitedDb:"Banco de dados limitado a 512 MB",unlimitedApps:"Aplicativos ilimitados",unlimitedNumberOfApps:"Número ilimitado de aplicativos",connectDomain:"Conectar um domínio",connectorsIntegrations:"Conectores e integrações",backendFunctions:"Funções de backend",scaledUserAnalytics:"Análises de usuário escaláveis",privateApps:"Aplicativos privados",flexibleAiModelControl:"Controle flexível do modelo de IA",removeBase44Branding:"Remover a marca Base44",inAppCodeEditing:"Edição de código no aplicativo",inAppCodeEdits:"Edição de código no aplicativo",freeDomainOneYear:"Domínio gratuito por 1 ano",creditsToShare:"25 créditos para compartilhar com um amigo",githubTwoWayIntegration:"Integração bidirecional com GitHub",githubIntegration:"Integração com GitHub",earlyAccessBeta:"Acesso antecipado a funcionalidades beta",premiumSupport:"Suporte Premium",sso:"SSO",prioritySupport:"Suporte prioritário",workspacePublishingControls:"Controles de publicação do espaço de trabalho",workspaceTemplates:"Modelos de espaço de trabalho",ipWhitelisting:"Lista de permissões de IP",workspaceUsageAnalytics:"Análises de uso do espaço de trabalho",userRolesPermissions:"Funções e permissões de usuário",dataTrainingOptOut:"Exclusão do treinamento de dados",scim:"SCIM",creditConsumptionControl:"Controle de consumo de créditos",dedicatedAccountManager:"Gerente de conta dedicado",dedicatedSolutionEngineer:"Engenheiro de soluções dedicado",enterpriseSupport:"Suporte empresarial",customSecurityCapabilities:"Capacidades de segurança personalizadas",customDatabaseStorage:"Armazenamento de banco de dados personalizado",customRateLimits:"Limites de taxa personalizados",tailoredOnboarding:"Onboarding e capacitação personalizados",workspaceMonitoringApi:"API de monitoramento do espaço de trabalho"},p8={unlimitedApps:"Apps ilimitados",unlimitedCollaboratorsSharedCredits:"Colaboradores ilimitados com créditos compartilhados",customDomain:"Domínio personalizado",removeBase44Branding:"Remover marca Base44",builtInIntegrations:"Integrações incluídas",automations:"Automações",chooseAiModel:"Escolha seu modelo de IA",inAppCodeEditing:"Edição de código no app",twoWayGithubSync:"Sincronização bidirecional com GitHub",privateTemplates:"Modelos privados",earlyAccessNewFeatures:"Acesso antecipado a novos recursos",prioritySupport:"Suporte prioritário"},m8={choosePlan:"Escolha o plano certo para você",usage:"Uso",back:"Voltar",chooseBillingCycleUpgrade:"Escolha seu ciclo de cobrança para fazer upgrade para {{planName}}",selectBillingCycle:"Escolha um ciclo de cobrança para o seu plano {{planName}}",viewBilling:"Ver cobrança",seePricing:"Ver preços"},g8={desktop:"Base44 faz parte do <wixLogo/> - Com a confiança de mais de 250 milhões de pessoas em todo o mundo",mobile:{line1:"Base44 faz parte do <wixLogo/>",line2:"Com a confiança de mais de 250 milhões de pessoas em todo o mundo"}},h8={badge:{recommended:"Recomendado",popular:"Popular",mostPopular:"Mais popular",currentPlan:"Plano atual",discountOff:"{{discount}} de desconto"},button:{processing:"Processando...",notAvailable:"Não disponível",manageSubscription:"Gerenciar assinatura",managePlan:"Gerenciar plano",currentPlan:"Plano atual",upgradePlan:"Fazer upgrade do plano",upgradeTo:"Fazer upgrade para {{planName}}",downgradeTo:"Fazer downgrade para {{planName}}",downgradePlan:"Fazer downgrade do plano",switchPlan:"Trocar plano",subscribeTo:"Assinar {{planName}}",bookDemo:"Agendar demo",getPlan:"Obter {{planName}}"},credits:{monthly:"Créditos mensais",integration:"Créditos de integração",monthlyLower:"créditos mensais",integrationLower:"créditos de integração",messageCredits:"créditos de mensagens",perMonth:"/mês",sharedAcrossUsers:"Compartilhado entre usuários ilimitados",messageShort:"mensagens",integrationShort:"integração"},features:{highlights:"Destaques do plano:",allInBusinessPlus:"Tudo no Business mais:",allInBuilderPlus:"Tudo no Builder mais:",unlimitedAgents:"Número ilimitado de agentes"},free:{dailyCredits:"{{dailyCredits}} créditos diários (até {{monthlyMax}}/mês)",integrationCredits:"{{amount}} créditos de integração"},enterprise:{description:"Governança, escalabilidade e suporte empresarial, com um modelo de <bold>preço personalizado</bold> e uma quantidade de créditos personalizada."}},f8={offTiers:"Planos com 30% de desconto",currentPlan:"Plano atual",popular:"Popular",messageCredits:"créditos de mensagens",integrationCredits:"créditos de integração",perMonth:"/mês",placeholder:"Selecionar créditos",footer:{cantFind:"Não encontrou um plano adequado?",contactUs:"Fale conosco"}},v8={button:{cancel:"Cancelar",confirmUpgrade:"Confirmar upgrade",confirmDowngrade:"Confirmar downgrade",confirmSwitch:"Confirmar troca",processing:"Processando...",continue:"Continuar"},upgrade:{title:"Confirmar upgrade de assinatura",upgradeDescription:"Você está prestes a fazer upgrade para o plano {{planName}} por <price/>. Sua assinatura será atualizada imediatamente e você será cobrado proporcionalmente pelo restante do seu ciclo de faturamento.",upgradeDescriptionYearly:"Você está prestes a fazer upgrade para o plano anual {{planName}} por <price/>. Sua assinatura será atualizada imediatamente e você será cobrado proporcionalmente pelo restante do seu ciclo de faturamento.",upgradeDescriptionShort:"Você está prestes a fazer upgrade para o plano {{planName}} por <price/>. Sua assinatura será atualizada imediatamente e você será cobrado proporcionalmente."},downgrade:{title:"Confirmar downgrade de assinatura",description:"Você está prestes a fazer downgrade para o plano {{planName}} por {{price}}/mês. Esta alteração entrará em vigor no final do seu ciclo de faturamento atual."},switch:{title:"Trocar plano",switchDescription:"Ao trocar para o plano {{planName}}, seus recursos disponíveis serão atualizados e seus limites mensais serão definidos para <bold>{{messageCredits}} créditos de mensagens e {{integrationCredits}} créditos de integração.</bold>",nextBillingDate:"Essas alterações entrarão em vigor em {{date}}, no início do seu próximo ciclo de faturamento.",nextBillingCycle:"Essas alterações entrarão em vigor no início do seu próximo ciclo de faturamento."},manageSubscription:{title:"Gerenciar sua assinatura",description:"Escolha como você gostaria de gerenciar sua assinatura {{planName}}.",upgradeToYearly:"Fazer upgrade para faturamento anual",upgradeToYearlySavings:"Economize e ganhe um domínio grátis + 25 créditos para compartilhar",upgradeToYearlySavingsStarter:"Economize e ganhe 25 créditos para compartilhar",managePayments:"Gerenciar pagamentos",managePaymentsDescription:"Atualizar método de pagamento, ver faturas e mais",managePaymentsDescriptionAlt:"Atualizar método de pagamento, ver faturas e mais"},upgradeToYearly:{titleV1:"Confirmar upgrade de assinatura",titleV2:"Fazer upgrade do plano",descriptionV2:"Após o upgrade, você será cobrado proporcionalmente pelo tempo restante do seu plano atual. A partir da sua próxima data de faturamento, você será cobrado pelo preço completo do plano de {{price}} × 12 meses.",benefitsTitle:"🎁 Benefícios anuais",freeDomain:"Domínio grátis por um ano",shareCredits:"25 créditos para compartilhar com amigos",betterValue:"Melhor custo-benefício com faturamento anual"}},b8={title:"Perguntas frequentes",whatIsBase44:{question:"O que é o Base44?",answer:{description:"O Base44 é uma plataforma alimentada por IA que permite criar aplicativos de software personalizados sem programação. Ele usa processamento de linguagem natural para entender seus requisitos e gerar software funcional com base em suas descrições.",accessibility:"Nossa plataforma foi projetada para ser fácil de usar e acessível a usuários não técnicos, permitindo que você crie aplicativos poderosos por meio de conversas simples com nossa IA."}},freePlan:{question:"O que está incluído no plano gratuito?",answer:{allowances:"O plano gratuito oferece uma cota diária de 5 mensagens e um limite mensal de 25 mensagens no total. Você também recebe 100 créditos de integração para experimentar várias integrações, como autenticação, banco de dados e análises.",coreAccess:"Com o plano gratuito, você tem acesso a todos os tipos de integração principais, permitindo criar aplicativos totalmente funcionais com autenticação de usuário, armazenamento de dados e muito mais – tudo sem custo."}},integrationCredits:{question:"O que são créditos de integração?",answer:{definition:"Os créditos de integração são usados para acessar as diversas integrações do Base44 dentro do seu aplicativo.",capabilities:"Essas integrações aprimoram a funcionalidade do seu app, incluindo LLMs, upload de arquivos, compreensão de imagens, geração de imagens, envio de e-mails, envio de SMS, consultas de banco de dados e muito mais. O número de créditos de integração em seu plano determina quantas dessas solicitações você pode fazer por mês.",expiration:"Os créditos não utilizados expiram no final do seu ciclo de faturamento mensal (na sua data de redefinição).",learnMore:"Saiba mais sobre como os créditos são usados na Base de Conhecimento."}},appTypes:{question:"Que tipos de aplicativos posso criar com o Base44?",answer:{examples:"O Base44 é versátil e pode ser usado para criar uma ampla variedade de aplicativos, incluindo, mas não se limitando a: produtos SaaS totalmente funcionais, ferramentas de back-office, aplicativos de produtividade pessoal, portais para clientes e ferramentas de automação de processos de negócios.",prototyping:"Você também pode usá-lo para prototipagem rápida e criação de MVPs, permitindo validar suas ideias rapidamente sem investir em recursos de desenvolvimento caros."}},ownership:{question:"Quem é o proprietário dos aplicativos criados com o Base44?",answer:{yourProperty:"Entre você e o Base44, todos os aplicativos e conteúdos gerados por meio de nossa plataforma serão considerados de sua propriedade. Não reivindicamos nenhum direito de propriedade sobre o que você cria usando o Base44.",intellectualProperty:"Sua propriedade intelectual é sua, e você é livre para usar, modificar, distribuir ou vender os aplicativos gerados conforme permitido por lei."}},deployment:{question:"Como os aplicativos Base44 são implantados?",answer:{instantAccess:"Com o Base44, a implantação é incrivelmente simples. Seus aplicativos ficam instantaneamente utilizáveis e compartilháveis assim que você os cria. Basta usar e compartilhar a URL do seu app com outras pessoas.",noHosting:"Não há necessidade de etapas separadas de hospedagem ou implantação, tornando incrivelmente fácil colocar seu aplicativo em funcionamento rapidamente."}},planLimits:{question:"O que acontece se eu atingir os limites do meu plano?",answer:{limitations:"Quando você atingir seu limite diário de mensagens, precisará aguardar até o dia seguinte para enviar mais mensagens. Se você atingir seu limite mensal, não poderá enviar mensagens adicionais ou fazer solicitações de integração até o início do seu próximo ciclo de faturamento.",upgradeOption:"Para evitar interrupções no desenvolvimento e uso do seu app, você pode atualizar para um plano de nível superior com limites aumentados a qualquer momento no seu painel de faturamento."}}},y8={pendingChange:{title:"Alteração de assinatura pendente",message:"Você tem uma alteração de assinatura para o plano {{tierName}} programada para entrar em vigor no final do seu ciclo de faturamento atual.",subMessage:'Nota: Para cancelar sua assinatura, primeiro cancele esta alteração e depois use "gerenciar pagamentos" para cancelar.',cancelChange:"Cancelar alteração",cancelling:"Cancelando..."},cancellation:{title:"Cancelamento de assinatura programado",message:"Sua assinatura terminará em {{endDate}}. Até lá, você tem acesso completo a todos os recursos.",subMessage:"Quer manter sua assinatura? Você pode reativá-la com um clique.",managePayments:"Gerenciar pagamentos",processing:"Processando..."}},k8={currentPlan:"Seu plano atual é {{displayName}},",withCredits:"com {{messageCredits}} créditos de mensagens e {{integrationCredits}} créditos de integração."},w8={title:"Benefícios do Base44:",responsiveVisualEditor:"Editor visual responsivo",builtInBackend:"Backend integrado",userManagement:"Gerenciamento de usuários"},A8={title:"Pagamento de assinatura em atraso",tryAgain:"Tentar novamente",trying:"Tentando...",updatePaymentMethod:"Atualizar método de pagamento",description:"Seu último pagamento não foi processado. Tente novamente ou atualize seu método de pagamento para restaurar o acesso completo ao seu plano."},S8={error:"Erro",success:"Sucesso",checkoutError:"Falha ao criar sessão de checkout. Por favor, tente novamente mais tarde.",subscriptionUpdated:"Assinatura atualizada",downgradeScheduled:"Sua assinatura foi programada para redução no final do seu ciclo de faturamento.",upgradeSuccess:"Sua assinatura foi atualizada para um plano superior com sucesso. As alterações serão refletidas em breve.",updateError:"Falha ao atualizar a assinatura. Por favor, tente novamente mais tarde.",portalError:"Falha ao abrir o portal de faturamento. Por favor, tente novamente mais tarde.",scheduleCancelSuccess:"Programação de assinatura cancelada com sucesso",scheduleCancelError:"Falha ao cancelar a programação de assinatura. Por favor, tente novamente mais tarde.",paymentPortalError:"Falha ao abrir o gerenciamento de pagamentos. Por favor, tente novamente."},C8={loadError:"Falha ao carregar informações de faturamento do espaço de trabalho",loadErrorAlert:"Não foi possível carregar as informações de faturamento do espaço de trabalho. Por favor, tente novamente mais tarde.",seatTypePlan:"Plano {{seatType}}",currentPlanContact:"Você está atualmente no plano {{seatType}}. Para fazer alterações, entre em contato com o {{adminType}} do seu espaço de trabalho.",workspaceOwner:"Proprietário do espaço de trabalho:",workspaceAdmin:"Administrador do espaço de trabalho:",viewerAccess:"Acesso de visualização",viewerAccessDescription:"Você atualmente tem acesso de visualização neste espaço de trabalho. Para obter um assento com acesso completo, entre em contato com o {{adminType}} do seu espaço de trabalho.",adminAccessMessage:"<strong>Acesso de administrador:</strong> Visite o <a>painel do espaço de trabalho</a> para gerenciar assentos, faturamento e membros da equipe.",adminTypes:{owner:"proprietário",administrator:"administrador"}},D8={loadError:"Não foi possível carregar as informações do espaço de trabalho. Por favor, tente novamente mais tarde.",workspacePlan:"Plano do espaço de trabalho:",renews:"Renovação:",workspaceOwner:"Proprietário do espaço de trabalho",contactOwner:"Para alterações de faturamento ou dúvidas sobre a assinatura, entre em contato com o proprietário do seu espaço de trabalho.",ownerLabel:"Proprietário do espaço de trabalho:",adminAccessMessage:"<strong>Acesso de administrador:</strong> Visite a página de <a>membros do espaço de trabalho</a> para gerenciar membros.",billingManagedByOwner:"O faturamento é gerenciado pelo proprietário do seu espaço de trabalho. Entre em contato com o proprietário listado acima para qualquer dúvida relacionada ao faturamento.",roles:{owner:{title:"Proprietário",description:"Acesso completo ao faturamento, configurações e gerenciamento de membros do espaço de trabalho."},admin:{title:"Administrador",description:"Pode gerenciar configurações e membros do espaço de trabalho, mas não pode modificar o faturamento."},editor:{title:"Editor",description:"Pode criar e editar apps dentro deste espaço de trabalho."},viewer:{title:"Visualizador",description:"Pode visualizar apps neste espaço de trabalho com acesso somente leitura."},member:{title:"Membro",description:"Membro da equipe com acesso aos apps do espaço de trabalho."},guest:{title:"Convidado",description:"Colaborador externo com acesso a apps específicos neste espaço de trabalho."}}},T8={title:"Segurança e conformidade",iso:{title:"ISO/IEC 27001",subtitle:"Gestão de segurança ISO/IEC"},soc2:{title:"SOC 2 Type II",subtitle:"SOC para organizações de serviços"},gdpr:{title:"GDPR",subtitle:"Regulamento de proteção de dados e privacidade"}},E8={title:"Base44 para Empresas",subtitle:"Capacite grandes organizações a criar soluções que se encaixam perfeitamente em suas equipes, com segurança e em escala",contactUs:"Fale Conosco",features:{onboarding:{title:"Integração e Treinamento",description:"Planos de integração personalizados combinados com treinamentos ao vivo e recursos, projetados para ajudar administradores e usuários finais a adotarem rapidamente."},accountTeam:{title:"Equipe de Conta Dedicada",description:"Trabalhe com um gerente de contas e um engenheiro de soluções designados, fornecendo orientação direta, escalações e alinhamento de roadmap."},prioritySupport:{title:"Suporte prioritário, garantido",description:"Obtenha assistência prioritária garantida e tempos de resposta definidos por meio de um canal de suporte dedicado."},capabilities:{title:"Capacidades de Nível Empresarial",description:"Recursos de segurança, conformidade, gerenciamento e monitoramento — proporcionando o controle e a flexibilidade necessários em escala."}}},P8={yearly:"Anual",monthly:"Mensal",yearlyInline:"anual",monthlyInline:"mensal",monthlyCredits:"Créditos mensais",integrationCredits:"Créditos de integração",priceSuffixYearly:" × 12 meses",priceSuffixMonthly:" / por mês",off:"OFF",save:"ECONOMIZE",discountBadge:"{{discount}} OFF",saveBadge:"ECONOMIZE {{amount}}",planNotFound:"Preços do plano não disponíveis. Por favor, volte e tente novamente.",upgradeDialogTitle:"Confirmar atualização de assinatura",upgradeDialogDescription:"Você está prestes a atualizar para o plano {{planName}} por <price/>/mês. Sua assinatura será atualizada imediatamente e você será cobrado um valor proporcional pelo restante do seu ciclo de cobrança.",noteMonthlyExcludes:"NOTA: A assinatura mensal não inclui:",whatsIncluded:"O que está incluído no plano {{period}}",chooseYearly:"Escolha uma assinatura <yearlyLink>anual</yearlyLink> para aproveitar ao máximo seu plano premium",yearlyFeatures:{discount:"Aproveite um desconto especial e economize",freeDomain:"Domínio gratuito por 1 ano",shareCredits:"Receba 25 créditos para compartilhar com um amigo"},monthlyFeatures:{discount:"Desconto especial e economias",freeDomain:"Domínio gratuito por 1 ano",shareCredits:"25 créditos para compartilhar com um amigo"},planNotAvailable:"Preços do plano não disponíveis. Por favor, tente novamente.",goBack:"Voltar",continueToCheckout:"Continuar para o pagamento",confirmSubscriptionUpgrade:"Confirmar upgrade de assinatura",upgradeDescription:"Você está prestes a fazer upgrade para o plano {{planName}} por <strikethrough>{{originalPrice}}</strikethrough>{{price}}/mês. Sua assinatura será atualizada imediatamente e será cobrado um valor proporcional pelo restante do seu ciclo de faturamento.",cancel:"Cancelar",confirmUpgrade:"Confirmar upgrade",processing:"Processando...",studentDiscountFootnote:"A oferta se aplica ao primeiro ano (12 meses) de um novo plano Starter. Uso único por usuário; o desconto não pode ser reativado após o cancelamento."},_8={bannerTitle:"Estudante ou professor? Até {{percent}}% de desconto no plano Starter",bannerSubtitle:"Verifique seu e-mail universitário para desbloquear preços com desconto",verifiedWith:"Verificado com {{email}} - até {{percent}}% de desconto",starterPlan:"Plano Starter",active:"Ativo",dialogTitle:"Desconto estudantil",surveyTitle:"Conte-nos sobre você",alreadyActiveDesc:"Seu desconto estudantil já está ativo.",emailStepDesc:"Verifique seu e-mail universitário para desbloquear preços estudantis.",codeStepDesc:"Enviamos um código de 6 dígitos para {{email}}",surveyStepDesc:"Apenas algumas perguntas rápidas para completar sua verificação.",benefitDiscount:"Até {{percent}}% de desconto",benefitDiscountDetail:"no plano Starter",benefitAccess:"Acesso completo",benefitAccessDetail:"a todos os recursos do Starter",benefitClaimOnce:"Resgate uma vez",benefitClaimOnceDetail:"use a qualquer momento no Starter",alreadyApplied:"Seu desconto estudantil já está aplicado",alreadyAppliedDesc:"Verificado com {{email}}. Os preços com desconto são exibidos nos planos elegíveis acima.",gotIt:"Entendi",emailPlaceholder:"você@universidade.edu",emailHint:"Aceitamos .edu, .ac.uk, .ac.il e outros domínios universitários.",sending:"Enviando...",sendCode:"Enviar código de verificação",codePlaceholder:"Digite o código de 6 dígitos",verifying:"Verificando...",verifyCode:"Verificar código",changeEmail:"Alterar e-mail",resendCooldown:"Reenviar código ({{seconds}}s)",resendCode:"Reenviar código",role:"Função",student:"Estudante",teacher:"Professor",intendedUseLabel:"Para que você planeja usar o Base44?",intendedUsePlaceholder:"ex.: Projeto de aula, ferramenta de pesquisa, tese...",fieldOfStudy:"Qual é sua área de estudo?",fieldOfTeaching:"Qual é sua área de ensino?",selectField:"Selecione a área de estudo...",searchFields:"Pesquisar áreas...",other:"Outro",specifyField:"Por favor especifique...",graduationDate:"Data prevista de formatura",month:"Mês",year:"Ano",activating:"Ativando...",verifyingEmail:"Verificando e-mail...",activateDiscount:"Ativar desconto",errorNoEmail:"Por favor insira seu endereço de e-mail universitário.",errorInvalidEmail:"Por favor insira um endereço de e-mail válido.",errorSendFailed:"Falha ao enviar o código de verificação. Por favor tente novamente.",errorEmailAlreadyClaimed:"Este e-mail universitário já está vinculado a outra conta.",errorNoCode:"Por favor insira o código de 6 dígitos do seu e-mail.",errorInvalidCode:"Código inválido ou expirado. Por favor tente novamente.",errorNoIntendedUse:"Por favor nos diga para que você planeja usar o Base44.",errorNoField:"Por favor selecione sua área de estudo.",errorNoFieldOther:"Por favor especifique sua área de estudo.",errorNoGraduation:"Por favor selecione sua data prevista de formatura.",toastActivatedTitle:"Desconto estudantil ativado",toastActivatedDesc:"Seus preços estudantis agora estão aplicados aos planos elegíveis. Role para cima para ver os preços atualizados.",errorActivateFailed:"Falha ao ativar o desconto. Por favor tente novamente.",toastResentTitle:"Código reenviado",toastResentDesc:"Um novo código de verificação foi enviado para seu e-mail.",errorResendFailed:"Falha ao reenviar o código. Por favor aguarde um momento e tente novamente."},x8="Seu plano atual foi adquirido com um cartão presente. O crédito do cartão presente não é transferido em atualizações — você será cobrado pelo preço proporcional.",I8={title:"Compra realizada com sucesso",redirecting:"Redirecionando para o app em {{seconds}}s...",button:"Voltar ao app"},R8={modal:c8,certificates:d8,features:u8,borderTag:p8,header:m8,messageLabel:g8,card:h8,dropdown:f8,dialog:v8,faq:b8,notices:y8,manageSubscription:k8,benefits:w8,overduePayment:A8,toasts:S8,workspaceBilling:C8,workspaceRoles:D8,security:T8,enterprise:E8,periodSelector:P8,studentDiscount:_8,upgradeGiftCardWarning:x8,returnToApp:I8},z8="Convide amigos e ganhe créditos",M8="Convide amigos e ganhe créditos",N8="Convide e ganhe créditos",F8="Compartilhe seu link e ganhe {{credits}} créditos quando seus amigos publicarem o primeiro app",L8={title:"Incrível! Você atingiu o máximo de indicações",description:"Você pode indicar até {{maxReferrals}} amigos no total",extra:"({{extra}} adicionais não ganharão créditos)"},j8={tryAgain:"Tentar novamente",copied:"Copiado para a área de transferência!",copyButton:"Copiar",copiedButton:"Copiado"},O8={title:"Como funciona",shareLink:"Compartilhe seu link de indicação exclusivo com amigos",signupBonus:"Eles ganham <bold>{{credits}} créditos</bold> ao se cadastrarem",publishReward:"Você ganha <bold>{{credits}} créditos</bold> quando publicam o primeiro app"},B8="Suas indicações ({{current}}/{{max}})",U8={registered:"Registrado",earned:"Ganho"},q8={back:"Voltar",close:"Fechar",srTitle:"Programa de indicação",baseDayBadge:"Base44 Day",creditsCount:"{{credits}} créditos",earnCredits:"Ganhe {{credits}} créditos",termsAndConditions:"Termos e condições",termsDescription:"Termos e condições do programa de indicação"},V8={title:"Termos e condições",eligibility:{title:"Elegibilidade",newUsersOnly:"Somente novos usuários podem participar desta oferta de indicação. Contas existentes não estão incluídas.",shareResponsibly:"Pedimos que você compartilhe seu link de indicação com responsabilidade. Postá-lo em lugares irrelevantes ou de spam pode resultar na remoção do programa."},credits:{title:"Créditos de indicação",earnOnPublish:"Você ganha {{credits}} créditos quando um amigo indicado publica o seu primeiro app",bonusOnSignup:"Amigos indicados recebem {{credits}} créditos de bônus ao se cadastrarem",maxPerAccount:"Máximo de 5 indicações bem-sucedidas por conta",noCashValue:"Créditos não têm valor em dinheiro e não podem ser transferidos"},restrictions:{title:"Restrições",voidFraudulent:"A Base44 reserva-se o direito de anular indicações fraudulentas",nonTransferable:"Códigos de indicação não são transferíveis"},footer:"A Base44 reserva-se o direito de modificar ou encerrar este programa de indicação a qualquer momento. As alterações serão comunicadas pela plataforma."},$8={title:z8,titleDesktop:M8,titleMobile:N8,subtitle:F8,maxReached:L8,link:j8,howItWorks:O8,yourReferrals:B8,status:U8,dialog:q8,terms:V8},W8={title:"Spotlight",subtitle:"Explore aplicações e sites excepcionais criados com Base44",loading:"Carregando Spotlight…",errorMessage:"Não foi possível carregar o Spotlight. Tente novamente mais tarde.",empty:"Ainda não há apps no Spotlight."},G8={title:"Erro",description:"Falha ao carregar os apps do Spotlight."},H8={label:"Destaque do dia",byCreator:"por {{creator}}",screenshotAlt:"Captura de tela de {{appName}}",logoAlt:"Logo de {{appName}}"},Y8={"beautifully-designed":"Lindamente projetado","loved-by-the-community":"Amado pela comunidade",saas:"SaaS",education:"Educação","e-commerce":"E-commerce",websites:"Sites"},K8={screenshotAlt:"Captura de tela de {{appName}}",logoAlt:"Logo de {{appName}}",viewDetailsLabel:"Ver detalhes",viewDetailsAriaLabel:"Ver detalhes de {{appName}}"},Z8={backButton:"Spotlight",byCreator:"Por {{creator}}",iframeTitle:"Prévia de {{appName}}",previewNotAvailable:"Prévia não disponível"},J8={ariaLabel:"Enviar seu app ao Spotlight",heading:"Quer que seu app apareça aqui?",description:"Mostre o que você construiu no Base44. Envie para o Spotlight e inspire a comunidade.",buttonText:"ENVIE SEU APP"},Q8={title:"Enviar seu app ao Spotlight",selectAppSubtitle:"Escolha o app que deseja nomear para a página Spotlight.",detailsSubtitle:"Conte-nos por que seu app deveria ser apresentado na página Spotlight.",back:"Voltar",cancel:"Cancelar",next:"Próximo",searchPlaceholder:"Buscar apps...",aboutLabel:"Sobre este app",aboutPlaceholder:"Conte-nos algo interessante sobre seu app – recursos especiais, truques inteligentes ou qualquer coisa que a comunidade adoraria descobrir",screenshotLabel:"Captura de tela <optional>(opcional)</optional>",screenshotHint:"PNG, JPG ou WebP — mín. 800×450 px, até 2 MB",submit:"Enviar",submitting:"Enviando…",submitError:"Falha ao enviar a solicitação do Spotlight.",successAlreadyInSpotlight:"Já está no Spotlight",successRequestReceived:"Solicitação recebida",successDescription:'Vamos analisar "{{appName}}" para o Spotlight. Em breve entraremos em contato.'},X8={viewApp:"Ver App",share:"Compartilhar",upvote:"Votar",alreadyUpvoted:"Já votou",thankYouForVote:"Obrigado pelo seu voto!",voteError:"Não foi possível registrar o voto",voteErrorDescription:"Tente novamente mais tarde.",linkShared:"Link compartilhado",linkCopied:"Link copiado para a área de transferência",shareError:"Não foi possível compartilhar"},e9={label:"Você sabia?"},t9={editedAgo:"editado {{timeAgo}}",editedRecently:"Editado recentemente",noAppsFound:"Nenhum app encontrado",noAppsAvailable:"Nenhum app disponível",loadMore:"Carregar mais apps",loading:"Carregando…"},a9={page:W8,fetchError:G8,featured:H8,sections:Y8,card:K8,detailModal:Z8,submitBanner:J8,requestModal:Q8,actions:X8,didYouKnow:e9,appPicker:t9},n9={page:{title:"Ajuda & Suporte",subtitle:"Obtenha a ajuda necessária para criar aplicações incríveis com BASE44"},getStarted:"Começar",cards:{documentation:{title:"Documentação",description:"Explore guias abrangentes, tutoriais, FAQs e melhores práticas para desenvolver com Base44."},discord:{title:"Comunidade Discord",description:"Conecte-se com outros desenvolvedores e obtenha ajuda instantânea da nossa comunidade ativa."},supportTicket:{title:"Abrir Ticket de Suporte",description:"Envie um ticket de suporte detalhado e obtenha assistência personalizada."}},appContext:{title:"Suporte Específico do Aplicativo",description:"As solicitações de suporte serão associadas ao aplicativo <appId>{{appId}}</appId>"},quickActions:{title:"Ações Rápidas",subtitle:"Gerencie sua experiência de suporte",myTickets:{title:"Meus Tickets de Suporte",description:"Ver e gerenciar seus tickets de suporte existentes"},communityForum:{title:"Fórum da Comunidade",description:"Nossa nova comunidade do Reddit"}}},i9={fallbackTitle:"Conversa de suporte",appLink:"App"},r9={title:"Meus tickets de suporte",backToSupport:"Voltar ao suporte",showingTicketsForApp:"Exibindo tickets para o App: <app>{{appId}}</app>",filteredByApp:"Filtrado por App: <app>{{appId}}</app>"},o9={title:"Enviar ticket de suporte",titleResume:"Enviar um ticket de suporte"},s9={helpMessage:"Precisa de ajuda imediata? <normal>Confira nossa </normal><docsLink>documentação</docsLink><normal> ou participe da nossa </normal><discordLink>comunidade do Discord</discordLink>."},l9={heading:"Continuar com sua solicitação de suporte?",description:"Você começou a criar um ticket de suporte anteriormente.",chooseHowToProceed:"Escolha como deseja prosseguir:",continueWhereLeftOff:"Continuar de onde parou",continueWhereLeftOffDesc:"Restaure suas entradas anteriores e continue do último passo.",startNewTicket:"Iniciar um novo ticket",startNewTicketDesc:"Descarte o rascunho e inicie uma nova solicitação de suporte.",continue:"Continuar"},c9={tellUsAboutYourIssue:"Conte-nos sobre o seu problema",whatTypeOfIssue:"Que tipo de problema você está enfrentando?",selectApp:"Selecione o app relacionado ao seu problema"},d9={instruction:"Por favor, compartilhe o que estava fazendo, o que deu errado e como podemos reproduzir.",descriptionLabel:"Descrição",descriptionPlaceholder:`Exemplo:
• O que você estava tentando fazer
• O que aconteceu em vez disso
• Qualquer mensagem de erro
• Passos para reproduzir (se relevante)`,attachmentsLabel:"Anexos",viewApp:"Ver app",dragAndDropFiles:"Arraste e solte arquivos aqui",dropFilesHere:"Solte os arquivos aqui",browseFiles:"Procurar arquivos",uploading:"Enviando...",unsupportedFileType:'O tipo de arquivo "{{type}}" não é suportado. Tipos suportados: jpg, jpeg, png, pdf.',invalidFile:"Arquivo inválido",failedToUpload:"Falha ao enviar o arquivo"},u9={analyzingIssue:"Analisando seu problema...",categoryFullDescription:"Parece que seu problema se enquadra em uma dessas categorias.<br/>Selecione a que melhor se encaixa — isso nos ajuda a guiar você para a solução certa."},p9={authentication:"Autenticação",billing:"Faturamento",bug_report:"Relatório de bug",domain:"Domínio",integrations_and_backend_functions:"Integrações e Backend",chat_issues:"Problemas de chat",security:"Segurança",social_post_bonus_credits:"Créditos de bônus por publicação social",superagent:"Superagente",other:"Outro"},m9={searchPlaceholder:"Pesquisar apps...",addAppLink:"Adicionar link do app",addAppLinkPlaceholder:"p. ex., https://your-app-url.com ou https://yourapp.base44.app",invalidUrl:"Por favor, insira uma URL válida começando com http:// ou https://",noAppsFound:"Nenhum app encontrado",noAppsAvailable:"Nenhum app disponível",loadingMore:"Carregando...",loadMore:"Carregar mais apps",edited:"editado {{time}}"},g9={loading:"Carregando conversa...",errorTitle:"Erro ao carregar conversa",noConversationTitle:"Conversa não encontrada",noConversationMessage:"Esta conversa não existe ou você não tem acesso a ela.",tryAgain:"Tentar novamente",ticketFallbackTitle:"Ticket de suporte",categoryFallback:"Geral",closeTicket:"Fechar ticket",closing:"Fechando...",aiAssistantInfo:"Assistente de IA · Pode cometer erros",talkToSpecialist:"Falar com um especialista de suporte",handledBySpecialist:"Atendido por um especialista de suporte",notifyWhenResponds:"Notificar quando o suporte responder",ticketResolvedTitle:"Este ticket foi resolvido",ticketResolvedMessage:"Por favor, crie um novo ticket para suporte adicional",conversationClosed:"Esta conversa está fechada",aiHandlingTicket:"O agente de IA está gerenciando este ticket. Clique em <bold>Assumir</bold> para responder manualmente.",typeResponse:"Digite sua resposta...",typeMessage:"Digite sua mensagem...",failedLoadConversation:"Falha ao carregar a conversa. Por favor, tente novamente.",ticketAlreadyResolved:"Este ticket foi resolvido. Por favor, crie um novo ticket para suporte adicional.",failedCloseTicket:"Falha ao fechar o ticket. Por favor, tente novamente.",failedEscalate:"Falha ao escalar o ticket. Por favor, tente novamente.",confirmCloseTicket:"Tem certeza de que deseja fechar este ticket? Ele será marcado como resolvido.",premiumSupportTier:"Suporte Premium",standardSupportTier:"Suporte Padrão",premiumSupportMessage:"Suporte offline, resposta prioritária em 48h",standardSupportMessage:"Suporte offline, resposta em 48h",templates:{label:"Modelos rápidos",less:"Menos"},draft:{title:"Resposta sugerida pela IA",collapse:"Recolher",viewAll:"Ver tudo",use:"Usar"},escalateModal:{title:"Solicitar suporte humano",description:"Seu ticket será transferido para nossa equipe de suporte para uma resposta personalizada.",cancel:"Cancelar",requesting:"Solicitando...",requestButton:"Solicitar suporte humano"}},h9={supportTeam:"Equipe de suporte",attachedFile:"Arquivo anexado",translatedFrom:"Traduzido de {{language}}",internalNote:"Nota interna",emptyTitle:"Inicie a conversa",emptyMessage:"Envie uma mensagem para começar sua conversa de suporte",translating:"Traduzindo...",showingTranslations:"Mostrando traduções",translateToEnglish:"Traduzir para inglês",confirmDeleteMessage:"Tem certeza de que deseja excluir esta mensagem?",failedDeleteMessage:"Falha ao excluir a mensagem. Por favor, tente novamente.",failedTranslate:"Falha ao traduzir as mensagens. Por favor, tente novamente.",attachedContent:"Conteúdo anexado",videoNotSupported:"Seu navegador não suporta reprodução de vídeo.",noteBy:"por {{name}}",adminFallback:"Admin",events:{unknownActor:"Alguém",statusChange:"{{actor}} alterou o status para {{status}}",unassigned:"{{actor}} removeu a atribuição do ticket",assigned:"{{actor}} atribuiu a {{assignee}}",reassigned:"{{actor}} reatribuiu para {{assignee}}",escalated:"{{actor}} escalonou o ticket",removedEscalation:"{{actor}} removeu o escalonamento",categoryChange:"{{actor}} alterou a categoria para {{category}}",labelChangeAdded:"{{actor}} adicionou {{labels}}",labelChangeRemoved:"{{actor}} removeu {{labels}}",labelChangeBoth:"{{actor}} adicionou {{added}} e removeu {{removed}}",updated:"{{actor}} atualizou o ticket",markedAbusive:"{{actor}} marcou o conteúdo como abusivo",clearedAbusive:"{{actor}} removeu a marcação de conteúdo abusivo"}},f9={uploading:"Enviando...",uploadFiles:"Enviar arquivos",fileTypeError:"Por favor, solicite suporte para tipos de arquivo adicionais em <link>feedback.base44.com</link>"},v9={open:"Aberto",closed:"Fechado",all:"Todos"},b9={open:"Aberto",resolved:"Resolvido"},y9={noOpenTickets:"Nenhum ticket aberto",noClosedTickets:"Nenhum ticket fechado",noTickets:"Nenhum ticket",descriptionOpen:"Você não tem nenhum ticket de suporte aberto no momento.",descriptionClosed:"Nenhum ticket fechado encontrado.",descriptionAll:"Você ainda não enviou nenhum ticket de suporte."},k9={appLabel:"App: {{appId}}",dateNotAvailable:"Não disponível"},w9={loadingTitle:"Erro ao carregar tickets",loadingFailed:"Falha ao carregar os tickets de suporte. Por favor, tente novamente.",ticketLimitTitle:"Limite de tickets atingido",ticketLimitDescription:"Há mais tickets do que é possível carregar. Apenas os 1000 tickets mais recentes foram carregados."},A9={free:"Grátis"},S9={cancel:"Cancelar",back:"Voltar",skip:"Pular",continue:"Continuar",submitting:"Enviando...",refresh:"Atualizar",newTicket:"Novo ticket",createNewTicket:"Criar novo ticket",tryAgain:"Tentar novamente",bannedAlert:"Seu acesso ao Suporte Base44 foi restrito devido a uma violação dos Termos de Uso do Suporte Base44. Consulte o e-mail que enviamos para mais detalhes."},C9={descriptionRequired:"Por favor, adicione uma descrição",descriptionTooShort:"Por favor, adicione mais detalhes. O mínimo é de 20 caracteres.",appRequired:"Escolha um dos seus apps ou adicione um link para que saibamos onde o problema está acontecendo.",submissionFailed:"Não foi possível enviar seu ticket de suporte. Por favor, tente novamente."},D9={dailyLimitReached:"Limite diário atingido",somethingWentWrong:"Algo deu errado",dailyLimitMessage:"Limite diário de conversas de suporte excedido. Você pode criar até {{limit}} conversas por dia com sua assinatura atual.",tryAgain:"Tentar novamente",cancel:"Cancelar",close:"Fechar"},T9={help:n9,sidebar:i9,page:r9,modal:o9,footer:s9,resumeStep:l9,steps:c9,tellUsAboutYourIssue:d9,whatTypeOfIssue:u9,categories:p9,selectApp:m9,chat:g9,messages:h9,input:f9,tabs:v9,status:b9,emptyState:y9,ticketCard:k9,errors:w9,tiers:A9,actions:S9,validation:C9,submissionError:D9},he=e=>typeof e=="string",Hr=()=>{let e,a;const n=new Promise((t,i)=>{e=t,a=i});return n.resolve=e,n.reject=a,n},yf=e=>e==null?"":""+e,E9=(e,a,n)=>{e.forEach(t=>{a[t]&&(n[t]=a[t])})},P9=/###/g,kf=e=>e&&e.indexOf("###")>-1?e.replace(P9,"."):e,wf=e=>!e||he(e),ro=(e,a,n)=>{const t=he(a)?a.split("."):a;let i=0;for(;i<t.length-1;){if(wf(e))return{};const r=kf(t[i]);!e[r]&&n&&(e[r]=new n),Object.prototype.hasOwnProperty.call(e,r)?e=e[r]:e={},++i}return wf(e)?{}:{obj:e,k:kf(t[i])}},Af=(e,a,n)=>{const{obj:t,k:i}=ro(e,a,Object);if(t!==void 0||a.length===1){t[i]=n;return}let r=a[a.length-1],o=a.slice(0,a.length-1),s=ro(e,o,Object);for(;s.obj===void 0&&o.length;)r=`${o[o.length-1]}.${r}`,o=o.slice(0,o.length-1),s=ro(e,o,Object),s&&s.obj&&typeof s.obj[`${s.k}.${r}`]<"u"&&(s.obj=void 0);s.obj[`${s.k}.${r}`]=n},_9=(e,a,n,t)=>{const{obj:i,k:r}=ro(e,a,Object);i[r]=i[r]||[],i[r].push(n)},Ml=(e,a)=>{const{obj:n,k:t}=ro(e,a);if(n)return n[t]},x9=(e,a,n)=>{const t=Ml(e,n);return t!==void 0?t:Ml(a,n)},gy=(e,a,n)=>{for(const t in a)t!=="__proto__"&&t!=="constructor"&&(t in e?he(e[t])||e[t]instanceof String||he(a[t])||a[t]instanceof String?n&&(e[t]=a[t]):gy(e[t],a[t],n):e[t]=a[t]);return e},Vi=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var I9={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};const R9=e=>he(e)?e.replace(/[&<>"'\/]/g,a=>I9[a]):e;class z9{constructor(a){this.capacity=a,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(a){const n=this.regExpMap.get(a);if(n!==void 0)return n;const t=new RegExp(a);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(a,t),this.regExpQueue.push(a),t}}const M9=[" ",",","?","!",";"],N9=new z9(20),F9=(e,a,n)=>{a=a||"",n=n||"";const t=M9.filter(o=>a.indexOf(o)<0&&n.indexOf(o)<0);if(t.length===0)return!0;const i=N9.getRegExp(`(${t.map(o=>o==="?"?"\\?":o).join("|")})`);let r=!i.test(e);if(!r){const o=e.indexOf(n);o>0&&!i.test(e.substring(0,o))&&(r=!0)}return r},ju=function(e,a){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:".";if(!e)return;if(e[a])return e[a];const t=a.split(n);let i=e;for(let r=0;r<t.length;){if(!i||typeof i!="object")return;let o,s="";for(let l=r;l<t.length;++l)if(l!==r&&(s+=n),s+=t[l],o=i[s],o!==void 0){if(["string","number","boolean"].indexOf(typeof o)>-1&&l<t.length-1)continue;r+=l-r+1;break}i=o}return i},Nl=e=>e&&e.replace("_","-"),L9={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,a){console&&console[e]}};class Fl{constructor(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.init(a,n)}init(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.prefix=n.prefix||"i18next:",this.logger=a||L9,this.options=n,this.debug=n.debug}log(){for(var a=arguments.length,n=new Array(a),t=0;t<a;t++)n[t]=arguments[t];return this.forward(n,"log","",!0)}warn(){for(var a=arguments.length,n=new Array(a),t=0;t<a;t++)n[t]=arguments[t];return this.forward(n,"warn","",!0)}error(){for(var a=arguments.length,n=new Array(a),t=0;t<a;t++)n[t]=arguments[t];return this.forward(n,"error","")}deprecate(){for(var a=arguments.length,n=new Array(a),t=0;t<a;t++)n[t]=arguments[t];return this.forward(n,"warn","WARNING DEPRECATED: ",!0)}forward(a,n,t,i){return i&&!this.debug?null:(he(a[0])&&(a[0]=`${t}${this.prefix} ${a[0]}`),this.logger[n](a))}create(a){return new Fl(this.logger,{prefix:`${this.prefix}:${a}:`,...this.options})}clone(a){return a=a||this.options,a.prefix=a.prefix||this.prefix,new Fl(this.logger,a)}}var Wa=new Fl;class xc{constructor(){this.observers={}}on(a,n){return a.split(" ").forEach(t=>{this.observers[t]||(this.observers[t]=new Map);const i=this.observers[t].get(n)||0;this.observers[t].set(n,i+1)}),this}off(a,n){if(this.observers[a]){if(!n){delete this.observers[a];return}this.observers[a].delete(n)}}emit(a){for(var n=arguments.length,t=new Array(n>1?n-1:0),i=1;i<n;i++)t[i-1]=arguments[i];this.observers[a]&&Array.from(this.observers[a].entries()).forEach(o=>{let[s,l]=o;for(let d=0;d<l;d++)s(...t)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(o=>{let[s,l]=o;for(let d=0;d<l;d++)s.apply(s,[a,...t])})}}class Sf extends xc{constructor(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{ns:["translation"],defaultNS:"translation"};super(),this.data=a||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(a){this.options.ns.indexOf(a)<0&&this.options.ns.push(a)}removeNamespaces(a){const n=this.options.ns.indexOf(a);n>-1&&this.options.ns.splice(n,1)}getResource(a,n,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const r=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,o=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure;let s;a.indexOf(".")>-1?s=a.split("."):(s=[a,n],t&&(Array.isArray(t)?s.push(...t):he(t)&&r?s.push(...t.split(r)):s.push(t)));const l=Ml(this.data,s);return!l&&!n&&!t&&a.indexOf(".")>-1&&(a=s[0],n=s[1],t=s.slice(2).join(".")),l||!o||!he(t)?l:ju(this.data&&this.data[a]&&this.data[a][n],t,r)}addResource(a,n,t,i){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{silent:!1};const o=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator;let s=[a,n];t&&(s=s.concat(o?t.split(o):t)),a.indexOf(".")>-1&&(s=a.split("."),i=n,n=s[1]),this.addNamespaces(n),Af(this.data,s,i),r.silent||this.emit("added",a,n,t,i)}addResources(a,n,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{silent:!1};for(const r in t)(he(t[r])||Array.isArray(t[r]))&&this.addResource(a,n,r,t[r],{silent:!0});i.silent||this.emit("added",a,n,t)}addResourceBundle(a,n,t,i,r){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{silent:!1,skipCopy:!1},s=[a,n];a.indexOf(".")>-1&&(s=a.split("."),i=t,t=n,n=s[1]),this.addNamespaces(n);let l=Ml(this.data,s)||{};o.skipCopy||(t=JSON.parse(JSON.stringify(t))),i?gy(l,t,r):l={...l,...t},Af(this.data,s,l),o.silent||this.emit("added",a,n,t)}removeResourceBundle(a,n){this.hasResourceBundle(a,n)&&delete this.data[a][n],this.removeNamespaces(n),this.emit("removed",a,n)}hasResourceBundle(a,n){return this.getResource(a,n)!==void 0}getResourceBundle(a,n){return n||(n=this.options.defaultNS),this.options.compatibilityAPI==="v1"?{...this.getResource(a,n)}:this.getResource(a,n)}getDataByLanguage(a){return this.data[a]}hasLanguageSomeTranslations(a){const n=this.getDataByLanguage(a);return!!(n&&Object.keys(n)||[]).find(i=>n[i]&&Object.keys(n[i]).length>0)}toJSON(){return this.data}}var hy={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,a,n,t,i){return e.forEach(r=>{this.processors[r]&&(a=this.processors[r].process(a,n,t,i))}),a}};const Cf={};class Ll extends xc{constructor(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),E9(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],a,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Wa.create("translator")}changeLanguage(a){a&&(this.language=a)}exists(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};if(a==null)return!1;const t=this.resolve(a,n);return t&&t.res!==void 0}extractFromKey(a,n){let t=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;t===void 0&&(t=":");const i=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let r=n.ns||this.options.defaultNS||[];const o=t&&a.indexOf(t)>-1,s=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!F9(a,t,i);if(o&&!s){const l=a.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:a,namespaces:he(r)?[r]:r};const d=a.split(t);(t!==i||t===i&&this.options.ns.indexOf(d[0])>-1)&&(r=d.shift()),a=d.join(i)}return{key:a,namespaces:he(r)?[r]:r}}translate(a,n,t){if(typeof n!="object"&&this.options.overloadTranslationOptionHandler&&(n=this.options.overloadTranslationOptionHandler(arguments)),typeof n=="object"&&(n={...n}),n||(n={}),a==null)return"";Array.isArray(a)||(a=[String(a)]);const i=n.returnDetails!==void 0?n.returnDetails:this.options.returnDetails,r=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator,{key:o,namespaces:s}=this.extractFromKey(a[a.length-1],n),l=s[s.length-1],d=n.lng||this.language,p=n.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d&&d.toLowerCase()==="cimode"){if(p){const E=n.nsSeparator||this.options.nsSeparator;return i?{res:`${l}${E}${o}`,usedKey:o,exactUsedKey:o,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:`${l}${E}${o}`}return i?{res:o,usedKey:o,exactUsedKey:o,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(n)}:o}const u=this.resolve(a,n);let g=u&&u.res;const b=u&&u.usedKey||o,v=u&&u.exactUsedKey||o,A=Object.prototype.toString.apply(g),f=["[object Number]","[object Function]","[object RegExp]"],S=n.joinArrays!==void 0?n.joinArrays:this.options.joinArrays,C=!this.i18nFormat||this.i18nFormat.handleAsObject,T=!he(g)&&typeof g!="boolean"&&typeof g!="number";if(C&&g&&T&&f.indexOf(A)<0&&!(he(S)&&Array.isArray(g))){if(!n.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const E=this.options.returnedObjectHandler?this.options.returnedObjectHandler(b,g,{...n,ns:s}):`key '${o} (${this.language})' returned an object instead of string.`;return i?(u.res=E,u.usedParams=this.getUsedParamsDetails(n),u):E}if(r){const E=Array.isArray(g),P=E?[]:{},I=E?v:b;for(const L in g)if(Object.prototype.hasOwnProperty.call(g,L)){const N=`${I}${r}${L}`;P[L]=this.translate(N,{...n,joinArrays:!1,ns:s}),P[L]===N&&(P[L]=g[L])}g=P}}else if(C&&he(S)&&Array.isArray(g))g=g.join(S),g&&(g=this.extendTranslation(g,a,n,t));else{let E=!1,P=!1;const I=n.count!==void 0&&!he(n.count),L=Ll.hasDefaultValue(n),N=I?this.pluralResolver.getSuffix(d,n.count,n):"",Z=n.ordinal&&I?this.pluralResolver.getSuffix(d,n.count,{ordinal:!1}):"",R=I&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),Y=R&&n[`defaultValue${this.options.pluralSeparator}zero`]||n[`defaultValue${N}`]||n[`defaultValue${Z}`]||n.defaultValue;!this.isValidLookup(g)&&L&&(E=!0,g=Y),this.isValidLookup(g)||(P=!0,g=o);const F=(n.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&P?void 0:g,j=L&&Y!==g&&this.options.updateMissing;if(P||E||j){if(this.logger.log(j?"updateKey":"missingKey",d,l,o,j?Y:g),r){const te=this.resolve(o,{...n,keySeparator:!1});te&&te.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 H=[];const X=this.languageUtils.getFallbackCodes(this.options.fallbackLng,n.lng||this.language);if(this.options.saveMissingTo==="fallback"&&X&&X[0])for(let te=0;te<X.length;te++)H.push(X[te]);else this.options.saveMissingTo==="all"?H=this.languageUtils.toResolveHierarchy(n.lng||this.language):H.push(n.lng||this.language);const ie=(te,oe,ae)=>{const Me=L&&ae!==g?ae:F;this.options.missingKeyHandler?this.options.missingKeyHandler(te,l,oe,Me,j,n):this.backendConnector&&this.backendConnector.saveMissing&&this.backendConnector.saveMissing(te,l,oe,Me,j,n),this.emit("missingKey",te,l,oe,g)};this.options.saveMissing&&(this.options.saveMissingPlurals&&I?H.forEach(te=>{const oe=this.pluralResolver.getSuffixes(te,n);R&&n[`defaultValue${this.options.pluralSeparator}zero`]&&oe.indexOf(`${this.options.pluralSeparator}zero`)<0&&oe.push(`${this.options.pluralSeparator}zero`),oe.forEach(ae=>{ie([te],o+ae,n[`defaultValue${ae}`]||Y)})}):ie(H,o,Y))}g=this.extendTranslation(g,a,n,u,t),P&&g===o&&this.options.appendNamespaceToMissingKey&&(g=`${l}:${o}`),(P||E)&&this.options.parseMissingKeyHandler&&(this.options.compatibilityAPI!=="v1"?g=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}:${o}`:o,E?g:void 0):g=this.options.parseMissingKeyHandler(g))}return i?(u.res=g,u.usedParams=this.getUsedParamsDetails(n),u):g}extendTranslation(a,n,t,i,r){var o=this;if(this.i18nFormat&&this.i18nFormat.parse)a=this.i18nFormat.parse(a,{...this.options.interpolation.defaultVariables,...t},t.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!t.skipInterpolation){t.interpolation&&this.interpolator.init({...t,interpolation:{...this.options.interpolation,...t.interpolation}});const d=he(a)&&(t&&t.interpolation&&t.interpolation.skipOnVariables!==void 0?t.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let p;if(d){const g=a.match(this.interpolator.nestingRegexp);p=g&&g.length}let u=t.replace&&!he(t.replace)?t.replace:t;if(this.options.interpolation.defaultVariables&&(u={...this.options.interpolation.defaultVariables,...u}),a=this.interpolator.interpolate(a,u,t.lng||this.language||i.usedLng,t),d){const g=a.match(this.interpolator.nestingRegexp),b=g&&g.length;p<b&&(t.nest=!1)}!t.lng&&this.options.compatibilityAPI!=="v1"&&i&&i.res&&(t.lng=this.language||i.usedLng),t.nest!==!1&&(a=this.interpolator.nest(a,function(){for(var g=arguments.length,b=new Array(g),v=0;v<g;v++)b[v]=arguments[v];return r&&r[0]===b[0]&&!t.context?(o.logger.warn(`It seems you are nesting recursively key: ${b[0]} in key: ${n[0]}`),null):o.translate(...b,n)},t)),t.interpolation&&this.interpolator.reset()}const s=t.postProcess||this.options.postProcess,l=he(s)?[s]:s;return a!=null&&l&&l.length&&t.applyPostProcessor!==!1&&(a=hy.handle(l,a,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(t)},...t}:t,this)),a}resolve(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t,i,r,o,s;return he(a)&&(a=[a]),a.forEach(l=>{if(this.isValidLookup(t))return;const d=this.extractFromKey(l,n),p=d.key;i=p;let u=d.namespaces;this.options.fallbackNS&&(u=u.concat(this.options.fallbackNS));const g=n.count!==void 0&&!he(n.count),b=g&&!n.ordinal&&n.count===0&&this.pluralResolver.shouldUseIntlApi(),v=n.context!==void 0&&(he(n.context)||typeof n.context=="number")&&n.context!=="",A=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);u.forEach(f=>{this.isValidLookup(t)||(s=f,!Cf[`${A[0]}-${f}`]&&this.utils&&this.utils.hasLoadedNamespace&&!this.utils.hasLoadedNamespace(s)&&(Cf[`${A[0]}-${f}`]=!0,this.logger.warn(`key "${i}" for languages "${A.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!!!")),A.forEach(S=>{if(this.isValidLookup(t))return;o=S;const C=[p];if(this.i18nFormat&&this.i18nFormat.addLookupKeys)this.i18nFormat.addLookupKeys(C,p,S,f,n);else{let E;g&&(E=this.pluralResolver.getSuffix(S,n.count,n));const P=`${this.options.pluralSeparator}zero`,I=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(g&&(C.push(p+E),n.ordinal&&E.indexOf(I)===0&&C.push(p+E.replace(I,this.options.pluralSeparator)),b&&C.push(p+P)),v){const L=`${p}${this.options.contextSeparator}${n.context}`;C.push(L),g&&(C.push(L+E),n.ordinal&&E.indexOf(I)===0&&C.push(L+E.replace(I,this.options.pluralSeparator)),b&&C.push(L+P))}}let T;for(;T=C.pop();)this.isValidLookup(t)||(r=T,t=this.getResource(S,f,T,n))}))})}),{res:t,usedKey:i,exactUsedKey:r,usedLng:o,usedNS:s}}isValidLookup(a){return a!==void 0&&!(!this.options.returnNull&&a===null)&&!(!this.options.returnEmptyString&&a==="")}getResource(a,n,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(a,n,t,i):this.resourceStore.getResource(a,n,t,i)}getUsedParamsDetails(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],t=a.replace&&!he(a.replace);let i=t?a.replace:a;if(t&&typeof a.count<"u"&&(i.count=a.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!t){i={...i};for(const r of n)delete i[r]}return i}static hasDefaultValue(a){const n="defaultValue";for(const t in a)if(Object.prototype.hasOwnProperty.call(a,t)&&n===t.substring(0,n.length)&&a[t]!==void 0)return!0;return!1}}const Od=e=>e.charAt(0).toUpperCase()+e.slice(1);class Df{constructor(a){this.options=a,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Wa.create("languageUtils")}getScriptPartFromCode(a){if(a=Nl(a),!a||a.indexOf("-")<0)return null;const n=a.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(a){if(a=Nl(a),!a||a.indexOf("-")<0)return a;const n=a.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(a){if(he(a)&&a.indexOf("-")>-1){if(typeof Intl<"u"&&typeof Intl.getCanonicalLocales<"u")try{let i=Intl.getCanonicalLocales(a)[0];if(i&&this.options.lowerCaseLng&&(i=i.toLowerCase()),i)return i}catch{}const n=["hans","hant","latn","cyrl","cans","mong","arab"];let t=a.split("-");return this.options.lowerCaseLng?t=t.map(i=>i.toLowerCase()):t.length===2?(t[0]=t[0].toLowerCase(),t[1]=t[1].toUpperCase(),n.indexOf(t[1].toLowerCase())>-1&&(t[1]=Od(t[1].toLowerCase()))):t.length===3&&(t[0]=t[0].toLowerCase(),t[1].length===2&&(t[1]=t[1].toUpperCase()),t[0]!=="sgn"&&t[2].length===2&&(t[2]=t[2].toUpperCase()),n.indexOf(t[1].toLowerCase())>-1&&(t[1]=Od(t[1].toLowerCase())),n.indexOf(t[2].toLowerCase())>-1&&(t[2]=Od(t[2].toLowerCase()))),t.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?a.toLowerCase():a}isSupportedCode(a){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(a=this.getLanguagePartFromCode(a)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(a)>-1}getBestMatchFromCodes(a){if(!a)return null;let n;return a.forEach(t=>{if(n)return;const i=this.formatLanguageCode(t);(!this.options.supportedLngs||this.isSupportedCode(i))&&(n=i)}),!n&&this.options.supportedLngs&&a.forEach(t=>{if(n)return;const i=this.getLanguagePartFromCode(t);if(this.isSupportedCode(i))return n=i;n=this.options.supportedLngs.find(r=>{if(r===i)return r;if(!(r.indexOf("-")<0&&i.indexOf("-")<0)&&(r.indexOf("-")>0&&i.indexOf("-")<0&&r.substring(0,r.indexOf("-"))===i||r.indexOf(i)===0&&i.length>1))return r})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(a,n){if(!a)return[];if(typeof a=="function"&&(a=a(n)),he(a)&&(a=[a]),Array.isArray(a))return a;if(!n)return a.default||[];let t=a[n];return t||(t=a[this.getScriptPartFromCode(n)]),t||(t=a[this.formatLanguageCode(n)]),t||(t=a[this.getLanguagePartFromCode(n)]),t||(t=a.default),t||[]}toResolveHierarchy(a,n){const t=this.getFallbackCodes(n||this.options.fallbackLng||[],a),i=[],r=o=>{o&&(this.isSupportedCode(o)?i.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return he(a)&&(a.indexOf("-")>-1||a.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&r(this.formatLanguageCode(a)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&r(this.getScriptPartFromCode(a)),this.options.load!=="currentOnly"&&r(this.getLanguagePartFromCode(a))):he(a)&&r(this.formatLanguageCode(a)),t.forEach(o=>{i.indexOf(o)<0&&r(this.formatLanguageCode(o))}),i}}let j9=[{lngs:["ach","ak","am","arn","br","fil","gun","ln","mfe","mg","mi","oc","pt","pt-BR","tg","tl","ti","tr","uz","wa"],nr:[1,2],fc:1},{lngs:["af","an","ast","az","bg","bn","ca","da","de","dev","el","en","eo","es","et","eu","fi","fo","fur","fy","gl","gu","ha","hi","hu","hy","ia","it","kk","kn","ku","lb","mai","ml","mn","mr","nah","nap","nb","ne","nl","nn","no","nso","pa","pap","pms","ps","pt-PT","rm","sco","se","si","so","son","sq","sv","sw","ta","te","tk","ur","yo"],nr:[1,2],fc:2},{lngs:["ay","bo","cgg","fa","ht","id","ja","jbo","ka","km","ko","ky","lo","ms","sah","su","th","tt","ug","vi","wo","zh"],nr:[1],fc:3},{lngs:["be","bs","cnr","dz","hr","ru","sr","uk"],nr:[1,2,5],fc:4},{lngs:["ar"],nr:[0,1,2,3,11,100],fc:5},{lngs:["cs","sk"],nr:[1,2,5],fc:6},{lngs:["csb","pl"],nr:[1,2,5],fc:7},{lngs:["cy"],nr:[1,2,3,8],fc:8},{lngs:["fr"],nr:[1,2],fc:9},{lngs:["ga"],nr:[1,2,3,7,11],fc:10},{lngs:["gd"],nr:[1,2,3,20],fc:11},{lngs:["is"],nr:[1,2],fc:12},{lngs:["jv"],nr:[0,1],fc:13},{lngs:["kw"],nr:[1,2,3,4],fc:14},{lngs:["lt"],nr:[1,2,10],fc:15},{lngs:["lv"],nr:[1,2,0],fc:16},{lngs:["mk"],nr:[1,2],fc:17},{lngs:["mnk"],nr:[0,1,2],fc:18},{lngs:["mt"],nr:[1,2,11,20],fc:19},{lngs:["or"],nr:[2,1],fc:2},{lngs:["ro"],nr:[1,2,20],fc:20},{lngs:["sl"],nr:[5,1,2,3],fc:21},{lngs:["he","iw"],nr:[1,2,20,21],fc:22}],O9={1:e=>+(e>1),2:e=>+(e!=1),3:e=>0,4:e=>e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2,5:e=>e==0?0:e==1?1:e==2?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5,6:e=>e==1?0:e>=2&&e<=4?1:2,7:e=>e==1?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2,8:e=>e==1?0:e==2?1:e!=8&&e!=11?2:3,9:e=>+(e>=2),10:e=>e==1?0:e==2?1:e<7?2:e<11?3:4,11:e=>e==1||e==11?0:e==2||e==12?1:e>2&&e<20?2:3,12:e=>+(e%10!=1||e%100==11),13:e=>+(e!==0),14:e=>e==1?0:e==2?1:e==3?2:3,15:e=>e%10==1&&e%100!=11?0:e%10>=2&&(e%100<10||e%100>=20)?1:2,16:e=>e%10==1&&e%100!=11?0:e!==0?1:2,17:e=>e==1||e%10==1&&e%100!=11?0:1,18:e=>e==0?0:e==1?1:2,19:e=>e==1?0:e==0||e%100>1&&e%100<11?1:e%100>10&&e%100<20?2:3,20:e=>e==1?0:e==0||e%100>0&&e%100<20?1:2,21:e=>e%100==1?1:e%100==2?2:e%100==3||e%100==4?3:0,22:e=>e==1?0:e==2?1:(e<0||e>10)&&e%10==0?2:3};const B9=["v1","v2","v3"],U9=["v4"],Tf={zero:0,one:1,two:2,few:3,many:4,other:5},q9=()=>{const e={};return j9.forEach(a=>{a.lngs.forEach(n=>{e[n]={numbers:a.nr,plurals:O9[a.fc]}})}),e};class V9{constructor(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.languageUtils=a,this.options=n,this.logger=Wa.create("pluralResolver"),(!this.options.compatibilityJSON||U9.includes(this.options.compatibilityJSON))&&(typeof Intl>"u"||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=q9(),this.pluralRulesCache={}}addRule(a,n){this.rules[a]=n}clearCache(){this.pluralRulesCache={}}getRule(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(this.shouldUseIntlApi()){const t=Nl(a==="dev"?"en":a),i=n.ordinal?"ordinal":"cardinal",r=JSON.stringify({cleanedCode:t,type:i});if(r in this.pluralRulesCache)return this.pluralRulesCache[r];let o;try{o=new Intl.PluralRules(t,{type:i})}catch{if(!a.match(/-|_/))return;const l=this.languageUtils.getLanguagePartFromCode(a);o=this.getRule(l,n)}return this.pluralRulesCache[r]=o,o}return this.rules[a]||this.rules[this.languageUtils.getLanguagePartFromCode(a)]}needsPlural(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const t=this.getRule(a,n);return this.shouldUseIntlApi()?t&&t.resolvedOptions().pluralCategories.length>1:t&&t.numbers.length>1}getPluralFormsOfKey(a,n){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.getSuffixes(a,t).map(i=>`${n}${i}`)}getSuffixes(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const t=this.getRule(a,n);return t?this.shouldUseIntlApi()?t.resolvedOptions().pluralCategories.sort((i,r)=>Tf[i]-Tf[r]).map(i=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${i}`):t.numbers.map(i=>this.getSuffix(a,i,n)):[]}getSuffix(a,n){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const i=this.getRule(a,t);return i?this.shouldUseIntlApi()?`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${i.select(n)}`:this.getSuffixRetroCompatible(i,n):(this.logger.warn(`no plural rule found for: ${a}`),"")}getSuffixRetroCompatible(a,n){const t=a.noAbs?a.plurals(n):a.plurals(Math.abs(n));let i=a.numbers[t];this.options.simplifyPluralSuffix&&a.numbers.length===2&&a.numbers[0]===1&&(i===2?i="plural":i===1&&(i=""));const r=()=>this.options.prepend&&i.toString()?this.options.prepend+i.toString():i.toString();return this.options.compatibilityJSON==="v1"?i===1?"":typeof i=="number"?`_plural_${i.toString()}`:r():this.options.compatibilityJSON==="v2"||this.options.simplifyPluralSuffix&&a.numbers.length===2&&a.numbers[0]===1?r():this.options.prepend&&t.toString()?this.options.prepend+t.toString():t.toString()}shouldUseIntlApi(){return!B9.includes(this.options.compatibilityJSON)}}const Ef=function(e,a,n){let t=arguments.length>3&&arguments[3]!==void 0?arguments[3]:".",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,r=x9(e,a,n);return!r&&i&&he(n)&&(r=ju(e,n,t),r===void 0&&(r=ju(a,n,t))),r},Bd=e=>e.replace(/\$/g,"$$$$");class $9{constructor(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Wa.create("interpolator"),this.options=a,this.format=a.interpolation&&a.interpolation.format||(n=>n),this.init(a)}init(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};a.interpolation||(a.interpolation={escapeValue:!0});const{escape:n,escapeValue:t,useRawValueToEscape:i,prefix:r,prefixEscaped:o,suffix:s,suffixEscaped:l,formatSeparator:d,unescapeSuffix:p,unescapePrefix:u,nestingPrefix:g,nestingPrefixEscaped:b,nestingSuffix:v,nestingSuffixEscaped:A,nestingOptionsSeparator:f,maxReplaces:S,alwaysFormat:C}=a.interpolation;this.escape=n!==void 0?n:R9,this.escapeValue=t!==void 0?t:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=r?Vi(r):o||"{{",this.suffix=s?Vi(s):l||"}}",this.formatSeparator=d||",",this.unescapePrefix=p?"":u||"-",this.unescapeSuffix=this.unescapePrefix?"":p||"",this.nestingPrefix=g?Vi(g):b||Vi("$t("),this.nestingSuffix=v?Vi(v):A||Vi(")"),this.nestingOptionsSeparator=f||",",this.maxReplaces=S||1e3,this.alwaysFormat=C!==void 0?C:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const a=(n,t)=>n&&n.source===t?(n.lastIndex=0,n):new RegExp(t,"g");this.regexp=a(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=a(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=a(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(a,n,t,i){let r,o,s;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},d=b=>{if(b.indexOf(this.formatSeparator)<0){const S=Ef(n,l,b,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(S,void 0,t,{...i,...n,interpolationkey:b}):S}const v=b.split(this.formatSeparator),A=v.shift().trim(),f=v.join(this.formatSeparator).trim();return this.format(Ef(n,l,A,this.options.keySeparator,this.options.ignoreJSONStructure),f,t,{...i,...n,interpolationkey:A})};this.resetRegExp();const p=i&&i.missingInterpolationHandler||this.options.missingInterpolationHandler,u=i&&i.interpolation&&i.interpolation.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:b=>Bd(b)},{regex:this.regexp,safeValue:b=>this.escapeValue?Bd(this.escape(b)):Bd(b)}].forEach(b=>{for(s=0;r=b.regex.exec(a);){const v=r[1].trim();if(o=d(v),o===void 0)if(typeof p=="function"){const f=p(a,r,i);o=he(f)?f:""}else if(i&&Object.prototype.hasOwnProperty.call(i,v))o="";else if(u){o=r[0];continue}else this.logger.warn(`missed to pass in variable ${v} for interpolating ${a}`),o="";else!he(o)&&!this.useRawValueToEscape&&(o=yf(o));const A=b.safeValue(o);if(a=a.replace(r[0],A),u?(b.regex.lastIndex+=o.length,b.regex.lastIndex-=r[0].length):b.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),a}nest(a,n){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i,r,o;const s=(l,d)=>{const p=this.nestingOptionsSeparator;if(l.indexOf(p)<0)return l;const u=l.split(new RegExp(`${p}[ ]*{`));let g=`{${u[1]}`;l=u[0],g=this.interpolate(g,o);const b=g.match(/'/g),v=g.match(/"/g);(b&&b.length%2===0&&!v||v.length%2!==0)&&(g=g.replace(/'/g,'"'));try{o=JSON.parse(g),d&&(o={...d,...o})}catch(A){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,A),`${l}${p}${g}`}return o.defaultValue&&o.defaultValue.indexOf(this.prefix)>-1&&delete o.defaultValue,l};for(;i=this.nestingRegexp.exec(a);){let l=[];o={...t},o=o.replace&&!he(o.replace)?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;let d=!1;if(i[0].indexOf(this.formatSeparator)!==-1&&!/{.*}/.test(i[1])){const p=i[1].split(this.formatSeparator).map(u=>u.trim());i[1]=p.shift(),l=p,d=!0}if(r=n(s.call(this,i[1].trim(),o),o),r&&i[0]===a&&!he(r))return r;he(r)||(r=yf(r)),r||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${a}`),r=""),d&&(r=l.reduce((p,u)=>this.format(p,u,t.lng,{...t,interpolationkey:i[1].trim()}),r.trim())),a=a.replace(i[0],r),this.regexp.lastIndex=0}return a}}const W9=e=>{let a=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const t=e.split("(");a=t[0].toLowerCase().trim();const i=t[1].substring(0,t[1].length-1);a==="currency"&&i.indexOf(":")<0?n.currency||(n.currency=i.trim()):a==="relativetime"&&i.indexOf(":")<0?n.range||(n.range=i.trim()):i.split(";").forEach(o=>{if(o){const[s,...l]=o.split(":"),d=l.join(":").trim().replace(/^'+|'+$/g,""),p=s.trim();n[p]||(n[p]=d),d==="false"&&(n[p]=!1),d==="true"&&(n[p]=!0),isNaN(d)||(n[p]=parseInt(d,10))}})}return{formatName:a,formatOptions:n}},$i=e=>{const a={};return(n,t,i)=>{let r=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(r={...r,[i.interpolationkey]:void 0});const o=t+JSON.stringify(r);let s=a[o];return s||(s=e(Nl(t),i),a[o]=s),s(n)}};class G9{constructor(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.logger=Wa.create("formatter"),this.options=a,this.formats={number:$i((n,t)=>{const i=new Intl.NumberFormat(n,{...t});return r=>i.format(r)}),currency:$i((n,t)=>{const i=new Intl.NumberFormat(n,{...t,style:"currency"});return r=>i.format(r)}),datetime:$i((n,t)=>{const i=new Intl.DateTimeFormat(n,{...t});return r=>i.format(r)}),relativetime:$i((n,t)=>{const i=new Intl.RelativeTimeFormat(n,{...t});return r=>i.format(r,t.range||"day")}),list:$i((n,t)=>{const i=new Intl.ListFormat(n,{...t});return r=>i.format(r)})},this.init(a)}init(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{interpolation:{}};this.formatSeparator=n.interpolation.formatSeparator||","}add(a,n){this.formats[a.toLowerCase().trim()]=n}addCached(a,n){this.formats[a.toLowerCase().trim()]=$i(n)}format(a,n,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const r=n.split(this.formatSeparator);if(r.length>1&&r[0].indexOf("(")>1&&r[0].indexOf(")")<0&&r.find(s=>s.indexOf(")")>-1)){const s=r.findIndex(l=>l.indexOf(")")>-1);r[0]=[r[0],...r.splice(1,s)].join(this.formatSeparator)}return r.reduce((s,l)=>{const{formatName:d,formatOptions:p}=W9(l);if(this.formats[d]){let u=s;try{const g=i&&i.formatParams&&i.formatParams[i.interpolationkey]||{},b=g.locale||g.lng||i.locale||i.lng||t;u=this.formats[d](s,b,{...p,...i,...g})}catch(g){this.logger.warn(g)}return u}else this.logger.warn(`there was no format function for ${d}`);return s},a)}}const H9=(e,a)=>{e.pending[a]!==void 0&&(delete e.pending[a],e.pendingCount--)};class Y9 extends xc{constructor(a,n,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};super(),this.backend=a,this.store=n,this.services=t,this.languageUtils=t.languageUtils,this.options=i,this.logger=Wa.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend&&this.backend.init&&this.backend.init(t,i.backend,i)}queueLoad(a,n,t,i){const r={},o={},s={},l={};return a.forEach(d=>{let p=!0;n.forEach(u=>{const g=`${d}|${u}`;!t.reload&&this.store.hasResourceBundle(d,u)?this.state[g]=2:this.state[g]<0||(this.state[g]===1?o[g]===void 0&&(o[g]=!0):(this.state[g]=1,p=!1,o[g]===void 0&&(o[g]=!0),r[g]===void 0&&(r[g]=!0),l[u]===void 0&&(l[u]=!0)))}),p||(s[d]=!0)}),(Object.keys(r).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(r),pending:Object.keys(o),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(l)}}loaded(a,n,t){const i=a.split("|"),r=i[0],o=i[1];n&&this.emit("failedLoading",r,o,n),!n&&t&&this.store.addResourceBundle(r,o,t,void 0,void 0,{skipCopy:!0}),this.state[a]=n?-1:2,n&&t&&(this.state[a]=0);const s={};this.queue.forEach(l=>{_9(l.loaded,[r],o),H9(l,a),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(d=>{s[d]||(s[d]={});const p=l.loaded[d];p.length&&p.forEach(u=>{s[d][u]===void 0&&(s[d][u]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(l=>!l.done)}read(a,n,t){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.retryTimeout,o=arguments.length>5?arguments[5]:void 0;if(!a.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:a,ns:n,fcName:t,tried:i,wait:r,callback:o});return}this.readingCalls++;const s=(d,p)=>{if(this.readingCalls--,this.waitingReads.length>0){const u=this.waitingReads.shift();this.read(u.lng,u.ns,u.fcName,u.tried,u.wait,u.callback)}if(d&&p&&i<this.maxRetries){setTimeout(()=>{this.read.call(this,a,n,t,i+1,r*2,o)},r);return}o(d,p)},l=this.backend[t].bind(this.backend);if(l.length===2){try{const d=l(a,n);d&&typeof d.then=="function"?d.then(p=>s(null,p)).catch(s):s(null,d)}catch(d){s(d)}return}return l(a,n,s)}prepareLoading(a,n){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=arguments.length>3?arguments[3]:void 0;if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();he(a)&&(a=this.languageUtils.toResolveHierarchy(a)),he(n)&&(n=[n]);const r=this.queueLoad(a,n,t,i);if(!r.toLoad.length)return r.pending.length||i(),null;r.toLoad.forEach(o=>{this.loadOne(o)})}load(a,n,t){this.prepareLoading(a,n,{},t)}reload(a,n,t){this.prepareLoading(a,n,{reload:!0},t)}loadOne(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";const t=a.split("|"),i=t[0],r=t[1];this.read(i,r,"read",void 0,void 0,(o,s)=>{o&&this.logger.warn(`${n}loading namespace ${r} for language ${i} failed`,o),!o&&s&&this.logger.log(`${n}loaded namespace ${r} for language ${i}`,s),this.loaded(a,o,s)})}saveMissing(a,n,t,i,r){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{},s=arguments.length>6&&arguments[6]!==void 0?arguments[6]:()=>{};if(this.services.utils&&this.services.utils.hasLoadedNamespace&&!this.services.utils.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${t}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(t==null||t==="")){if(this.backend&&this.backend.create){const l={...o,isUpdate:r},d=this.backend.create.bind(this.backend);if(d.length<6)try{let p;d.length===5?p=d(a,n,t,i,l):p=d(a,n,t,i),p&&typeof p.then=="function"?p.then(u=>s(null,u)).catch(s):s(null,p)}catch(p){s(p)}else d(a,n,t,i,s,l)}!a||!a[0]||this.store.addResource(a[0],n,t,i)}}}const Pf=()=>({debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",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 a={};if(typeof e[1]=="object"&&(a=e[1]),he(e[1])&&(a.defaultValue=e[1]),he(e[2])&&(a.tDescription=e[2]),typeof e[2]=="object"||typeof e[3]=="object"){const n=e[3]||e[2];Object.keys(n).forEach(t=>{a[t]=n[t]})}return a},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}),_f=e=>(he(e.ns)&&(e.ns=[e.ns]),he(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),he(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e),bs=()=>{},K9=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(n=>{typeof e[n]=="function"&&(e[n]=e[n].bind(e))})};class fo extends xc{constructor(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(super(),this.options=_f(a),this.services={},this.logger=Wa,this.modules={external:[]},K9(this),n&&!this.isInitialized&&!a.isClone){if(!this.options.initImmediate)return this.init(a,n),this;setTimeout(()=>{this.init(a,n)},0)}}init(){var a=this;let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;this.isInitializing=!0,typeof n=="function"&&(t=n,n={}),!n.defaultNS&&n.defaultNS!==!1&&n.ns&&(he(n.ns)?n.defaultNS=n.ns:n.ns.indexOf("translation")<0&&(n.defaultNS=n.ns[0]));const i=Pf();this.options={...i,...this.options,..._f(n)},this.options.compatibilityAPI!=="v1"&&(this.options.interpolation={...i.interpolation,...this.options.interpolation}),n.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=n.keySeparator),n.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=n.nsSeparator);const r=p=>p?typeof p=="function"?new p:p:null;if(!this.options.isClone){this.modules.logger?Wa.init(r(this.modules.logger),this.options):Wa.init(null,this.options);let p;this.modules.formatter?p=this.modules.formatter:typeof Intl<"u"&&(p=G9);const u=new Df(this.options);this.store=new Sf(this.options.resources,this.options);const g=this.services;g.logger=Wa,g.resourceStore=this.store,g.languageUtils=u,g.pluralResolver=new V9(u,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),p&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(g.formatter=r(p),g.formatter.init(g,this.options),this.options.interpolation.format=g.formatter.format.bind(g.formatter)),g.interpolator=new $9(this.options),g.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},g.backendConnector=new Y9(r(this.modules.backend),g.resourceStore,g,this.options),g.backendConnector.on("*",function(b){for(var v=arguments.length,A=new Array(v>1?v-1:0),f=1;f<v;f++)A[f-1]=arguments[f];a.emit(b,...A)}),this.modules.languageDetector&&(g.languageDetector=r(this.modules.languageDetector),g.languageDetector.init&&g.languageDetector.init(g,this.options.detection,this.options)),this.modules.i18nFormat&&(g.i18nFormat=r(this.modules.i18nFormat),g.i18nFormat.init&&g.i18nFormat.init(this)),this.translator=new Ll(this.services,this.options),this.translator.on("*",function(b){for(var v=arguments.length,A=new Array(v>1?v-1:0),f=1;f<v;f++)A[f-1]=arguments[f];a.emit(b,...A)}),this.modules.external.forEach(b=>{b.init&&b.init(this)})}if(this.format=this.options.interpolation.format,t||(t=bs),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const p=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);p.length>0&&p[0]!=="dev"&&(this.options.lng=p[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(p=>{this[p]=function(){return a.store[p](...arguments)}}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(p=>{this[p]=function(){return a.store[p](...arguments),a}});const l=Hr(),d=()=>{const p=(u,g)=>{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),l.resolve(g),t(u,g)};if(this.languages&&this.options.compatibilityAPI!=="v1"&&!this.isInitialized)return p(null,this.t.bind(this));this.changeLanguage(this.options.lng,p)};return this.options.resources||!this.options.initImmediate?d():setTimeout(d,0),l}loadResources(a){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:bs;const i=he(a)?a:this.language;if(typeof a=="function"&&(t=a),!this.options.resources||this.options.partialBundledLanguages){if(i&&i.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return t();const r=[],o=s=>{if(!s||s==="cimode")return;this.services.languageUtils.toResolveHierarchy(s).forEach(d=>{d!=="cimode"&&r.indexOf(d)<0&&r.push(d)})};i?o(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>o(l)),this.options.preload&&this.options.preload.forEach(s=>o(s)),this.services.backendConnector.load(r,this.options.ns,s=>{!s&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),t(s)})}else t(null)}reloadResources(a,n,t){const i=Hr();return typeof a=="function"&&(t=a,a=void 0),typeof n=="function"&&(t=n,n=void 0),a||(a=this.languages),n||(n=this.options.ns),t||(t=bs),this.services.backendConnector.reload(a,n,r=>{i.resolve(),t(r)}),i}use(a){if(!a)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!a.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return a.type==="backend"&&(this.modules.backend=a),(a.type==="logger"||a.log&&a.warn&&a.error)&&(this.modules.logger=a),a.type==="languageDetector"&&(this.modules.languageDetector=a),a.type==="i18nFormat"&&(this.modules.i18nFormat=a),a.type==="postProcessor"&&hy.addPostProcessor(a),a.type==="formatter"&&(this.modules.formatter=a),a.type==="3rdParty"&&this.modules.external.push(a),this}setResolvedLanguage(a){if(!(!a||!this.languages)&&!(["cimode","dev"].indexOf(a)>-1))for(let n=0;n<this.languages.length;n++){const t=this.languages[n];if(!(["cimode","dev"].indexOf(t)>-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}}changeLanguage(a,n){var t=this;this.isLanguageChangingTo=a;const i=Hr();this.emit("languageChanging",a);const r=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},o=(l,d)=>{d?(r(d),this.translator.changeLanguage(d),this.isLanguageChangingTo=void 0,this.emit("languageChanged",d),this.logger.log("languageChanged",d)):this.isLanguageChangingTo=void 0,i.resolve(function(){return t.t(...arguments)}),n&&n(l,function(){return t.t(...arguments)})},s=l=>{!a&&!l&&this.services.languageDetector&&(l=[]);const d=he(l)?l:this.services.languageUtils.getBestMatchFromCodes(l);d&&(this.language||r(d),this.translator.language||this.translator.changeLanguage(d),this.services.languageDetector&&this.services.languageDetector.cacheUserLanguage&&this.services.languageDetector.cacheUserLanguage(d)),this.loadResources(d,p=>{o(p,d)})};return!a&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!a&&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(a),i}getFixedT(a,n,t){var i=this;const r=function(o,s){let l;if(typeof s!="object"){for(var d=arguments.length,p=new Array(d>2?d-2:0),u=2;u<d;u++)p[u-2]=arguments[u];l=i.options.overloadTranslationOptionHandler([o,s].concat(p))}else l={...s};l.lng=l.lng||r.lng,l.lngs=l.lngs||r.lngs,l.ns=l.ns||r.ns,l.keyPrefix!==""&&(l.keyPrefix=l.keyPrefix||t||r.keyPrefix);const g=i.options.keySeparator||".";let b;return l.keyPrefix&&Array.isArray(o)?b=o.map(v=>`${l.keyPrefix}${g}${v}`):b=l.keyPrefix?`${l.keyPrefix}${g}${o}`:o,i.t(b,l)};return he(a)?r.lng=a:r.lngs=a,r.ns=n,r.keyPrefix=t,r}t(){return this.translator&&this.translator.translate(...arguments)}exists(){return this.translator&&this.translator.exists(...arguments)}setDefaultNamespace(a){this.options.defaultNS=a}hasLoadedNamespace(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};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;const t=n.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,r=this.languages[this.languages.length-1];if(t.toLowerCase()==="cimode")return!0;const o=(s,l)=>{const d=this.services.backendConnector.state[`${s}|${l}`];return d===-1||d===0||d===2};if(n.precheck){const s=n.precheck(this,o);if(s!==void 0)return s}return!!(this.hasResourceBundle(t,a)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(t,a)&&(!i||o(r,a)))}loadNamespaces(a,n){const t=Hr();return this.options.ns?(he(a)&&(a=[a]),a.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{t.resolve(),n&&n(i)}),t):(n&&n(),Promise.resolve())}loadLanguages(a,n){const t=Hr();he(a)&&(a=[a]);const i=this.options.preload||[],r=a.filter(o=>i.indexOf(o)<0&&this.services.languageUtils.isSupportedCode(o));return r.length?(this.options.preload=i.concat(r),this.loadResources(o=>{t.resolve(),n&&n(o)}),t):(n&&n(),Promise.resolve())}dir(a){if(a||(a=this.resolvedLanguage||(this.languages&&this.languages.length>0?this.languages[0]:this.language)),!a)return"rtl";const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],t=this.services&&this.services.languageUtils||new Df(Pf());return n.indexOf(t.getLanguagePartFromCode(a))>-1||a.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;return new fo(a,n)}cloneInstance(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:bs;const t=a.forkResourceStore;t&&delete a.forkResourceStore;const i={...this.options,...a,isClone:!0},r=new fo(i);return(a.debug!==void 0||a.prefix!==void 0)&&(r.logger=r.logger.clone(a)),["store","services","language"].forEach(s=>{r[s]=this[s]}),r.services={...this.services},r.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},t&&(r.store=new Sf(this.store.data,i),r.services.resourceStore=r.store),r.translator=new Ll(r.services,i),r.translator.on("*",function(s){for(var l=arguments.length,d=new Array(l>1?l-1:0),p=1;p<l;p++)d[p-1]=arguments[p];r.emit(s,...d)}),r.init(i,n),r.translator.options=i,r.translator.backendConnector.services.utils={hasLoadedNamespace:r.hasLoadedNamespace.bind(r)},r}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const zt=fo.createInstance();zt.createInstance=fo.createInstance;zt.createInstance;zt.dir;zt.init;zt.loadResources;zt.reloadResources;zt.use;zt.changeLanguage;zt.getFixedT;zt.t;zt.exists;zt.setDefaultNamespace;zt.hasLoadedNamespace;zt.loadNamespaces;zt.loadLanguages;const Z9=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,J9={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},Q9=e=>J9[e],X9=e=>e.replace(Z9,Q9);let Ou={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:X9};const eJ=(e={})=>{Ou={...Ou,...e}},Gge=()=>Ou;let fy;const tJ=e=>{fy=e},Hge=()=>fy,aJ={type:"3rdParty",init(e){eJ(e.options.react),tJ(e)}},{slice:nJ,forEach:iJ}=[];function rJ(e){return iJ.call(nJ.call(arguments,1),a=>{if(a)for(const n in a)e[n]===void 0&&(e[n]=a[n])}),e}function oJ(e){return typeof e!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(n=>n.test(e))}const xf=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,sJ=function(e,a){const t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},i=encodeURIComponent(a);let r=`${e}=${i}`;if(t.maxAge>0){const o=t.maxAge-0;if(Number.isNaN(o))throw new Error("maxAge should be a Number");r+=`; Max-Age=${Math.floor(o)}`}if(t.domain){if(!xf.test(t.domain))throw new TypeError("option domain is invalid");r+=`; Domain=${t.domain}`}if(t.path){if(!xf.test(t.path))throw new TypeError("option path is invalid");r+=`; Path=${t.path}`}if(t.expires){if(typeof t.expires.toUTCString!="function")throw new TypeError("option expires is invalid");r+=`; Expires=${t.expires.toUTCString()}`}if(t.httpOnly&&(r+="; HttpOnly"),t.secure&&(r+="; Secure"),t.sameSite)switch(typeof t.sameSite=="string"?t.sameSite.toLowerCase():t.sameSite){case!0:r+="; SameSite=Strict";break;case"lax":r+="; SameSite=Lax";break;case"strict":r+="; SameSite=Strict";break;case"none":r+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return t.partitioned&&(r+="; Partitioned"),r},If={create(e,a,n,t){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(i.expires=new Date,i.expires.setTime(i.expires.getTime()+n*60*1e3)),t&&(i.domain=t),document.cookie=sJ(e,a,i)},read(e){const a=`${e}=`,n=document.cookie.split(";");for(let t=0;t<n.length;t++){let i=n[t];for(;i.charAt(0)===" ";)i=i.substring(1,i.length);if(i.indexOf(a)===0)return i.substring(a.length,i.length)}return null},remove(e,a){this.create(e,"",-1,a)}};var lJ={name:"cookie",lookup(e){let{lookupCookie:a}=e;if(a&&typeof document<"u")return If.read(a)||void 0},cacheUserLanguage(e,a){let{lookupCookie:n,cookieMinutes:t,cookieDomain:i,cookieOptions:r}=a;n&&typeof document<"u"&&If.create(n,e,t,i,r)}},cJ={name:"querystring",lookup(e){var t;let{lookupQuerystring:a}=e,n;if(typeof window<"u"){let{search:i}=window.location;!window.location.search&&((t=window.location.hash)==null?void 0:t.indexOf("?"))>-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const o=i.substring(1).split("&");for(let s=0;s<o.length;s++){const l=o[s].indexOf("=");l>0&&o[s].substring(0,l)===a&&(n=o[s].substring(l+1))}}return n}},dJ={name:"hash",lookup(e){var i;let{lookupHash:a,lookupFromHashIndex:n}=e,t;if(typeof window<"u"){const{hash:r}=window.location;if(r&&r.length>2){const o=r.substring(1);if(a){const s=o.split("&");for(let l=0;l<s.length;l++){const d=s[l].indexOf("=");d>0&&s[l].substring(0,d)===a&&(t=s[l].substring(d+1))}}if(t)return t;if(!t&&n>-1){const s=r.match(/\/([a-zA-Z-]*)/g);return Array.isArray(s)?(i=s[typeof n=="number"?n:0])==null?void 0:i.replace("/",""):void 0}}}return t}};let Wi=null;const Rf=()=>{if(Wi!==null)return Wi;try{if(Wi=typeof window<"u"&&window.localStorage!==null,!Wi)return!1;const e="i18next.translate.boo";window.localStorage.setItem(e,"foo"),window.localStorage.removeItem(e)}catch{Wi=!1}return Wi};var uJ={name:"localStorage",lookup(e){let{lookupLocalStorage:a}=e;if(a&&Rf())return window.localStorage.getItem(a)||void 0},cacheUserLanguage(e,a){let{lookupLocalStorage:n}=a;n&&Rf()&&window.localStorage.setItem(n,e)}};let Gi=null;const zf=()=>{if(Gi!==null)return Gi;try{if(Gi=typeof window<"u"&&window.sessionStorage!==null,!Gi)return!1;const e="i18next.translate.boo";window.sessionStorage.setItem(e,"foo"),window.sessionStorage.removeItem(e)}catch{Gi=!1}return Gi};var pJ={name:"sessionStorage",lookup(e){let{lookupSessionStorage:a}=e;if(a&&zf())return window.sessionStorage.getItem(a)||void 0},cacheUserLanguage(e,a){let{lookupSessionStorage:n}=a;n&&zf()&&window.sessionStorage.setItem(n,e)}},mJ={name:"navigator",lookup(e){const a=[];if(typeof navigator<"u"){const{languages:n,userLanguage:t,language:i}=navigator;if(n)for(let r=0;r<n.length;r++)a.push(n[r]);t&&a.push(t),i&&a.push(i)}return a.length>0?a:void 0}},gJ={name:"htmlTag",lookup(e){let{htmlTag:a}=e,n;const t=a||(typeof document<"u"?document.documentElement:null);return t&&typeof t.getAttribute=="function"&&(n=t.getAttribute("lang")),n}},hJ={name:"path",lookup(e){var i;let{lookupFromPathIndex:a}=e;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?(i=n[typeof a=="number"?a:0])==null?void 0:i.replace("/",""):void 0}},fJ={name:"subdomain",lookup(e){var i,r;let{lookupFromSubdomainIndex:a}=e;const n=typeof a=="number"?a+1:1,t=typeof window<"u"&&((r=(i=window.location)==null?void 0:i.hostname)==null?void 0:r.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i));if(t)return t[n]}};let vy=!1;try{document.cookie,vy=!0}catch{}const by=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];vy||by.splice(1,1);const vJ=()=>({order:by,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:e=>e});class yy{constructor(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(a,n)}init(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=a,this.options=rJ(n,this.options||{},vJ()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=i=>i.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=t,this.addDetector(lJ),this.addDetector(cJ),this.addDetector(uJ),this.addDetector(pJ),this.addDetector(mJ),this.addDetector(gJ),this.addDetector(hJ),this.addDetector(fJ),this.addDetector(dJ)}addDetector(a){return this.detectors[a.name]=a,this}detect(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,n=[];return a.forEach(t=>{if(this.detectors[t]){let i=this.detectors[t].lookup(this.options);i&&typeof i=="string"&&(i=[i]),i&&(n=n.concat(i))}}),n=n.filter(t=>t!=null&&!oJ(t)).map(t=>this.options.convertDetectedLanguage(t)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(a){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(a)>-1||n.forEach(t=>{this.detectors[t]&&this.detectors[t].cacheUserLanguage(a,this.options)}))}}yy.type="languageDetector";//! moment.js
//! version : 2.30.1
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
//! license : MIT
//! momentjs.com
var ky;function K(){return ky.apply(null,arguments)}function bJ(e){ky=e}function Ia(e){return e instanceof Array||Object.prototype.toString.call(e)==="[object Array]"}function Si(e){return e!=null&&Object.prototype.toString.call(e)==="[object Object]"}function Ue(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function Pm(e){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(e).length===0;var a;for(a in e)if(Ue(e,a))return!1;return!0}function Xt(e){return e===void 0}function Pn(e){return typeof e=="number"||Object.prototype.toString.call(e)==="[object Number]"}function Ho(e){return e instanceof Date||Object.prototype.toString.call(e)==="[object Date]"}function wy(e,a){var n=[],t,i=e.length;for(t=0;t<i;++t)n.push(a(e[t],t));return n}function Gn(e,a){for(var n in a)Ue(a,n)&&(e[n]=a[n]);return Ue(a,"toString")&&(e.toString=a.toString),Ue(a,"valueOf")&&(e.valueOf=a.valueOf),e}function en(e,a,n,t){return $y(e,a,n,t,!0).utc()}function yJ(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function Ae(e){return e._pf==null&&(e._pf=yJ()),e._pf}var Bu;Array.prototype.some?Bu=Array.prototype.some:Bu=function(e){var a=Object(this),n=a.length>>>0,t;for(t=0;t<n;t++)if(t in a&&e.call(this,a[t],t,a))return!0;return!1};function _m(e){var a=null,n=!1,t=e._d&&!isNaN(e._d.getTime());if(t&&(a=Ae(e),n=Bu.call(a.parsedDateParts,function(i){return i!=null}),t=a.overflow<0&&!a.empty&&!a.invalidEra&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&n),e._strict&&(t=t&&a.charsLeftOver===0&&a.unusedTokens.length===0&&a.bigHour===void 0)),Object.isFrozen==null||!Object.isFrozen(e))e._isValid=t;else return t;return e._isValid}function Ic(e){var a=en(NaN);return e!=null?Gn(Ae(a),e):Ae(a).userInvalidated=!0,a}var Mf=K.momentProperties=[],Ud=!1;function xm(e,a){var n,t,i,r=Mf.length;if(Xt(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),Xt(a._i)||(e._i=a._i),Xt(a._f)||(e._f=a._f),Xt(a._l)||(e._l=a._l),Xt(a._strict)||(e._strict=a._strict),Xt(a._tzm)||(e._tzm=a._tzm),Xt(a._isUTC)||(e._isUTC=a._isUTC),Xt(a._offset)||(e._offset=a._offset),Xt(a._pf)||(e._pf=Ae(a)),Xt(a._locale)||(e._locale=a._locale),r>0)for(n=0;n<r;n++)t=Mf[n],i=a[t],Xt(i)||(e[t]=i);return e}function Yo(e){xm(this,e),this._d=new Date(e._d!=null?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),Ud===!1&&(Ud=!0,K.updateOffset(this),Ud=!1)}function Ra(e){return e instanceof Yo||e!=null&&e._isAMomentObject!=null}function Ay(e){K.suppressDeprecationWarnings===!1&&typeof console<"u"}function ga(e,a){var n=!0;return Gn(function(){if(K.deprecationHandler!=null&&K.deprecationHandler(null,e),n){var t=[],i,r,o,s=arguments.length;for(r=0;r<s;r++){if(i="",typeof arguments[r]=="object"){i+=`
[`+r+"] ";for(o in arguments[0])Ue(arguments[0],o)&&(i+=o+": "+arguments[0][o]+", ");i=i.slice(0,-2)}else i=arguments[r];t.push(i)}Ay(e+`
Arguments: `+Array.prototype.slice.call(t).join("")+`
`+new Error().stack),n=!1}return a.apply(this,arguments)},a)}var Nf={};function Sy(e,a){K.deprecationHandler!=null&&K.deprecationHandler(e,a),Nf[e]||(Ay(a),Nf[e]=!0)}K.suppressDeprecationWarnings=!1;K.deprecationHandler=null;function tn(e){return typeof Function<"u"&&e instanceof Function||Object.prototype.toString.call(e)==="[object Function]"}function kJ(e){var a,n;for(n in e)Ue(e,n)&&(a=e[n],tn(a)?this[n]=a:this["_"+n]=a);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function Uu(e,a){var n=Gn({},e),t;for(t in a)Ue(a,t)&&(Si(e[t])&&Si(a[t])?(n[t]={},Gn(n[t],e[t]),Gn(n[t],a[t])):a[t]!=null?n[t]=a[t]:delete n[t]);for(t in e)Ue(e,t)&&!Ue(a,t)&&Si(e[t])&&(n[t]=Gn({},n[t]));return n}function Im(e){e!=null&&this.set(e)}var qu;Object.keys?qu=Object.keys:qu=function(e){var a,n=[];for(a in e)Ue(e,a)&&n.push(a);return n};var wJ={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function AJ(e,a,n){var t=this._calendar[e]||this._calendar.sameElse;return tn(t)?t.call(a,n):t}function Qa(e,a,n){var t=""+Math.abs(e),i=a-t.length,r=e>=0;return(r?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+t}var Rm=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,ys=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,qd={},or={};function se(e,a,n,t){var i=t;typeof t=="string"&&(i=function(){return this[t]()}),e&&(or[e]=i),a&&(or[a[0]]=function(){return Qa(i.apply(this,arguments),a[1],a[2])}),n&&(or[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function SJ(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function CJ(e){var a=e.match(Rm),n,t;for(n=0,t=a.length;n<t;n++)or[a[n]]?a[n]=or[a[n]]:a[n]=SJ(a[n]);return function(i){var r="",o;for(o=0;o<t;o++)r+=tn(a[o])?a[o].call(i,e):a[o];return r}}function ll(e,a){return e.isValid()?(a=Cy(a,e.localeData()),qd[a]=qd[a]||CJ(a),qd[a](e)):e.localeData().invalidDate()}function Cy(e,a){var n=5;function t(i){return a.longDateFormat(i)||i}for(ys.lastIndex=0;n>=0&&ys.test(e);)e=e.replace(ys,t),ys.lastIndex=0,n-=1;return e}var DJ={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function TJ(e){var a=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return a||!n?a:(this._longDateFormat[e]=n.match(Rm).map(function(t){return t==="MMMM"||t==="MM"||t==="DD"||t==="dddd"?t.slice(1):t}).join(""),this._longDateFormat[e])}var EJ="Invalid date";function PJ(){return this._invalidDate}var _J="%d",xJ=/\d{1,2}/;function IJ(e){return this._ordinal.replace("%d",e)}var RJ={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function zJ(e,a,n,t){var i=this._relativeTime[n];return tn(i)?i(e,a,n,t):i.replace(/%d/i,e)}function MJ(e,a){var n=this._relativeTime[e>0?"future":"past"];return tn(n)?n(a):n.replace(/%s/i,a)}var Ff={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function ha(e){return typeof e=="string"?Ff[e]||Ff[e.toLowerCase()]:void 0}function zm(e){var a={},n,t;for(t in e)Ue(e,t)&&(n=ha(t),n&&(a[n]=e[t]));return a}var NJ={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function FJ(e){var a=[],n;for(n in e)Ue(e,n)&&a.push({unit:n,priority:NJ[n]});return a.sort(function(t,i){return t.priority-i.priority}),a}var Dy=/\d/,na=/\d\d/,Ty=/\d{3}/,Mm=/\d{4}/,Rc=/[+-]?\d{6}/,it=/\d\d?/,Ey=/\d\d\d\d?/,Py=/\d\d\d\d\d\d?/,zc=/\d{1,3}/,Nm=/\d{1,4}/,Mc=/[+-]?\d{1,6}/,Ir=/\d+/,Nc=/[+-]?\d+/,LJ=/Z|[+-]\d\d:?\d\d/gi,Fc=/Z|[+-]\d\d(?::?\d\d)?/gi,jJ=/[+-]?\d+(\.\d{1,3})?/,Ko=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,Rr=/^[1-9]\d?/,Fm=/^([1-9]\d|\d)/,jl;jl={};function ee(e,a,n){jl[e]=tn(a)?a:function(t,i){return t&&n?n:a}}function OJ(e,a){return Ue(jl,e)?jl[e](a._strict,a._locale):new RegExp(BJ(e))}function BJ(e){return Dn(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,n,t,i,r){return n||t||i||r}))}function Dn(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function da(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function xe(e){var a=+e,n=0;return a!==0&&isFinite(a)&&(n=da(a)),n}var Vu={};function Ye(e,a){var n,t=a,i;for(typeof e=="string"&&(e=[e]),Pn(a)&&(t=function(r,o){o[a]=xe(r)}),i=e.length,n=0;n<i;n++)Vu[e[n]]=t}function Zo(e,a){Ye(e,function(n,t,i,r){i._w=i._w||{},a(n,i._w,i,r)})}function UJ(e,a,n){a!=null&&Ue(Vu,e)&&Vu[e](a,n._a,n,e)}function Lc(e){return e%4===0&&e%100!==0||e%400===0}var Vt=0,An=1,Va=2,Rt=3,xa=4,Sn=5,wi=6,qJ=7,VJ=8;se("Y",0,0,function(){var e=this.year();return e<=9999?Qa(e,4):"+"+e});se(0,["YY",2],0,function(){return this.year()%100});se(0,["YYYY",4],0,"year");se(0,["YYYYY",5],0,"year");se(0,["YYYYYY",6,!0],0,"year");ee("Y",Nc);ee("YY",it,na);ee("YYYY",Nm,Mm);ee("YYYYY",Mc,Rc);ee("YYYYYY",Mc,Rc);Ye(["YYYYY","YYYYYY"],Vt);Ye("YYYY",function(e,a){a[Vt]=e.length===2?K.parseTwoDigitYear(e):xe(e)});Ye("YY",function(e,a){a[Vt]=K.parseTwoDigitYear(e)});Ye("Y",function(e,a){a[Vt]=parseInt(e,10)});function oo(e){return Lc(e)?366:365}K.parseTwoDigitYear=function(e){return xe(e)+(xe(e)>68?1900:2e3)};var _y=zr("FullYear",!0);function $J(){return Lc(this.year())}function zr(e,a){return function(n){return n!=null?(xy(this,e,n),K.updateOffset(this,a),this):vo(this,e)}}function vo(e,a){if(!e.isValid())return NaN;var n=e._d,t=e._isUTC;switch(a){case"Milliseconds":return t?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return t?n.getUTCSeconds():n.getSeconds();case"Minutes":return t?n.getUTCMinutes():n.getMinutes();case"Hours":return t?n.getUTCHours():n.getHours();case"Date":return t?n.getUTCDate():n.getDate();case"Day":return t?n.getUTCDay():n.getDay();case"Month":return t?n.getUTCMonth():n.getMonth();case"FullYear":return t?n.getUTCFullYear():n.getFullYear();default:return NaN}}function xy(e,a,n){var t,i,r,o,s;if(!(!e.isValid()||isNaN(n))){switch(t=e._d,i=e._isUTC,a){case"Milliseconds":return void(i?t.setUTCMilliseconds(n):t.setMilliseconds(n));case"Seconds":return void(i?t.setUTCSeconds(n):t.setSeconds(n));case"Minutes":return void(i?t.setUTCMinutes(n):t.setMinutes(n));case"Hours":return void(i?t.setUTCHours(n):t.setHours(n));case"Date":return void(i?t.setUTCDate(n):t.setDate(n));case"FullYear":break;default:return}r=n,o=e.month(),s=e.date(),s=s===29&&o===1&&!Lc(r)?28:s,i?t.setUTCFullYear(r,o,s):t.setFullYear(r,o,s)}}function WJ(e){return e=ha(e),tn(this[e])?this[e]():this}function GJ(e,a){if(typeof e=="object"){e=zm(e);var n=FJ(e),t,i=n.length;for(t=0;t<i;t++)this[n[t].unit](e[n[t].unit])}else if(e=ha(e),tn(this[e]))return this[e](a);return this}function HJ(e,a){return(e%a+a)%a}var ft;Array.prototype.indexOf?ft=Array.prototype.indexOf:ft=function(e){var a;for(a=0;a<this.length;++a)if(this[a]===e)return a;return-1};function Lm(e,a){if(isNaN(e)||isNaN(a))return NaN;var n=HJ(a,12);return e+=(a-n)/12,n===1?Lc(e)?29:28:31-n%7%2}se("M",["MM",2],"Mo",function(){return this.month()+1});se("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)});se("MMMM",0,0,function(e){return this.localeData().months(this,e)});ee("M",it,Rr);ee("MM",it,na);ee("MMM",function(e,a){return a.monthsShortRegex(e)});ee("MMMM",function(e,a){return a.monthsRegex(e)});Ye(["M","MM"],function(e,a){a[An]=xe(e)-1});Ye(["MMM","MMMM"],function(e,a,n,t){var i=n._locale.monthsParse(e,t,n._strict);i!=null?a[An]=i:Ae(n).invalidMonth=e});var YJ="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Iy="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Ry=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,KJ=Ko,ZJ=Ko;function JJ(e,a){return e?Ia(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Ry).test(a)?"format":"standalone"][e.month()]:Ia(this._months)?this._months:this._months.standalone}function QJ(e,a){return e?Ia(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Ry.test(a)?"format":"standalone"][e.month()]:Ia(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function XJ(e,a,n){var t,i,r,o=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],t=0;t<12;++t)r=en([2e3,t]),this._shortMonthsParse[t]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[t]=this.months(r,"").toLocaleLowerCase();return n?a==="MMM"?(i=ft.call(this._shortMonthsParse,o),i!==-1?i:null):(i=ft.call(this._longMonthsParse,o),i!==-1?i:null):a==="MMM"?(i=ft.call(this._shortMonthsParse,o),i!==-1?i:(i=ft.call(this._longMonthsParse,o),i!==-1?i:null)):(i=ft.call(this._longMonthsParse,o),i!==-1?i:(i=ft.call(this._shortMonthsParse,o),i!==-1?i:null))}function e7(e,a,n){var t,i,r;if(this._monthsParseExact)return XJ.call(this,e,a,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),t=0;t<12;t++){if(i=en([2e3,t]),n&&!this._longMonthsParse[t]&&(this._longMonthsParse[t]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[t]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),!n&&!this._monthsParse[t]&&(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[t]=new RegExp(r.replace(".",""),"i")),n&&a==="MMMM"&&this._longMonthsParse[t].test(e))return t;if(n&&a==="MMM"&&this._shortMonthsParse[t].test(e))return t;if(!n&&this._monthsParse[t].test(e))return t}}function zy(e,a){if(!e.isValid())return e;if(typeof a=="string"){if(/^\d+$/.test(a))a=xe(a);else if(a=e.localeData().monthsParse(a),!Pn(a))return e}var n=a,t=e.date();return t=t<29?t:Math.min(t,Lm(e.year(),n)),e._isUTC?e._d.setUTCMonth(n,t):e._d.setMonth(n,t),e}function My(e){return e!=null?(zy(this,e),K.updateOffset(this,!0),this):vo(this,"Month")}function t7(){return Lm(this.year(),this.month())}function a7(e){return this._monthsParseExact?(Ue(this,"_monthsRegex")||Ny.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(Ue(this,"_monthsShortRegex")||(this._monthsShortRegex=KJ),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)}function n7(e){return this._monthsParseExact?(Ue(this,"_monthsRegex")||Ny.call(this),e?this._monthsStrictRegex:this._monthsRegex):(Ue(this,"_monthsRegex")||(this._monthsRegex=ZJ),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)}function Ny(){function e(l,d){return d.length-l.length}var a=[],n=[],t=[],i,r,o,s;for(i=0;i<12;i++)r=en([2e3,i]),o=Dn(this.monthsShort(r,"")),s=Dn(this.months(r,"")),a.push(o),n.push(s),t.push(s),t.push(o);a.sort(e),n.sort(e),t.sort(e),this._monthsRegex=new RegExp("^("+t.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+a.join("|")+")","i")}function i7(e,a,n,t,i,r,o){var s;return e<100&&e>=0?(s=new Date(e+400,a,n,t,i,r,o),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,a,n,t,i,r,o),s}function bo(e){var a,n;return e<100&&e>=0?(n=Array.prototype.slice.call(arguments),n[0]=e+400,a=new Date(Date.UTC.apply(null,n)),isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e)):a=new Date(Date.UTC.apply(null,arguments)),a}function Ol(e,a,n){var t=7+a-n,i=(7+bo(e,0,t).getUTCDay()-a)%7;return-i+t-1}function Fy(e,a,n,t,i){var r=(7+n-t)%7,o=Ol(e,t,i),s=1+7*(a-1)+r+o,l,d;return s<=0?(l=e-1,d=oo(l)+s):s>oo(e)?(l=e+1,d=s-oo(e)):(l=e,d=s),{year:l,dayOfYear:d}}function yo(e,a,n){var t=Ol(e.year(),a,n),i=Math.floor((e.dayOfYear()-t-1)/7)+1,r,o;return i<1?(o=e.year()-1,r=i+Tn(o,a,n)):i>Tn(e.year(),a,n)?(r=i-Tn(e.year(),a,n),o=e.year()+1):(o=e.year(),r=i),{week:r,year:o}}function Tn(e,a,n){var t=Ol(e,a,n),i=Ol(e+1,a,n);return(oo(e)-t+i)/7}se("w",["ww",2],"wo","week");se("W",["WW",2],"Wo","isoWeek");ee("w",it,Rr);ee("ww",it,na);ee("W",it,Rr);ee("WW",it,na);Zo(["w","ww","W","WW"],function(e,a,n,t){a[t.substr(0,1)]=xe(e)});function r7(e){return yo(e,this._week.dow,this._week.doy).week}var o7={dow:0,doy:6};function s7(){return this._week.dow}function l7(){return this._week.doy}function c7(e){var a=this.localeData().week(this);return e==null?a:this.add((e-a)*7,"d")}function d7(e){var a=yo(this,1,4).week;return e==null?a:this.add((e-a)*7,"d")}se("d",0,"do","day");se("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)});se("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)});se("dddd",0,0,function(e){return this.localeData().weekdays(this,e)});se("e",0,0,"weekday");se("E",0,0,"isoWeekday");ee("d",it);ee("e",it);ee("E",it);ee("dd",function(e,a){return a.weekdaysMinRegex(e)});ee("ddd",function(e,a){return a.weekdaysShortRegex(e)});ee("dddd",function(e,a){return a.weekdaysRegex(e)});Zo(["dd","ddd","dddd"],function(e,a,n,t){var i=n._locale.weekdaysParse(e,t,n._strict);i!=null?a.d=i:Ae(n).invalidWeekday=e});Zo(["d","e","E"],function(e,a,n,t){a[t]=xe(e)});function u7(e,a){return typeof e!="string"?e:isNaN(e)?(e=a.weekdaysParse(e),typeof e=="number"?e:null):parseInt(e,10)}function p7(e,a){return typeof e=="string"?a.weekdaysParse(e)%7||7:isNaN(e)?null:e}function jm(e,a){return e.slice(a,7).concat(e.slice(0,a))}var m7="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Ly="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),g7="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),h7=Ko,f7=Ko,v7=Ko;function b7(e,a){var n=Ia(this._weekdays)?this._weekdays:this._weekdays[e&&e!==!0&&this._weekdays.isFormat.test(a)?"format":"standalone"];return e===!0?jm(n,this._week.dow):e?n[e.day()]:n}function y7(e){return e===!0?jm(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function k7(e){return e===!0?jm(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function w7(e,a,n){var t,i,r,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],t=0;t<7;++t)r=en([2e3,1]).day(t),this._minWeekdaysParse[t]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[t]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[t]=this.weekdays(r,"").toLocaleLowerCase();return n?a==="dddd"?(i=ft.call(this._weekdaysParse,o),i!==-1?i:null):a==="ddd"?(i=ft.call(this._shortWeekdaysParse,o),i!==-1?i:null):(i=ft.call(this._minWeekdaysParse,o),i!==-1?i:null):a==="dddd"?(i=ft.call(this._weekdaysParse,o),i!==-1||(i=ft.call(this._shortWeekdaysParse,o),i!==-1)?i:(i=ft.call(this._minWeekdaysParse,o),i!==-1?i:null)):a==="ddd"?(i=ft.call(this._shortWeekdaysParse,o),i!==-1||(i=ft.call(this._weekdaysParse,o),i!==-1)?i:(i=ft.call(this._minWeekdaysParse,o),i!==-1?i:null)):(i=ft.call(this._minWeekdaysParse,o),i!==-1||(i=ft.call(this._weekdaysParse,o),i!==-1)?i:(i=ft.call(this._shortWeekdaysParse,o),i!==-1?i:null))}function A7(e,a,n){var t,i,r;if(this._weekdaysParseExact)return w7.call(this,e,a,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),t=0;t<7;t++){if(i=en([2e3,1]).day(t),n&&!this._fullWeekdaysParse[t]&&(this._fullWeekdaysParse[t]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[t]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[t]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[t]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[t]=new RegExp(r.replace(".",""),"i")),n&&a==="dddd"&&this._fullWeekdaysParse[t].test(e))return t;if(n&&a==="ddd"&&this._shortWeekdaysParse[t].test(e))return t;if(n&&a==="dd"&&this._minWeekdaysParse[t].test(e))return t;if(!n&&this._weekdaysParse[t].test(e))return t}}function S7(e){if(!this.isValid())return e!=null?this:NaN;var a=vo(this,"Day");return e!=null?(e=u7(e,this.localeData()),this.add(e-a,"d")):a}function C7(e){if(!this.isValid())return e!=null?this:NaN;var a=(this.day()+7-this.localeData()._week.dow)%7;return e==null?a:this.add(e-a,"d")}function D7(e){if(!this.isValid())return e!=null?this:NaN;if(e!=null){var a=p7(e,this.localeData());return this.day(this.day()%7?a:a-7)}else return this.day()||7}function T7(e){return this._weekdaysParseExact?(Ue(this,"_weekdaysRegex")||Om.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(Ue(this,"_weekdaysRegex")||(this._weekdaysRegex=h7),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function E7(e){return this._weekdaysParseExact?(Ue(this,"_weekdaysRegex")||Om.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(Ue(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=f7),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function P7(e){return this._weekdaysParseExact?(Ue(this,"_weekdaysRegex")||Om.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(Ue(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=v7),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Om(){function e(p,u){return u.length-p.length}var a=[],n=[],t=[],i=[],r,o,s,l,d;for(r=0;r<7;r++)o=en([2e3,1]).day(r),s=Dn(this.weekdaysMin(o,"")),l=Dn(this.weekdaysShort(o,"")),d=Dn(this.weekdays(o,"")),a.push(s),n.push(l),t.push(d),i.push(s),i.push(l),i.push(d);a.sort(e),n.sort(e),t.sort(e),i.sort(e),this._weekdaysRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+t.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Bm(){return this.hours()%12||12}function _7(){return this.hours()||24}se("H",["HH",2],0,"hour");se("h",["hh",2],0,Bm);se("k",["kk",2],0,_7);se("hmm",0,0,function(){return""+Bm.apply(this)+Qa(this.minutes(),2)});se("hmmss",0,0,function(){return""+Bm.apply(this)+Qa(this.minutes(),2)+Qa(this.seconds(),2)});se("Hmm",0,0,function(){return""+this.hours()+Qa(this.minutes(),2)});se("Hmmss",0,0,function(){return""+this.hours()+Qa(this.minutes(),2)+Qa(this.seconds(),2)});function jy(e,a){se(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}jy("a",!0);jy("A",!1);function Oy(e,a){return a._meridiemParse}ee("a",Oy);ee("A",Oy);ee("H",it,Fm);ee("h",it,Rr);ee("k",it,Rr);ee("HH",it,na);ee("hh",it,na);ee("kk",it,na);ee("hmm",Ey);ee("hmmss",Py);ee("Hmm",Ey);ee("Hmmss",Py);Ye(["H","HH"],Rt);Ye(["k","kk"],function(e,a,n){var t=xe(e);a[Rt]=t===24?0:t});Ye(["a","A"],function(e,a,n){n._isPm=n._locale.isPM(e),n._meridiem=e});Ye(["h","hh"],function(e,a,n){a[Rt]=xe(e),Ae(n).bigHour=!0});Ye("hmm",function(e,a,n){var t=e.length-2;a[Rt]=xe(e.substr(0,t)),a[xa]=xe(e.substr(t)),Ae(n).bigHour=!0});Ye("hmmss",function(e,a,n){var t=e.length-4,i=e.length-2;a[Rt]=xe(e.substr(0,t)),a[xa]=xe(e.substr(t,2)),a[Sn]=xe(e.substr(i)),Ae(n).bigHour=!0});Ye("Hmm",function(e,a,n){var t=e.length-2;a[Rt]=xe(e.substr(0,t)),a[xa]=xe(e.substr(t))});Ye("Hmmss",function(e,a,n){var t=e.length-4,i=e.length-2;a[Rt]=xe(e.substr(0,t)),a[xa]=xe(e.substr(t,2)),a[Sn]=xe(e.substr(i))});function x7(e){return(e+"").toLowerCase().charAt(0)==="p"}var I7=/[ap]\.?m?\.?/i,R7=zr("Hours",!0);function z7(e,a,n){return e>11?n?"pm":"PM":n?"am":"AM"}var By={calendar:wJ,longDateFormat:DJ,invalidDate:EJ,ordinal:_J,dayOfMonthOrdinalParse:xJ,relativeTime:RJ,months:YJ,monthsShort:Iy,week:o7,weekdays:m7,weekdaysMin:g7,weekdaysShort:Ly,meridiemParse:I7},st={},Yr={},ko;function M7(e,a){var n,t=Math.min(e.length,a.length);for(n=0;n<t;n+=1)if(e[n]!==a[n])return n;return t}function Lf(e){return e&&e.toLowerCase().replace("_","-")}function N7(e){for(var a=0,n,t,i,r;a<e.length;){for(r=Lf(e[a]).split("-"),n=r.length,t=Lf(e[a+1]),t=t?t.split("-"):null;n>0;){if(i=jc(r.slice(0,n).join("-")),i)return i;if(t&&t.length>=n&&M7(r,t)>=n-1)break;n--}a++}return ko}function F7(e){return!!(e&&e.match("^[^/\\\\]*$"))}function jc(e){var a=null,n;if(st[e]===void 0&&typeof module<"u"&&module&&module.exports&&F7(e))try{a=ko._abbr,n=require,n("./locale/"+e),Zn(a)}catch{st[e]=null}return st[e]}function Zn(e,a){var n;return e&&(Xt(a)?n=Mn(e):n=Um(e,a),n&&(ko=n)),ko._abbr}function Um(e,a){if(a!==null){var n,t=By;if(a.abbr=e,st[e]!=null)Sy("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),t=st[e]._config;else if(a.parentLocale!=null)if(st[a.parentLocale]!=null)t=st[a.parentLocale]._config;else if(n=jc(a.parentLocale),n!=null)t=n._config;else return Yr[a.parentLocale]||(Yr[a.parentLocale]=[]),Yr[a.parentLocale].push({name:e,config:a}),null;return st[e]=new Im(Uu(t,a)),Yr[e]&&Yr[e].forEach(function(i){Um(i.name,i.config)}),Zn(e),st[e]}else return delete st[e],null}function L7(e,a){if(a!=null){var n,t,i=By;st[e]!=null&&st[e].parentLocale!=null?st[e].set(Uu(st[e]._config,a)):(t=jc(e),t!=null&&(i=t._config),a=Uu(i,a),t==null&&(a.abbr=e),n=new Im(a),n.parentLocale=st[e],st[e]=n),Zn(e)}else st[e]!=null&&(st[e].parentLocale!=null?(st[e]=st[e].parentLocale,e===Zn()&&Zn(e)):st[e]!=null&&delete st[e]);return st[e]}function Mn(e){var a;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ko;if(!Ia(e)){if(a=jc(e),a)return a;e=[e]}return N7(e)}function j7(){return qu(st)}function qm(e){var a,n=e._a;return n&&Ae(e).overflow===-2&&(a=n[An]<0||n[An]>11?An:n[Va]<1||n[Va]>Lm(n[Vt],n[An])?Va:n[Rt]<0||n[Rt]>24||n[Rt]===24&&(n[xa]!==0||n[Sn]!==0||n[wi]!==0)?Rt:n[xa]<0||n[xa]>59?xa:n[Sn]<0||n[Sn]>59?Sn:n[wi]<0||n[wi]>999?wi:-1,Ae(e)._overflowDayOfYear&&(a<Vt||a>Va)&&(a=Va),Ae(e)._overflowWeeks&&a===-1&&(a=qJ),Ae(e)._overflowWeekday&&a===-1&&(a=VJ),Ae(e).overflow=a),e}var O7=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,B7=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,U7=/Z|[+-]\d\d(?::?\d\d)?/,ks=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Vd=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],q7=/^\/?Date\((-?\d+)/i,V7=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,$7={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Uy(e){var a,n,t=e._i,i=O7.exec(t)||B7.exec(t),r,o,s,l,d=ks.length,p=Vd.length;if(i){for(Ae(e).iso=!0,a=0,n=d;a<n;a++)if(ks[a][1].exec(i[1])){o=ks[a][0],r=ks[a][2]!==!1;break}if(o==null){e._isValid=!1;return}if(i[3]){for(a=0,n=p;a<n;a++)if(Vd[a][1].exec(i[3])){s=(i[2]||" ")+Vd[a][0];break}if(s==null){e._isValid=!1;return}}if(!r&&s!=null){e._isValid=!1;return}if(i[4])if(U7.exec(i[4]))l="Z";else{e._isValid=!1;return}e._f=o+(s||"")+(l||""),$m(e)}else e._isValid=!1}function W7(e,a,n,t,i,r){var o=[G7(e),Iy.indexOf(a),parseInt(n,10),parseInt(t,10),parseInt(i,10)];return r&&o.push(parseInt(r,10)),o}function G7(e){var a=parseInt(e,10);return a<=49?2e3+a:a<=999?1900+a:a}function H7(e){return e.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function Y7(e,a,n){if(e){var t=Ly.indexOf(e),i=new Date(a[0],a[1],a[2]).getDay();if(t!==i)return Ae(n).weekdayMismatch=!0,n._isValid=!1,!1}return!0}function K7(e,a,n){if(e)return $7[e];if(a)return 0;var t=parseInt(n,10),i=t%100,r=(t-i)/100;return r*60+i}function qy(e){var a=V7.exec(H7(e._i)),n;if(a){if(n=W7(a[4],a[3],a[2],a[5],a[6],a[7]),!Y7(a[1],n,e))return;e._a=n,e._tzm=K7(a[8],a[9],a[10]),e._d=bo.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),Ae(e).rfc2822=!0}else e._isValid=!1}function Z7(e){var a=q7.exec(e._i);if(a!==null){e._d=new Date(+a[1]);return}if(Uy(e),e._isValid===!1)delete e._isValid;else return;if(qy(e),e._isValid===!1)delete e._isValid;else return;e._strict?e._isValid=!1:K.createFromInputFallback(e)}K.createFromInputFallback=ga("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))});function Ji(e,a,n){return e??a??n}function J7(e){var a=new Date(K.now());return e._useUTC?[a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate()]:[a.getFullYear(),a.getMonth(),a.getDate()]}function Vm(e){var a,n,t=[],i,r,o;if(!e._d){for(i=J7(e),e._w&&e._a[Va]==null&&e._a[An]==null&&Q7(e),e._dayOfYear!=null&&(o=Ji(e._a[Vt],i[Vt]),(e._dayOfYear>oo(o)||e._dayOfYear===0)&&(Ae(e)._overflowDayOfYear=!0),n=bo(o,0,e._dayOfYear),e._a[An]=n.getUTCMonth(),e._a[Va]=n.getUTCDate()),a=0;a<3&&e._a[a]==null;++a)e._a[a]=t[a]=i[a];for(;a<7;a++)e._a[a]=t[a]=e._a[a]==null?a===2?1:0:e._a[a];e._a[Rt]===24&&e._a[xa]===0&&e._a[Sn]===0&&e._a[wi]===0&&(e._nextDay=!0,e._a[Rt]=0),e._d=(e._useUTC?bo:i7).apply(null,t),r=e._useUTC?e._d.getUTCDay():e._d.getDay(),e._tzm!=null&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Rt]=24),e._w&&typeof e._w.d<"u"&&e._w.d!==r&&(Ae(e).weekdayMismatch=!0)}}function Q7(e){var a,n,t,i,r,o,s,l,d;a=e._w,a.GG!=null||a.W!=null||a.E!=null?(r=1,o=4,n=Ji(a.GG,e._a[Vt],yo(at(),1,4).year),t=Ji(a.W,1),i=Ji(a.E,1),(i<1||i>7)&&(l=!0)):(r=e._locale._week.dow,o=e._locale._week.doy,d=yo(at(),r,o),n=Ji(a.gg,e._a[Vt],d.year),t=Ji(a.w,d.week),a.d!=null?(i=a.d,(i<0||i>6)&&(l=!0)):a.e!=null?(i=a.e+r,(a.e<0||a.e>6)&&(l=!0)):i=r),t<1||t>Tn(n,r,o)?Ae(e)._overflowWeeks=!0:l!=null?Ae(e)._overflowWeekday=!0:(s=Fy(n,t,i,r,o),e._a[Vt]=s.year,e._dayOfYear=s.dayOfYear)}K.ISO_8601=function(){};K.RFC_2822=function(){};function $m(e){if(e._f===K.ISO_8601){Uy(e);return}if(e._f===K.RFC_2822){qy(e);return}e._a=[],Ae(e).empty=!0;var a=""+e._i,n,t,i,r,o,s=a.length,l=0,d,p;for(i=Cy(e._f,e._locale).match(Rm)||[],p=i.length,n=0;n<p;n++)r=i[n],t=(a.match(OJ(r,e))||[])[0],t&&(o=a.substr(0,a.indexOf(t)),o.length>0&&Ae(e).unusedInput.push(o),a=a.slice(a.indexOf(t)+t.length),l+=t.length),or[r]?(t?Ae(e).empty=!1:Ae(e).unusedTokens.push(r),UJ(r,t,e)):e._strict&&!t&&Ae(e).unusedTokens.push(r);Ae(e).charsLeftOver=s-l,a.length>0&&Ae(e).unusedInput.push(a),e._a[Rt]<=12&&Ae(e).bigHour===!0&&e._a[Rt]>0&&(Ae(e).bigHour=void 0),Ae(e).parsedDateParts=e._a.slice(0),Ae(e).meridiem=e._meridiem,e._a[Rt]=X7(e._locale,e._a[Rt],e._meridiem),d=Ae(e).era,d!==null&&(e._a[Vt]=e._locale.erasConvertYear(d,e._a[Vt])),Vm(e),qm(e)}function X7(e,a,n){var t;return n==null?a:e.meridiemHour!=null?e.meridiemHour(a,n):(e.isPM!=null&&(t=e.isPM(n),t&&a<12&&(a+=12),!t&&a===12&&(a=0)),a)}function eQ(e){var a,n,t,i,r,o,s=!1,l=e._f.length;if(l===0){Ae(e).invalidFormat=!0,e._d=new Date(NaN);return}for(i=0;i<l;i++)r=0,o=!1,a=xm({},e),e._useUTC!=null&&(a._useUTC=e._useUTC),a._f=e._f[i],$m(a),_m(a)&&(o=!0),r+=Ae(a).charsLeftOver,r+=Ae(a).unusedTokens.length*10,Ae(a).score=r,s?r<t&&(t=r,n=a):(t==null||r<t||o)&&(t=r,n=a,o&&(s=!0));Gn(e,n||a)}function tQ(e){if(!e._d){var a=zm(e._i),n=a.day===void 0?a.date:a.day;e._a=wy([a.year,a.month,n,a.hour,a.minute,a.second,a.millisecond],function(t){return t&&parseInt(t,10)}),Vm(e)}}function aQ(e){var a=new Yo(qm(Vy(e)));return a._nextDay&&(a.add(1,"d"),a._nextDay=void 0),a}function Vy(e){var a=e._i,n=e._f;return e._locale=e._locale||Mn(e._l),a===null||n===void 0&&a===""?Ic({nullInput:!0}):(typeof a=="string"&&(e._i=a=e._locale.preparse(a)),Ra(a)?new Yo(qm(a)):(Ho(a)?e._d=a:Ia(n)?eQ(e):n?$m(e):nQ(e),_m(e)||(e._d=null),e))}function nQ(e){var a=e._i;Xt(a)?e._d=new Date(K.now()):Ho(a)?e._d=new Date(a.valueOf()):typeof a=="string"?Z7(e):Ia(a)?(e._a=wy(a.slice(0),function(n){return parseInt(n,10)}),Vm(e)):Si(a)?tQ(e):Pn(a)?e._d=new Date(a):K.createFromInputFallback(e)}function $y(e,a,n,t,i){var r={};return(a===!0||a===!1)&&(t=a,a=void 0),(n===!0||n===!1)&&(t=n,n=void 0),(Si(e)&&Pm(e)||Ia(e)&&e.length===0)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=i,r._l=n,r._i=e,r._f=a,r._strict=t,aQ(r)}function at(e,a,n,t){return $y(e,a,n,t,!1)}var iQ=ga("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=at.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:Ic()}),rQ=ga("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=at.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:Ic()});function Wy(e,a){var n,t;if(a.length===1&&Ia(a[0])&&(a=a[0]),!a.length)return at();for(n=a[0],t=1;t<a.length;++t)(!a[t].isValid()||a[t][e](n))&&(n=a[t]);return n}function oQ(){var e=[].slice.call(arguments,0);return Wy("isBefore",e)}function sQ(){var e=[].slice.call(arguments,0);return Wy("isAfter",e)}var lQ=function(){return Date.now?Date.now():+new Date},Kr=["year","quarter","month","week","day","hour","minute","second","millisecond"];function cQ(e){var a,n=!1,t,i=Kr.length;for(a in e)if(Ue(e,a)&&!(ft.call(Kr,a)!==-1&&(e[a]==null||!isNaN(e[a]))))return!1;for(t=0;t<i;++t)if(e[Kr[t]]){if(n)return!1;parseFloat(e[Kr[t]])!==xe(e[Kr[t]])&&(n=!0)}return!0}function dQ(){return this._isValid}function uQ(){return za(NaN)}function Oc(e){var a=zm(e),n=a.year||0,t=a.quarter||0,i=a.month||0,r=a.week||a.isoWeek||0,o=a.day||0,s=a.hour||0,l=a.minute||0,d=a.second||0,p=a.millisecond||0;this._isValid=cQ(a),this._milliseconds=+p+d*1e3+l*6e4+s*1e3*60*60,this._days=+o+r*7,this._months=+i+t*3+n*12,this._data={},this._locale=Mn(),this._bubble()}function cl(e){return e instanceof Oc}function $u(e){return e<0?Math.round(-1*e)*-1:Math.round(e)}function pQ(e,a,n){var t=Math.min(e.length,a.length),i=Math.abs(e.length-a.length),r=0,o;for(o=0;o<t;o++)xe(e[o])!==xe(a[o])&&r++;return r+i}function Gy(e,a){se(e,0,0,function(){var n=this.utcOffset(),t="+";return n<0&&(n=-n,t="-"),t+Qa(~~(n/60),2)+a+Qa(~~n%60,2)})}Gy("Z",":");Gy("ZZ","");ee("Z",Fc);ee("ZZ",Fc);Ye(["Z","ZZ"],function(e,a,n){n._useUTC=!0,n._tzm=Wm(Fc,e)});var mQ=/([\+\-]|\d\d)/gi;function Wm(e,a){var n=(a||"").match(e),t,i,r;return n===null?null:(t=n[n.length-1]||[],i=(t+"").match(mQ)||["-",0,0],r=+(i[1]*60)+xe(i[2]),r===0?0:i[0]==="+"?r:-r)}function Gm(e,a){var n,t;return a._isUTC?(n=a.clone(),t=(Ra(e)||Ho(e)?e.valueOf():at(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+t),K.updateOffset(n,!1),n):at(e).local()}function Wu(e){return-Math.round(e._d.getTimezoneOffset())}K.updateOffset=function(){};function gQ(e,a,n){var t=this._offset||0,i;if(!this.isValid())return e!=null?this:NaN;if(e!=null){if(typeof e=="string"){if(e=Wm(Fc,e),e===null)return this}else Math.abs(e)<16&&!n&&(e=e*60);return!this._isUTC&&a&&(i=Wu(this)),this._offset=e,this._isUTC=!0,i!=null&&this.add(i,"m"),t!==e&&(!a||this._changeInProgress?Ky(this,za(e-t,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,K.updateOffset(this,!0),this._changeInProgress=null)),this}else return this._isUTC?t:Wu(this)}function hQ(e,a){return e!=null?(typeof e!="string"&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}function fQ(e){return this.utcOffset(0,e)}function vQ(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Wu(this),"m")),this}function bQ(){if(this._tzm!=null)this.utcOffset(this._tzm,!1,!0);else if(typeof this._i=="string"){var e=Wm(LJ,this._i);e!=null?this.utcOffset(e):this.utcOffset(0,!0)}return this}function yQ(e){return this.isValid()?(e=e?at(e).utcOffset():0,(this.utcOffset()-e)%60===0):!1}function kQ(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function wQ(){if(!Xt(this._isDSTShifted))return this._isDSTShifted;var e={},a;return xm(e,this),e=Vy(e),e._a?(a=e._isUTC?en(e._a):at(e._a),this._isDSTShifted=this.isValid()&&pQ(e._a,a.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function AQ(){return this.isValid()?!this._isUTC:!1}function SQ(){return this.isValid()?this._isUTC:!1}function Hy(){return this.isValid()?this._isUTC&&this._offset===0:!1}var CQ=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,DQ=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function za(e,a){var n=e,t=null,i,r,o;return cl(e)?n={ms:e._milliseconds,d:e._days,M:e._months}:Pn(e)||!isNaN(+e)?(n={},a?n[a]=+e:n.milliseconds=+e):(t=CQ.exec(e))?(i=t[1]==="-"?-1:1,n={y:0,d:xe(t[Va])*i,h:xe(t[Rt])*i,m:xe(t[xa])*i,s:xe(t[Sn])*i,ms:xe($u(t[wi]*1e3))*i}):(t=DQ.exec(e))?(i=t[1]==="-"?-1:1,n={y:yi(t[2],i),M:yi(t[3],i),w:yi(t[4],i),d:yi(t[5],i),h:yi(t[6],i),m:yi(t[7],i),s:yi(t[8],i)}):n==null?n={}:typeof n=="object"&&("from"in n||"to"in n)&&(o=TQ(at(n.from),at(n.to)),n={},n.ms=o.milliseconds,n.M=o.months),r=new Oc(n),cl(e)&&Ue(e,"_locale")&&(r._locale=e._locale),cl(e)&&Ue(e,"_isValid")&&(r._isValid=e._isValid),r}za.fn=Oc.prototype;za.invalid=uQ;function yi(e,a){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*a}function jf(e,a){var n={};return n.months=a.month()-e.month()+(a.year()-e.year())*12,e.clone().add(n.months,"M").isAfter(a)&&--n.months,n.milliseconds=+a-+e.clone().add(n.months,"M"),n}function TQ(e,a){var n;return e.isValid()&&a.isValid()?(a=Gm(a,e),e.isBefore(a)?n=jf(e,a):(n=jf(a,e),n.milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Yy(e,a){return function(n,t){var i,r;return t!==null&&!isNaN(+t)&&(Sy(a,"moment()."+a+"(period, number) is deprecated. Please use moment()."+a+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=t,t=r),i=za(n,t),Ky(this,i,e),this}}function Ky(e,a,n,t){var i=a._milliseconds,r=$u(a._days),o=$u(a._months);e.isValid()&&(t=t??!0,o&&zy(e,vo(e,"Month")+o*n),r&&xy(e,"Date",vo(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),t&&K.updateOffset(e,r||o))}var EQ=Yy(1,"add"),PQ=Yy(-1,"subtract");function Zy(e){return typeof e=="string"||e instanceof String}function _Q(e){return Ra(e)||Ho(e)||Zy(e)||Pn(e)||IQ(e)||xQ(e)||e===null||e===void 0}function xQ(e){var a=Si(e)&&!Pm(e),n=!1,t=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],i,r,o=t.length;for(i=0;i<o;i+=1)r=t[i],n=n||Ue(e,r);return a&&n}function IQ(e){var a=Ia(e),n=!1;return a&&(n=e.filter(function(t){return!Pn(t)&&Zy(e)}).length===0),a&&n}function RQ(e){var a=Si(e)&&!Pm(e),n=!1,t=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],i,r;for(i=0;i<t.length;i+=1)r=t[i],n=n||Ue(e,r);return a&&n}function zQ(e,a){var n=e.diff(a,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"}function MQ(e,a){arguments.length===1&&(arguments[0]?_Q(arguments[0])?(e=arguments[0],a=void 0):RQ(arguments[0])&&(a=arguments[0],e=void 0):(e=void 0,a=void 0));var n=e||at(),t=Gm(n,this).startOf("day"),i=K.calendarFormat(this,t)||"sameElse",r=a&&(tn(a[i])?a[i].call(this,n):a[i]);return this.format(r||this.localeData().calendar(i,this,at(n)))}function NQ(){return new Yo(this)}function FQ(e,a){var n=Ra(e)?e:at(e);return this.isValid()&&n.isValid()?(a=ha(a)||"millisecond",a==="millisecond"?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(a).valueOf()):!1}function LQ(e,a){var n=Ra(e)?e:at(e);return this.isValid()&&n.isValid()?(a=ha(a)||"millisecond",a==="millisecond"?this.valueOf()<n.valueOf():this.clone().endOf(a).valueOf()<n.valueOf()):!1}function jQ(e,a,n,t){var i=Ra(e)?e:at(e),r=Ra(a)?a:at(a);return this.isValid()&&i.isValid()&&r.isValid()?(t=t||"()",(t[0]==="("?this.isAfter(i,n):!this.isBefore(i,n))&&(t[1]===")"?this.isBefore(r,n):!this.isAfter(r,n))):!1}function OQ(e,a){var n=Ra(e)?e:at(e),t;return this.isValid()&&n.isValid()?(a=ha(a)||"millisecond",a==="millisecond"?this.valueOf()===n.valueOf():(t=n.valueOf(),this.clone().startOf(a).valueOf()<=t&&t<=this.clone().endOf(a).valueOf())):!1}function BQ(e,a){return this.isSame(e,a)||this.isAfter(e,a)}function UQ(e,a){return this.isSame(e,a)||this.isBefore(e,a)}function qQ(e,a,n){var t,i,r;if(!this.isValid())return NaN;if(t=Gm(e,this),!t.isValid())return NaN;switch(i=(t.utcOffset()-this.utcOffset())*6e4,a=ha(a),a){case"year":r=dl(this,t)/12;break;case"month":r=dl(this,t);break;case"quarter":r=dl(this,t)/3;break;case"second":r=(this-t)/1e3;break;case"minute":r=(this-t)/6e4;break;case"hour":r=(this-t)/36e5;break;case"day":r=(this-t-i)/864e5;break;case"week":r=(this-t-i)/6048e5;break;default:r=this-t}return n?r:da(r)}function dl(e,a){if(e.date()<a.date())return-dl(a,e);var n=(a.year()-e.year())*12+(a.month()-e.month()),t=e.clone().add(n,"months"),i,r;return a-t<0?(i=e.clone().add(n-1,"months"),r=(a-t)/(t-i)):(i=e.clone().add(n+1,"months"),r=(a-t)/(i-t)),-(n+r)||0}K.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";K.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";function VQ(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function $Q(e){if(!this.isValid())return null;var a=e!==!0,n=a?this.clone().utc():this;return n.year()<0||n.year()>9999?ll(n,a?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):tn(Date.prototype.toISOString)?a?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",ll(n,"Z")):ll(n,a?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function WQ(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",a="",n,t,i,r;return this.isLocal()||(e=this.utcOffset()===0?"moment.utc":"moment.parseZone",a="Z"),n="["+e+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i="-MM-DD[T]HH:mm:ss.SSS",r=a+'[")]',this.format(n+t+i+r)}function GQ(e){e||(e=this.isUtc()?K.defaultFormatUtc:K.defaultFormat);var a=ll(this,e);return this.localeData().postformat(a)}function HQ(e,a){return this.isValid()&&(Ra(e)&&e.isValid()||at(e).isValid())?za({to:this,from:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()}function YQ(e){return this.from(at(),e)}function KQ(e,a){return this.isValid()&&(Ra(e)&&e.isValid()||at(e).isValid())?za({from:this,to:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()}function ZQ(e){return this.to(at(),e)}function Jy(e){var a;return e===void 0?this._locale._abbr:(a=Mn(e),a!=null&&(this._locale=a),this)}var Qy=ga("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return e===void 0?this.localeData():this.locale(e)});function Xy(){return this._locale}var Bl=1e3,sr=60*Bl,Ul=60*sr,ek=(365*400+97)*24*Ul;function lr(e,a){return(e%a+a)%a}function tk(e,a,n){return e<100&&e>=0?new Date(e+400,a,n)-ek:new Date(e,a,n).valueOf()}function ak(e,a,n){return e<100&&e>=0?Date.UTC(e+400,a,n)-ek:Date.UTC(e,a,n)}function JQ(e){var a,n;if(e=ha(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?ak:tk,e){case"year":a=n(this.year(),0,1);break;case"quarter":a=n(this.year(),this.month()-this.month()%3,1);break;case"month":a=n(this.year(),this.month(),1);break;case"week":a=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":a=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":a=n(this.year(),this.month(),this.date());break;case"hour":a=this._d.valueOf(),a-=lr(a+(this._isUTC?0:this.utcOffset()*sr),Ul);break;case"minute":a=this._d.valueOf(),a-=lr(a,sr);break;case"second":a=this._d.valueOf(),a-=lr(a,Bl);break}return this._d.setTime(a),K.updateOffset(this,!0),this}function QQ(e){var a,n;if(e=ha(e),e===void 0||e==="millisecond"||!this.isValid())return this;switch(n=this._isUTC?ak:tk,e){case"year":a=n(this.year()+1,0,1)-1;break;case"quarter":a=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":a=n(this.year(),this.month()+1,1)-1;break;case"week":a=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":a=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":a=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":a=this._d.valueOf(),a+=Ul-lr(a+(this._isUTC?0:this.utcOffset()*sr),Ul)-1;break;case"minute":a=this._d.valueOf(),a+=sr-lr(a,sr)-1;break;case"second":a=this._d.valueOf(),a+=Bl-lr(a,Bl)-1;break}return this._d.setTime(a),K.updateOffset(this,!0),this}function XQ(){return this._d.valueOf()-(this._offset||0)*6e4}function eX(){return Math.floor(this.valueOf()/1e3)}function tX(){return new Date(this.valueOf())}function aX(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function nX(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function iX(){return this.isValid()?this.toISOString():null}function rX(){return _m(this)}function oX(){return Gn({},Ae(this))}function sX(){return Ae(this).overflow}function lX(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}se("N",0,0,"eraAbbr");se("NN",0,0,"eraAbbr");se("NNN",0,0,"eraAbbr");se("NNNN",0,0,"eraName");se("NNNNN",0,0,"eraNarrow");se("y",["y",1],"yo","eraYear");se("y",["yy",2],0,"eraYear");se("y",["yyy",3],0,"eraYear");se("y",["yyyy",4],0,"eraYear");ee("N",Hm);ee("NN",Hm);ee("NNN",Hm);ee("NNNN",yX);ee("NNNNN",kX);Ye(["N","NN","NNN","NNNN","NNNNN"],function(e,a,n,t){var i=n._locale.erasParse(e,t,n._strict);i?Ae(n).era=i:Ae(n).invalidEra=e});ee("y",Ir);ee("yy",Ir);ee("yyy",Ir);ee("yyyy",Ir);ee("yo",wX);Ye(["y","yy","yyy","yyyy"],Vt);Ye(["yo"],function(e,a,n,t){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?a[Vt]=n._locale.eraYearOrdinalParse(e,i):a[Vt]=parseInt(e,10)});function cX(e,a){var n,t,i,r=this._eras||Mn("en")._eras;for(n=0,t=r.length;n<t;++n){switch(typeof r[n].since){case"string":i=K(r[n].since).startOf("day"),r[n].since=i.valueOf();break}switch(typeof r[n].until){case"undefined":r[n].until=1/0;break;case"string":i=K(r[n].until).startOf("day").valueOf(),r[n].until=i.valueOf();break}}return r}function dX(e,a,n){var t,i,r=this.eras(),o,s,l;for(e=e.toUpperCase(),t=0,i=r.length;t<i;++t)if(o=r[t].name.toUpperCase(),s=r[t].abbr.toUpperCase(),l=r[t].narrow.toUpperCase(),n)switch(a){case"N":case"NN":case"NNN":if(s===e)return r[t];break;case"NNNN":if(o===e)return r[t];break;case"NNNNN":if(l===e)return r[t];break}else if([o,s,l].indexOf(e)>=0)return r[t]}function uX(e,a){var n=e.since<=e.until?1:-1;return a===void 0?K(e.since).year():K(e.since).year()+(a-e.offset)*n}function pX(){var e,a,n,t=this.localeData().eras();for(e=0,a=t.length;e<a;++e)if(n=this.clone().startOf("day").valueOf(),t[e].since<=n&&n<=t[e].until||t[e].until<=n&&n<=t[e].since)return t[e].name;return""}function mX(){var e,a,n,t=this.localeData().eras();for(e=0,a=t.length;e<a;++e)if(n=this.clone().startOf("day").valueOf(),t[e].since<=n&&n<=t[e].until||t[e].until<=n&&n<=t[e].since)return t[e].narrow;return""}function gX(){var e,a,n,t=this.localeData().eras();for(e=0,a=t.length;e<a;++e)if(n=this.clone().startOf("day").valueOf(),t[e].since<=n&&n<=t[e].until||t[e].until<=n&&n<=t[e].since)return t[e].abbr;return""}function hX(){var e,a,n,t,i=this.localeData().eras();for(e=0,a=i.length;e<a;++e)if(n=i[e].since<=i[e].until?1:-1,t=this.clone().startOf("day").valueOf(),i[e].since<=t&&t<=i[e].until||i[e].until<=t&&t<=i[e].since)return(this.year()-K(i[e].since).year())*n+i[e].offset;return this.year()}function fX(e){return Ue(this,"_erasNameRegex")||Ym.call(this),e?this._erasNameRegex:this._erasRegex}function vX(e){return Ue(this,"_erasAbbrRegex")||Ym.call(this),e?this._erasAbbrRegex:this._erasRegex}function bX(e){return Ue(this,"_erasNarrowRegex")||Ym.call(this),e?this._erasNarrowRegex:this._erasRegex}function Hm(e,a){return a.erasAbbrRegex(e)}function yX(e,a){return a.erasNameRegex(e)}function kX(e,a){return a.erasNarrowRegex(e)}function wX(e,a){return a._eraYearOrdinalRegex||Ir}function Ym(){var e=[],a=[],n=[],t=[],i,r,o,s,l,d=this.eras();for(i=0,r=d.length;i<r;++i)o=Dn(d[i].name),s=Dn(d[i].abbr),l=Dn(d[i].narrow),a.push(o),e.push(s),n.push(l),t.push(o),t.push(s),t.push(l);this._erasRegex=new RegExp("^("+t.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+a.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+e.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+n.join("|")+")","i")}se(0,["gg",2],0,function(){return this.weekYear()%100});se(0,["GG",2],0,function(){return this.isoWeekYear()%100});function Bc(e,a){se(0,[e,e.length],0,a)}Bc("gggg","weekYear");Bc("ggggg","weekYear");Bc("GGGG","isoWeekYear");Bc("GGGGG","isoWeekYear");ee("G",Nc);ee("g",Nc);ee("GG",it,na);ee("gg",it,na);ee("GGGG",Nm,Mm);ee("gggg",Nm,Mm);ee("GGGGG",Mc,Rc);ee("ggggg",Mc,Rc);Zo(["gggg","ggggg","GGGG","GGGGG"],function(e,a,n,t){a[t.substr(0,2)]=xe(e)});Zo(["gg","GG"],function(e,a,n,t){a[t]=K.parseTwoDigitYear(e)});function AX(e){return nk.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)}function SX(e){return nk.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)}function CX(){return Tn(this.year(),1,4)}function DX(){return Tn(this.isoWeekYear(),1,4)}function TX(){var e=this.localeData()._week;return Tn(this.year(),e.dow,e.doy)}function EX(){var e=this.localeData()._week;return Tn(this.weekYear(),e.dow,e.doy)}function nk(e,a,n,t,i){var r;return e==null?yo(this,t,i).year:(r=Tn(e,t,i),a>r&&(a=r),PX.call(this,e,a,n,t,i))}function PX(e,a,n,t,i){var r=Fy(e,a,n,t,i),o=bo(r.year,0,r.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}se("Q",0,"Qo","quarter");ee("Q",Dy);Ye("Q",function(e,a){a[An]=(xe(e)-1)*3});function _X(e){return e==null?Math.ceil((this.month()+1)/3):this.month((e-1)*3+this.month()%3)}se("D",["DD",2],"Do","date");ee("D",it,Rr);ee("DD",it,na);ee("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient});Ye(["D","DD"],Va);Ye("Do",function(e,a){a[Va]=xe(e.match(it)[0])});var ik=zr("Date",!0);se("DDD",["DDDD",3],"DDDo","dayOfYear");ee("DDD",zc);ee("DDDD",Ty);Ye(["DDD","DDDD"],function(e,a,n){n._dayOfYear=xe(e)});function xX(e){var a=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return e==null?a:this.add(e-a,"d")}se("m",["mm",2],0,"minute");ee("m",it,Fm);ee("mm",it,na);Ye(["m","mm"],xa);var IX=zr("Minutes",!1);se("s",["ss",2],0,"second");ee("s",it,Fm);ee("ss",it,na);Ye(["s","ss"],Sn);var RX=zr("Seconds",!1);se("S",0,0,function(){return~~(this.millisecond()/100)});se(0,["SS",2],0,function(){return~~(this.millisecond()/10)});se(0,["SSS",3],0,"millisecond");se(0,["SSSS",4],0,function(){return this.millisecond()*10});se(0,["SSSSS",5],0,function(){return this.millisecond()*100});se(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3});se(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4});se(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5});se(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6});ee("S",zc,Dy);ee("SS",zc,na);ee("SSS",zc,Ty);var Hn,rk;for(Hn="SSSS";Hn.length<=9;Hn+="S")ee(Hn,Ir);function zX(e,a){a[wi]=xe(("0."+e)*1e3)}for(Hn="S";Hn.length<=9;Hn+="S")Ye(Hn,zX);rk=zr("Milliseconds",!1);se("z",0,0,"zoneAbbr");se("zz",0,0,"zoneName");function MX(){return this._isUTC?"UTC":""}function NX(){return this._isUTC?"Coordinated Universal Time":""}var U=Yo.prototype;U.add=EQ;U.calendar=MQ;U.clone=NQ;U.diff=qQ;U.endOf=QQ;U.format=GQ;U.from=HQ;U.fromNow=YQ;U.to=KQ;U.toNow=ZQ;U.get=WJ;U.invalidAt=sX;U.isAfter=FQ;U.isBefore=LQ;U.isBetween=jQ;U.isSame=OQ;U.isSameOrAfter=BQ;U.isSameOrBefore=UQ;U.isValid=rX;U.lang=Qy;U.locale=Jy;U.localeData=Xy;U.max=rQ;U.min=iQ;U.parsingFlags=oX;U.set=GJ;U.startOf=JQ;U.subtract=PQ;U.toArray=aX;U.toObject=nX;U.toDate=tX;U.toISOString=$Q;U.inspect=WQ;typeof Symbol<"u"&&Symbol.for!=null&&(U[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"});U.toJSON=iX;U.toString=VQ;U.unix=eX;U.valueOf=XQ;U.creationData=lX;U.eraName=pX;U.eraNarrow=mX;U.eraAbbr=gX;U.eraYear=hX;U.year=_y;U.isLeapYear=$J;U.weekYear=AX;U.isoWeekYear=SX;U.quarter=U.quarters=_X;U.month=My;U.daysInMonth=t7;U.week=U.weeks=c7;U.isoWeek=U.isoWeeks=d7;U.weeksInYear=TX;U.weeksInWeekYear=EX;U.isoWeeksInYear=CX;U.isoWeeksInISOWeekYear=DX;U.date=ik;U.day=U.days=S7;U.weekday=C7;U.isoWeekday=D7;U.dayOfYear=xX;U.hour=U.hours=R7;U.minute=U.minutes=IX;U.second=U.seconds=RX;U.millisecond=U.milliseconds=rk;U.utcOffset=gQ;U.utc=fQ;U.local=vQ;U.parseZone=bQ;U.hasAlignedHourOffset=yQ;U.isDST=kQ;U.isLocal=AQ;U.isUtcOffset=SQ;U.isUtc=Hy;U.isUTC=Hy;U.zoneAbbr=MX;U.zoneName=NX;U.dates=ga("dates accessor is deprecated. Use date instead.",ik);U.months=ga("months accessor is deprecated. Use month instead",My);U.years=ga("years accessor is deprecated. Use year instead",_y);U.zone=ga("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",hQ);U.isDSTShifted=ga("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",wQ);function FX(e){return at(e*1e3)}function LX(){return at.apply(null,arguments).parseZone()}function ok(e){return e}var qe=Im.prototype;qe.calendar=AJ;qe.longDateFormat=TJ;qe.invalidDate=PJ;qe.ordinal=IJ;qe.preparse=ok;qe.postformat=ok;qe.relativeTime=zJ;qe.pastFuture=MJ;qe.set=kJ;qe.eras=cX;qe.erasParse=dX;qe.erasConvertYear=uX;qe.erasAbbrRegex=vX;qe.erasNameRegex=fX;qe.erasNarrowRegex=bX;qe.months=JJ;qe.monthsShort=QJ;qe.monthsParse=e7;qe.monthsRegex=n7;qe.monthsShortRegex=a7;qe.week=r7;qe.firstDayOfYear=l7;qe.firstDayOfWeek=s7;qe.weekdays=b7;qe.weekdaysMin=k7;qe.weekdaysShort=y7;qe.weekdaysParse=A7;qe.weekdaysRegex=T7;qe.weekdaysShortRegex=E7;qe.weekdaysMinRegex=P7;qe.isPM=x7;qe.meridiem=z7;function ql(e,a,n,t){var i=Mn(),r=en().set(t,a);return i[n](r,e)}function sk(e,a,n){if(Pn(e)&&(a=e,e=void 0),e=e||"",a!=null)return ql(e,a,n,"month");var t,i=[];for(t=0;t<12;t++)i[t]=ql(e,t,n,"month");return i}function Km(e,a,n,t){typeof e=="boolean"?(Pn(a)&&(n=a,a=void 0),a=a||""):(a=e,n=a,e=!1,Pn(a)&&(n=a,a=void 0),a=a||"");var i=Mn(),r=e?i._week.dow:0,o,s=[];if(n!=null)return ql(a,(n+r)%7,t,"day");for(o=0;o<7;o++)s[o]=ql(a,(o+r)%7,t,"day");return s}function jX(e,a){return sk(e,a,"months")}function OX(e,a){return sk(e,a,"monthsShort")}function BX(e,a,n){return Km(e,a,n,"weekdays")}function UX(e,a,n){return Km(e,a,n,"weekdaysShort")}function qX(e,a,n){return Km(e,a,n,"weekdaysMin")}Zn("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10,n=xe(e%100/10)===1?"th":a===1?"st":a===2?"nd":a===3?"rd":"th";return e+n}});K.lang=ga("moment.lang is deprecated. Use moment.locale instead.",Zn);K.langData=ga("moment.langData is deprecated. Use moment.localeData instead.",Mn);var bn=Math.abs;function VX(){var e=this._data;return this._milliseconds=bn(this._milliseconds),this._days=bn(this._days),this._months=bn(this._months),e.milliseconds=bn(e.milliseconds),e.seconds=bn(e.seconds),e.minutes=bn(e.minutes),e.hours=bn(e.hours),e.months=bn(e.months),e.years=bn(e.years),this}function lk(e,a,n,t){var i=za(a,n);return e._milliseconds+=t*i._milliseconds,e._days+=t*i._days,e._months+=t*i._months,e._bubble()}function $X(e,a){return lk(this,e,a,1)}function WX(e,a){return lk(this,e,a,-1)}function Of(e){return e<0?Math.floor(e):Math.ceil(e)}function GX(){var e=this._milliseconds,a=this._days,n=this._months,t=this._data,i,r,o,s,l;return e>=0&&a>=0&&n>=0||e<=0&&a<=0&&n<=0||(e+=Of(Gu(n)+a)*864e5,a=0,n=0),t.milliseconds=e%1e3,i=da(e/1e3),t.seconds=i%60,r=da(i/60),t.minutes=r%60,o=da(r/60),t.hours=o%24,a+=da(o/24),l=da(ck(a)),n+=l,a-=Of(Gu(l)),s=da(n/12),n%=12,t.days=a,t.months=n,t.years=s,this}function ck(e){return e*4800/146097}function Gu(e){return e*146097/4800}function HX(e){if(!this.isValid())return NaN;var a,n,t=this._milliseconds;if(e=ha(e),e==="month"||e==="quarter"||e==="year")switch(a=this._days+t/864e5,n=this._months+ck(a),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(a=this._days+Math.round(Gu(this._months)),e){case"week":return a/7+t/6048e5;case"day":return a+t/864e5;case"hour":return a*24+t/36e5;case"minute":return a*1440+t/6e4;case"second":return a*86400+t/1e3;case"millisecond":return Math.floor(a*864e5)+t;default:throw new Error("Unknown unit "+e)}}function Nn(e){return function(){return this.as(e)}}var dk=Nn("ms"),YX=Nn("s"),KX=Nn("m"),ZX=Nn("h"),JX=Nn("d"),QX=Nn("w"),XX=Nn("M"),eee=Nn("Q"),tee=Nn("y"),aee=dk;function nee(){return za(this)}function iee(e){return e=ha(e),this.isValid()?this[e+"s"]():NaN}function xi(e){return function(){return this.isValid()?this._data[e]:NaN}}var ree=xi("milliseconds"),oee=xi("seconds"),see=xi("minutes"),lee=xi("hours"),cee=xi("days"),dee=xi("months"),uee=xi("years");function pee(){return da(this.days()/7)}var wn=Math.round,er={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function mee(e,a,n,t,i){return i.relativeTime(a||1,!!n,e,t)}function gee(e,a,n,t){var i=za(e).abs(),r=wn(i.as("s")),o=wn(i.as("m")),s=wn(i.as("h")),l=wn(i.as("d")),d=wn(i.as("M")),p=wn(i.as("w")),u=wn(i.as("y")),g=r<=n.ss&&["s",r]||r<n.s&&["ss",r]||o<=1&&["m"]||o<n.m&&["mm",o]||s<=1&&["h"]||s<n.h&&["hh",s]||l<=1&&["d"]||l<n.d&&["dd",l];return n.w!=null&&(g=g||p<=1&&["w"]||p<n.w&&["ww",p]),g=g||d<=1&&["M"]||d<n.M&&["MM",d]||u<=1&&["y"]||["yy",u],g[2]=a,g[3]=+e>0,g[4]=t,mee.apply(null,g)}function hee(e){return e===void 0?wn:typeof e=="function"?(wn=e,!0):!1}function fee(e,a){return er[e]===void 0?!1:a===void 0?er[e]:(er[e]=a,e==="s"&&(er.ss=a-1),!0)}function vee(e,a){if(!this.isValid())return this.localeData().invalidDate();var n=!1,t=er,i,r;return typeof e=="object"&&(a=e,e=!1),typeof e=="boolean"&&(n=e),typeof a=="object"&&(t=Object.assign({},er,a),a.s!=null&&a.ss==null&&(t.ss=a.s-1)),i=this.localeData(),r=gee(this,!n,t,i),n&&(r=i.pastFuture(+this,r)),i.postformat(r)}var $d=Math.abs;function Hi(e){return(e>0)-(e<0)||+e}function Uc(){if(!this.isValid())return this.localeData().invalidDate();var e=$d(this._milliseconds)/1e3,a=$d(this._days),n=$d(this._months),t,i,r,o,s=this.asSeconds(),l,d,p,u;return s?(t=da(e/60),i=da(t/60),e%=60,t%=60,r=da(n/12),n%=12,o=e?e.toFixed(3).replace(/\.?0+$/,""):"",l=s<0?"-":"",d=Hi(this._months)!==Hi(s)?"-":"",p=Hi(this._days)!==Hi(s)?"-":"",u=Hi(this._milliseconds)!==Hi(s)?"-":"",l+"P"+(r?d+r+"Y":"")+(n?d+n+"M":"")+(a?p+a+"D":"")+(i||t||e?"T":"")+(i?u+i+"H":"")+(t?u+t+"M":"")+(e?u+o+"S":"")):"P0D"}var je=Oc.prototype;je.isValid=dQ;je.abs=VX;je.add=$X;je.subtract=WX;je.as=HX;je.asMilliseconds=dk;je.asSeconds=YX;je.asMinutes=KX;je.asHours=ZX;je.asDays=JX;je.asWeeks=QX;je.asMonths=XX;je.asQuarters=eee;je.asYears=tee;je.valueOf=aee;je._bubble=GX;je.clone=nee;je.get=iee;je.milliseconds=ree;je.seconds=oee;je.minutes=see;je.hours=lee;je.days=cee;je.weeks=pee;je.months=dee;je.years=uee;je.humanize=vee;je.toISOString=Uc;je.toString=Uc;je.toJSON=Uc;je.locale=Jy;je.localeData=Xy;je.toIsoString=ga("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Uc);je.lang=Qy;se("X",0,0,"unix");se("x",0,0,"valueOf");ee("x",Nc);ee("X",jJ);Ye("X",function(e,a,n){n._d=new Date(parseFloat(e)*1e3)});Ye("x",function(e,a,n){n._d=new Date(xe(e))});//! moment.js
K.version="2.30.1";bJ(at);K.fn=U;K.min=oQ;K.max=sQ;K.now=lQ;K.utc=en;K.unix=FX;K.months=jX;K.isDate=Ho;K.locale=Zn;K.invalid=Ic;K.duration=za;K.isMoment=Ra;K.weekdays=BX;K.parseZone=LX;K.localeData=Mn;K.isDuration=cl;K.monthsShort=OX;K.weekdaysMin=qX;K.defineLocale=Um;K.updateLocale=L7;K.locales=j7;K.weekdaysShort=UX;K.normalizeUnits=ha;K.relativeTimeRounding=hee;K.relativeTimeThreshold=fee;K.calendarFormat=zQ;K.prototype=U;K.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"};function Mr(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var Hu={exports:{}},ul={exports:{}},bee=ul.exports,Bf;function Jo(){return Bf||(Bf=1,(function(e,a){(function(n,t){e.exports=t()})(bee,(function(){var n;function t(){return n.apply(null,arguments)}function i(c){n=c}function r(c){return c instanceof Array||Object.prototype.toString.call(c)==="[object Array]"}function o(c){return c!=null&&Object.prototype.toString.call(c)==="[object Object]"}function s(c,m){return Object.prototype.hasOwnProperty.call(c,m)}function l(c){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(c).length===0;var m;for(m in c)if(s(c,m))return!1;return!0}function d(c){return c===void 0}function p(c){return typeof c=="number"||Object.prototype.toString.call(c)==="[object Number]"}function u(c){return c instanceof Date||Object.prototype.toString.call(c)==="[object Date]"}function g(c,m){var h=[],y,w=c.length;for(y=0;y<w;++y)h.push(m(c[y],y));return h}function b(c,m){for(var h in m)s(m,h)&&(c[h]=m[h]);return s(m,"toString")&&(c.toString=m.toString),s(m,"valueOf")&&(c.valueOf=m.valueOf),c}function v(c,m,h,y){return Yh(c,m,h,y,!0).utc()}function A(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function f(c){return c._pf==null&&(c._pf=A()),c._pf}var S;Array.prototype.some?S=Array.prototype.some:S=function(c){var m=Object(this),h=m.length>>>0,y;for(y=0;y<h;y++)if(y in m&&c.call(this,m[y],y,m))return!0;return!1};function C(c){var m=null,h=!1,y=c._d&&!isNaN(c._d.getTime());if(y&&(m=f(c),h=S.call(m.parsedDateParts,function(w){return w!=null}),y=m.overflow<0&&!m.empty&&!m.invalidEra&&!m.invalidMonth&&!m.invalidWeekday&&!m.weekdayMismatch&&!m.nullInput&&!m.invalidFormat&&!m.userInvalidated&&(!m.meridiem||m.meridiem&&h),c._strict&&(y=y&&m.charsLeftOver===0&&m.unusedTokens.length===0&&m.bigHour===void 0)),Object.isFrozen==null||!Object.isFrozen(c))c._isValid=y;else return y;return c._isValid}function T(c){var m=v(NaN);return c!=null?b(f(m),c):f(m).userInvalidated=!0,m}var E=t.momentProperties=[],P=!1;function I(c,m){var h,y,w,D=E.length;if(d(m._isAMomentObject)||(c._isAMomentObject=m._isAMomentObject),d(m._i)||(c._i=m._i),d(m._f)||(c._f=m._f),d(m._l)||(c._l=m._l),d(m._strict)||(c._strict=m._strict),d(m._tzm)||(c._tzm=m._tzm),d(m._isUTC)||(c._isUTC=m._isUTC),d(m._offset)||(c._offset=m._offset),d(m._pf)||(c._pf=f(m)),d(m._locale)||(c._locale=m._locale),D>0)for(h=0;h<D;h++)y=E[h],w=m[y],d(w)||(c[y]=w);return c}function L(c){I(this,c),this._d=new Date(c._d!=null?c._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),P===!1&&(P=!0,t.updateOffset(this),P=!1)}function N(c){return c instanceof L||c!=null&&c._isAMomentObject!=null}function Z(c){t.suppressDeprecationWarnings===!1&&typeof console<"u"}function R(c,m){var h=!0;return b(function(){if(t.deprecationHandler!=null&&t.deprecationHandler(null,c),h){var y=[],w,D,x,Q=arguments.length;for(D=0;D<Q;D++){if(w="",typeof arguments[D]=="object"){w+=`
[`+D+"] ";for(x in arguments[0])s(arguments[0],x)&&(w+=x+": "+arguments[0][x]+", ");w=w.slice(0,-2)}else w=arguments[D];y.push(w)}Z(c+`
Arguments: `+Array.prototype.slice.call(y).join("")+`
`+new Error().stack),h=!1}return m.apply(this,arguments)},m)}var Y={};function $(c,m){t.deprecationHandler!=null&&t.deprecationHandler(c,m),Y[c]||(Z(m),Y[c]=!0)}t.suppressDeprecationWarnings=!1,t.deprecationHandler=null;function F(c){return typeof Function<"u"&&c instanceof Function||Object.prototype.toString.call(c)==="[object Function]"}function j(c){var m,h;for(h in c)s(c,h)&&(m=c[h],F(m)?this[h]=m:this["_"+h]=m);this._config=c,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function H(c,m){var h=b({},c),y;for(y in m)s(m,y)&&(o(c[y])&&o(m[y])?(h[y]={},b(h[y],c[y]),b(h[y],m[y])):m[y]!=null?h[y]=m[y]:delete h[y]);for(y in c)s(c,y)&&!s(m,y)&&o(c[y])&&(h[y]=b({},h[y]));return h}function X(c){c!=null&&this.set(c)}var ie;Object.keys?ie=Object.keys:ie=function(c){var m,h=[];for(m in c)s(c,m)&&h.push(m);return h};var te={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"};function oe(c,m,h){var y=this._calendar[c]||this._calendar.sameElse;return F(y)?y.call(m,h):y}function ae(c,m,h){var y=""+Math.abs(c),w=m-y.length,D=c>=0;return(D?h?"+":"":"-")+Math.pow(10,Math.max(0,w)).toString().substr(1)+y}var Me=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Ne=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,re={},de={};function q(c,m,h,y){var w=y;typeof y=="string"&&(w=function(){return this[y]()}),c&&(de[c]=w),m&&(de[m[0]]=function(){return ae(w.apply(this,arguments),m[1],m[2])}),h&&(de[h]=function(){return this.localeData().ordinal(w.apply(this,arguments),c)})}function ge(c){return c.match(/\[[\s\S]/)?c.replace(/^\[|\]$/g,""):c.replace(/\\/g,"")}function Ot(c){var m=c.match(Me),h,y;for(h=0,y=m.length;h<y;h++)de[m[h]]?m[h]=de[m[h]]:m[h]=ge(m[h]);return function(w){var D="",x;for(x=0;x<y;x++)D+=F(m[x])?m[x].call(w,c):m[x];return D}}function Ee(c,m){return c.isValid()?(m=Bt(m,c.localeData()),re[m]=re[m]||Ot(m),re[m](c)):c.localeData().invalidDate()}function Bt(c,m){var h=5;function y(w){return m.longDateFormat(w)||w}for(Ne.lastIndex=0;h>=0&&Ne.test(c);)c=c.replace(Ne,y),Ne.lastIndex=0,h-=1;return c}var ia={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function ra(c){var m=this._longDateFormat[c],h=this._longDateFormat[c.toUpperCase()];return m||!h?m:(this._longDateFormat[c]=h.match(Me).map(function(y){return y==="MMMM"||y==="MM"||y==="DD"||y==="dddd"?y.slice(1):y}).join(""),this._longDateFormat[c])}var oa="Invalid date";function jn(){return this._invalidDate}var Kt="%d",va=/\d{1,2}/;function ba(c){return this._ordinal.replace("%d",c)}var aa={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function ya(c,m,h,y){var w=this._relativeTime[h];return F(w)?w(c,m,h,y):w.replace(/%d/i,c)}function Pt(c,m){var h=this._relativeTime[c>0?"future":"past"];return F(h)?h(m):h.replace(/%s/i,m)}var Zt={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function pt(c){return typeof c=="string"?Zt[c]||Zt[c.toLowerCase()]:void 0}function At(c){var m={},h,y;for(y in c)s(c,y)&&(h=pt(y),h&&(m[h]=c[y]));return m}var ka={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function Or(c){var m=[],h;for(h in c)s(c,h)&&m.push({unit:h,priority:ka[h]});return m.sort(function(y,w){return y.priority-w.priority}),m}var sa=/\d/,He=/\d\d/,Ni=/\d{3}/,on=/\d{4}/,wa=/[+-]?\d{6}/,Pe=/\d\d?/,Na=/\d\d\d\d?/,Nt=/\d\d\d\d\d\d?/,sn=/\d{1,3}/,ln=/\d{1,4}/,De=/[+-]?\d{1,6}/,Je=/\d+/,ne=/[+-]?\d+/,Oe=/Z|[+-]\d\d:?\d\d/gi,_t=/Z|[+-]\d\d(?::?\d\d)?/gi,hi=/[+-]?\d+(\.\d{1,3})?/,cn=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,Aa=/^[1-9]\d?/,Fi=/^([1-9]\d|\d)/,pe;pe={};function V(c,m,h){pe[c]=F(m)?m:function(y,w){return y&&h?h:m}}function Mt(c,m){return s(pe,c)?pe[c](m._strict,m._locale):new RegExp($t(c))}function $t(c){return Jt(c.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(m,h,y,w,D){return h||y||w||D}))}function Jt(c){return c.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Ve(c){return c<0?Math.ceil(c)||0:Math.floor(c)}function ue(c){var m=+c,h=0;return m!==0&&isFinite(m)&&(h=Ve(m)),h}var On={};function Se(c,m){var h,y=m,w;for(typeof c=="string"&&(c=[c]),p(m)&&(y=function(D,x){x[m]=ue(D)}),w=c.length,h=0;h<w;h++)On[c[h]]=y}function Ft(c,m){Se(c,function(h,y,w,D){w._w=w._w||{},m(h,w._w,w,D)})}function rs(c,m,h){m!=null&&s(On,c)&&On[c](m,h._a,h,c)}function la(c){return c%4===0&&c%100!==0||c%400===0}var Lt=0,dn=1,Fa=2,xt=3,Sa=4,un=5,fi=6,aD=7,nD=8;q("Y",0,0,function(){var c=this.year();return c<=9999?ae(c,4):"+"+c}),q(0,["YY",2],0,function(){return this.year()%100}),q(0,["YYYY",4],0,"year"),q(0,["YYYYY",5],0,"year"),q(0,["YYYYYY",6,!0],0,"year"),V("Y",ne),V("YY",Pe,He),V("YYYY",ln,on),V("YYYYY",De,wa),V("YYYYYY",De,wa),Se(["YYYYY","YYYYYY"],Lt),Se("YYYY",function(c,m){m[Lt]=c.length===2?t.parseTwoDigitYear(c):ue(c)}),Se("YY",function(c,m){m[Lt]=t.parseTwoDigitYear(c)}),Se("Y",function(c,m){m[Lt]=parseInt(c,10)});function Br(c){return la(c)?366:365}t.parseTwoDigitYear=function(c){return ue(c)+(ue(c)>68?1900:2e3)};var Rh=Li("FullYear",!0);function iD(){return la(this.year())}function Li(c,m){return function(h){return h!=null?(zh(this,c,h),t.updateOffset(this,m),this):Ur(this,c)}}function Ur(c,m){if(!c.isValid())return NaN;var h=c._d,y=c._isUTC;switch(m){case"Milliseconds":return y?h.getUTCMilliseconds():h.getMilliseconds();case"Seconds":return y?h.getUTCSeconds():h.getSeconds();case"Minutes":return y?h.getUTCMinutes():h.getMinutes();case"Hours":return y?h.getUTCHours():h.getHours();case"Date":return y?h.getUTCDate():h.getDate();case"Day":return y?h.getUTCDay():h.getDay();case"Month":return y?h.getUTCMonth():h.getMonth();case"FullYear":return y?h.getUTCFullYear():h.getFullYear();default:return NaN}}function zh(c,m,h){var y,w,D,x,Q;if(!(!c.isValid()||isNaN(h))){switch(y=c._d,w=c._isUTC,m){case"Milliseconds":return void(w?y.setUTCMilliseconds(h):y.setMilliseconds(h));case"Seconds":return void(w?y.setUTCSeconds(h):y.setSeconds(h));case"Minutes":return void(w?y.setUTCMinutes(h):y.setMinutes(h));case"Hours":return void(w?y.setUTCHours(h):y.setHours(h));case"Date":return void(w?y.setUTCDate(h):y.setDate(h));case"FullYear":break;default:return}D=h,x=c.month(),Q=c.date(),Q=Q===29&&x===1&&!la(D)?28:Q,w?y.setUTCFullYear(D,x,Q):y.setFullYear(D,x,Q)}}function rD(c){return c=pt(c),F(this[c])?this[c]():this}function oD(c,m){if(typeof c=="object"){c=At(c);var h=Or(c),y,w=h.length;for(y=0;y<w;y++)this[h[y].unit](c[h[y].unit])}else if(c=pt(c),F(this[c]))return this[c](m);return this}function sD(c,m){return(c%m+m)%m}var ht;Array.prototype.indexOf?ht=Array.prototype.indexOf:ht=function(c){var m;for(m=0;m<this.length;++m)if(this[m]===c)return m;return-1};function wd(c,m){if(isNaN(c)||isNaN(m))return NaN;var h=sD(m,12);return c+=(m-h)/12,h===1?la(c)?29:28:31-h%7%2}q("M",["MM",2],"Mo",function(){return this.month()+1}),q("MMM",0,0,function(c){return this.localeData().monthsShort(this,c)}),q("MMMM",0,0,function(c){return this.localeData().months(this,c)}),V("M",Pe,Aa),V("MM",Pe,He),V("MMM",function(c,m){return m.monthsShortRegex(c)}),V("MMMM",function(c,m){return m.monthsRegex(c)}),Se(["M","MM"],function(c,m){m[dn]=ue(c)-1}),Se(["MMM","MMMM"],function(c,m,h,y){var w=h._locale.monthsParse(c,y,h._strict);w!=null?m[dn]=w:f(h).invalidMonth=c});var lD="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Mh="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Nh=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,cD=cn,dD=cn;function uD(c,m){return c?r(this._months)?this._months[c.month()]:this._months[(this._months.isFormat||Nh).test(m)?"format":"standalone"][c.month()]:r(this._months)?this._months:this._months.standalone}function pD(c,m){return c?r(this._monthsShort)?this._monthsShort[c.month()]:this._monthsShort[Nh.test(m)?"format":"standalone"][c.month()]:r(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function mD(c,m,h){var y,w,D,x=c.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],y=0;y<12;++y)D=v([2e3,y]),this._shortMonthsParse[y]=this.monthsShort(D,"").toLocaleLowerCase(),this._longMonthsParse[y]=this.months(D,"").toLocaleLowerCase();return h?m==="MMM"?(w=ht.call(this._shortMonthsParse,x),w!==-1?w:null):(w=ht.call(this._longMonthsParse,x),w!==-1?w:null):m==="MMM"?(w=ht.call(this._shortMonthsParse,x),w!==-1?w:(w=ht.call(this._longMonthsParse,x),w!==-1?w:null)):(w=ht.call(this._longMonthsParse,x),w!==-1?w:(w=ht.call(this._shortMonthsParse,x),w!==-1?w:null))}function gD(c,m,h){var y,w,D;if(this._monthsParseExact)return mD.call(this,c,m,h);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),y=0;y<12;y++){if(w=v([2e3,y]),h&&!this._longMonthsParse[y]&&(this._longMonthsParse[y]=new RegExp("^"+this.months(w,"").replace(".","")+"$","i"),this._shortMonthsParse[y]=new RegExp("^"+this.monthsShort(w,"").replace(".","")+"$","i")),!h&&!this._monthsParse[y]&&(D="^"+this.months(w,"")+"|^"+this.monthsShort(w,""),this._monthsParse[y]=new RegExp(D.replace(".",""),"i")),h&&m==="MMMM"&&this._longMonthsParse[y].test(c))return y;if(h&&m==="MMM"&&this._shortMonthsParse[y].test(c))return y;if(!h&&this._monthsParse[y].test(c))return y}}function Fh(c,m){if(!c.isValid())return c;if(typeof m=="string"){if(/^\d+$/.test(m))m=ue(m);else if(m=c.localeData().monthsParse(m),!p(m))return c}var h=m,y=c.date();return y=y<29?y:Math.min(y,wd(c.year(),h)),c._isUTC?c._d.setUTCMonth(h,y):c._d.setMonth(h,y),c}function Lh(c){return c!=null?(Fh(this,c),t.updateOffset(this,!0),this):Ur(this,"Month")}function hD(){return wd(this.year(),this.month())}function fD(c){return this._monthsParseExact?(s(this,"_monthsRegex")||jh.call(this),c?this._monthsShortStrictRegex:this._monthsShortRegex):(s(this,"_monthsShortRegex")||(this._monthsShortRegex=cD),this._monthsShortStrictRegex&&c?this._monthsShortStrictRegex:this._monthsShortRegex)}function vD(c){return this._monthsParseExact?(s(this,"_monthsRegex")||jh.call(this),c?this._monthsStrictRegex:this._monthsRegex):(s(this,"_monthsRegex")||(this._monthsRegex=dD),this._monthsStrictRegex&&c?this._monthsStrictRegex:this._monthsRegex)}function jh(){function c(me,Ie){return Ie.length-me.length}var m=[],h=[],y=[],w,D,x,Q;for(w=0;w<12;w++)D=v([2e3,w]),x=Jt(this.monthsShort(D,"")),Q=Jt(this.months(D,"")),m.push(x),h.push(Q),y.push(Q),y.push(x);m.sort(c),h.sort(c),y.sort(c),this._monthsRegex=new RegExp("^("+y.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+m.join("|")+")","i")}function bD(c,m,h,y,w,D,x){var Q;return c<100&&c>=0?(Q=new Date(c+400,m,h,y,w,D,x),isFinite(Q.getFullYear())&&Q.setFullYear(c)):Q=new Date(c,m,h,y,w,D,x),Q}function qr(c){var m,h;return c<100&&c>=0?(h=Array.prototype.slice.call(arguments),h[0]=c+400,m=new Date(Date.UTC.apply(null,h)),isFinite(m.getUTCFullYear())&&m.setUTCFullYear(c)):m=new Date(Date.UTC.apply(null,arguments)),m}function os(c,m,h){var y=7+m-h,w=(7+qr(c,0,y).getUTCDay()-m)%7;return-w+y-1}function Oh(c,m,h,y,w){var D=(7+h-y)%7,x=os(c,y,w),Q=1+7*(m-1)+D+x,me,Ie;return Q<=0?(me=c-1,Ie=Br(me)+Q):Q>Br(c)?(me=c+1,Ie=Q-Br(c)):(me=c,Ie=Q),{year:me,dayOfYear:Ie}}function Vr(c,m,h){var y=os(c.year(),m,h),w=Math.floor((c.dayOfYear()-y-1)/7)+1,D,x;return w<1?(x=c.year()-1,D=w+pn(x,m,h)):w>pn(c.year(),m,h)?(D=w-pn(c.year(),m,h),x=c.year()+1):(x=c.year(),D=w),{week:D,year:x}}function pn(c,m,h){var y=os(c,m,h),w=os(c+1,m,h);return(Br(c)-y+w)/7}q("w",["ww",2],"wo","week"),q("W",["WW",2],"Wo","isoWeek"),V("w",Pe,Aa),V("ww",Pe,He),V("W",Pe,Aa),V("WW",Pe,He),Ft(["w","ww","W","WW"],function(c,m,h,y){m[y.substr(0,1)]=ue(c)});function yD(c){return Vr(c,this._week.dow,this._week.doy).week}var kD={dow:0,doy:6};function wD(){return this._week.dow}function AD(){return this._week.doy}function SD(c){var m=this.localeData().week(this);return c==null?m:this.add((c-m)*7,"d")}function CD(c){var m=Vr(this,1,4).week;return c==null?m:this.add((c-m)*7,"d")}q("d",0,"do","day"),q("dd",0,0,function(c){return this.localeData().weekdaysMin(this,c)}),q("ddd",0,0,function(c){return this.localeData().weekdaysShort(this,c)}),q("dddd",0,0,function(c){return this.localeData().weekdays(this,c)}),q("e",0,0,"weekday"),q("E",0,0,"isoWeekday"),V("d",Pe),V("e",Pe),V("E",Pe),V("dd",function(c,m){return m.weekdaysMinRegex(c)}),V("ddd",function(c,m){return m.weekdaysShortRegex(c)}),V("dddd",function(c,m){return m.weekdaysRegex(c)}),Ft(["dd","ddd","dddd"],function(c,m,h,y){var w=h._locale.weekdaysParse(c,y,h._strict);w!=null?m.d=w:f(h).invalidWeekday=c}),Ft(["d","e","E"],function(c,m,h,y){m[y]=ue(c)});function DD(c,m){return typeof c!="string"?c:isNaN(c)?(c=m.weekdaysParse(c),typeof c=="number"?c:null):parseInt(c,10)}function TD(c,m){return typeof c=="string"?m.weekdaysParse(c)%7||7:isNaN(c)?null:c}function Ad(c,m){return c.slice(m,7).concat(c.slice(0,m))}var ED="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Bh="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),PD="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),_D=cn,xD=cn,ID=cn;function RD(c,m){var h=r(this._weekdays)?this._weekdays:this._weekdays[c&&c!==!0&&this._weekdays.isFormat.test(m)?"format":"standalone"];return c===!0?Ad(h,this._week.dow):c?h[c.day()]:h}function zD(c){return c===!0?Ad(this._weekdaysShort,this._week.dow):c?this._weekdaysShort[c.day()]:this._weekdaysShort}function MD(c){return c===!0?Ad(this._weekdaysMin,this._week.dow):c?this._weekdaysMin[c.day()]:this._weekdaysMin}function ND(c,m,h){var y,w,D,x=c.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],y=0;y<7;++y)D=v([2e3,1]).day(y),this._minWeekdaysParse[y]=this.weekdaysMin(D,"").toLocaleLowerCase(),this._shortWeekdaysParse[y]=this.weekdaysShort(D,"").toLocaleLowerCase(),this._weekdaysParse[y]=this.weekdays(D,"").toLocaleLowerCase();return h?m==="dddd"?(w=ht.call(this._weekdaysParse,x),w!==-1?w:null):m==="ddd"?(w=ht.call(this._shortWeekdaysParse,x),w!==-1?w:null):(w=ht.call(this._minWeekdaysParse,x),w!==-1?w:null):m==="dddd"?(w=ht.call(this._weekdaysParse,x),w!==-1||(w=ht.call(this._shortWeekdaysParse,x),w!==-1)?w:(w=ht.call(this._minWeekdaysParse,x),w!==-1?w:null)):m==="ddd"?(w=ht.call(this._shortWeekdaysParse,x),w!==-1||(w=ht.call(this._weekdaysParse,x),w!==-1)?w:(w=ht.call(this._minWeekdaysParse,x),w!==-1?w:null)):(w=ht.call(this._minWeekdaysParse,x),w!==-1||(w=ht.call(this._weekdaysParse,x),w!==-1)?w:(w=ht.call(this._shortWeekdaysParse,x),w!==-1?w:null))}function FD(c,m,h){var y,w,D;if(this._weekdaysParseExact)return ND.call(this,c,m,h);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),y=0;y<7;y++){if(w=v([2e3,1]).day(y),h&&!this._fullWeekdaysParse[y]&&(this._fullWeekdaysParse[y]=new RegExp("^"+this.weekdays(w,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[y]=new RegExp("^"+this.weekdaysShort(w,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[y]=new RegExp("^"+this.weekdaysMin(w,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[y]||(D="^"+this.weekdays(w,"")+"|^"+this.weekdaysShort(w,"")+"|^"+this.weekdaysMin(w,""),this._weekdaysParse[y]=new RegExp(D.replace(".",""),"i")),h&&m==="dddd"&&this._fullWeekdaysParse[y].test(c))return y;if(h&&m==="ddd"&&this._shortWeekdaysParse[y].test(c))return y;if(h&&m==="dd"&&this._minWeekdaysParse[y].test(c))return y;if(!h&&this._weekdaysParse[y].test(c))return y}}function LD(c){if(!this.isValid())return c!=null?this:NaN;var m=Ur(this,"Day");return c!=null?(c=DD(c,this.localeData()),this.add(c-m,"d")):m}function jD(c){if(!this.isValid())return c!=null?this:NaN;var m=(this.day()+7-this.localeData()._week.dow)%7;return c==null?m:this.add(c-m,"d")}function OD(c){if(!this.isValid())return c!=null?this:NaN;if(c!=null){var m=TD(c,this.localeData());return this.day(this.day()%7?m:m-7)}else return this.day()||7}function BD(c){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Sd.call(this),c?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=_D),this._weekdaysStrictRegex&&c?this._weekdaysStrictRegex:this._weekdaysRegex)}function UD(c){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Sd.call(this),c?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=xD),this._weekdaysShortStrictRegex&&c?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function qD(c){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||Sd.call(this),c?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=ID),this._weekdaysMinStrictRegex&&c?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Sd(){function c(Wt,vn){return vn.length-Wt.length}var m=[],h=[],y=[],w=[],D,x,Q,me,Ie;for(D=0;D<7;D++)x=v([2e3,1]).day(D),Q=Jt(this.weekdaysMin(x,"")),me=Jt(this.weekdaysShort(x,"")),Ie=Jt(this.weekdays(x,"")),m.push(Q),h.push(me),y.push(Ie),w.push(Q),w.push(me),w.push(Ie);m.sort(c),h.sort(c),y.sort(c),w.sort(c),this._weekdaysRegex=new RegExp("^("+w.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+y.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+m.join("|")+")","i")}function Cd(){return this.hours()%12||12}function VD(){return this.hours()||24}q("H",["HH",2],0,"hour"),q("h",["hh",2],0,Cd),q("k",["kk",2],0,VD),q("hmm",0,0,function(){return""+Cd.apply(this)+ae(this.minutes(),2)}),q("hmmss",0,0,function(){return""+Cd.apply(this)+ae(this.minutes(),2)+ae(this.seconds(),2)}),q("Hmm",0,0,function(){return""+this.hours()+ae(this.minutes(),2)}),q("Hmmss",0,0,function(){return""+this.hours()+ae(this.minutes(),2)+ae(this.seconds(),2)});function Uh(c,m){q(c,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),m)})}Uh("a",!0),Uh("A",!1);function qh(c,m){return m._meridiemParse}V("a",qh),V("A",qh),V("H",Pe,Fi),V("h",Pe,Aa),V("k",Pe,Aa),V("HH",Pe,He),V("hh",Pe,He),V("kk",Pe,He),V("hmm",Na),V("hmmss",Nt),V("Hmm",Na),V("Hmmss",Nt),Se(["H","HH"],xt),Se(["k","kk"],function(c,m,h){var y=ue(c);m[xt]=y===24?0:y}),Se(["a","A"],function(c,m,h){h._isPm=h._locale.isPM(c),h._meridiem=c}),Se(["h","hh"],function(c,m,h){m[xt]=ue(c),f(h).bigHour=!0}),Se("hmm",function(c,m,h){var y=c.length-2;m[xt]=ue(c.substr(0,y)),m[Sa]=ue(c.substr(y)),f(h).bigHour=!0}),Se("hmmss",function(c,m,h){var y=c.length-4,w=c.length-2;m[xt]=ue(c.substr(0,y)),m[Sa]=ue(c.substr(y,2)),m[un]=ue(c.substr(w)),f(h).bigHour=!0}),Se("Hmm",function(c,m,h){var y=c.length-2;m[xt]=ue(c.substr(0,y)),m[Sa]=ue(c.substr(y))}),Se("Hmmss",function(c,m,h){var y=c.length-4,w=c.length-2;m[xt]=ue(c.substr(0,y)),m[Sa]=ue(c.substr(y,2)),m[un]=ue(c.substr(w))});function $D(c){return(c+"").toLowerCase().charAt(0)==="p"}var WD=/[ap]\.?m?\.?/i,GD=Li("Hours",!0);function HD(c,m,h){return c>11?h?"pm":"PM":h?"am":"AM"}var Vh={calendar:te,longDateFormat:ia,invalidDate:oa,ordinal:Kt,dayOfMonthOrdinalParse:va,relativeTime:aa,months:lD,monthsShort:Mh,week:kD,weekdays:ED,weekdaysMin:PD,weekdaysShort:Bh,meridiemParse:WD},ot={},$r={},Wr;function YD(c,m){var h,y=Math.min(c.length,m.length);for(h=0;h<y;h+=1)if(c[h]!==m[h])return h;return y}function $h(c){return c&&c.toLowerCase().replace("_","-")}function KD(c){for(var m=0,h,y,w,D;m<c.length;){for(D=$h(c[m]).split("-"),h=D.length,y=$h(c[m+1]),y=y?y.split("-"):null;h>0;){if(w=ss(D.slice(0,h).join("-")),w)return w;if(y&&y.length>=h&&YD(D,y)>=h-1)break;h--}m++}return Wr}function ZD(c){return!!(c&&c.match("^[^/\\\\]*$"))}function ss(c){var m=null,h;if(ot[c]===void 0&&e&&e.exports&&ZD(c))try{m=Wr._abbr,h=Mr,h("./locale/"+c),Bn(m)}catch{ot[c]=null}return ot[c]}function Bn(c,m){var h;return c&&(d(m)?h=mn(c):h=Dd(c,m),h&&(Wr=h)),Wr._abbr}function Dd(c,m){if(m!==null){var h,y=Vh;if(m.abbr=c,ot[c]!=null)$("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),y=ot[c]._config;else if(m.parentLocale!=null)if(ot[m.parentLocale]!=null)y=ot[m.parentLocale]._config;else if(h=ss(m.parentLocale),h!=null)y=h._config;else return $r[m.parentLocale]||($r[m.parentLocale]=[]),$r[m.parentLocale].push({name:c,config:m}),null;return ot[c]=new X(H(y,m)),$r[c]&&$r[c].forEach(function(w){Dd(w.name,w.config)}),Bn(c),ot[c]}else return delete ot[c],null}function JD(c,m){if(m!=null){var h,y,w=Vh;ot[c]!=null&&ot[c].parentLocale!=null?ot[c].set(H(ot[c]._config,m)):(y=ss(c),y!=null&&(w=y._config),m=H(w,m),y==null&&(m.abbr=c),h=new X(m),h.parentLocale=ot[c],ot[c]=h),Bn(c)}else ot[c]!=null&&(ot[c].parentLocale!=null?(ot[c]=ot[c].parentLocale,c===Bn()&&Bn(c)):ot[c]!=null&&delete ot[c]);return ot[c]}function mn(c){var m;if(c&&c._locale&&c._locale._abbr&&(c=c._locale._abbr),!c)return Wr;if(!r(c)){if(m=ss(c),m)return m;c=[c]}return KD(c)}function QD(){return ie(ot)}function Td(c){var m,h=c._a;return h&&f(c).overflow===-2&&(m=h[dn]<0||h[dn]>11?dn:h[Fa]<1||h[Fa]>wd(h[Lt],h[dn])?Fa:h[xt]<0||h[xt]>24||h[xt]===24&&(h[Sa]!==0||h[un]!==0||h[fi]!==0)?xt:h[Sa]<0||h[Sa]>59?Sa:h[un]<0||h[un]>59?un:h[fi]<0||h[fi]>999?fi:-1,f(c)._overflowDayOfYear&&(m<Lt||m>Fa)&&(m=Fa),f(c)._overflowWeeks&&m===-1&&(m=aD),f(c)._overflowWeekday&&m===-1&&(m=nD),f(c).overflow=m),c}var XD=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,eT=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,tT=/Z|[+-]\d\d(?::?\d\d)?/,ls=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ed=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],aT=/^\/?Date\((-?\d+)/i,nT=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,iT={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Wh(c){var m,h,y=c._i,w=XD.exec(y)||eT.exec(y),D,x,Q,me,Ie=ls.length,Wt=Ed.length;if(w){for(f(c).iso=!0,m=0,h=Ie;m<h;m++)if(ls[m][1].exec(w[1])){x=ls[m][0],D=ls[m][2]!==!1;break}if(x==null){c._isValid=!1;return}if(w[3]){for(m=0,h=Wt;m<h;m++)if(Ed[m][1].exec(w[3])){Q=(w[2]||" ")+Ed[m][0];break}if(Q==null){c._isValid=!1;return}}if(!D&&Q!=null){c._isValid=!1;return}if(w[4])if(tT.exec(w[4]))me="Z";else{c._isValid=!1;return}c._f=x+(Q||"")+(me||""),_d(c)}else c._isValid=!1}function rT(c,m,h,y,w,D){var x=[oT(c),Mh.indexOf(m),parseInt(h,10),parseInt(y,10),parseInt(w,10)];return D&&x.push(parseInt(D,10)),x}function oT(c){var m=parseInt(c,10);return m<=49?2e3+m:m<=999?1900+m:m}function sT(c){return c.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function lT(c,m,h){if(c){var y=Bh.indexOf(c),w=new Date(m[0],m[1],m[2]).getDay();if(y!==w)return f(h).weekdayMismatch=!0,h._isValid=!1,!1}return!0}function cT(c,m,h){if(c)return iT[c];if(m)return 0;var y=parseInt(h,10),w=y%100,D=(y-w)/100;return D*60+w}function Gh(c){var m=nT.exec(sT(c._i)),h;if(m){if(h=rT(m[4],m[3],m[2],m[5],m[6],m[7]),!lT(m[1],h,c))return;c._a=h,c._tzm=cT(m[8],m[9],m[10]),c._d=qr.apply(null,c._a),c._d.setUTCMinutes(c._d.getUTCMinutes()-c._tzm),f(c).rfc2822=!0}else c._isValid=!1}function dT(c){var m=aT.exec(c._i);if(m!==null){c._d=new Date(+m[1]);return}if(Wh(c),c._isValid===!1)delete c._isValid;else return;if(Gh(c),c._isValid===!1)delete c._isValid;else return;c._strict?c._isValid=!1:t.createFromInputFallback(c)}t.createFromInputFallback=R("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(c){c._d=new Date(c._i+(c._useUTC?" UTC":""))});function ji(c,m,h){return c??m??h}function uT(c){var m=new Date(t.now());return c._useUTC?[m.getUTCFullYear(),m.getUTCMonth(),m.getUTCDate()]:[m.getFullYear(),m.getMonth(),m.getDate()]}function Pd(c){var m,h,y=[],w,D,x;if(!c._d){for(w=uT(c),c._w&&c._a[Fa]==null&&c._a[dn]==null&&pT(c),c._dayOfYear!=null&&(x=ji(c._a[Lt],w[Lt]),(c._dayOfYear>Br(x)||c._dayOfYear===0)&&(f(c)._overflowDayOfYear=!0),h=qr(x,0,c._dayOfYear),c._a[dn]=h.getUTCMonth(),c._a[Fa]=h.getUTCDate()),m=0;m<3&&c._a[m]==null;++m)c._a[m]=y[m]=w[m];for(;m<7;m++)c._a[m]=y[m]=c._a[m]==null?m===2?1:0:c._a[m];c._a[xt]===24&&c._a[Sa]===0&&c._a[un]===0&&c._a[fi]===0&&(c._nextDay=!0,c._a[xt]=0),c._d=(c._useUTC?qr:bD).apply(null,y),D=c._useUTC?c._d.getUTCDay():c._d.getDay(),c._tzm!=null&&c._d.setUTCMinutes(c._d.getUTCMinutes()-c._tzm),c._nextDay&&(c._a[xt]=24),c._w&&typeof c._w.d<"u"&&c._w.d!==D&&(f(c).weekdayMismatch=!0)}}function pT(c){var m,h,y,w,D,x,Q,me,Ie;m=c._w,m.GG!=null||m.W!=null||m.E!=null?(D=1,x=4,h=ji(m.GG,c._a[Lt],Vr(Qe(),1,4).year),y=ji(m.W,1),w=ji(m.E,1),(w<1||w>7)&&(me=!0)):(D=c._locale._week.dow,x=c._locale._week.doy,Ie=Vr(Qe(),D,x),h=ji(m.gg,c._a[Lt],Ie.year),y=ji(m.w,Ie.week),m.d!=null?(w=m.d,(w<0||w>6)&&(me=!0)):m.e!=null?(w=m.e+D,(m.e<0||m.e>6)&&(me=!0)):w=D),y<1||y>pn(h,D,x)?f(c)._overflowWeeks=!0:me!=null?f(c)._overflowWeekday=!0:(Q=Oh(h,y,w,D,x),c._a[Lt]=Q.year,c._dayOfYear=Q.dayOfYear)}t.ISO_8601=function(){},t.RFC_2822=function(){};function _d(c){if(c._f===t.ISO_8601){Wh(c);return}if(c._f===t.RFC_2822){Gh(c);return}c._a=[],f(c).empty=!0;var m=""+c._i,h,y,w,D,x,Q=m.length,me=0,Ie,Wt;for(w=Bt(c._f,c._locale).match(Me)||[],Wt=w.length,h=0;h<Wt;h++)D=w[h],y=(m.match(Mt(D,c))||[])[0],y&&(x=m.substr(0,m.indexOf(y)),x.length>0&&f(c).unusedInput.push(x),m=m.slice(m.indexOf(y)+y.length),me+=y.length),de[D]?(y?f(c).empty=!1:f(c).unusedTokens.push(D),rs(D,y,c)):c._strict&&!y&&f(c).unusedTokens.push(D);f(c).charsLeftOver=Q-me,m.length>0&&f(c).unusedInput.push(m),c._a[xt]<=12&&f(c).bigHour===!0&&c._a[xt]>0&&(f(c).bigHour=void 0),f(c).parsedDateParts=c._a.slice(0),f(c).meridiem=c._meridiem,c._a[xt]=mT(c._locale,c._a[xt],c._meridiem),Ie=f(c).era,Ie!==null&&(c._a[Lt]=c._locale.erasConvertYear(Ie,c._a[Lt])),Pd(c),Td(c)}function mT(c,m,h){var y;return h==null?m:c.meridiemHour!=null?c.meridiemHour(m,h):(c.isPM!=null&&(y=c.isPM(h),y&&m<12&&(m+=12),!y&&m===12&&(m=0)),m)}function gT(c){var m,h,y,w,D,x,Q=!1,me=c._f.length;if(me===0){f(c).invalidFormat=!0,c._d=new Date(NaN);return}for(w=0;w<me;w++)D=0,x=!1,m=I({},c),c._useUTC!=null&&(m._useUTC=c._useUTC),m._f=c._f[w],_d(m),C(m)&&(x=!0),D+=f(m).charsLeftOver,D+=f(m).unusedTokens.length*10,f(m).score=D,Q?D<y&&(y=D,h=m):(y==null||D<y||x)&&(y=D,h=m,x&&(Q=!0));b(c,h||m)}function hT(c){if(!c._d){var m=At(c._i),h=m.day===void 0?m.date:m.day;c._a=g([m.year,m.month,h,m.hour,m.minute,m.second,m.millisecond],function(y){return y&&parseInt(y,10)}),Pd(c)}}function fT(c){var m=new L(Td(Hh(c)));return m._nextDay&&(m.add(1,"d"),m._nextDay=void 0),m}function Hh(c){var m=c._i,h=c._f;return c._locale=c._locale||mn(c._l),m===null||h===void 0&&m===""?T({nullInput:!0}):(typeof m=="string"&&(c._i=m=c._locale.preparse(m)),N(m)?new L(Td(m)):(u(m)?c._d=m:r(h)?gT(c):h?_d(c):vT(c),C(c)||(c._d=null),c))}function vT(c){var m=c._i;d(m)?c._d=new Date(t.now()):u(m)?c._d=new Date(m.valueOf()):typeof m=="string"?dT(c):r(m)?(c._a=g(m.slice(0),function(h){return parseInt(h,10)}),Pd(c)):o(m)?hT(c):p(m)?c._d=new Date(m):t.createFromInputFallback(c)}function Yh(c,m,h,y,w){var D={};return(m===!0||m===!1)&&(y=m,m=void 0),(h===!0||h===!1)&&(y=h,h=void 0),(o(c)&&l(c)||r(c)&&c.length===0)&&(c=void 0),D._isAMomentObject=!0,D._useUTC=D._isUTC=w,D._l=h,D._i=c,D._f=m,D._strict=y,fT(D)}function Qe(c,m,h,y){return Yh(c,m,h,y,!1)}var bT=R("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var c=Qe.apply(null,arguments);return this.isValid()&&c.isValid()?c<this?this:c:T()}),yT=R("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var c=Qe.apply(null,arguments);return this.isValid()&&c.isValid()?c>this?this:c:T()});function Kh(c,m){var h,y;if(m.length===1&&r(m[0])&&(m=m[0]),!m.length)return Qe();for(h=m[0],y=1;y<m.length;++y)(!m[y].isValid()||m[y][c](h))&&(h=m[y]);return h}function kT(){var c=[].slice.call(arguments,0);return Kh("isBefore",c)}function wT(){var c=[].slice.call(arguments,0);return Kh("isAfter",c)}var AT=function(){return Date.now?Date.now():+new Date},Gr=["year","quarter","month","week","day","hour","minute","second","millisecond"];function ST(c){var m,h=!1,y,w=Gr.length;for(m in c)if(s(c,m)&&!(ht.call(Gr,m)!==-1&&(c[m]==null||!isNaN(c[m]))))return!1;for(y=0;y<w;++y)if(c[Gr[y]]){if(h)return!1;parseFloat(c[Gr[y]])!==ue(c[Gr[y]])&&(h=!0)}return!0}function CT(){return this._isValid}function DT(){return Ca(NaN)}function cs(c){var m=At(c),h=m.year||0,y=m.quarter||0,w=m.month||0,D=m.week||m.isoWeek||0,x=m.day||0,Q=m.hour||0,me=m.minute||0,Ie=m.second||0,Wt=m.millisecond||0;this._isValid=ST(m),this._milliseconds=+Wt+Ie*1e3+me*6e4+Q*1e3*60*60,this._days=+x+D*7,this._months=+w+y*3+h*12,this._data={},this._locale=mn(),this._bubble()}function ds(c){return c instanceof cs}function xd(c){return c<0?Math.round(-1*c)*-1:Math.round(c)}function TT(c,m,h){var y=Math.min(c.length,m.length),w=Math.abs(c.length-m.length),D=0,x;for(x=0;x<y;x++)ue(c[x])!==ue(m[x])&&D++;return D+w}function Zh(c,m){q(c,0,0,function(){var h=this.utcOffset(),y="+";return h<0&&(h=-h,y="-"),y+ae(~~(h/60),2)+m+ae(~~h%60,2)})}Zh("Z",":"),Zh("ZZ",""),V("Z",_t),V("ZZ",_t),Se(["Z","ZZ"],function(c,m,h){h._useUTC=!0,h._tzm=Id(_t,c)});var ET=/([\+\-]|\d\d)/gi;function Id(c,m){var h=(m||"").match(c),y,w,D;return h===null?null:(y=h[h.length-1]||[],w=(y+"").match(ET)||["-",0,0],D=+(w[1]*60)+ue(w[2]),D===0?0:w[0]==="+"?D:-D)}function Rd(c,m){var h,y;return m._isUTC?(h=m.clone(),y=(N(c)||u(c)?c.valueOf():Qe(c).valueOf())-h.valueOf(),h._d.setTime(h._d.valueOf()+y),t.updateOffset(h,!1),h):Qe(c).local()}function zd(c){return-Math.round(c._d.getTimezoneOffset())}t.updateOffset=function(){};function PT(c,m,h){var y=this._offset||0,w;if(!this.isValid())return c!=null?this:NaN;if(c!=null){if(typeof c=="string"){if(c=Id(_t,c),c===null)return this}else Math.abs(c)<16&&!h&&(c=c*60);return!this._isUTC&&m&&(w=zd(this)),this._offset=c,this._isUTC=!0,w!=null&&this.add(w,"m"),y!==c&&(!m||this._changeInProgress?ef(this,Ca(c-y,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,t.updateOffset(this,!0),this._changeInProgress=null)),this}else return this._isUTC?y:zd(this)}function _T(c,m){return c!=null?(typeof c!="string"&&(c=-c),this.utcOffset(c,m),this):-this.utcOffset()}function xT(c){return this.utcOffset(0,c)}function IT(c){return this._isUTC&&(this.utcOffset(0,c),this._isUTC=!1,c&&this.subtract(zd(this),"m")),this}function RT(){if(this._tzm!=null)this.utcOffset(this._tzm,!1,!0);else if(typeof this._i=="string"){var c=Id(Oe,this._i);c!=null?this.utcOffset(c):this.utcOffset(0,!0)}return this}function zT(c){return this.isValid()?(c=c?Qe(c).utcOffset():0,(this.utcOffset()-c)%60===0):!1}function MT(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function NT(){if(!d(this._isDSTShifted))return this._isDSTShifted;var c={},m;return I(c,this),c=Hh(c),c._a?(m=c._isUTC?v(c._a):Qe(c._a),this._isDSTShifted=this.isValid()&&TT(c._a,m.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function FT(){return this.isValid()?!this._isUTC:!1}function LT(){return this.isValid()?this._isUTC:!1}function Jh(){return this.isValid()?this._isUTC&&this._offset===0:!1}var jT=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,OT=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ca(c,m){var h=c,y=null,w,D,x;return ds(c)?h={ms:c._milliseconds,d:c._days,M:c._months}:p(c)||!isNaN(+c)?(h={},m?h[m]=+c:h.milliseconds=+c):(y=jT.exec(c))?(w=y[1]==="-"?-1:1,h={y:0,d:ue(y[Fa])*w,h:ue(y[xt])*w,m:ue(y[Sa])*w,s:ue(y[un])*w,ms:ue(xd(y[fi]*1e3))*w}):(y=OT.exec(c))?(w=y[1]==="-"?-1:1,h={y:vi(y[2],w),M:vi(y[3],w),w:vi(y[4],w),d:vi(y[5],w),h:vi(y[6],w),m:vi(y[7],w),s:vi(y[8],w)}):h==null?h={}:typeof h=="object"&&("from"in h||"to"in h)&&(x=BT(Qe(h.from),Qe(h.to)),h={},h.ms=x.milliseconds,h.M=x.months),D=new cs(h),ds(c)&&s(c,"_locale")&&(D._locale=c._locale),ds(c)&&s(c,"_isValid")&&(D._isValid=c._isValid),D}Ca.fn=cs.prototype,Ca.invalid=DT;function vi(c,m){var h=c&&parseFloat(c.replace(",","."));return(isNaN(h)?0:h)*m}function Qh(c,m){var h={};return h.months=m.month()-c.month()+(m.year()-c.year())*12,c.clone().add(h.months,"M").isAfter(m)&&--h.months,h.milliseconds=+m-+c.clone().add(h.months,"M"),h}function BT(c,m){var h;return c.isValid()&&m.isValid()?(m=Rd(m,c),c.isBefore(m)?h=Qh(c,m):(h=Qh(m,c),h.milliseconds=-h.milliseconds,h.months=-h.months),h):{milliseconds:0,months:0}}function Xh(c,m){return function(h,y){var w,D;return y!==null&&!isNaN(+y)&&($(m,"moment()."+m+"(period, number) is deprecated. Please use moment()."+m+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),D=h,h=y,y=D),w=Ca(h,y),ef(this,w,c),this}}function ef(c,m,h,y){var w=m._milliseconds,D=xd(m._days),x=xd(m._months);c.isValid()&&(y=y??!0,x&&Fh(c,Ur(c,"Month")+x*h),D&&zh(c,"Date",Ur(c,"Date")+D*h),w&&c._d.setTime(c._d.valueOf()+w*h),y&&t.updateOffset(c,D||x))}var UT=Xh(1,"add"),qT=Xh(-1,"subtract");function tf(c){return typeof c=="string"||c instanceof String}function VT(c){return N(c)||u(c)||tf(c)||p(c)||WT(c)||$T(c)||c===null||c===void 0}function $T(c){var m=o(c)&&!l(c),h=!1,y=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],w,D,x=y.length;for(w=0;w<x;w+=1)D=y[w],h=h||s(c,D);return m&&h}function WT(c){var m=r(c),h=!1;return m&&(h=c.filter(function(y){return!p(y)&&tf(c)}).length===0),m&&h}function GT(c){var m=o(c)&&!l(c),h=!1,y=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],w,D;for(w=0;w<y.length;w+=1)D=y[w],h=h||s(c,D);return m&&h}function HT(c,m){var h=c.diff(m,"days",!0);return h<-6?"sameElse":h<-1?"lastWeek":h<0?"lastDay":h<1?"sameDay":h<2?"nextDay":h<7?"nextWeek":"sameElse"}function YT(c,m){arguments.length===1&&(arguments[0]?VT(arguments[0])?(c=arguments[0],m=void 0):GT(arguments[0])&&(m=arguments[0],c=void 0):(c=void 0,m=void 0));var h=c||Qe(),y=Rd(h,this).startOf("day"),w=t.calendarFormat(this,y)||"sameElse",D=m&&(F(m[w])?m[w].call(this,h):m[w]);return this.format(D||this.localeData().calendar(w,this,Qe(h)))}function KT(){return new L(this)}function ZT(c,m){var h=N(c)?c:Qe(c);return this.isValid()&&h.isValid()?(m=pt(m)||"millisecond",m==="millisecond"?this.valueOf()>h.valueOf():h.valueOf()<this.clone().startOf(m).valueOf()):!1}function JT(c,m){var h=N(c)?c:Qe(c);return this.isValid()&&h.isValid()?(m=pt(m)||"millisecond",m==="millisecond"?this.valueOf()<h.valueOf():this.clone().endOf(m).valueOf()<h.valueOf()):!1}function QT(c,m,h,y){var w=N(c)?c:Qe(c),D=N(m)?m:Qe(m);return this.isValid()&&w.isValid()&&D.isValid()?(y=y||"()",(y[0]==="("?this.isAfter(w,h):!this.isBefore(w,h))&&(y[1]===")"?this.isBefore(D,h):!this.isAfter(D,h))):!1}function XT(c,m){var h=N(c)?c:Qe(c),y;return this.isValid()&&h.isValid()?(m=pt(m)||"millisecond",m==="millisecond"?this.valueOf()===h.valueOf():(y=h.valueOf(),this.clone().startOf(m).valueOf()<=y&&y<=this.clone().endOf(m).valueOf())):!1}function eE(c,m){return this.isSame(c,m)||this.isAfter(c,m)}function tE(c,m){return this.isSame(c,m)||this.isBefore(c,m)}function aE(c,m,h){var y,w,D;if(!this.isValid())return NaN;if(y=Rd(c,this),!y.isValid())return NaN;switch(w=(y.utcOffset()-this.utcOffset())*6e4,m=pt(m),m){case"year":D=us(this,y)/12;break;case"month":D=us(this,y);break;case"quarter":D=us(this,y)/3;break;case"second":D=(this-y)/1e3;break;case"minute":D=(this-y)/6e4;break;case"hour":D=(this-y)/36e5;break;case"day":D=(this-y-w)/864e5;break;case"week":D=(this-y-w)/6048e5;break;default:D=this-y}return h?D:Ve(D)}function us(c,m){if(c.date()<m.date())return-us(m,c);var h=(m.year()-c.year())*12+(m.month()-c.month()),y=c.clone().add(h,"months"),w,D;return m-y<0?(w=c.clone().add(h-1,"months"),D=(m-y)/(y-w)):(w=c.clone().add(h+1,"months"),D=(m-y)/(w-y)),-(h+D)||0}t.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",t.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";function nE(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function iE(c){if(!this.isValid())return null;var m=c!==!0,h=m?this.clone().utc():this;return h.year()<0||h.year()>9999?Ee(h,m?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):F(Date.prototype.toISOString)?m?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Ee(h,"Z")):Ee(h,m?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function rE(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var c="moment",m="",h,y,w,D;return this.isLocal()||(c=this.utcOffset()===0?"moment.utc":"moment.parseZone",m="Z"),h="["+c+'("]',y=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",w="-MM-DD[T]HH:mm:ss.SSS",D=m+'[")]',this.format(h+y+w+D)}function oE(c){c||(c=this.isUtc()?t.defaultFormatUtc:t.defaultFormat);var m=Ee(this,c);return this.localeData().postformat(m)}function sE(c,m){return this.isValid()&&(N(c)&&c.isValid()||Qe(c).isValid())?Ca({to:this,from:c}).locale(this.locale()).humanize(!m):this.localeData().invalidDate()}function lE(c){return this.from(Qe(),c)}function cE(c,m){return this.isValid()&&(N(c)&&c.isValid()||Qe(c).isValid())?Ca({from:this,to:c}).locale(this.locale()).humanize(!m):this.localeData().invalidDate()}function dE(c){return this.to(Qe(),c)}function af(c){var m;return c===void 0?this._locale._abbr:(m=mn(c),m!=null&&(this._locale=m),this)}var nf=R("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(c){return c===void 0?this.localeData():this.locale(c)});function rf(){return this._locale}var ps=1e3,Oi=60*ps,ms=60*Oi,of=(365*400+97)*24*ms;function Bi(c,m){return(c%m+m)%m}function sf(c,m,h){return c<100&&c>=0?new Date(c+400,m,h)-of:new Date(c,m,h).valueOf()}function lf(c,m,h){return c<100&&c>=0?Date.UTC(c+400,m,h)-of:Date.UTC(c,m,h)}function uE(c){var m,h;if(c=pt(c),c===void 0||c==="millisecond"||!this.isValid())return this;switch(h=this._isUTC?lf:sf,c){case"year":m=h(this.year(),0,1);break;case"quarter":m=h(this.year(),this.month()-this.month()%3,1);break;case"month":m=h(this.year(),this.month(),1);break;case"week":m=h(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":m=h(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":m=h(this.year(),this.month(),this.date());break;case"hour":m=this._d.valueOf(),m-=Bi(m+(this._isUTC?0:this.utcOffset()*Oi),ms);break;case"minute":m=this._d.valueOf(),m-=Bi(m,Oi);break;case"second":m=this._d.valueOf(),m-=Bi(m,ps);break}return this._d.setTime(m),t.updateOffset(this,!0),this}function pE(c){var m,h;if(c=pt(c),c===void 0||c==="millisecond"||!this.isValid())return this;switch(h=this._isUTC?lf:sf,c){case"year":m=h(this.year()+1,0,1)-1;break;case"quarter":m=h(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":m=h(this.year(),this.month()+1,1)-1;break;case"week":m=h(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":m=h(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":m=h(this.year(),this.month(),this.date()+1)-1;break;case"hour":m=this._d.valueOf(),m+=ms-Bi(m+(this._isUTC?0:this.utcOffset()*Oi),ms)-1;break;case"minute":m=this._d.valueOf(),m+=Oi-Bi(m,Oi)-1;break;case"second":m=this._d.valueOf(),m+=ps-Bi(m,ps)-1;break}return this._d.setTime(m),t.updateOffset(this,!0),this}function mE(){return this._d.valueOf()-(this._offset||0)*6e4}function gE(){return Math.floor(this.valueOf()/1e3)}function hE(){return new Date(this.valueOf())}function fE(){var c=this;return[c.year(),c.month(),c.date(),c.hour(),c.minute(),c.second(),c.millisecond()]}function vE(){var c=this;return{years:c.year(),months:c.month(),date:c.date(),hours:c.hours(),minutes:c.minutes(),seconds:c.seconds(),milliseconds:c.milliseconds()}}function bE(){return this.isValid()?this.toISOString():null}function yE(){return C(this)}function kE(){return b({},f(this))}function wE(){return f(this).overflow}function AE(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}q("N",0,0,"eraAbbr"),q("NN",0,0,"eraAbbr"),q("NNN",0,0,"eraAbbr"),q("NNNN",0,0,"eraName"),q("NNNNN",0,0,"eraNarrow"),q("y",["y",1],"yo","eraYear"),q("y",["yy",2],0,"eraYear"),q("y",["yyy",3],0,"eraYear"),q("y",["yyyy",4],0,"eraYear"),V("N",Md),V("NN",Md),V("NNN",Md),V("NNNN",zE),V("NNNNN",ME),Se(["N","NN","NNN","NNNN","NNNNN"],function(c,m,h,y){var w=h._locale.erasParse(c,y,h._strict);w?f(h).era=w:f(h).invalidEra=c}),V("y",Je),V("yy",Je),V("yyy",Je),V("yyyy",Je),V("yo",NE),Se(["y","yy","yyy","yyyy"],Lt),Se(["yo"],function(c,m,h,y){var w;h._locale._eraYearOrdinalRegex&&(w=c.match(h._locale._eraYearOrdinalRegex)),h._locale.eraYearOrdinalParse?m[Lt]=h._locale.eraYearOrdinalParse(c,w):m[Lt]=parseInt(c,10)});function SE(c,m){var h,y,w,D=this._eras||mn("en")._eras;for(h=0,y=D.length;h<y;++h){switch(typeof D[h].since){case"string":w=t(D[h].since).startOf("day"),D[h].since=w.valueOf();break}switch(typeof D[h].until){case"undefined":D[h].until=1/0;break;case"string":w=t(D[h].until).startOf("day").valueOf(),D[h].until=w.valueOf();break}}return D}function CE(c,m,h){var y,w,D=this.eras(),x,Q,me;for(c=c.toUpperCase(),y=0,w=D.length;y<w;++y)if(x=D[y].name.toUpperCase(),Q=D[y].abbr.toUpperCase(),me=D[y].narrow.toUpperCase(),h)switch(m){case"N":case"NN":case"NNN":if(Q===c)return D[y];break;case"NNNN":if(x===c)return D[y];break;case"NNNNN":if(me===c)return D[y];break}else if([x,Q,me].indexOf(c)>=0)return D[y]}function DE(c,m){var h=c.since<=c.until?1:-1;return m===void 0?t(c.since).year():t(c.since).year()+(m-c.offset)*h}function TE(){var c,m,h,y=this.localeData().eras();for(c=0,m=y.length;c<m;++c)if(h=this.clone().startOf("day").valueOf(),y[c].since<=h&&h<=y[c].until||y[c].until<=h&&h<=y[c].since)return y[c].name;return""}function EE(){var c,m,h,y=this.localeData().eras();for(c=0,m=y.length;c<m;++c)if(h=this.clone().startOf("day").valueOf(),y[c].since<=h&&h<=y[c].until||y[c].until<=h&&h<=y[c].since)return y[c].narrow;return""}function PE(){var c,m,h,y=this.localeData().eras();for(c=0,m=y.length;c<m;++c)if(h=this.clone().startOf("day").valueOf(),y[c].since<=h&&h<=y[c].until||y[c].until<=h&&h<=y[c].since)return y[c].abbr;return""}function _E(){var c,m,h,y,w=this.localeData().eras();for(c=0,m=w.length;c<m;++c)if(h=w[c].since<=w[c].until?1:-1,y=this.clone().startOf("day").valueOf(),w[c].since<=y&&y<=w[c].until||w[c].until<=y&&y<=w[c].since)return(this.year()-t(w[c].since).year())*h+w[c].offset;return this.year()}function xE(c){return s(this,"_erasNameRegex")||Nd.call(this),c?this._erasNameRegex:this._erasRegex}function IE(c){return s(this,"_erasAbbrRegex")||Nd.call(this),c?this._erasAbbrRegex:this._erasRegex}function RE(c){return s(this,"_erasNarrowRegex")||Nd.call(this),c?this._erasNarrowRegex:this._erasRegex}function Md(c,m){return m.erasAbbrRegex(c)}function zE(c,m){return m.erasNameRegex(c)}function ME(c,m){return m.erasNarrowRegex(c)}function NE(c,m){return m._eraYearOrdinalRegex||Je}function Nd(){var c=[],m=[],h=[],y=[],w,D,x,Q,me,Ie=this.eras();for(w=0,D=Ie.length;w<D;++w)x=Jt(Ie[w].name),Q=Jt(Ie[w].abbr),me=Jt(Ie[w].narrow),m.push(x),c.push(Q),h.push(me),y.push(x),y.push(Q),y.push(me);this._erasRegex=new RegExp("^("+y.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+m.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+c.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+h.join("|")+")","i")}q(0,["gg",2],0,function(){return this.weekYear()%100}),q(0,["GG",2],0,function(){return this.isoWeekYear()%100});function gs(c,m){q(0,[c,c.length],0,m)}gs("gggg","weekYear"),gs("ggggg","weekYear"),gs("GGGG","isoWeekYear"),gs("GGGGG","isoWeekYear"),V("G",ne),V("g",ne),V("GG",Pe,He),V("gg",Pe,He),V("GGGG",ln,on),V("gggg",ln,on),V("GGGGG",De,wa),V("ggggg",De,wa),Ft(["gggg","ggggg","GGGG","GGGGG"],function(c,m,h,y){m[y.substr(0,2)]=ue(c)}),Ft(["gg","GG"],function(c,m,h,y){m[y]=t.parseTwoDigitYear(c)});function FE(c){return cf.call(this,c,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)}function LE(c){return cf.call(this,c,this.isoWeek(),this.isoWeekday(),1,4)}function jE(){return pn(this.year(),1,4)}function OE(){return pn(this.isoWeekYear(),1,4)}function BE(){var c=this.localeData()._week;return pn(this.year(),c.dow,c.doy)}function UE(){var c=this.localeData()._week;return pn(this.weekYear(),c.dow,c.doy)}function cf(c,m,h,y,w){var D;return c==null?Vr(this,y,w).year:(D=pn(c,y,w),m>D&&(m=D),qE.call(this,c,m,h,y,w))}function qE(c,m,h,y,w){var D=Oh(c,m,h,y,w),x=qr(D.year,0,D.dayOfYear);return this.year(x.getUTCFullYear()),this.month(x.getUTCMonth()),this.date(x.getUTCDate()),this}q("Q",0,"Qo","quarter"),V("Q",sa),Se("Q",function(c,m){m[dn]=(ue(c)-1)*3});function VE(c){return c==null?Math.ceil((this.month()+1)/3):this.month((c-1)*3+this.month()%3)}q("D",["DD",2],"Do","date"),V("D",Pe,Aa),V("DD",Pe,He),V("Do",function(c,m){return c?m._dayOfMonthOrdinalParse||m._ordinalParse:m._dayOfMonthOrdinalParseLenient}),Se(["D","DD"],Fa),Se("Do",function(c,m){m[Fa]=ue(c.match(Pe)[0])});var df=Li("Date",!0);q("DDD",["DDDD",3],"DDDo","dayOfYear"),V("DDD",sn),V("DDDD",Ni),Se(["DDD","DDDD"],function(c,m,h){h._dayOfYear=ue(c)});function $E(c){var m=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return c==null?m:this.add(c-m,"d")}q("m",["mm",2],0,"minute"),V("m",Pe,Fi),V("mm",Pe,He),Se(["m","mm"],Sa);var WE=Li("Minutes",!1);q("s",["ss",2],0,"second"),V("s",Pe,Fi),V("ss",Pe,He),Se(["s","ss"],un);var GE=Li("Seconds",!1);q("S",0,0,function(){return~~(this.millisecond()/100)}),q(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),q(0,["SSS",3],0,"millisecond"),q(0,["SSSS",4],0,function(){return this.millisecond()*10}),q(0,["SSSSS",5],0,function(){return this.millisecond()*100}),q(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),q(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),q(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),q(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),V("S",sn,sa),V("SS",sn,He),V("SSS",sn,Ni);var Un,uf;for(Un="SSSS";Un.length<=9;Un+="S")V(Un,Je);function HE(c,m){m[fi]=ue(("0."+c)*1e3)}for(Un="S";Un.length<=9;Un+="S")Se(Un,HE);uf=Li("Milliseconds",!1),q("z",0,0,"zoneAbbr"),q("zz",0,0,"zoneName");function YE(){return this._isUTC?"UTC":""}function KE(){return this._isUTC?"Coordinated Universal Time":""}var O=L.prototype;O.add=UT,O.calendar=YT,O.clone=KT,O.diff=aE,O.endOf=pE,O.format=oE,O.from=sE,O.fromNow=lE,O.to=cE,O.toNow=dE,O.get=rD,O.invalidAt=wE,O.isAfter=ZT,O.isBefore=JT,O.isBetween=QT,O.isSame=XT,O.isSameOrAfter=eE,O.isSameOrBefore=tE,O.isValid=yE,O.lang=nf,O.locale=af,O.localeData=rf,O.max=yT,O.min=bT,O.parsingFlags=kE,O.set=oD,O.startOf=uE,O.subtract=qT,O.toArray=fE,O.toObject=vE,O.toDate=hE,O.toISOString=iE,O.inspect=rE,typeof Symbol<"u"&&Symbol.for!=null&&(O[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),O.toJSON=bE,O.toString=nE,O.unix=gE,O.valueOf=mE,O.creationData=AE,O.eraName=TE,O.eraNarrow=EE,O.eraAbbr=PE,O.eraYear=_E,O.year=Rh,O.isLeapYear=iD,O.weekYear=FE,O.isoWeekYear=LE,O.quarter=O.quarters=VE,O.month=Lh,O.daysInMonth=hD,O.week=O.weeks=SD,O.isoWeek=O.isoWeeks=CD,O.weeksInYear=BE,O.weeksInWeekYear=UE,O.isoWeeksInYear=jE,O.isoWeeksInISOWeekYear=OE,O.date=df,O.day=O.days=LD,O.weekday=jD,O.isoWeekday=OD,O.dayOfYear=$E,O.hour=O.hours=GD,O.minute=O.minutes=WE,O.second=O.seconds=GE,O.millisecond=O.milliseconds=uf,O.utcOffset=PT,O.utc=xT,O.local=IT,O.parseZone=RT,O.hasAlignedHourOffset=zT,O.isDST=MT,O.isLocal=FT,O.isUtcOffset=LT,O.isUtc=Jh,O.isUTC=Jh,O.zoneAbbr=YE,O.zoneName=KE,O.dates=R("dates accessor is deprecated. Use date instead.",df),O.months=R("months accessor is deprecated. Use month instead",Lh),O.years=R("years accessor is deprecated. Use year instead",Rh),O.zone=R("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",_T),O.isDSTShifted=R("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",NT);function ZE(c){return Qe(c*1e3)}function JE(){return Qe.apply(null,arguments).parseZone()}function pf(c){return c}var Be=X.prototype;Be.calendar=oe,Be.longDateFormat=ra,Be.invalidDate=jn,Be.ordinal=ba,Be.preparse=pf,Be.postformat=pf,Be.relativeTime=ya,Be.pastFuture=Pt,Be.set=j,Be.eras=SE,Be.erasParse=CE,Be.erasConvertYear=DE,Be.erasAbbrRegex=IE,Be.erasNameRegex=xE,Be.erasNarrowRegex=RE,Be.months=uD,Be.monthsShort=pD,Be.monthsParse=gD,Be.monthsRegex=vD,Be.monthsShortRegex=fD,Be.week=yD,Be.firstDayOfYear=AD,Be.firstDayOfWeek=wD,Be.weekdays=RD,Be.weekdaysMin=MD,Be.weekdaysShort=zD,Be.weekdaysParse=FD,Be.weekdaysRegex=BD,Be.weekdaysShortRegex=UD,Be.weekdaysMinRegex=qD,Be.isPM=$D,Be.meridiem=HD;function hs(c,m,h,y){var w=mn(),D=v().set(y,m);return w[h](D,c)}function mf(c,m,h){if(p(c)&&(m=c,c=void 0),c=c||"",m!=null)return hs(c,m,h,"month");var y,w=[];for(y=0;y<12;y++)w[y]=hs(c,y,h,"month");return w}function Fd(c,m,h,y){typeof c=="boolean"?(p(m)&&(h=m,m=void 0),m=m||""):(m=c,h=m,c=!1,p(m)&&(h=m,m=void 0),m=m||"");var w=mn(),D=c?w._week.dow:0,x,Q=[];if(h!=null)return hs(m,(h+D)%7,y,"day");for(x=0;x<7;x++)Q[x]=hs(m,(x+D)%7,y,"day");return Q}function QE(c,m){return mf(c,m,"months")}function XE(c,m){return mf(c,m,"monthsShort")}function eP(c,m,h){return Fd(c,m,h,"weekdays")}function tP(c,m,h){return Fd(c,m,h,"weekdaysShort")}function aP(c,m,h){return Fd(c,m,h,"weekdaysMin")}Bn("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(c){var m=c%10,h=ue(c%100/10)===1?"th":m===1?"st":m===2?"nd":m===3?"rd":"th";return c+h}}),t.lang=R("moment.lang is deprecated. Use moment.locale instead.",Bn),t.langData=R("moment.langData is deprecated. Use moment.localeData instead.",mn);var gn=Math.abs;function nP(){var c=this._data;return this._milliseconds=gn(this._milliseconds),this._days=gn(this._days),this._months=gn(this._months),c.milliseconds=gn(c.milliseconds),c.seconds=gn(c.seconds),c.minutes=gn(c.minutes),c.hours=gn(c.hours),c.months=gn(c.months),c.years=gn(c.years),this}function gf(c,m,h,y){var w=Ca(m,h);return c._milliseconds+=y*w._milliseconds,c._days+=y*w._days,c._months+=y*w._months,c._bubble()}function iP(c,m){return gf(this,c,m,1)}function rP(c,m){return gf(this,c,m,-1)}function hf(c){return c<0?Math.floor(c):Math.ceil(c)}function oP(){var c=this._milliseconds,m=this._days,h=this._months,y=this._data,w,D,x,Q,me;return c>=0&&m>=0&&h>=0||c<=0&&m<=0&&h<=0||(c+=hf(Ld(h)+m)*864e5,m=0,h=0),y.milliseconds=c%1e3,w=Ve(c/1e3),y.seconds=w%60,D=Ve(w/60),y.minutes=D%60,x=Ve(D/60),y.hours=x%24,m+=Ve(x/24),me=Ve(ff(m)),h+=me,m-=hf(Ld(me)),Q=Ve(h/12),h%=12,y.days=m,y.months=h,y.years=Q,this}function ff(c){return c*4800/146097}function Ld(c){return c*146097/4800}function sP(c){if(!this.isValid())return NaN;var m,h,y=this._milliseconds;if(c=pt(c),c==="month"||c==="quarter"||c==="year")switch(m=this._days+y/864e5,h=this._months+ff(m),c){case"month":return h;case"quarter":return h/3;case"year":return h/12}else switch(m=this._days+Math.round(Ld(this._months)),c){case"week":return m/7+y/6048e5;case"day":return m+y/864e5;case"hour":return m*24+y/36e5;case"minute":return m*1440+y/6e4;case"second":return m*86400+y/1e3;case"millisecond":return Math.floor(m*864e5)+y;default:throw new Error("Unknown unit "+c)}}function hn(c){return function(){return this.as(c)}}var vf=hn("ms"),lP=hn("s"),cP=hn("m"),dP=hn("h"),uP=hn("d"),pP=hn("w"),mP=hn("M"),gP=hn("Q"),hP=hn("y"),fP=vf;function vP(){return Ca(this)}function bP(c){return c=pt(c),this.isValid()?this[c+"s"]():NaN}function bi(c){return function(){return this.isValid()?this._data[c]:NaN}}var yP=bi("milliseconds"),kP=bi("seconds"),wP=bi("minutes"),AP=bi("hours"),SP=bi("days"),CP=bi("months"),DP=bi("years");function TP(){return Ve(this.days()/7)}var fn=Math.round,Ui={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function EP(c,m,h,y,w){return w.relativeTime(m||1,!!h,c,y)}function PP(c,m,h,y){var w=Ca(c).abs(),D=fn(w.as("s")),x=fn(w.as("m")),Q=fn(w.as("h")),me=fn(w.as("d")),Ie=fn(w.as("M")),Wt=fn(w.as("w")),vn=fn(w.as("y")),qn=D<=h.ss&&["s",D]||D<h.s&&["ss",D]||x<=1&&["m"]||x<h.m&&["mm",x]||Q<=1&&["h"]||Q<h.h&&["hh",Q]||me<=1&&["d"]||me<h.d&&["dd",me];return h.w!=null&&(qn=qn||Wt<=1&&["w"]||Wt<h.w&&["ww",Wt]),qn=qn||Ie<=1&&["M"]||Ie<h.M&&["MM",Ie]||vn<=1&&["y"]||["yy",vn],qn[2]=m,qn[3]=+c>0,qn[4]=y,EP.apply(null,qn)}function _P(c){return c===void 0?fn:typeof c=="function"?(fn=c,!0):!1}function xP(c,m){return Ui[c]===void 0?!1:m===void 0?Ui[c]:(Ui[c]=m,c==="s"&&(Ui.ss=m-1),!0)}function IP(c,m){if(!this.isValid())return this.localeData().invalidDate();var h=!1,y=Ui,w,D;return typeof c=="object"&&(m=c,c=!1),typeof c=="boolean"&&(h=c),typeof m=="object"&&(y=Object.assign({},Ui,m),m.s!=null&&m.ss==null&&(y.ss=m.s-1)),w=this.localeData(),D=PP(this,!h,y,w),h&&(D=w.pastFuture(+this,D)),w.postformat(D)}var jd=Math.abs;function qi(c){return(c>0)-(c<0)||+c}function fs(){if(!this.isValid())return this.localeData().invalidDate();var c=jd(this._milliseconds)/1e3,m=jd(this._days),h=jd(this._months),y,w,D,x,Q=this.asSeconds(),me,Ie,Wt,vn;return Q?(y=Ve(c/60),w=Ve(y/60),c%=60,y%=60,D=Ve(h/12),h%=12,x=c?c.toFixed(3).replace(/\.?0+$/,""):"",me=Q<0?"-":"",Ie=qi(this._months)!==qi(Q)?"-":"",Wt=qi(this._days)!==qi(Q)?"-":"",vn=qi(this._milliseconds)!==qi(Q)?"-":"",me+"P"+(D?Ie+D+"Y":"")+(h?Ie+h+"M":"")+(m?Wt+m+"D":"")+(w||y||c?"T":"")+(w?vn+w+"H":"")+(y?vn+y+"M":"")+(c?vn+x+"S":"")):"P0D"}var Fe=cs.prototype;Fe.isValid=CT,Fe.abs=nP,Fe.add=iP,Fe.subtract=rP,Fe.as=sP,Fe.asMilliseconds=vf,Fe.asSeconds=lP,Fe.asMinutes=cP,Fe.asHours=dP,Fe.asDays=uP,Fe.asWeeks=pP,Fe.asMonths=mP,Fe.asQuarters=gP,Fe.asYears=hP,Fe.valueOf=fP,Fe._bubble=oP,Fe.clone=vP,Fe.get=bP,Fe.milliseconds=yP,Fe.seconds=kP,Fe.minutes=wP,Fe.hours=AP,Fe.days=SP,Fe.weeks=TP,Fe.months=CP,Fe.years=DP,Fe.humanize=IP,Fe.toISOString=fs,Fe.toString=fs,Fe.toJSON=fs,Fe.locale=af,Fe.localeData=rf,Fe.toIsoString=R("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",fs),Fe.lang=nf,q("X",0,0,"unix"),q("x",0,0,"valueOf"),V("x",ne),V("X",hi),Se("X",function(c,m,h){h._d=new Date(parseFloat(c)*1e3)}),Se("x",function(c,m,h){h._d=new Date(ue(c))});//! moment.js
return t.version="2.30.1",i(Qe),t.fn=O,t.min=kT,t.max=wT,t.now=AT,t.utc=v,t.unix=ZE,t.months=QE,t.isDate=u,t.locale=Bn,t.invalid=T,t.duration=Ca,t.isMoment=N,t.weekdays=eP,t.parseZone=JE,t.localeData=mn,t.isDuration=ds,t.monthsShort=XE,t.weekdaysMin=aP,t.defineLocale=Dd,t.updateLocale=JD,t.locales=QD,t.weekdaysShort=tP,t.normalizeUnits=pt,t.relativeTimeRounding=_P,t.relativeTimeThreshold=xP,t.calendarFormat=HT,t.prototype=O,t.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},t}))})(ul)),ul.exports}var yee=Hu.exports,Uf;function kee(){return Uf||(Uf=1,(function(e,a){(function(n,t){t(typeof Mr=="function"?Jo():n.moment)})(yee,(function(n){//! moment.js locale configuration
var t=n.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(i,r){return r[1]==="元"?1:parseInt(r[1]||i,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(i){return i==="午後"},meridiem:function(i,r,o){return i<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(i){return i.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(i){return this.week()!==i.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(i,r){switch(r){case"y":return i===1?"元年":i+"年";case"d":case"D":case"DDD":return i+"日";default:return i}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return t}))})()),Hu.exports}kee();var Yu={exports:{}},wee=Yu.exports,qf;function Aee(){return qf||(qf=1,(function(e,a){(function(n,t){t(typeof Mr=="function"?Jo():n.moment)})(wee,(function(n){//! moment.js locale configuration
function t(r,o,s,l){var d={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[r+" Tage",r+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[r+" Monate",r+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[r+" Jahre",r+" Jahren"]};return o?d[s][0]:d[s][1]}var i=n.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return i}))})()),Yu.exports}Aee();var Ku={exports:{}},See=Ku.exports,Vf;function Cee(){return Vf||(Vf=1,(function(e,a){(function(n,t){t(typeof Mr=="function"?Jo():n.moment)})(See,(function(n){//! moment.js locale configuration
var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),i="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],o=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,s=n.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(l,d){return l?/-MMM-/.test(d)?i[l.month()]:t[l.month()]:t},monthsRegex:o,monthsShortRegex:o,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(this.hours()!==1?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(this.hours()!==1?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(this.hours()!==1?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(this.hours()!==1?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(this.hours()!==1?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"});return s}))})()),Ku.exports}var uk=Cee();const Dee=Go(uk),Yge=_c({__proto__:null,default:Dee},[uk]);var Zu={exports:{}},Tee=Zu.exports,$f;function Eee(){return $f||($f=1,(function(e,a){(function(n,t){t(typeof Mr=="function"?Jo():n.moment)})(Tee,(function(n){//! moment.js locale configuration
var t=/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,i=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,r=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,o=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i],s=n.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:t,monthsShortStrictRegex:i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(l,d){switch(d){case"D":return l+(l===1?"er":"");default:case"M":case"Q":case"DDD":case"d":return l+(l===1?"er":"e");case"w":case"W":return l+(l===1?"re":"e")}},week:{dow:1,doy:4}});return s}))})()),Zu.exports}var pk=Eee();const Pee=Go(pk),Kge=_c({__proto__:null,default:Pee},[pk]);var Ju={exports:{}},_ee=Ju.exports,Wf;function xee(){return Wf||(Wf=1,(function(e,a){(function(n,t){t(typeof Mr=="function"?Jo():n.moment)})(_ee,(function(n){//! moment.js locale configuration
var t=n.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return this.day()===0||this.day()===6?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return t}))})()),Ju.exports}xee();function pa(e){if(window.__APP_CONFIG__===void 0)return"";const a=window.__APP_CONFIG__[e];return a===void 0?"":a}function Gf(){return pa("APP_FLAVOR")==="backoffice"}function Zge(){return pa("BACKOFFICE_URL")||"https://backoffice.base44.com"}function Iee(e){const a=typeof window<"u"?window.location.hostname:"";return a==="localhost"||a==="127.0.0.1"?"development":a.endsWith(".velino.org")||a==="velino.org"?"staging":"production"}const mk={SUPERAGENT:"/superagent",CREATE_SUPERAGENT:"/create-superagent",CLONE_SUPERAGENT:"/clone-superagent"};function Ree(){const e=Zm();return new URL(e).host}function zee(){return pa("APPS_BASE_DOMAIN")||"base44.app"}function Zm(){return pa("PLATFORM_URL")||"app.base44.com"}function Mee(e){const a=Ree();return e===a}function Jge(e,a){const n=a==="user_agent"?mk.SUPERAGENT.slice(1):"apps";return`${Zm()}/${n}/${e}`}function Qge(e,a){return a==="user_agent"?`${mk.SUPERAGENT}/${e}`:`/apps/${e}/editor/preview`}function Xge(e){return qc(e.slug)}function ehe(e,a){return qc(`checkpoint--${e.id}--${a.id}`)}function the(e){return qc(`preview--${e.slug}`)}function ahe(e){const a=qc(`share--${e.slug}`);return e.main_page?`${a}/${e.main_page}`:a}function qc(e){const a=zee();return`${Nee(a)}://${e}.${a}`}function Nee(e){return e.includes("localhost")||e.includes("127.0.0.1")?"http":"https"}const Fee=()=>pa("BACKEND_URL")||Zm(),Lee=()=>pa("WS_BACKEND_URL");function Vc(){return"/api"}function nhe(){return Vc()}const ki={applicationId:pa("DATADOG_APPLICATION_ID")||"",clientToken:pa("DATADOG_CLIENT_TOKEN")||"",site:pa("DATADOG_SITE")||"datadoghq.com",service:pa("DATADOG_SERVICE")||"base44-frontend",version:pa("GIT_SHA")||"unknown"};function jee(){return!!(ki.applicationId&&ki.clientToken)}function Oee(){return Iee()}function Bee(e){let a;try{a=new URL(e).pathname}catch{a=e.split("?")[0].split("#")[0]}let n=a;return n=n.replace(/\/apps\/[^/]+/,"/apps/:appId"),n=n.replace(/(\/editor\/preview)\/.*$/,"$1"),n=n.replace(/\/entity-[^/?]+/,"/entity"),n=n.replace(/\/trash-entity-[^/?]+/,"/trash-entity"),n=n.replace(/^\/workspace\/[^/]+/,"/workspace/:workspaceId"),n=n.replace(/\/remix-app\/[^/]+/,"/remix-app/:appId"),n=n.replace(/\/app-templates\/manage-listing\/[^/]+/,"/app-templates/manage-listing/:appId"),n.length>1&&n.endsWith("/")&&(n=n.slice(0,-1)),n}const Vl=[],Uee=50;function gk(){const e=Jm();if(e)for(;Vl.length>0;){const a=Vl.shift();try{a.type==="error"?e.addError(a.error,a.context):e.addAction(a.name,a.context)}catch{}}}function hk(e){Vl.length<Uee&&Vl.push(e);const a=qee();a&&a.then(gk).catch(()=>{})}let $c=!1,tr=null,cr=null;function Jm(){return cr}function qee(){return tr}function ihe(e={}){if($c)return Promise.resolve();if(tr)return tr;if(!jee())return Promise.resolve();const a=Oee();return a==="development"&&pa("DATADOG_ENABLE_DEV")!=="true"?Promise.resolve():(tr=Vee(a,e),tr)}async function Vee(e,a){try{const{datadogRum:n}=await Pc(async()=>{const{datadogRum:t}=await import("./main-Da4duY4Y.js").then(i=>i.af);return{datadogRum:t}},__vite__mapDeps([0,1,2]));cr=n,n.init({applicationId:ki.applicationId,clientToken:ki.clientToken,site:ki.site,service:ki.service,env:e,version:ki.version,sessionSampleRate:100,sessionReplaySampleRate:10,defaultPrivacyLevel:"mask-user-input",trackUserInteractions:!0,trackResources:!0,trackLongTasks:!0,allowedTracingUrls:[{match:t=>t.startsWith(Fee()),propagatorTypes:["datadog"]}],traceSampleRate:100,enableExperimentalFeatures:["feature_operation_vital"],beforeSend:t=>{var i;return t.type==="view"&&(t.view.name=Bee(t.view.url)),!(t.type==="error"&&((i=t.error.message)!=null&&i.includes("Script error.")))}}),n.startSessionReplayRecording(),$c=!0,a.appContext&&n.setGlobalContextProperty("app_context",a.appContext),a.user&&$ee(a.user),gk()}catch{cr=null,tr=null}}function $ee(e){!$c||!cr||(e?cr.setUser({id:e.id,marketing_client_id:e.marketing_client_id}):cr.clearUser())}function fk(){return $c}var Wee=(e=>(e.CREATE_APP_STARTED="create_app_started",e.CREATE_APP_SUCCESS="create_app_success",e.APP_DELETED="app_deleted",e.APP_PUBLISHED="app_published",e.APP_DUPLICATED="app_duplicated",e.EDITOR_PROMPT_SENT="editor_prompt_sent",e.EDITOR_CODE_EDITED="editor_code_edited",e.EDITOR_PREVIEW_REFRESHED="editor_preview_refreshed",e.EDITOR_SIDEBAR_SEARCH="editor_sidebar_search",e.USER_SIGNED_UP="user_signed_up",e.USER_LOGGED_IN="user_logged_in",e.USER_LOGGED_OUT="user_logged_out",e.PLAN_UPGRADE_STARTED="plan_upgrade_started",e.PLAN_UPGRADE_COMPLETED="plan_upgrade_completed",e.WORKSPACE_CREATED="workspace_created",e.WORKSPACE_MEMBER_INVITED="workspace_member_invited",e.BUILDER_COMMAND_PALETTE_OPENED="builder_command_palette_opened",e.BUILDER_COMMAND_PALETTE_EXECUTED="builder_command_palette_executed",e.HOME_COMMAND_PALETTE_OPENED="home_command_palette_opened",e.HOME_COMMAND_PALETTE_EXECUTED="home_command_palette_executed",e))(Wee||{}),Gee=(e=>(e.CREATE_APP="create_app",e.CREATE_AGENT="create_agent",e))(Gee||{}),Wc=(e=>(e.API="api",e.BUSINESS="business",e.ASYNC="async",e.EVENT_HANDLER="event_handler",e.REACT="react",e.CUSTOM="custom",e))(Wc||{});function vk(e,a={}){var n;try{const{source:t=Wc.CUSTOM,context:i={},component:r}=a,o=Hee(e),s={error_source:t,component:r||"unknown",...i};if(!fk()){hk({type:"error",error:o,context:s});return}(n=Jm())==null||n.addError(o,s)}catch{}}function rhe(e,a){var i,r,o,s;const n=e,t={...a};n!=null&&n.config&&(t.url=t.url||n.config.url,t.method=t.method||n.config.method,t.request_id=(r=(i=n.response)==null?void 0:i.data)==null?void 0:r.request_id),n!=null&&n.response&&(t.statusCode=t.statusCode||n.response.status,t.responseData=((o=n.response.data)==null?void 0:o.message)||((s=n.response.data)==null?void 0:s.error)),vk(e,{source:Wc.API,component:"axiosClient",context:t})}function Hee(e){if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);if(typeof e=="object"&&e!==null){const a=e,n=a.message||a.error||JSON.stringify(e),t=new Error(n);return a.stack&&(t.stack=a.stack),t}return new Error(String(e))}function bk(e,a){var n;if(!fk()){hk({type:"action",name:e,context:a});return}try{(n=Jm())==null||n.addAction(e,a)}catch{}}const Qm={en:{label:"English",nativeLabel:"English",locale:"en-US"},ja:{label:"Japanese",nativeLabel:"日本語",locale:"ja-JP"},de:{label:"German",nativeLabel:"Deutsch",locale:"de-DE"},es:{label:"Spanish",nativeLabel:"Español",locale:"es-ES"},fr:{label:"French",nativeLabel:"Français",locale:"fr-FR"},pt:{label:"Portuguese",nativeLabel:"Português",locale:"pt-BR"}};function Yee(e){const a=(e??"").split("-")[0];return a in Qm?a:"en"}const yk=["homepage","editor","navigation","dashboard-overview","dashboard-users","dashboard-data","dashboard-domains","dashboard-security","dashboard-automations","dashboard-connections","dashboard-agents","dashboard-virality","dashboard-settings","dashboard-logs","auth","account-settings","app-access","builder-profile","manage-apps","referrals","launchpad","plan-picker","plan-billing","support","notifications","spotlight","integrations-catalog","marketplace-terms"],Kee=Object.assign({"./locales/de/account-settings.json":a_,"./locales/de/app-access.json":r_,"./locales/de/auth.json":h_,"./locales/de/builder-profile.json":P_,"./locales/de/dashboard-agents.json":I_,"./locales/de/dashboard-automations.json":z_,"./locales/de/dashboard-connections.json":O_,"./locales/de/dashboard-data.json":V_,"./locales/de/dashboard-domains.json":W_,"./locales/de/dashboard-logs.json":K_,"./locales/de/dashboard-overview.json":J_,"./locales/de/dashboard-security.json":ex,"./locales/de/dashboard-settings.json":ox,"./locales/de/dashboard-users.json":lx,"./locales/de/dashboard-virality.json":wx,"./locales/de/editor.json":aI,"./locales/de/homepage.json":EI,"./locales/de/integrations-catalog.json":MI,"./locales/de/launchpad.json":ZI,"./locales/de/manage-apps.json":iR,"./locales/de/marketplace-terms.json":oR,"./locales/de/navigation.json":kR,"./locales/de/notifications.json":CR,"./locales/de/plan-billing.json":FR,"./locales/de/plan-picker.json":oz,"./locales/de/referrals.json":bz,"./locales/de/spotlight.json":xz,"./locales/de/support.json":eM,"./locales/en/account-settings.json":sM,"./locales/en/app-access.json":dM,"./locales/en/auth.json":kM,"./locales/en/builder-profile.json":zM,"./locales/en/dashboard-agents.json":FM,"./locales/en/dashboard-automations.json":jM,"./locales/en/dashboard-connections.json":$M,"./locales/en/dashboard-data.json":YM,"./locales/en/dashboard-domains.json":ZM,"./locales/en/dashboard-logs.json":eN,"./locales/en/dashboard-overview.json":aN,"./locales/en/dashboard-security.json":rN,"./locales/en/dashboard-settings.json":uN,"./locales/en/dashboard-users.json":mN,"./locales/en/dashboard-virality.json":TN,"./locales/en/editor.json":sF,"./locales/en/homepage.json":RF,"./locales/en/integrations-catalog.json":OF,"./locales/en/launchpad.json":tL,"./locales/en/manage-apps.json":cL,"./locales/en/marketplace-terms.json":pL,"./locales/en/navigation.json":TL,"./locales/en/notifications.json":xL,"./locales/en/plan-billing.json":qL,"./locales/en/plan-picker.json":p0,"./locales/en/referrals.json":C0,"./locales/en/spotlight.json":F0,"./locales/en/support.json":oj,"./locales/es/account-settings.json":mj,"./locales/es/app-access.json":fj,"./locales/es/auth.json":Tj,"./locales/es/builder-profile.json":Oj,"./locales/es/dashboard-agents.json":qj,"./locales/es/dashboard-automations.json":$j,"./locales/es/dashboard-connections.json":Zj,"./locales/es/dashboard-data.json":eO,"./locales/es/dashboard-domains.json":aO,"./locales/es/dashboard-logs.json":oO,"./locales/es/dashboard-overview.json":lO,"./locales/es/dashboard-security.json":uO,"./locales/es/dashboard-settings.json":vO,"./locales/es/dashboard-users.json":yO,"./locales/es/dashboard-virality.json":RO,"./locales/es/editor.json":m1,"./locales/es/homepage.json":j1,"./locales/es/integrations-catalog.json":W1,"./locales/es/launchpad.json":sB,"./locales/es/manage-apps.json":hB,"./locales/es/marketplace-terms.json":vB,"./locales/es/navigation.json":IB,"./locales/es/notifications.json":NB,"./locales/es/plan-billing.json":HB,"./locales/es/plan-picker.json":vU,"./locales/es/referrals.json":_U,"./locales/es/spotlight.json":UU,"./locales/es/support.json":uq,"./locales/fr/account-settings.json":bq,"./locales/fr/app-access.json":wq,"./locales/fr/auth.json":Iq,"./locales/fr/builder-profile.json":$q,"./locales/fr/dashboard-agents.json":Hq,"./locales/fr/dashboard-automations.json":Kq,"./locales/fr/dashboard-connections.json":t4,"./locales/fr/dashboard-data.json":r4,"./locales/fr/dashboard-domains.json":s4,"./locales/fr/dashboard-logs.json":u4,"./locales/fr/dashboard-overview.json":m4,"./locales/fr/dashboard-security.json":f4,"./locales/fr/dashboard-settings.json":A4,"./locales/fr/dashboard-users.json":C4,"./locales/fr/dashboard-virality.json":L4,"./locales/fr/editor.json":bV,"./locales/fr/homepage.json":VV,"./locales/fr/integrations-catalog.json":ZV,"./locales/fr/launchpad.json":p$,"./locales/fr/manage-apps.json":k$,"./locales/fr/marketplace-terms.json":A$,"./locales/fr/navigation.json":F$,"./locales/fr/notifications.json":B$,"./locales/fr/plan-billing.json":Q$,"./locales/fr/plan-picker.json":AW,"./locales/fr/referrals.json":MW,"./locales/fr/spotlight.json":GW,"./locales/fr/support.json":fG,"./locales/ja/account-settings.json":SG,"./locales/ja/app-access.json":TG,"./locales/ja/auth.json":FG,"./locales/ja/builder-profile.json":KG,"./locales/ja/dashboard-agents.json":QG,"./locales/ja/dashboard-automations.json":e3,"./locales/ja/dashboard-connections.json":o3,"./locales/ja/dashboard-data.json":d3,"./locales/ja/dashboard-domains.json":p3,"./locales/ja/dashboard-logs.json":f3,"./locales/ja/dashboard-overview.json":b3,"./locales/ja/dashboard-security.json":w3,"./locales/ja/dashboard-settings.json":E3,"./locales/ja/dashboard-users.json":_3,"./locales/ja/dashboard-virality.json":q3,"./locales/ja/editor.json":SH,"./locales/ja/homepage.json":YH,"./locales/ja/integrations-catalog.json":tY,"./locales/ja/launchpad.json":vY,"./locales/ja/manage-apps.json":DY,"./locales/ja/marketplace-terms.json":EY,"./locales/ja/navigation.json":UY,"./locales/ja/notifications.json":WY,"./locales/ja/plan-billing.json":n2,"./locales/ja/plan-picker.json":E2,"./locales/ja/referrals.json":O2,"./locales/ja/spotlight.json":J2,"./locales/ja/support.json":wK,"./locales/pt/account-settings.json":PK,"./locales/pt/app-access.json":IK,"./locales/pt/auth.json":UK,"./locales/pt/builder-profile.json":e5,"./locales/pt/dashboard-agents.json":n5,"./locales/pt/dashboard-automations.json":r5,"./locales/pt/dashboard-connections.json":u5,"./locales/pt/dashboard-data.json":h5,"./locales/pt/dashboard-domains.json":v5,"./locales/pt/dashboard-logs.json":w5,"./locales/pt/dashboard-overview.json":S5,"./locales/pt/dashboard-security.json":T5,"./locales/pt/dashboard-settings.json":R5,"./locales/pt/dashboard-users.json":M5,"./locales/pt/dashboard-virality.json":H5,"./locales/pt/editor.json":P6,"./locales/pt/homepage.json":X6,"./locales/pt/integrations-catalog.json":oZ,"./locales/pt/launchpad.json":AZ,"./locales/pt/manage-apps.json":xZ,"./locales/pt/marketplace-terms.json":RZ,"./locales/pt/navigation.json":GZ,"./locales/pt/notifications.json":ZZ,"./locales/pt/plan-billing.json":l8,"./locales/pt/plan-picker.json":R8,"./locales/pt/referrals.json":$8,"./locales/pt/spotlight.json":a9,"./locales/pt/support.json":T9}),Zee=Object.keys(Qm).reduce((e,a)=>{e[a]={};for(const n of yk){const t=`./locales/${a}/${n}.json`;e[a][n]=Kee[t]??{}}return e},{}),Jee=!1,Hf="base44.com",Qee=Object.keys(Qm),Xee={name:"referrer",lookup(){try{const e=document.referrer;if(!e)return;const a=new URL(e);if(a.hostname!==Hf&&!a.hostname.endsWith(`.${Hf}`))return;const n=a.pathname.split("/")[1];if(n&&Qee.includes(n))return n}catch{}}},kk=new yy;kk.addDetector(Xee);zt.use(kk).use(aJ).init({resources:Zee,fallbackLng:"en",ns:[...yk],interpolation:{escapeValue:!1},load:"languageOnly",detection:{order:["querystring","localStorage","referrer","navigator"],lookupQuerystring:"lng",lookupLocalStorage:"i18nextLng",caches:["localStorage"]},debug:Jee,saveMissing:!0,missingKeyHandler:(e,a,n)=>{bk("i18n_missing_key",{namespace:a,key:n,language:zt.language})}});const wk=e=>{const a=Yee(e);K.locale(a==="en"?"en":a)};wk(zt.language);zt.on("languageChanged",wk);let ete={data:""},tte=e=>{if(typeof window=="object"){let a=(e?e.querySelector("#_goober"):window._goober)||Object.assign(document.createElement("style"),{innerHTML:" ",id:"_goober"});return a.nonce=window.__nonce__,a.parentNode||(e||document.head).appendChild(a),a.firstChild}return e||ete},ate=/(?:([\u0080-\uFFFF\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\s*)/g,nte=/\/\*[^]*?\*\/|  +/g,Yf=/\n+/g,Wn=(e,a)=>{let n="",t="",i="";for(let r in e){let o=e[r];r[0]=="@"?r[1]=="i"?n=r+" "+o+";":t+=r[1]=="f"?Wn(o,r):r+"{"+Wn(o,r[1]=="k"?"":a)+"}":typeof o=="object"?t+=Wn(o,a?a.replace(/([^,])+/g,s=>r.replace(/([^,]*:\S+\([^)]*\))|([^,])+/g,l=>/&/.test(l)?l.replace(/&/g,s):s?s+" "+l:l)):r):o!=null&&(r=/^--/.test(r)?r:r.replace(/[A-Z]/g,"-$&").toLowerCase(),i+=Wn.p?Wn.p(r,o):r+":"+o+";")}return n+(a&&i?a+"{"+i+"}":i)+t},yn={},Ak=e=>{if(typeof e=="object"){let a="";for(let n in e)a+=n+Ak(e[n]);return a}return e},ite=(e,a,n,t,i)=>{let r=Ak(e),o=yn[r]||(yn[r]=(l=>{let d=0,p=11;for(;d<l.length;)p=101*p+l.charCodeAt(d++)>>>0;return"go"+p})(r));if(!yn[o]){let l=r!==e?e:(d=>{let p,u,g=[{}];for(;p=ate.exec(d.replace(nte,""));)p[4]?g.shift():p[3]?(u=p[3].replace(Yf," ").trim(),g.unshift(g[0][u]=g[0][u]||{})):g[0][p[1]]=p[2].replace(Yf," ").trim();return g[0]})(e);yn[o]=Wn(i?{["@keyframes "+o]:l}:l,n?"":"."+o)}let s=n&&yn.g?yn.g:null;return n&&(yn.g=yn[o]),((l,d,p,u)=>{u?d.data=d.data.replace(u,l):d.data.indexOf(l)===-1&&(d.data=p?l+d.data:d.data+l)})(yn[o],a,t,s),o},rte=(e,a,n)=>e.reduce((t,i,r)=>{let o=a[r];if(o&&o.call){let s=o(n),l=s&&s.props&&s.props.className||/^go/.test(s)&&s;o=l?"."+l:s&&typeof s=="object"?s.props?"":Wn(s,""):s===!1?"":s}return t+i+(o??"")},"");function Gc(e){let a=this||{},n=e.call?e(a.p):e;return ite(n.unshift?n.raw?rte(n,[].slice.call(arguments,1),a.p):n.reduce((t,i)=>Object.assign(t,i&&i.call?i(a.p):i),{}):n,tte(a.target),a.g,a.o,a.k)}let Sk,Qu,Xu;Gc.bind({g:1});let _n=Gc.bind({k:1});function ote(e,a,n,t){Wn.p=a,Sk=e,Qu=n,Xu=t}function ai(e,a){let n=this||{};return function(){let t=arguments;function i(r,o){let s=Object.assign({},r),l=s.className||i.className;n.p=Object.assign({theme:Qu&&Qu()},s),n.o=/ *go\d+/.test(l),s.className=Gc.apply(n,t)+(l?" "+l:"");let d=e;return e[0]&&(d=s.as||e,delete s.as),Xu&&d[0]&&Xu(s),Sk(d,s)}return i}}var ste=e=>typeof e=="function",wo=(e,a)=>ste(e)?e(a):e,lte=(()=>{let e=0;return()=>(++e).toString()})(),Ck=(()=>{let e;return()=>{if(e===void 0&&typeof window<"u"){let a=matchMedia("(prefers-reduced-motion: reduce)");e=!a||a.matches}return e}})(),cte=20,Xm="default",Dk=(e,a)=>{let{toastLimit:n}=e.settings;switch(a.type){case 0:return{...e,toasts:[a.toast,...e.toasts].slice(0,n)};case 1:return{...e,toasts:e.toasts.map(o=>o.id===a.toast.id?{...o,...a.toast}:o)};case 2:let{toast:t}=a;return Dk(e,{type:e.toasts.find(o=>o.id===t.id)?1:0,toast:t});case 3:let{toastId:i}=a;return{...e,toasts:e.toasts.map(o=>o.id===i||i===void 0?{...o,dismissed:!0,visible:!1}:o)};case 4:return a.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(o=>o.id!==a.toastId)};case 5:return{...e,pausedAt:a.time};case 6:let r=a.time-(e.pausedAt||0);return{...e,pausedAt:void 0,toasts:e.toasts.map(o=>({...o,pauseDuration:o.pauseDuration+r}))}}},pl=[],Tk={toasts:[],pausedAt:void 0,settings:{toastLimit:cte}},Ga={},Ek=(e,a=Xm)=>{Ga[a]=Dk(Ga[a]||Tk,e),pl.forEach(([n,t])=>{n===a&&t(Ga[a])})},Pk=e=>Object.keys(Ga).forEach(a=>Ek(e,a)),dte=e=>Object.keys(Ga).find(a=>Ga[a].toasts.some(n=>n.id===e)),Hc=(e=Xm)=>a=>{Ek(a,e)},ute={blank:4e3,error:4e3,success:2e3,loading:1/0,custom:4e3},_k=(e={},a=Xm)=>{let[n,t]=M.useState(Ga[a]||Tk),i=M.useRef(Ga[a]);M.useEffect(()=>(i.current!==Ga[a]&&t(Ga[a]),pl.push([a,t]),()=>{let o=pl.findIndex(([s])=>s===a);o>-1&&pl.splice(o,1)}),[a]);let r=n.toasts.map(o=>{var s,l,d;return{...e,...e[o.type],...o,removeDelay:o.removeDelay||((s=e[o.type])==null?void 0:s.removeDelay)||(e==null?void 0:e.removeDelay),duration:o.duration||((l=e[o.type])==null?void 0:l.duration)||(e==null?void 0:e.duration)||ute[o.type],style:{...e.style,...(d=e[o.type])==null?void 0:d.style,...o.style}}});return{...n,toasts:r}},pte=(e,a="blank",n)=>({createdAt:Date.now(),visible:!0,dismissed:!1,type:a,ariaProps:{role:"status","aria-live":"polite"},message:e,pauseDuration:0,...n,id:(n==null?void 0:n.id)||lte()}),Qo=e=>(a,n)=>{let t=pte(a,e,n);return Hc(t.toasterId||dte(t.id))({type:2,toast:t}),t.id},Dt=(e,a)=>Qo("blank")(e,a);Dt.error=Qo("error");Dt.success=Qo("success");Dt.loading=Qo("loading");Dt.custom=Qo("custom");Dt.dismiss=(e,a)=>{let n={type:3,toastId:e};a?Hc(a)(n):Pk(n)};Dt.dismissAll=e=>Dt.dismiss(void 0,e);Dt.remove=(e,a)=>{let n={type:4,toastId:e};a?Hc(a)(n):Pk(n)};Dt.removeAll=e=>Dt.remove(void 0,e);Dt.promise=(e,a,n)=>{let t=Dt.loading(a.loading,{...n,...n==null?void 0:n.loading});return typeof e=="function"&&(e=e()),e.then(i=>{let r=a.success?wo(a.success,i):void 0;return r?Dt.success(r,{id:t,...n,...n==null?void 0:n.success}):Dt.dismiss(t),i}).catch(i=>{let r=a.error?wo(a.error,i):void 0;r?Dt.error(r,{id:t,...n,...n==null?void 0:n.error}):Dt.dismiss(t)}),e};var mte=1e3,xk=(e,a="default")=>{let{toasts:n,pausedAt:t}=_k(e,a),i=M.useRef(new Map).current,r=M.useCallback((u,g=mte)=>{if(i.has(u))return;let b=setTimeout(()=>{i.delete(u),o({type:4,toastId:u})},g);i.set(u,b)},[]);M.useEffect(()=>{if(t)return;let u=Date.now(),g=n.map(b=>{if(b.duration===1/0)return;let v=(b.duration||0)+b.pauseDuration-(u-b.createdAt);if(v<0){b.visible&&Dt.dismiss(b.id);return}return setTimeout(()=>Dt.dismiss(b.id,a),v)});return()=>{g.forEach(b=>b&&clearTimeout(b))}},[n,t,a]);let o=M.useCallback(Hc(a),[a]),s=M.useCallback(()=>{o({type:5,time:Date.now()})},[o]),l=M.useCallback((u,g)=>{o({type:1,toast:{id:u,height:g}})},[o]),d=M.useCallback(()=>{t&&o({type:6,time:Date.now()})},[t,o]),p=M.useCallback((u,g)=>{let{reverseOrder:b=!1,gutter:v=8,defaultPosition:A}=g||{},f=n.filter(T=>(T.position||A)===(u.position||A)&&T.height),S=f.findIndex(T=>T.id===u.id),C=f.filter((T,E)=>E<S&&T.visible).length;return f.filter(T=>T.visible).slice(...b?[C+1]:[0,C]).reduce((T,E)=>T+(E.height||0)+v,0)},[n]);return M.useEffect(()=>{n.forEach(u=>{if(u.dismissed)r(u.id,u.removeDelay);else{let g=i.get(u.id);g&&(clearTimeout(g),i.delete(u.id))}})},[n,r]),{toasts:n,handlers:{updateHeight:l,startPause:s,endPause:d,calculateOffset:p}}},gte=_n`
from {
  transform: scale(0) rotate(45deg);
	opacity: 0;
}
to {
 transform: scale(1) rotate(45deg);
  opacity: 1;
}`,hte=_n`
from {
  transform: scale(0);
  opacity: 0;
}
to {
  transform: scale(1);
  opacity: 1;
}`,fte=_n`
from {
  transform: scale(0) rotate(90deg);
	opacity: 0;
}
to {
  transform: scale(1) rotate(90deg);
	opacity: 1;
}`,Ik=ai("div")`
  width: 20px;
  opacity: 0;
  height: 20px;
  border-radius: 10px;
  background: ${e=>e.primary||"#ff4b4b"};
  position: relative;
  transform: rotate(45deg);

  animation: ${gte} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
    forwards;
  animation-delay: 100ms;

  &:after,
  &:before {
    content: '';
    animation: ${hte} 0.15s ease-out forwards;
    animation-delay: 150ms;
    position: absolute;
    border-radius: 3px;
    opacity: 0;
    background: ${e=>e.secondary||"#fff"};
    bottom: 9px;
    left: 4px;
    height: 2px;
    width: 12px;
  }

  &:before {
    animation: ${fte} 0.15s ease-out forwards;
    animation-delay: 180ms;
    transform: rotate(90deg);
  }
`,vte=_n`
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
`,Rk=ai("div")`
  width: 12px;
  height: 12px;
  box-sizing: border-box;
  border: 2px solid;
  border-radius: 100%;
  border-color: ${e=>e.secondary||"#e0e0e0"};
  border-right-color: ${e=>e.primary||"#616161"};
  animation: ${vte} 1s linear infinite;
`,bte=_n`
from {
  transform: scale(0) rotate(45deg);
	opacity: 0;
}
to {
  transform: scale(1) rotate(45deg);
	opacity: 1;
}`,yte=_n`
0% {
	height: 0;
	width: 0;
	opacity: 0;
}
40% {
  height: 0;
	width: 6px;
	opacity: 1;
}
100% {
  opacity: 1;
  height: 10px;
}`,zk=ai("div")`
  width: 20px;
  opacity: 0;
  height: 20px;
  border-radius: 10px;
  background: ${e=>e.primary||"#61d345"};
  position: relative;
  transform: rotate(45deg);

  animation: ${bte} 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275)
    forwards;
  animation-delay: 100ms;
  &:after {
    content: '';
    box-sizing: border-box;
    animation: ${yte} 0.2s ease-out forwards;
    opacity: 0;
    animation-delay: 200ms;
    position: absolute;
    border-right: 2px solid;
    border-bottom: 2px solid;
    border-color: ${e=>e.secondary||"#fff"};
    bottom: 6px;
    left: 6px;
    height: 10px;
    width: 6px;
  }
`,kte=ai("div")`
  position: absolute;
`,wte=ai("div")`
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  min-width: 20px;
  min-height: 20px;
`,Ate=_n`
from {
  transform: scale(0.6);
  opacity: 0.4;
}
to {
  transform: scale(1);
  opacity: 1;
}`,Ste=ai("div")`
  position: relative;
  transform: scale(0.6);
  opacity: 0.4;
  min-width: 20px;
  animation: ${Ate} 0.3s 0.12s cubic-bezier(0.175, 0.885, 0.32, 1.275)
    forwards;
`,Mk=({toast:e})=>{let{icon:a,type:n,iconTheme:t}=e;return a!==void 0?typeof a=="string"?M.createElement(Ste,null,a):a:n==="blank"?null:M.createElement(wte,null,M.createElement(Rk,{...t}),n!=="loading"&&M.createElement(kte,null,n==="error"?M.createElement(Ik,{...t}):M.createElement(zk,{...t})))},Cte=e=>`
0% {transform: translate3d(0,${e*-200}%,0) scale(.6); opacity:.5;}
100% {transform: translate3d(0,0,0) scale(1); opacity:1;}
`,Dte=e=>`
0% {transform: translate3d(0,0,-1px) scale(1); opacity:1;}
100% {transform: translate3d(0,${e*-150}%,-1px) scale(.6); opacity:0;}
`,Tte="0%{opacity:0;} 100%{opacity:1;}",Ete="0%{opacity:1;} 100%{opacity:0;}",Pte=ai("div")`
  display: flex;
  align-items: center;
  background: #fff;
  color: #363636;
  line-height: 1.3;
  will-change: transform;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05);
  max-width: 350px;
  pointer-events: auto;
  padding: 8px 10px;
  border-radius: 8px;
`,_te=ai("div")`
  display: flex;
  justify-content: center;
  margin: 4px 10px;
  color: inherit;
  flex: 1 1 auto;
  white-space: pre-line;
`,xte=(e,a)=>{let n=e.includes("top")?1:-1,[t,i]=Ck()?[Tte,Ete]:[Cte(n),Dte(n)];return{animation:a?`${_n(t)} 0.35s cubic-bezier(.21,1.02,.73,1) forwards`:`${_n(i)} 0.4s forwards cubic-bezier(.06,.71,.55,1)`}},Nk=M.memo(({toast:e,position:a,style:n,children:t})=>{let i=e.height?xte(e.position||a||"top-center",e.visible):{opacity:0},r=M.createElement(Mk,{toast:e}),o=M.createElement(_te,{...e.ariaProps},wo(e.message,e));return M.createElement(Pte,{className:e.className,style:{...i,...n,...e.style}},typeof t=="function"?t({icon:r,message:o}):M.createElement(M.Fragment,null,r,o))});ote(M.createElement);var Ite=({id:e,className:a,style:n,onHeightUpdate:t,children:i})=>{let r=M.useCallback(o=>{if(o){let s=()=>{let l=o.getBoundingClientRect().height;t(e,l)};s(),new MutationObserver(s).observe(o,{subtree:!0,childList:!0,characterData:!0})}},[e,t]);return M.createElement("div",{ref:r,className:a,style:n},i)},Rte=(e,a)=>{let n=e.includes("top"),t=n?{top:0}:{bottom:0},i=e.includes("center")?{justifyContent:"center"}:e.includes("right")?{justifyContent:"flex-end"}:{};return{left:0,right:0,display:"flex",position:"absolute",transition:Ck()?void 0:"all 230ms cubic-bezier(.21,1.02,.73,1)",transform:`translateY(${a*(n?1:-1)}px)`,...t,...i}},zte=Gc`
  z-index: 9999;
  > * {
    pointer-events: auto;
  }
`,ws=16,Fk=({reverseOrder:e,position:a="top-center",toastOptions:n,gutter:t,children:i,toasterId:r,containerStyle:o,containerClassName:s})=>{let{toasts:l,handlers:d}=xk(n,r);return M.createElement("div",{"data-rht-toaster":r||"",style:{position:"fixed",zIndex:9999,top:ws,left:ws,right:ws,bottom:ws,pointerEvents:"none",...o},className:s,onMouseEnter:d.startPause,onMouseLeave:d.endPause},l.map(p=>{let u=p.position||a,g=d.calculateOffset(p,{reverseOrder:e,gutter:t,defaultPosition:a}),b=Rte(u,g);return M.createElement(Ite,{id:p.id,key:p.id,onHeightUpdate:d.updateHeight,className:p.visible?zte:"",style:b},p.type==="custom"?wo(p.message,p):i?i(p):M.createElement(Nk,{toast:p,position:u}))}))},Mte=Dt;const ohe=Object.freeze(Object.defineProperty({__proto__:null,CheckmarkIcon:zk,ErrorIcon:Ik,LoaderIcon:Rk,ToastBar:Nk,ToastIcon:Mk,Toaster:Fk,default:Mte,resolveValue:wo,toast:Dt,useToaster:xk,useToasterStore:_k},Symbol.toStringTag,{value:"Module"})),Nte=1,Fte=1e6;let Wd=0;function Lte(){return Wd=(Wd+1)%Number.MAX_SAFE_INTEGER,Wd.toString()}const Gd=new Map,Kf=e=>{if(Gd.has(e))return;const a=setTimeout(()=>{Gd.delete(e),so({type:"REMOVE_TOAST",toastId:e})},Fte);Gd.set(e,a)},Lk=(e,a)=>{switch(a.type){case"ADD_TOAST":return{...e,toasts:[a.toast,...e.toasts].slice(0,Nte)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(n=>n.id===a.toast.id?{...n,...a.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=a;return n?Kf(n):e.toasts.forEach(t=>{Kf(t.id)}),{...e,toasts:e.toasts.map(t=>t.id===n||n===void 0?{...t,open:!1}:t)}}case"REMOVE_TOAST":return a.toastId===void 0?{...e,toasts:[]}:{...e,toasts:e.toasts.filter(n=>n.id!==a.toastId)}}},ml=[];let gl={toasts:[]};function so(e){gl=Lk(gl,e),ml.forEach(a=>{a(gl)})}function jk({...e}){const a=Lte(),n=i=>so({type:"UPDATE_TOAST",toast:{...i,id:a}}),t=()=>so({type:"DISMISS_TOAST",toastId:a});return so({type:"ADD_TOAST",toast:{...e,id:a,open:!0,onOpenChange:i=>{i||t()}}}),{id:a,dismiss:t,update:n}}function Ok(){const[e,a]=M.useState(gl);return M.useEffect(()=>(ml.push(a),()=>{const n=ml.indexOf(a);n>-1&&ml.splice(n,1)}),[e]),{...e,toast:jk,dismiss:n=>so({type:"DISMISS_TOAST",toastId:n})}}const she=Object.freeze(Object.defineProperty({__proto__:null,reducer:Lk,toast:jk,useToast:Ok},Symbol.toStringTag,{value:"Module"}));var Bk="ToastProvider",[eg,jte,Ote]=FP("Toast"),[Uk,Bte]=OP("Toast",[Ote]),[Ute,Yc]=Uk(Bk),tg=e=>{const{__scopeToast:a,label:n="Notification",duration:t=5e3,swipeDirection:i="right",swipeThreshold:r=50,children:o}=e,[s,l]=M.useState(null),[d,p]=M.useState(0),u=M.useRef(!1),g=M.useRef(!1);return n.trim(),J.jsx(eg.Provider,{scope:a,children:J.jsx(Ute,{scope:a,label:n,duration:t,swipeDirection:i,swipeThreshold:r,toastCount:d,viewport:s,onViewportChange:l,onToastAdd:M.useCallback(()=>p(b=>b+1),[]),onToastRemove:M.useCallback(()=>p(b=>b-1),[]),isFocusedToastEscapeKeyDownRef:u,isClosePausedRef:g,children:o})})};tg.displayName=Bk;var qk="ToastViewport",qte=["F8"],ep="toast.viewportPause",tp="toast.viewportResume",ag=M.forwardRef((e,a)=>{const{__scopeToast:n,hotkey:t=qte,label:i="Notifications ({hotkey})",...r}=e,o=Yc(qk,n),s=jte(n),l=M.useRef(null),d=M.useRef(null),p=M.useRef(null),u=M.useRef(null),g=sy(a,u,o.onViewportChange),b=t.join("+").replace(/Key/g,"").replace(/Digit/g,""),v=o.toastCount>0;M.useEffect(()=>{const f=S=>{var T;t.length!==0&&t.every(E=>S[E]||S.code===E)&&((T=u.current)==null||T.focus())};return document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[t]),M.useEffect(()=>{const f=l.current,S=u.current;if(v&&f&&S){const C=()=>{if(!o.isClosePausedRef.current){const I=new CustomEvent(ep);S.dispatchEvent(I),o.isClosePausedRef.current=!0}},T=()=>{if(o.isClosePausedRef.current){const I=new CustomEvent(tp);S.dispatchEvent(I),o.isClosePausedRef.current=!1}},E=I=>{!f.contains(I.relatedTarget)&&T()},P=()=>{f.contains(document.activeElement)||T()};return f.addEventListener("focusin",C),f.addEventListener("focusout",E),f.addEventListener("pointermove",C),f.addEventListener("pointerleave",P),window.addEventListener("blur",C),window.addEventListener("focus",T),()=>{f.removeEventListener("focusin",C),f.removeEventListener("focusout",E),f.removeEventListener("pointermove",C),f.removeEventListener("pointerleave",P),window.removeEventListener("blur",C),window.removeEventListener("focus",T)}}},[v,o.isClosePausedRef]);const A=M.useCallback(({tabbingDirection:f})=>{const C=s().map(T=>{const E=T.ref.current,P=[E,...aae(E)];return f==="forwards"?P:P.reverse()});return(f==="forwards"?C.reverse():C).flat()},[s]);return M.useEffect(()=>{const f=u.current;if(f){const S=C=>{var P,I,L;const T=C.altKey||C.ctrlKey||C.metaKey;if(C.key==="Tab"&&!T){const N=document.activeElement,Z=C.shiftKey;if(C.target===f&&Z){(P=d.current)==null||P.focus();return}const $=A({tabbingDirection:Z?"backwards":"forwards"}),F=$.findIndex(j=>j===N);Hd($.slice(F+1))?C.preventDefault():Z?(I=d.current)==null||I.focus():(L=p.current)==null||L.focus()}};return f.addEventListener("keydown",S),()=>f.removeEventListener("keydown",S)}},[s,A]),J.jsxs(zP,{ref:l,role:"region","aria-label":i.replace("{hotkey}",b),tabIndex:-1,style:{pointerEvents:v?void 0:"none"},children:[v&&J.jsx(ap,{ref:d,onFocusFromOutsideViewport:()=>{const f=A({tabbingDirection:"forwards"});Hd(f)}}),J.jsx(eg.Slot,{scope:n,children:J.jsx(xr.ol,{tabIndex:-1,...r,ref:g})}),v&&J.jsx(ap,{ref:p,onFocusFromOutsideViewport:()=>{const f=A({tabbingDirection:"backwards"});Hd(f)}})]})});ag.displayName=qk;var Vk="ToastFocusProxy",ap=M.forwardRef((e,a)=>{const{__scopeToast:n,onFocusFromOutsideViewport:t,...i}=e,r=Yc(Vk,n);return J.jsx(ly,{tabIndex:0,...i,ref:a,style:{position:"fixed"},onFocus:o=>{var d;const s=o.relatedTarget;!((d=r.viewport)!=null&&d.contains(s))&&t()}})});ap.displayName=Vk;var Xo="Toast",Vte="toast.swipeStart",$te="toast.swipeMove",Wte="toast.swipeCancel",Gte="toast.swipeEnd",ng=M.forwardRef((e,a)=>{const{forceMount:n,open:t,defaultOpen:i,onOpenChange:r,...o}=e,[s,l]=MP({prop:t,defaultProp:i??!0,onChange:r,caller:Xo});return J.jsx(NP,{present:n||s,children:J.jsx(Kte,{open:s,...o,ref:a,onClose:()=>l(!1),onPause:zl(e.onPause),onResume:zl(e.onResume),onSwipeStart:qa(e.onSwipeStart,d=>{d.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:qa(e.onSwipeMove,d=>{const{x:p,y:u}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","move"),d.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${p}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${u}px`)}),onSwipeCancel:qa(e.onSwipeCancel,d=>{d.currentTarget.setAttribute("data-swipe","cancel"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:qa(e.onSwipeEnd,d=>{const{x:p,y:u}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","end"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${p}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${u}px`),l(!1)})})})});ng.displayName=Xo;var[Hte,Yte]=Uk(Xo,{onClose(){}}),Kte=M.forwardRef((e,a)=>{const{__scopeToast:n,type:t="foreground",duration:i,open:r,onClose:o,onEscapeKeyDown:s,onPause:l,onResume:d,onSwipeStart:p,onSwipeMove:u,onSwipeCancel:g,onSwipeEnd:b,...v}=e,A=Yc(Xo,n),[f,S]=M.useState(null),C=sy(a,j=>S(j)),T=M.useRef(null),E=M.useRef(null),P=i||A.duration,I=M.useRef(0),L=M.useRef(P),N=M.useRef(0),{onToastAdd:Z,onToastRemove:R}=A,Y=zl(()=>{var H;(f==null?void 0:f.contains(document.activeElement))&&((H=A.viewport)==null||H.focus()),o()}),$=M.useCallback(j=>{!j||j===1/0||(window.clearTimeout(N.current),I.current=new Date().getTime(),N.current=window.setTimeout(Y,j))},[Y]);M.useEffect(()=>{const j=A.viewport;if(j){const H=()=>{$(L.current),d==null||d()},X=()=>{const ie=new Date().getTime()-I.current;L.current=L.current-ie,window.clearTimeout(N.current),l==null||l()};return j.addEventListener(ep,X),j.addEventListener(tp,H),()=>{j.removeEventListener(ep,X),j.removeEventListener(tp,H)}}},[A.viewport,P,l,d,$]),M.useEffect(()=>{r&&!A.isClosePausedRef.current&&$(P)},[r,P,A.isClosePausedRef,$]),M.useEffect(()=>(Z(),()=>R()),[Z,R]);const F=M.useMemo(()=>f?Gk(f):null,[f]);return A.viewport?J.jsxs(J.Fragment,{children:[F&&J.jsx(Zte,{__scopeToast:n,role:"status","aria-live":t==="foreground"?"assertive":"polite",children:F}),J.jsx(Hte,{scope:n,onClose:Y,children:LP.createPortal(J.jsx(eg.ItemSlot,{scope:n,children:J.jsx(jP,{asChild:!0,onEscapeKeyDown:qa(s,()=>{A.isFocusedToastEscapeKeyDownRef.current||Y(),A.isFocusedToastEscapeKeyDownRef.current=!1}),children:J.jsx(xr.li,{tabIndex:0,"data-state":r?"open":"closed","data-swipe-direction":A.swipeDirection,...v,ref:C,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:qa(e.onKeyDown,j=>{j.key==="Escape"&&(s==null||s(j.nativeEvent),j.nativeEvent.defaultPrevented||(A.isFocusedToastEscapeKeyDownRef.current=!0,Y()))}),onPointerDown:qa(e.onPointerDown,j=>{j.button===0&&(T.current={x:j.clientX,y:j.clientY})}),onPointerMove:qa(e.onPointerMove,j=>{if(!T.current)return;const H=j.clientX-T.current.x,X=j.clientY-T.current.y,ie=!!E.current,te=["left","right"].includes(A.swipeDirection),oe=["left","up"].includes(A.swipeDirection)?Math.min:Math.max,ae=te?oe(0,H):0,Me=te?0:oe(0,X),Ne=j.pointerType==="touch"?10:2,re={x:ae,y:Me},de={originalEvent:j,delta:re};ie?(E.current=re,As($te,u,de,{discrete:!1})):Zf(re,A.swipeDirection,Ne)?(E.current=re,As(Vte,p,de,{discrete:!1}),j.target.setPointerCapture(j.pointerId)):(Math.abs(H)>Ne||Math.abs(X)>Ne)&&(T.current=null)}),onPointerUp:qa(e.onPointerUp,j=>{const H=E.current,X=j.target;if(X.hasPointerCapture(j.pointerId)&&X.releasePointerCapture(j.pointerId),E.current=null,T.current=null,H){const ie=j.currentTarget,te={originalEvent:j,delta:H};Zf(H,A.swipeDirection,A.swipeThreshold)?As(Gte,b,te,{discrete:!0}):As(Wte,g,te,{discrete:!0}),ie.addEventListener("click",oe=>oe.preventDefault(),{once:!0})}})})})}),A.viewport)})]}):null}),Zte=e=>{const{__scopeToast:a,children:n,...t}=e,i=Yc(Xo,a),[r,o]=M.useState(!1),[s,l]=M.useState(!1);return eae(()=>o(!0)),M.useEffect(()=>{const d=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(d)},[]),s?null:J.jsx(BP,{asChild:!0,children:J.jsx(ly,{...t,children:r&&J.jsxs(J.Fragment,{children:[i.label," ",n]})})})},Jte="ToastTitle",ig=M.forwardRef((e,a)=>{const{__scopeToast:n,...t}=e;return J.jsx(xr.div,{...t,ref:a})});ig.displayName=Jte;var Qte="ToastDescription",rg=M.forwardRef((e,a)=>{const{__scopeToast:n,...t}=e;return J.jsx(xr.div,{...t,ref:a})});rg.displayName=Qte;var Xte="ToastAction",og=M.forwardRef((e,a)=>{const{altText:n,...t}=e;return n.trim()?J.jsx(Wk,{altText:n,asChild:!0,children:J.jsx(Kc,{...t,ref:a})}):null});og.displayName=Xte;var $k="ToastClose",Kc=M.forwardRef((e,a)=>{const{__scopeToast:n,...t}=e,i=Yte($k,n);return J.jsx(Wk,{asChild:!0,children:J.jsx(xr.button,{type:"button",...t,ref:a,onClick:qa(e.onClick,i.onClose)})})});Kc.displayName=$k;var Wk=M.forwardRef((e,a)=>{const{__scopeToast:n,altText:t,...i}=e;return J.jsx(xr.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":t||void 0,...i,ref:a})});function Gk(e){const a=[];return Array.from(e.childNodes).forEach(t=>{if(t.nodeType===t.TEXT_NODE&&t.textContent&&a.push(t.textContent),tae(t)){const i=t.ariaHidden||t.hidden||t.style.display==="none",r=t.dataset.radixToastAnnounceExclude==="";if(!i)if(r){const o=t.dataset.radixToastAnnounceAlt;o&&a.push(o)}else a.push(...Gk(t))}}),a}function As(e,a,n,{discrete:t}){const i=n.originalEvent.currentTarget,r=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});a&&i.addEventListener(e,a,{once:!0}),t?qP(i,r):i.dispatchEvent(r)}var Zf=(e,a,n=0)=>{const t=Math.abs(e.x),i=Math.abs(e.y),r=t>i;return a==="left"||a==="right"?r&&t>n:!r&&i>n};function eae(e=()=>{}){const a=zl(e);UP(()=>{let n=0,t=0;return n=window.requestAnimationFrame(()=>t=window.requestAnimationFrame(a)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(t)}},[a])}function tae(e){return e.nodeType===e.ELEMENT_NODE}function aae(e){const a=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:t=>{const i=t.tagName==="INPUT"&&t.type==="hidden";return t.disabled||t.hidden||i?NodeFilter.FILTER_SKIP:t.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)a.push(n.currentNode);return a}function Hd(e){const a=document.activeElement;return e.some(n=>n===a?!0:(n.focus(),document.activeElement!==a))}var Hk=tg,sg=ag,lg=ng,cg=ig,dg=rg,ug=og,pg=Kc;const lhe=Object.freeze(Object.defineProperty({__proto__:null,Action:ug,Close:pg,Description:dg,Provider:Hk,Root:lg,Title:cg,Toast:ng,ToastAction:og,ToastClose:Kc,ToastDescription:rg,ToastProvider:tg,ToastTitle:ig,ToastViewport:ag,Viewport:sg,createToastScope:Bte},Symbol.toStringTag,{value:"Module"})),Jf=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,np=dy,mg=(e,a)=>n=>{var t;if((a==null?void 0:a.variants)==null)return np(e,n==null?void 0:n.class,n==null?void 0:n.className);const{variants:i,defaultVariants:r}=a,o=Object.keys(i).map(d=>{const p=n==null?void 0:n[d],u=r==null?void 0:r[d];if(p===null)return null;const g=Jf(p)||Jf(u);return i[d][g]}),s=n&&Object.entries(n).reduce((d,p)=>{let[u,g]=p;return g===void 0||(d[u]=g),d},{}),l=a==null||(t=a.compoundVariants)===null||t===void 0?void 0:t.reduce((d,p)=>{let{class:u,className:g,...b}=p;return Object.entries(b).every(v=>{let[A,f]=v;return Array.isArray(f)?f.includes({...r,...s}[A]):{...r,...s}[A]===f})?[...d,u,g]:d},[]);return np(e,o,l,n==null?void 0:n.class,n==null?void 0:n.className)},che=Object.freeze(Object.defineProperty({__proto__:null,cva:mg,cx:np},Symbol.toStringTag,{value:"Module"}));function ni(...e){return HP(dy(e))}const dhe=Object.freeze(Object.defineProperty({__proto__:null,cn:ni},Symbol.toStringTag,{value:"Module"})),Yk=Hk,gg=M.forwardRef(({className:e,...a},n)=>J.jsx(sg,{ref:n,className:ni("fixed bottom-0 z-[10003] flex max-h-screen w-full flex-col p-4 sm:right-0 md:max-w-[420px]",e),...a}));gg.displayName=sg.displayName;const nae=mg("group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",{variants:{variant:{default:"border bg-background text-foreground",success:"border bg-white text-foreground",destructive:"destructive group border-destructive bg-destructive text-destructive-foreground"}},defaultVariants:{variant:"default"}}),hg=M.forwardRef(({className:e,variant:a,...n},t)=>J.jsx(lg,{ref:t,className:ni(nae({variant:a}),e),...n}));hg.displayName=lg.displayName;const Kk=M.forwardRef(({className:e,...a},n)=>J.jsx(ug,{ref:n,className:ni("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",e),...a}));Kk.displayName=ug.displayName;const fg=M.forwardRef(({className:e,...a},n)=>J.jsx(pg,{ref:n,className:ni("absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",e),"toast-close":"",...a,children:J.jsx(VP,{className:"h-4 w-4"})}));fg.displayName=pg.displayName;const vg=M.forwardRef(({className:e,...a},n)=>J.jsx(cg,{ref:n,className:ni("text-sm font-semibold",e),...a}));vg.displayName=cg.displayName;const bg=M.forwardRef(({className:e,...a},n)=>J.jsx(dg,{ref:n,className:ni("text-sm opacity-90",e),...a}));bg.displayName=dg.displayName;const uhe=Object.freeze(Object.defineProperty({__proto__:null,Toast:hg,ToastAction:Kk,ToastClose:fg,ToastDescription:bg,ToastProvider:Yk,ToastTitle:vg,ToastViewport:gg},Symbol.toStringTag,{value:"Module"}));function Zk(){const{toasts:e}=Ok();return J.jsxs(Yk,{children:[e.map(function({id:a,title:n,description:t,action:i,icon:r,...o}){return J.jsxs(hg,{...o,children:[J.jsxs("div",{className:"flex items-start gap-3",children:[r&&J.jsx("div",{className:"shrink-0 mt-0.5",children:r}),J.jsxs("div",{className:"grid gap-1",children:[n&&J.jsx(vg,{children:n}),t&&J.jsx(bg,{children:t})]})]}),i,J.jsx(fg,{})]},a)}),J.jsx(gg,{})]})}const phe=Object.freeze(Object.defineProperty({__proto__:null,Toaster:Zk},Symbol.toStringTag,{value:"Module"}));function iae(e){if(typeof document>"u")return;let a=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",a.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}const rae=e=>{switch(e){case"success":return lae;case"info":return dae;case"warning":return cae;case"error":return uae;default:return null}},oae=Array(12).fill(0),sae=({visible:e,className:a})=>W.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":e},W.createElement("div",{className:"sonner-spinner"},oae.map((n,t)=>W.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${t}`})))),lae=W.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},W.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),cae=W.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},W.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),dae=W.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},W.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),uae=W.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},W.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),pae=W.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},W.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),W.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),mae=()=>{const[e,a]=W.useState(document.hidden);return W.useEffect(()=>{const n=()=>{a(document.hidden)};return document.addEventListener("visibilitychange",n),()=>window.removeEventListener("visibilitychange",n)},[]),e};let ip=1;class gae{constructor(){this.subscribe=a=>(this.subscribers.push(a),()=>{const n=this.subscribers.indexOf(a);this.subscribers.splice(n,1)}),this.publish=a=>{this.subscribers.forEach(n=>n(a))},this.addToast=a=>{this.publish(a),this.toasts=[...this.toasts,a]},this.create=a=>{var n;const{message:t,...i}=a,r=typeof(a==null?void 0:a.id)=="number"||((n=a.id)==null?void 0:n.length)>0?a.id:ip++,o=this.toasts.find(l=>l.id===r),s=a.dismissible===void 0?!0:a.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),o?this.toasts=this.toasts.map(l=>l.id===r?(this.publish({...l,...a,id:r,title:t}),{...l,...a,id:r,dismissible:s,title:t}):l):this.addToast({title:t,...i,dismissible:s,id:r}),r},this.dismiss=a=>(a?(this.dismissedToasts.add(a),requestAnimationFrame(()=>this.subscribers.forEach(n=>n({id:a,dismiss:!0})))):this.toasts.forEach(n=>{this.subscribers.forEach(t=>t({id:n.id,dismiss:!0}))}),a),this.message=(a,n)=>this.create({...n,message:a}),this.error=(a,n)=>this.create({...n,message:a,type:"error"}),this.success=(a,n)=>this.create({...n,type:"success",message:a}),this.info=(a,n)=>this.create({...n,type:"info",message:a}),this.warning=(a,n)=>this.create({...n,type:"warning",message:a}),this.loading=(a,n)=>this.create({...n,type:"loading",message:a}),this.promise=(a,n)=>{if(!n)return;let t;n.loading!==void 0&&(t=this.create({...n,promise:a,type:"loading",message:n.loading,description:typeof n.description!="function"?n.description:void 0}));const i=Promise.resolve(a instanceof Function?a():a);let r=t!==void 0,o;const s=i.then(async d=>{if(o=["resolve",d],W.isValidElement(d))r=!1,this.create({id:t,type:"default",message:d});else if(fae(d)&&!d.ok){r=!1;const u=typeof n.error=="function"?await n.error(`HTTP error! status: ${d.status}`):n.error,g=typeof n.description=="function"?await n.description(`HTTP error! status: ${d.status}`):n.description,v=typeof u=="object"&&!W.isValidElement(u)?u:{message:u};this.create({id:t,type:"error",description:g,...v})}else if(d instanceof Error){r=!1;const u=typeof n.error=="function"?await n.error(d):n.error,g=typeof n.description=="function"?await n.description(d):n.description,v=typeof u=="object"&&!W.isValidElement(u)?u:{message:u};this.create({id:t,type:"error",description:g,...v})}else if(n.success!==void 0){r=!1;const u=typeof n.success=="function"?await n.success(d):n.success,g=typeof n.description=="function"?await n.description(d):n.description,v=typeof u=="object"&&!W.isValidElement(u)?u:{message:u};this.create({id:t,type:"success",description:g,...v})}}).catch(async d=>{if(o=["reject",d],n.error!==void 0){r=!1;const p=typeof n.error=="function"?await n.error(d):n.error,u=typeof n.description=="function"?await n.description(d):n.description,b=typeof p=="object"&&!W.isValidElement(p)?p:{message:p};this.create({id:t,type:"error",description:u,...b})}}).finally(()=>{r&&(this.dismiss(t),t=void 0),n.finally==null||n.finally.call(n)}),l=()=>new Promise((d,p)=>s.then(()=>o[0]==="reject"?p(o[1]):d(o[1])).catch(p));return typeof t!="string"&&typeof t!="number"?{unwrap:l}:Object.assign(t,{unwrap:l})},this.custom=(a,n)=>{const t=(n==null?void 0:n.id)||ip++;return this.create({jsx:a(t),id:t,...n}),t},this.getActiveToasts=()=>this.toasts.filter(a=>!this.dismissedToasts.has(a.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Gt=new gae,hae=(e,a)=>{const n=(a==null?void 0:a.id)||ip++;return Gt.addToast({title:e,...a,id:n}),n},fae=e=>e&&typeof e=="object"&&"ok"in e&&typeof e.ok=="boolean"&&"status"in e&&typeof e.status=="number",vae=hae,bae=()=>Gt.toasts,yae=()=>Gt.getActiveToasts(),kae=Object.assign(vae,{success:Gt.success,info:Gt.info,warning:Gt.warning,error:Gt.error,custom:Gt.custom,message:Gt.message,promise:Gt.promise,dismiss:Gt.dismiss,loading:Gt.loading},{getHistory:bae,getToasts:yae});iae("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Ss(e){return e.label!==void 0}const wae=3,Aae="24px",Sae="16px",Qf=4e3,Cae=356,Dae=14,Tae=45,Eae=200;function La(...e){return e.filter(Boolean).join(" ")}function Pae(e){const[a,n]=e.split("-"),t=[];return a&&t.push(a),n&&t.push(n),t}const _ae=e=>{var a,n,t,i,r,o,s,l,d;const{invert:p,toast:u,unstyled:g,interacting:b,setHeights:v,visibleToasts:A,heights:f,index:S,toasts:C,expanded:T,removeToast:E,defaultRichColors:P,closeButton:I,style:L,cancelButtonStyle:N,actionButtonStyle:Z,className:R="",descriptionClassName:Y="",duration:$,position:F,gap:j,expandByDefault:H,classNames:X,icons:ie,closeButtonAriaLabel:te="Close toast"}=e,[oe,ae]=W.useState(null),[Me,Ne]=W.useState(null),[re,de]=W.useState(!1),[q,ge]=W.useState(!1),[Ot,Ee]=W.useState(!1),[Bt,ia]=W.useState(!1),[ra,oa]=W.useState(!1),[jn,Kt]=W.useState(0),[va,ba]=W.useState(0),aa=W.useRef(u.duration||$||Qf),ya=W.useRef(null),Pt=W.useRef(null),Zt=S===0,pt=S+1<=A,At=u.type,ka=u.dismissible!==!1,Or=u.className||"",sa=u.descriptionClassName||"",He=W.useMemo(()=>f.findIndex(pe=>pe.toastId===u.id)||0,[f,u.id]),Ni=W.useMemo(()=>{var pe;return(pe=u.closeButton)!=null?pe:I},[u.closeButton,I]),on=W.useMemo(()=>u.duration||$||Qf,[u.duration,$]),wa=W.useRef(0),Pe=W.useRef(0),Na=W.useRef(0),Nt=W.useRef(null),[sn,ln]=F.split("-"),De=W.useMemo(()=>f.reduce((pe,V,Mt)=>Mt>=He?pe:pe+V.height,0),[f,He]),Je=mae(),ne=u.invert||p,Oe=At==="loading";Pe.current=W.useMemo(()=>He*j+De,[He,De]),W.useEffect(()=>{aa.current=on},[on]),W.useEffect(()=>{de(!0)},[]),W.useEffect(()=>{const pe=Pt.current;if(pe){const V=pe.getBoundingClientRect().height;return ba(V),v(Mt=>[{toastId:u.id,height:V,position:u.position},...Mt]),()=>v(Mt=>Mt.filter($t=>$t.toastId!==u.id))}},[v,u.id]),W.useLayoutEffect(()=>{if(!re)return;const pe=Pt.current,V=pe.style.height;pe.style.height="auto";const Mt=pe.getBoundingClientRect().height;pe.style.height=V,ba(Mt),v($t=>$t.find(Ve=>Ve.toastId===u.id)?$t.map(Ve=>Ve.toastId===u.id?{...Ve,height:Mt}:Ve):[{toastId:u.id,height:Mt,position:u.position},...$t])},[re,u.title,u.description,v,u.id,u.jsx,u.action,u.cancel]);const _t=W.useCallback(()=>{ge(!0),Kt(Pe.current),v(pe=>pe.filter(V=>V.toastId!==u.id)),setTimeout(()=>{E(u)},Eae)},[u,E,v,Pe]);W.useEffect(()=>{if(u.promise&&At==="loading"||u.duration===1/0||u.type==="loading")return;let pe;return T||b||Je?(()=>{if(Na.current<wa.current){const $t=new Date().getTime()-wa.current;aa.current=aa.current-$t}Na.current=new Date().getTime()})():(()=>{aa.current!==1/0&&(wa.current=new Date().getTime(),pe=setTimeout(()=>{u.onAutoClose==null||u.onAutoClose.call(u,u),_t()},aa.current))})(),()=>clearTimeout(pe)},[T,b,u,At,Je,_t]),W.useEffect(()=>{u.delete&&(_t(),u.onDismiss==null||u.onDismiss.call(u,u))},[_t,u.delete]);function hi(){var pe;if(ie!=null&&ie.loading){var V;return W.createElement("div",{className:La(X==null?void 0:X.loader,u==null||(V=u.classNames)==null?void 0:V.loader,"sonner-loader"),"data-visible":At==="loading"},ie.loading)}return W.createElement(sae,{className:La(X==null?void 0:X.loader,u==null||(pe=u.classNames)==null?void 0:pe.loader),visible:At==="loading"})}const cn=u.icon||(ie==null?void 0:ie[At])||rae(At);var Aa,Fi;return W.createElement("li",{tabIndex:0,ref:Pt,className:La(R,Or,X==null?void 0:X.toast,u==null||(a=u.classNames)==null?void 0:a.toast,X==null?void 0:X.default,X==null?void 0:X[At],u==null||(n=u.classNames)==null?void 0:n[At]),"data-sonner-toast":"","data-rich-colors":(Aa=u.richColors)!=null?Aa:P,"data-styled":!(u.jsx||u.unstyled||g),"data-mounted":re,"data-promise":!!u.promise,"data-swiped":ra,"data-removed":q,"data-visible":pt,"data-y-position":sn,"data-x-position":ln,"data-index":S,"data-front":Zt,"data-swiping":Ot,"data-dismissible":ka,"data-type":At,"data-invert":ne,"data-swipe-out":Bt,"data-swipe-direction":Me,"data-expanded":!!(T||H&&re),"data-testid":u.testId,style:{"--index":S,"--toasts-before":S,"--z-index":C.length-S,"--offset":`${q?jn:Pe.current}px`,"--initial-height":H?"auto":`${va}px`,...L,...u.style},onDragEnd:()=>{Ee(!1),ae(null),Nt.current=null},onPointerDown:pe=>{pe.button!==2&&(Oe||!ka||(ya.current=new Date,Kt(Pe.current),pe.target.setPointerCapture(pe.pointerId),pe.target.tagName!=="BUTTON"&&(Ee(!0),Nt.current={x:pe.clientX,y:pe.clientY})))},onPointerUp:()=>{var pe,V,Mt;if(Bt||!ka)return;Nt.current=null;const $t=Number(((pe=Pt.current)==null?void 0:pe.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),Jt=Number(((V=Pt.current)==null?void 0:V.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),Ve=new Date().getTime()-((Mt=ya.current)==null?void 0:Mt.getTime()),ue=oe==="x"?$t:Jt,On=Math.abs(ue)/Ve;if(Math.abs(ue)>=Tae||On>.11){Kt(Pe.current),u.onDismiss==null||u.onDismiss.call(u,u),Ne(oe==="x"?$t>0?"right":"left":Jt>0?"down":"up"),_t(),ia(!0);return}else{var Se,Ft;(Se=Pt.current)==null||Se.style.setProperty("--swipe-amount-x","0px"),(Ft=Pt.current)==null||Ft.style.setProperty("--swipe-amount-y","0px")}oa(!1),Ee(!1),ae(null)},onPointerMove:pe=>{var V,Mt,$t;if(!Nt.current||!ka||((V=window.getSelection())==null?void 0:V.toString().length)>0)return;const Ve=pe.clientY-Nt.current.y,ue=pe.clientX-Nt.current.x;var On;const Se=(On=e.swipeDirections)!=null?On:Pae(F);!oe&&(Math.abs(ue)>1||Math.abs(Ve)>1)&&ae(Math.abs(ue)>Math.abs(Ve)?"x":"y");let Ft={x:0,y:0};const rs=la=>1/(1.5+Math.abs(la)/20);if(oe==="y"){if(Se.includes("top")||Se.includes("bottom"))if(Se.includes("top")&&Ve<0||Se.includes("bottom")&&Ve>0)Ft.y=Ve;else{const la=Ve*rs(Ve);Ft.y=Math.abs(la)<Math.abs(Ve)?la:Ve}}else if(oe==="x"&&(Se.includes("left")||Se.includes("right")))if(Se.includes("left")&&ue<0||Se.includes("right")&&ue>0)Ft.x=ue;else{const la=ue*rs(ue);Ft.x=Math.abs(la)<Math.abs(ue)?la:ue}(Math.abs(Ft.x)>0||Math.abs(Ft.y)>0)&&oa(!0),(Mt=Pt.current)==null||Mt.style.setProperty("--swipe-amount-x",`${Ft.x}px`),($t=Pt.current)==null||$t.style.setProperty("--swipe-amount-y",`${Ft.y}px`)}},Ni&&!u.jsx&&At!=="loading"?W.createElement("button",{"aria-label":te,"data-disabled":Oe,"data-close-button":!0,onClick:Oe||!ka?()=>{}:()=>{_t(),u.onDismiss==null||u.onDismiss.call(u,u)},className:La(X==null?void 0:X.closeButton,u==null||(t=u.classNames)==null?void 0:t.closeButton)},(Fi=ie==null?void 0:ie.close)!=null?Fi:pae):null,(At||u.icon||u.promise)&&u.icon!==null&&((ie==null?void 0:ie[At])!==null||u.icon)?W.createElement("div",{"data-icon":"",className:La(X==null?void 0:X.icon,u==null||(i=u.classNames)==null?void 0:i.icon)},u.promise||u.type==="loading"&&!u.icon?u.icon||hi():null,u.type!=="loading"?cn:null):null,W.createElement("div",{"data-content":"",className:La(X==null?void 0:X.content,u==null||(r=u.classNames)==null?void 0:r.content)},W.createElement("div",{"data-title":"",className:La(X==null?void 0:X.title,u==null||(o=u.classNames)==null?void 0:o.title)},u.jsx?u.jsx:typeof u.title=="function"?u.title():u.title),u.description?W.createElement("div",{"data-description":"",className:La(Y,sa,X==null?void 0:X.description,u==null||(s=u.classNames)==null?void 0:s.description)},typeof u.description=="function"?u.description():u.description):null),W.isValidElement(u.cancel)?u.cancel:u.cancel&&Ss(u.cancel)?W.createElement("button",{"data-button":!0,"data-cancel":!0,style:u.cancelButtonStyle||N,onClick:pe=>{Ss(u.cancel)&&ka&&(u.cancel.onClick==null||u.cancel.onClick.call(u.cancel,pe),_t())},className:La(X==null?void 0:X.cancelButton,u==null||(l=u.classNames)==null?void 0:l.cancelButton)},u.cancel.label):null,W.isValidElement(u.action)?u.action:u.action&&Ss(u.action)?W.createElement("button",{"data-button":!0,"data-action":!0,style:u.actionButtonStyle||Z,onClick:pe=>{Ss(u.action)&&(u.action.onClick==null||u.action.onClick.call(u.action,pe),!pe.defaultPrevented&&_t())},className:La(X==null?void 0:X.actionButton,u==null||(d=u.classNames)==null?void 0:d.actionButton)},u.action.label):null)};function Xf(){if(typeof window>"u"||typeof document>"u")return"ltr";const e=document.documentElement.getAttribute("dir");return e==="auto"||!e?window.getComputedStyle(document.documentElement).direction:e}function xae(e,a){const n={};return[e,a].forEach((t,i)=>{const r=i===1,o=r?"--mobile-offset":"--offset",s=r?Sae:Aae;function l(d){["top","right","bottom","left"].forEach(p=>{n[`${o}-${p}`]=typeof d=="number"?`${d}px`:d})}typeof t=="number"||typeof t=="string"?l(t):typeof t=="object"?["top","right","bottom","left"].forEach(d=>{t[d]===void 0?n[`${o}-${d}`]=s:n[`${o}-${d}`]=typeof t[d]=="number"?`${t[d]}px`:t[d]}):l(s)}),n}function Iae(){const[e,a]=W.useState([]);return W.useEffect(()=>Gt.subscribe(n=>{if(n.dismiss){setTimeout(()=>{Lu.flushSync(()=>{a(t=>t.filter(i=>i.id!==n.id))})});return}setTimeout(()=>{Lu.flushSync(()=>{a(t=>{const i=t.findIndex(r=>r.id===n.id);return i!==-1?[...t.slice(0,i),{...t[i],...n},...t.slice(i+1)]:[n,...t]})})})}),[]),{toasts:e}}const Jk=W.forwardRef(function(a,n){const{id:t,invert:i,position:r="bottom-right",hotkey:o=["altKey","KeyT"],expand:s,closeButton:l,className:d,offset:p,mobileOffset:u,theme:g="light",richColors:b,duration:v,style:A,visibleToasts:f=wae,toastOptions:S,dir:C=Xf(),gap:T=Dae,icons:E,containerAriaLabel:P="Notifications"}=a,[I,L]=W.useState([]),N=W.useMemo(()=>t?I.filter(re=>re.toasterId===t):I.filter(re=>!re.toasterId),[I,t]),Z=W.useMemo(()=>Array.from(new Set([r].concat(N.filter(re=>re.position).map(re=>re.position)))),[N,r]),[R,Y]=W.useState([]),[$,F]=W.useState(!1),[j,H]=W.useState(!1),[X,ie]=W.useState(g!=="system"?g:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),te=W.useRef(null),oe=o.join("+").replace(/Key/g,"").replace(/Digit/g,""),ae=W.useRef(null),Me=W.useRef(!1),Ne=W.useCallback(re=>{L(de=>{var q;return(q=de.find(ge=>ge.id===re.id))!=null&&q.delete||Gt.dismiss(re.id),de.filter(({id:ge})=>ge!==re.id)})},[]);return W.useEffect(()=>Gt.subscribe(re=>{if(re.dismiss){requestAnimationFrame(()=>{L(de=>de.map(q=>q.id===re.id?{...q,delete:!0}:q))});return}setTimeout(()=>{Lu.flushSync(()=>{L(de=>{const q=de.findIndex(ge=>ge.id===re.id);return q!==-1?[...de.slice(0,q),{...de[q],...re},...de.slice(q+1)]:[re,...de]})})})}),[I]),W.useEffect(()=>{if(g!=="system"){ie(g);return}if(g==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?ie("dark"):ie("light")),typeof window>"u")return;const re=window.matchMedia("(prefers-color-scheme: dark)");try{re.addEventListener("change",({matches:de})=>{ie(de?"dark":"light")})}catch{re.addListener(({matches:q})=>{try{ie(q?"dark":"light")}catch{}})}},[g]),W.useEffect(()=>{I.length<=1&&F(!1)},[I]),W.useEffect(()=>{const re=de=>{var q;if(o.every(Ee=>de[Ee]||de.code===Ee)){var Ot;F(!0),(Ot=te.current)==null||Ot.focus()}de.code==="Escape"&&(document.activeElement===te.current||(q=te.current)!=null&&q.contains(document.activeElement))&&F(!1)};return document.addEventListener("keydown",re),()=>document.removeEventListener("keydown",re)},[o]),W.useEffect(()=>{if(te.current)return()=>{ae.current&&(ae.current.focus({preventScroll:!0}),ae.current=null,Me.current=!1)}},[te.current]),W.createElement("section",{ref:n,"aria-label":`${P} ${oe}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},Z.map((re,de)=>{var q;const[ge,Ot]=re.split("-");return N.length?W.createElement("ol",{key:re,dir:C==="auto"?Xf():C,tabIndex:-1,ref:te,className:d,"data-sonner-toaster":!0,"data-sonner-theme":X,"data-y-position":ge,"data-x-position":Ot,style:{"--front-toast-height":`${((q=R[0])==null?void 0:q.height)||0}px`,"--width":`${Cae}px`,"--gap":`${T}px`,...A,...xae(p,u)},onBlur:Ee=>{Me.current&&!Ee.currentTarget.contains(Ee.relatedTarget)&&(Me.current=!1,ae.current&&(ae.current.focus({preventScroll:!0}),ae.current=null))},onFocus:Ee=>{Ee.target instanceof HTMLElement&&Ee.target.dataset.dismissible==="false"||Me.current||(Me.current=!0,ae.current=Ee.relatedTarget)},onMouseEnter:()=>F(!0),onMouseMove:()=>F(!0),onMouseLeave:()=>{j||F(!1)},onDragEnd:()=>F(!1),onPointerDown:Ee=>{Ee.target instanceof HTMLElement&&Ee.target.dataset.dismissible==="false"||H(!0)},onPointerUp:()=>H(!1)},N.filter(Ee=>!Ee.position&&de===0||Ee.position===re).map((Ee,Bt)=>{var ia,ra;return W.createElement(_ae,{key:Ee.id,icons:E,index:Bt,toast:Ee,defaultRichColors:b,duration:(ia=S==null?void 0:S.duration)!=null?ia:v,className:S==null?void 0:S.className,descriptionClassName:S==null?void 0:S.descriptionClassName,invert:i,visibleToasts:f,closeButton:(ra=S==null?void 0:S.closeButton)!=null?ra:l,interacting:j,position:re,style:S==null?void 0:S.style,unstyled:S==null?void 0:S.unstyled,classNames:S==null?void 0:S.classNames,cancelButtonStyle:S==null?void 0:S.cancelButtonStyle,actionButtonStyle:S==null?void 0:S.actionButtonStyle,closeButtonAriaLabel:S==null?void 0:S.closeButtonAriaLabel,removeToast:Ne,toasts:N.filter(oa=>oa.position==Ee.position),heights:R.filter(oa=>oa.position==Ee.position),setHeights:Y,expandByDefault:s,gap:T,expanded:$,swipeDirections:a.swipeDirections})})):null}))}),mhe=Object.freeze(Object.defineProperty({__proto__:null,Toaster:Jk,toast:kae,useSonner:Iae},Symbol.toStringTag,{value:"Module"}));var Rae=(e,a,n,t,i,r,o,s)=>{let l=document.documentElement,d=["light","dark"];function p(b){(Array.isArray(e)?e:[e]).forEach(v=>{let A=v==="class",f=A&&r?i.map(S=>r[S]||S):i;A?(l.classList.remove(...f),l.classList.add(r&&r[b]?r[b]:b)):l.setAttribute(v,b)}),u(b)}function u(b){s&&d.includes(b)&&(l.style.colorScheme=b)}function g(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(t)p(t);else try{let b=localStorage.getItem(a)||n,v=o&&b==="system"?g():b;p(v)}catch{}},zae=M.createContext(void 0),Mae={setTheme:e=>{},themes:[]},Nae=()=>{var e;return(e=M.useContext(zae))!=null?e:Mae};M.memo(({forcedTheme:e,storageKey:a,attribute:n,enableSystem:t,enableColorScheme:i,defaultTheme:r,value:o,themes:s,nonce:l,scriptProps:d})=>{let p=JSON.stringify([n,a,r,e,s,o,t,i]).slice(1,-1);return M.createElement("script",{...d,suppressHydrationWarning:!0,nonce:typeof window>"u"?l:"",dangerouslySetInnerHTML:{__html:`(${Rae.toString()})(${p})`}})});const yg=M.createContext({overrides:{},setOverrides:()=>{},resetOverrides:()=>{}});function Fae({children:e}){const[a,n]=M.useState({}),t=M.useCallback(r=>n(r),[]),i=M.useCallback(()=>n({}),[]);return J.jsx(yg.Provider,{value:{overrides:a,setOverrides:t,resetOverrides:i},children:e})}function ghe(e){const{setOverrides:a,resetOverrides:n}=M.useContext(yg);M.useEffect(()=>(a(e),()=>n()),[])}const Lae={toast:"group toast font-base44 group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",description:"group-[.toast]:text-muted-foreground",actionButton:"group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",cancelButton:"group-[.toast]:bg-muted group-[.toast]:text-muted-foreground",success:"[&_[data-icon]]:text-green-500"};function jae(e){const{theme:a="system"}=Nae(),{overrides:n}=M.useContext(yg),{classNames:t,...i}=n.toastOptions??{};return J.jsx(Jk,{theme:a,className:"toaster group",toastOptions:{...i,classNames:{...Lae,...t}},...e,closeButton:n.closeButton??e.closeButton})}const Qk=$P,Oae=WP,Bae=GP,Xk=mg("z-50 overflow-hidden rounded-md border px-3 py-1.5 text-sm shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",{variants:{variant:{default:"bg-popover text-popover-foreground",dark:"font-base44 border-gray-900 bg-gray-900 text-white",light:"border-gray-200 bg-white text-gray-900"}},defaultVariants:{variant:"default"}}),kg=M.forwardRef(({className:e,sideOffset:a=4,variant:n,...t},i)=>J.jsx(cy,{ref:i,sideOffset:a,className:ni(Xk({variant:n}),e),...t}));kg.displayName=cy.displayName;const ew=M.forwardRef(({className:e,...a},n)=>J.jsx(kg,{ref:n,variant:"dark",className:e,...a}));ew.displayName="DarkTooltipContent";const hhe=Object.freeze(Object.defineProperty({__proto__:null,DarkTooltipContent:ew,Tooltip:Oae,TooltipContent:kg,TooltipProvider:Qk,TooltipTrigger:Bae,tooltipContentVariants:Xk},Symbol.toStringTag,{value:"Module"})),Uae=!1;function wg(){return!!(window.wixMobileNativeBridge&&(typeof window.wixMobileNativeBridge=="function"||Uae)&&window.wixMobileNativeBridge.general.getHostName)}let $l=new Set,Ag=new Set,Ao=!1,Ai=null;function fhe(e){Ao||$l.add(e)}function vhe(e){Ao||(Ag.add(e),Ai&&cancelAnimationFrame(Ai),Ai=requestAnimationFrame(()=>{Ai=requestAnimationFrame(()=>{qae()})}))}function qae(){var a;Ao||$l.size===0||!Array.from($l).every(n=>Ag.has(n))||(Ao=!0,wg()&&(a=window.wixMobileNativeBridge)!=null&&a.base44.actions.onContentReady&&window.wixMobileNativeBridge.base44.actions.onContentReady().catch(n=>{}))}function bhe(){Ai&&(cancelAnimationFrame(Ai),Ai=null),$l=new Set,Ag=new Set,Ao=!1}function Vae(){return M.useMemo(()=>{const e=wg();return{isNativeMobile:e,general:{getHostName:async()=>{var a;if(e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.general.getHostName))return await window.wixMobileNativeBridge.base44.general.getHostName()}},actions:{onContentReady:async()=>{var a;if(e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.actions.onContentReady))return await window.wixMobileNativeBridge.base44.actions.onContentReady()},onError:async()=>{var a;if(e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.actions.onError))return await window.wixMobileNativeBridge.base44.actions.onError()},onItemClicked:async({id:a,data:n})=>{var t;if(e&&((t=window.wixMobileNativeBridge)!=null&&t.base44.actions.onItemClicked))return await window.wixMobileNativeBridge.base44.actions.onItemClicked({id:a,data:n})},addAppProcess:async({appId:a,appName:n})=>{var t;if(e&&((t=window.wixMobileNativeBridge)!=null&&t.base44.actions.addAppProcess))return await window.wixMobileNativeBridge.base44.actions.addAppProcess({appId:a,appName:n})},handlePageNotFoundRetry:async()=>{var a;if(e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.actions.handlePageNotFoundRetry))return await window.wixMobileNativeBridge.base44.actions.handlePageNotFoundRetry()},setBottomTabsVisible:async({visible:a})=>{var n;if(e&&((n=window.wixMobileNativeBridge)!=null&&n.base44.actions.setBottomTabsVisible))return await window.wixMobileNativeBridge.base44.actions.setBottomTabsVisible({visible:a})}},navigation:{openBottomSheet:async({uri:a,maxHeightPercentage:n})=>{var t;e&&((t=window.wixMobileNativeBridge)!=null&&t.base44.navigation.openBottomSheet)&&await window.wixMobileNativeBridge.base44.navigation.openBottomSheet({uri:a,maxHeightPercentage:n})},showModal:async({screenName:a,passProps:n})=>{var t;e&&((t=window.wixMobileNativeBridge)!=null&&t.base44.navigation.showModal)&&await window.wixMobileNativeBridge.base44.navigation.showModal({screenName:a,passProps:n})},showWebViewDialog:async({url:a,widthPercentage:n,heightPercentage:t})=>{var i;if(e&&((i=window.wixMobileNativeBridge)!=null&&i.base44.navigation.showWebViewDialog))return await window.wixMobileNativeBridge.base44.navigation.showWebViewDialog({url:a,widthPercentage:n,heightPercentage:t})},switchToTab:async({screenId:a})=>{var n;e&&((n=window.wixMobileNativeBridge)!=null&&n.base44.navigation.switchToTab)&&await window.wixMobileNativeBridge.base44.navigation.switchToTab({screenId:a})},dismissOverlay:async()=>{var a;e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.navigation.dismissOverlay)&&await window.wixMobileNativeBridge.base44.navigation.dismissOverlay()},dismissModal:async()=>{var a;e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.navigation.dismissModal)&&await window.wixMobileNativeBridge.base44.navigation.dismissModal()},dismissAllModals:async()=>{var a;e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.navigation.dismissAllModals)&&await window.wixMobileNativeBridge.base44.navigation.dismissAllModals()},notifyWebOverlayVisibilityChanged:async({isVisible:a,color:n})=>{var t;e&&((t=window.wixMobileNativeBridge)!=null&&t.base44.navigation.notifyWebOverlayVisibilityChanged)&&await window.wixMobileNativeBridge.base44.navigation.notifyWebOverlayVisibilityChanged({isVisible:a,color:n})},push:async({screenName:a,passProps:n})=>{var t;e&&((t=window.wixMobileNativeBridge)!=null&&t.base44.navigation.push)&&await window.wixMobileNativeBridge.base44.navigation.push({screenName:a,passProps:n})},pop:async()=>{var a;e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.navigation.pop)&&await window.wixMobileNativeBridge.base44.navigation.pop()},requestWebViewNavigation:async({url:a})=>{var n;if(e&&((n=window.wixMobileNativeBridge)!=null&&n.base44.navigation.requestWebViewNavigation))return await window.wixMobileNativeBridge.base44.navigation.requestWebViewNavigation({url:a})}},linking:{openUrl:async({url:a})=>{var n;if(e&&((n=window.wixMobileNativeBridge)!=null&&n.base44.linking.openUrl))return await window.wixMobileNativeBridge.base44.linking.openUrl({url:a})}},platform:{os:async()=>{var a;if(e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.platform.os))return await window.wixMobileNativeBridge.base44.platform.os()},countryCode:async()=>{var a;if(e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.platform.countryCode))return await window.wixMobileNativeBridge.base44.platform.countryCode()},setActiveWorkSpace:async({workspaceId:a})=>{var n;if(e&&((n=window.wixMobileNativeBridge)!=null&&n.base44.platform.setActiveWorkSpace))return await window.wixMobileNativeBridge.base44.platform.setActiveWorkSpace({workspaceId:a})},getLatestActiveWorkSpace:async()=>{var a;if(e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.platform.getLatestActiveWorkSpace))return await window.wixMobileNativeBridge.base44.platform.getLatestActiveWorkSpace()}},auth:{logOut:async()=>{var a;if(e&&((a=window.wixMobileNativeBridge)!=null&&a.base44.auth.logOut))return await window.wixMobileNativeBridge.base44.auth.logOut()}},analytics:{logEvent:async({eventName:a,params:n})=>{var t;if(e&&((t=window.wixMobileNativeBridge)!=null&&t.base44.analytics.logEvent))return await window.wixMobileNativeBridge.base44.analytics.logEvent({eventName:a,params:n})}}}},[])}const tw=M.createContext(null);function yhe({children:e}){const{platform:a,isNativeMobile:n}=Vae(),[t,i]=M.useState(void 0);M.useEffect(()=>{n&&a.os().then(i)},[a,n]);const r=M.useMemo(()=>({platformOS:t,isIOS:t==="ios",isAndroid:t==="android",shouldHidePlanAndBilling:!1}),[t]);return J.jsx(tw.Provider,{value:r,children:e})}function khe(){const e=M.useContext(tw);return e||{platformOS:void 0,isIOS:!1,isAndroid:!1,shouldHidePlanAndBilling:!1}}var aw=YP();const Wl=Go(aw),whe=_c({__proto__:null,default:Wl},[aw]),jt=[];for(let e=0;e<256;++e)jt.push((e+256).toString(16).slice(1));function $ae(e,a=0){return(jt[e[a+0]]+jt[e[a+1]]+jt[e[a+2]]+jt[e[a+3]]+"-"+jt[e[a+4]]+jt[e[a+5]]+"-"+jt[e[a+6]]+jt[e[a+7]]+"-"+jt[e[a+8]]+jt[e[a+9]]+"-"+jt[e[a+10]]+jt[e[a+11]]+jt[e[a+12]]+jt[e[a+13]]+jt[e[a+14]]+jt[e[a+15]]).toLowerCase()}let Yd;const Wae=new Uint8Array(16);function Gae(){if(!Yd){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");Yd=crypto.getRandomValues.bind(crypto)}return Yd(Wae)}const Hae=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),ev={randomUUID:Hae};function Yae(e,a,n){var i;e=e||{};const t=e.random??((i=e.rng)==null?void 0:i.call(e))??Gae();if(t.length<16)throw new Error("Random bytes length must be >= 16");if(t[6]=t[6]&15|64,t[8]=t[8]&63|128,a){if(n=n||0,n<0||n+16>a.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let r=0;r<16;++r)a[n+r]=t[r];return a}return $ae(t)}function Kae(e,a,n){return ev.randomUUID&&!a&&!e?ev.randomUUID():Yae(e,a,n)}let Sg={};function hl(e,a){Sg[e]=a}function fl(e){delete Sg[e]}function Zae(){return{...Sg}}const Xa=Object.create(null);Xa.open="0";Xa.close="1";Xa.ping="2";Xa.pong="3";Xa.message="4";Xa.upgrade="5";Xa.noop="6";const vl=Object.create(null);Object.keys(Xa).forEach(e=>{vl[Xa[e]]=e});const rp={type:"error",data:"parser error"},nw=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",iw=typeof ArrayBuffer=="function",rw=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Cg=({type:e,data:a},n,t)=>nw&&a instanceof Blob?n?t(a):tv(a,t):iw&&(a instanceof ArrayBuffer||rw(a))?n?t(a):tv(new Blob([a]),t):t(Xa[e]+(a||"")),tv=(e,a)=>{const n=new FileReader;return n.onload=function(){const t=n.result.split(",")[1];a("b"+(t||""))},n.readAsDataURL(e)};function av(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Kd;function Jae(e,a){if(nw&&e.data instanceof Blob)return e.data.arrayBuffer().then(av).then(a);if(iw&&(e.data instanceof ArrayBuffer||rw(e.data)))return a(av(e.data));Cg(e,!1,n=>{Kd||(Kd=new TextEncoder),a(Kd.encode(n))})}const nv="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",no=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let e=0;e<nv.length;e++)no[nv.charCodeAt(e)]=e;const Qae=e=>{let a=e.length*.75,n=e.length,t,i=0,r,o,s,l;e[e.length-1]==="="&&(a--,e[e.length-2]==="="&&a--);const d=new ArrayBuffer(a),p=new Uint8Array(d);for(t=0;t<n;t+=4)r=no[e.charCodeAt(t)],o=no[e.charCodeAt(t+1)],s=no[e.charCodeAt(t+2)],l=no[e.charCodeAt(t+3)],p[i++]=r<<2|o>>4,p[i++]=(o&15)<<4|s>>2,p[i++]=(s&3)<<6|l&63;return d},Xae=typeof ArrayBuffer=="function",Dg=(e,a)=>{if(typeof e!="string")return{type:"message",data:ow(e,a)};const n=e.charAt(0);return n==="b"?{type:"message",data:ene(e.substring(1),a)}:vl[n]?e.length>1?{type:vl[n],data:e.substring(1)}:{type:vl[n]}:rp},ene=(e,a)=>{if(Xae){const n=Qae(e);return ow(n,a)}else return{base64:!0,data:e}},ow=(e,a)=>{switch(a){case"blob":return e instanceof Blob?e:new Blob([e]);case"arraybuffer":default:return e instanceof ArrayBuffer?e:e.buffer}},sw="",tne=(e,a)=>{const n=e.length,t=new Array(n);let i=0;e.forEach((r,o)=>{Cg(r,!1,s=>{t[o]=s,++i===n&&a(t.join(sw))})})},ane=(e,a)=>{const n=e.split(sw),t=[];for(let i=0;i<n.length;i++){const r=Dg(n[i],a);if(t.push(r),r.type==="error")break}return t};function nne(){return new TransformStream({transform(e,a){Jae(e,n=>{const t=n.length;let i;if(t<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,t);else if(t<65536){i=new Uint8Array(3);const r=new DataView(i.buffer);r.setUint8(0,126),r.setUint16(1,t)}else{i=new Uint8Array(9);const r=new DataView(i.buffer);r.setUint8(0,127),r.setBigUint64(1,BigInt(t))}e.data&&typeof e.data!="string"&&(i[0]|=128),a.enqueue(i),a.enqueue(n)})}})}let Zd;function Cs(e){return e.reduce((a,n)=>a+n.length,0)}function Ds(e,a){if(e[0].length===a)return e.shift();const n=new Uint8Array(a);let t=0;for(let i=0;i<a;i++)n[i]=e[0][t++],t===e[0].length&&(e.shift(),t=0);return e.length&&t<e[0].length&&(e[0]=e[0].slice(t)),n}function ine(e,a){Zd||(Zd=new TextDecoder);const n=[];let t=0,i=-1,r=!1;return new TransformStream({transform(o,s){for(n.push(o);;){if(t===0){if(Cs(n)<1)break;const l=Ds(n,1);r=(l[0]&128)===128,i=l[0]&127,i<126?t=3:i===126?t=1:t=2}else if(t===1){if(Cs(n)<2)break;const l=Ds(n,2);i=new DataView(l.buffer,l.byteOffset,l.length).getUint16(0),t=3}else if(t===2){if(Cs(n)<8)break;const l=Ds(n,8),d=new DataView(l.buffer,l.byteOffset,l.length),p=d.getUint32(0);if(p>Math.pow(2,21)-1){s.enqueue(rp);break}i=p*Math.pow(2,32)+d.getUint32(4),t=3}else{if(Cs(n)<i)break;const l=Ds(n,i);s.enqueue(Dg(r?l:Zd.decode(l),a)),t=0}if(i===0||i>e){s.enqueue(rp);break}}}})}const lw=4;function Tt(e){if(e)return rne(e)}function rne(e){for(var a in Tt.prototype)e[a]=Tt.prototype[a];return e}Tt.prototype.on=Tt.prototype.addEventListener=function(e,a){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(a),this};Tt.prototype.once=function(e,a){function n(){this.off(e,n),a.apply(this,arguments)}return n.fn=a,this.on(e,n),this};Tt.prototype.off=Tt.prototype.removeListener=Tt.prototype.removeAllListeners=Tt.prototype.removeEventListener=function(e,a){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var n=this._callbacks["$"+e];if(!n)return this;if(arguments.length==1)return delete this._callbacks["$"+e],this;for(var t,i=0;i<n.length;i++)if(t=n[i],t===a||t.fn===a){n.splice(i,1);break}return n.length===0&&delete this._callbacks["$"+e],this};Tt.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var a=new Array(arguments.length-1),n=this._callbacks["$"+e],t=1;t<arguments.length;t++)a[t-1]=arguments[t];if(n){n=n.slice(0);for(var t=0,i=n.length;t<i;++t)n[t].apply(this,a)}return this};Tt.prototype.emitReserved=Tt.prototype.emit;Tt.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]};Tt.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Zc=typeof Promise=="function"&&typeof Promise.resolve=="function"?a=>Promise.resolve().then(a):(a,n)=>n(a,0),ua=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),one="arraybuffer";function cw(e,...a){return a.reduce((n,t)=>(e.hasOwnProperty(t)&&(n[t]=e[t]),n),{})}const sne=ua.setTimeout,lne=ua.clearTimeout;function Jc(e,a){a.useNativeTimers?(e.setTimeoutFn=sne.bind(ua),e.clearTimeoutFn=lne.bind(ua)):(e.setTimeoutFn=ua.setTimeout.bind(ua),e.clearTimeoutFn=ua.clearTimeout.bind(ua))}const cne=1.33;function dne(e){return typeof e=="string"?une(e):Math.ceil((e.byteLength||e.size)*cne)}function une(e){let a=0,n=0;for(let t=0,i=e.length;t<i;t++)a=e.charCodeAt(t),a<128?n+=1:a<2048?n+=2:a<55296||a>=57344?n+=3:(t++,n+=4);return n}function dw(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function pne(e){let a="";for(let n in e)e.hasOwnProperty(n)&&(a.length&&(a+="&"),a+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));return a}function mne(e){let a={},n=e.split("&");for(let t=0,i=n.length;t<i;t++){let r=n[t].split("=");a[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return a}class gne extends Error{constructor(a,n,t){super(a),this.description=n,this.context=t,this.type="TransportError"}}class Tg extends Tt{constructor(a){super(),this.writable=!1,Jc(this,a),this.opts=a,this.query=a.query,this.socket=a.socket,this.supportsBinary=!a.forceBase64}onError(a,n,t){return super.emitReserved("error",new gne(a,n,t)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(a){this.readyState==="open"&&this.write(a)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(a){const n=Dg(a,this.socket.binaryType);this.onPacket(n)}onPacket(a){super.emitReserved("packet",a)}onClose(a){this.readyState="closed",super.emitReserved("close",a)}pause(a){}createUri(a,n={}){return a+"://"+this._hostname()+this._port()+this.opts.path+this._query(n)}_hostname(){const a=this.opts.hostname;return a.indexOf(":")===-1?a:"["+a+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(a){const n=pne(a);return n.length?"?"+n:""}}class hne extends Tg{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(a){this.readyState="pausing";const n=()=>{this.readyState="paused",a()};if(this._polling||!this.writable){let t=0;this._polling&&(t++,this.once("pollComplete",function(){--t||n()})),this.writable||(t++,this.once("drain",function(){--t||n()}))}else n()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(a){const n=t=>{if(this.readyState==="opening"&&t.type==="open"&&this.onOpen(),t.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(t)};ane(a,this.socket.binaryType).forEach(n),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const a=()=>{this.write([{type:"close"}])};this.readyState==="open"?a():this.once("open",a)}write(a){this.writable=!1,tne(a,n=>{this.doWrite(n,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const a=this.opts.secure?"https":"http",n=this.query||{};return this.opts.timestampRequests!==!1&&(n[this.opts.timestampParam]=dw()),!this.supportsBinary&&!n.sid&&(n.b64=1),this.createUri(a,n)}}let uw=!1;try{uw=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const fne=uw;function vne(){}class bne extends hne{constructor(a){if(super(a),typeof location<"u"){const n=location.protocol==="https:";let t=location.port;t||(t=n?"443":"80"),this.xd=typeof location<"u"&&a.hostname!==location.hostname||t!==a.port}}doWrite(a,n){const t=this.request({method:"POST",data:a});t.on("success",n),t.on("error",(i,r)=>{this.onError("xhr post error",i,r)})}doPoll(){const a=this.request();a.on("data",this.onData.bind(this)),a.on("error",(n,t)=>{this.onError("xhr poll error",n,t)}),this.pollXhr=a}}let dr=class bl extends Tt{constructor(a,n,t){super(),this.createRequest=a,Jc(this,t),this._opts=t,this._method=t.method||"GET",this._uri=n,this._data=t.data!==void 0?t.data:null,this._create()}_create(){var a;const n=cw(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");n.xdomain=!!this._opts.xd;const t=this._xhr=this.createRequest(n);try{t.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let i in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(i)&&t.setRequestHeader(i,this._opts.extraHeaders[i])}}catch{}if(this._method==="POST")try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{t.setRequestHeader("Accept","*/*")}catch{}(a=this._opts.cookieJar)===null||a===void 0||a.addCookies(t),"withCredentials"in t&&(t.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(t.timeout=this._opts.requestTimeout),t.onreadystatechange=()=>{var i;t.readyState===3&&((i=this._opts.cookieJar)===null||i===void 0||i.parseCookies(t.getResponseHeader("set-cookie"))),t.readyState===4&&(t.status===200||t.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof t.status=="number"?t.status:0)},0))},t.send(this._data)}catch(i){this.setTimeoutFn(()=>{this._onError(i)},0);return}typeof document<"u"&&(this._index=bl.requestsCount++,bl.requests[this._index]=this)}_onError(a){this.emitReserved("error",a,this._xhr),this._cleanup(!0)}_cleanup(a){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=vne,a)try{this._xhr.abort()}catch{}typeof document<"u"&&delete bl.requests[this._index],this._xhr=null}}_onLoad(){const a=this._xhr.responseText;a!==null&&(this.emitReserved("data",a),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};dr.requestsCount=0;dr.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",iv);else if(typeof addEventListener=="function"){const e="onpagehide"in ua?"pagehide":"unload";addEventListener(e,iv,!1)}}function iv(){for(let e in dr.requests)dr.requests.hasOwnProperty(e)&&dr.requests[e].abort()}const yne=(function(){const e=pw({xdomain:!1});return e&&e.responseType!==null})();class kne extends bne{constructor(a){super(a);const n=a&&a.forceBase64;this.supportsBinary=yne&&!n}request(a={}){return Object.assign(a,{xd:this.xd},this.opts),new dr(pw,this.uri(),a)}}function pw(e){const a=e.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!a||fne))return new XMLHttpRequest}catch{}if(!a)try{return new ua[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const mw=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class wne extends Tg{get name(){return"websocket"}doOpen(){const a=this.uri(),n=this.opts.protocols,t=mw?{}:cw(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(t.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(a,n,t)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=a=>this.onClose({description:"websocket connection closed",context:a}),this.ws.onmessage=a=>this.onData(a.data),this.ws.onerror=a=>this.onError("websocket error",a)}write(a){this.writable=!1;for(let n=0;n<a.length;n++){const t=a[n],i=n===a.length-1;Cg(t,this.supportsBinary,r=>{try{this.doWrite(t,r)}catch{}i&&Zc(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const a=this.opts.secure?"wss":"ws",n=this.query||{};return this.opts.timestampRequests&&(n[this.opts.timestampParam]=dw()),this.supportsBinary||(n.b64=1),this.createUri(a,n)}}const Jd=ua.WebSocket||ua.MozWebSocket;class Ane extends wne{createSocket(a,n,t){return mw?new Jd(a,n,t):n?new Jd(a,n):new Jd(a)}doWrite(a,n){this.ws.send(n)}}class Sne extends Tg{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(a){return this.emitReserved("error",a)}this._transport.closed.then(()=>{this.onClose()}).catch(a=>{this.onError("webtransport error",a)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(a=>{const n=ine(Number.MAX_SAFE_INTEGER,this.socket.binaryType),t=a.readable.pipeThrough(n).getReader(),i=nne();i.readable.pipeTo(a.writable),this._writer=i.writable.getWriter();const r=()=>{t.read().then(({done:s,value:l})=>{s||(this.onPacket(l),r())}).catch(s=>{})};r();const o={type:"open"};this.query.sid&&(o.data=`{"sid":"${this.query.sid}"}`),this._writer.write(o).then(()=>this.onOpen())})})}write(a){this.writable=!1;for(let n=0;n<a.length;n++){const t=a[n],i=n===a.length-1;this._writer.write(t).then(()=>{i&&Zc(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var a;(a=this._transport)===null||a===void 0||a.close()}}const Cne={websocket:Ane,webtransport:Sne,polling:kne},Dne=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Tne=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function op(e){if(e.length>8e3)throw"URI too long";const a=e,n=e.indexOf("["),t=e.indexOf("]");n!=-1&&t!=-1&&(e=e.substring(0,n)+e.substring(n,t).replace(/:/g,";")+e.substring(t,e.length));let i=Dne.exec(e||""),r={},o=14;for(;o--;)r[Tne[o]]=i[o]||"";return n!=-1&&t!=-1&&(r.source=a,r.host=r.host.substring(1,r.host.length-1).replace(/;/g,":"),r.authority=r.authority.replace("[","").replace("]","").replace(/;/g,":"),r.ipv6uri=!0),r.pathNames=Ene(r,r.path),r.queryKey=Pne(r,r.query),r}function Ene(e,a){const n=/\/{2,9}/g,t=a.replace(n,"/").split("/");return(a.slice(0,1)=="/"||a.length===0)&&t.splice(0,1),a.slice(-1)=="/"&&t.splice(t.length-1,1),t}function Pne(e,a){const n={};return a.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(t,i,r){i&&(n[i]=r)}),n}const sp=typeof addEventListener=="function"&&typeof removeEventListener=="function",yl=[];sp&&addEventListener("offline",()=>{yl.forEach(e=>e())},!1);class Jn extends Tt{constructor(a,n){if(super(),this.binaryType=one,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,a&&typeof a=="object"&&(n=a,a=null),a){const t=op(a);n.hostname=t.host,n.secure=t.protocol==="https"||t.protocol==="wss",n.port=t.port,t.query&&(n.query=t.query)}else n.host&&(n.hostname=op(n.host).host);Jc(this,n),this.secure=n.secure!=null?n.secure:typeof location<"u"&&location.protocol==="https:",n.hostname&&!n.port&&(n.port=this.secure?"443":"80"),this.hostname=n.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=n.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},n.transports.forEach(t=>{const i=t.prototype.name;this.transports.push(i),this._transportsByName[i]=t}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},n),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=mne(this.opts.query)),sp&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},yl.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(a){const n=Object.assign({},this.opts.query);n.EIO=lw,n.transport=a,this.id&&(n.sid=this.id);const t=Object.assign({},this.opts,{query:n,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[a]);return new this._transportsByName[a](t)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const a=this.opts.rememberUpgrade&&Jn.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const n=this.createTransport(a);n.open(),this.setTransport(n)}setTransport(a){this.transport&&this.transport.removeAllListeners(),this.transport=a,a.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",n=>this._onClose("transport close",n))}onOpen(){this.readyState="open",Jn.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(a){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",a),this.emitReserved("heartbeat"),a.type){case"open":this.onHandshake(JSON.parse(a.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const n=new Error("server error");n.code=a.data,this._onError(n);break;case"message":this.emitReserved("data",a.data),this.emitReserved("message",a.data);break}}onHandshake(a){this.emitReserved("handshake",a),this.id=a.sid,this.transport.query.sid=a.sid,this._pingInterval=a.pingInterval,this._pingTimeout=a.pingTimeout,this._maxPayload=a.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const a=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+a,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},a),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const a=this._getWritablePackets();this.transport.send(a),this._prevBufferLen=a.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let n=1;for(let t=0;t<this.writeBuffer.length;t++){const i=this.writeBuffer[t].data;if(i&&(n+=dne(i)),t>0&&n>this._maxPayload)return this.writeBuffer.slice(0,t);n+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const a=Date.now()>this._pingTimeoutTime;return a&&(this._pingTimeoutTime=0,Zc(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),a}write(a,n,t){return this._sendPacket("message",a,n,t),this}send(a,n,t){return this._sendPacket("message",a,n,t),this}_sendPacket(a,n,t,i){if(typeof n=="function"&&(i=n,n=void 0),typeof t=="function"&&(i=t,t=null),this.readyState==="closing"||this.readyState==="closed")return;t=t||{},t.compress=t.compress!==!1;const r={type:a,data:n,options:t};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),i&&this.once("flush",i),this.flush()}close(){const a=()=>{this._onClose("forced close"),this.transport.close()},n=()=>{this.off("upgrade",n),this.off("upgradeError",n),a()},t=()=>{this.once("upgrade",n),this.once("upgradeError",n)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?t():a()}):this.upgrading?t():a()),this}_onError(a){if(Jn.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",a),this._onClose("transport error",a)}_onClose(a,n){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),sp&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const t=yl.indexOf(this._offlineEventListener);t!==-1&&yl.splice(t,1)}this.readyState="closed",this.id=null,this.emitReserved("close",a,n),this.writeBuffer=[],this._prevBufferLen=0}}}Jn.protocol=lw;class _ne extends Jn{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let a=0;a<this._upgrades.length;a++)this._probe(this._upgrades[a])}_probe(a){let n=this.createTransport(a),t=!1;Jn.priorWebsocketSuccess=!1;const i=()=>{t||(n.send([{type:"ping",data:"probe"}]),n.once("packet",u=>{if(!t)if(u.type==="pong"&&u.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",n),!n)return;Jn.priorWebsocketSuccess=n.name==="websocket",this.transport.pause(()=>{t||this.readyState!=="closed"&&(p(),this.setTransport(n),n.send([{type:"upgrade"}]),this.emitReserved("upgrade",n),n=null,this.upgrading=!1,this.flush())})}else{const g=new Error("probe error");g.transport=n.name,this.emitReserved("upgradeError",g)}}))};function r(){t||(t=!0,p(),n.close(),n=null)}const o=u=>{const g=new Error("probe error: "+u);g.transport=n.name,r(),this.emitReserved("upgradeError",g)};function s(){o("transport closed")}function l(){o("socket closed")}function d(u){n&&u.name!==n.name&&r()}const p=()=>{n.removeListener("open",i),n.removeListener("error",o),n.removeListener("close",s),this.off("close",l),this.off("upgrading",d)};n.once("open",i),n.once("error",o),n.once("close",s),this.once("close",l),this.once("upgrading",d),this._upgrades.indexOf("webtransport")!==-1&&a!=="webtransport"?this.setTimeoutFn(()=>{t||n.open()},200):n.open()}onHandshake(a){this._upgrades=this._filterUpgrades(a.upgrades),super.onHandshake(a)}_filterUpgrades(a){const n=[];for(let t=0;t<a.length;t++)~this.transports.indexOf(a[t])&&n.push(a[t]);return n}}let xne=class extends _ne{constructor(a,n={}){const t=typeof a=="object"?a:n;(!t.transports||t.transports&&typeof t.transports[0]=="string")&&(t.transports=(t.transports||["polling","websocket","webtransport"]).map(i=>Cne[i]).filter(i=>!!i)),super(a,t)}};function Ine(e,a="",n){let t=e;n=n||typeof location<"u"&&location,e==null&&(e=n.protocol+"//"+n.host),typeof e=="string"&&(e.charAt(0)==="/"&&(e.charAt(1)==="/"?e=n.protocol+e:e=n.host+e),/^(https?|wss?):\/\//.test(e)||(typeof n<"u"?e=n.protocol+"//"+e:e="https://"+e),t=op(e)),t.port||(/^(http|ws)$/.test(t.protocol)?t.port="80":/^(http|ws)s$/.test(t.protocol)&&(t.port="443")),t.path=t.path||"/";const r=t.host.indexOf(":")!==-1?"["+t.host+"]":t.host;return t.id=t.protocol+"://"+r+":"+t.port+a,t.href=t.protocol+"://"+r+(n&&n.port===t.port?"":":"+t.port),t}const Rne=typeof ArrayBuffer=="function",zne=e=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,gw=Object.prototype.toString,Mne=typeof Blob=="function"||typeof Blob<"u"&&gw.call(Blob)==="[object BlobConstructor]",Nne=typeof File=="function"||typeof File<"u"&&gw.call(File)==="[object FileConstructor]";function Eg(e){return Rne&&(e instanceof ArrayBuffer||zne(e))||Mne&&e instanceof Blob||Nne&&e instanceof File}function kl(e,a){if(!e||typeof e!="object")return!1;if(Array.isArray(e)){for(let n=0,t=e.length;n<t;n++)if(kl(e[n]))return!0;return!1}if(Eg(e))return!0;if(e.toJSON&&typeof e.toJSON=="function"&&arguments.length===1)return kl(e.toJSON(),!0);for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&kl(e[n]))return!0;return!1}function Fne(e){const a=[],n=e.data,t=e;return t.data=lp(n,a),t.attachments=a.length,{packet:t,buffers:a}}function lp(e,a){if(!e)return e;if(Eg(e)){const n={_placeholder:!0,num:a.length};return a.push(e),n}else if(Array.isArray(e)){const n=new Array(e.length);for(let t=0;t<e.length;t++)n[t]=lp(e[t],a);return n}else if(typeof e=="object"&&!(e instanceof Date)){const n={};for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=lp(e[t],a));return n}return e}function Lne(e,a){return e.data=cp(e.data,a),delete e.attachments,e}function cp(e,a){if(!e)return e;if(e&&e._placeholder===!0){if(typeof e.num=="number"&&e.num>=0&&e.num<a.length)return a[e.num];throw new Error("illegal attachments")}else if(Array.isArray(e))for(let n=0;n<e.length;n++)e[n]=cp(e[n],a);else if(typeof e=="object")for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(e[n]=cp(e[n],a));return e}const jne=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var ze;(function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"})(ze||(ze={}));class One{constructor(a){this.replacer=a}encode(a){return(a.type===ze.EVENT||a.type===ze.ACK)&&kl(a)?this.encodeAsBinary({type:a.type===ze.EVENT?ze.BINARY_EVENT:ze.BINARY_ACK,nsp:a.nsp,data:a.data,id:a.id}):[this.encodeAsString(a)]}encodeAsString(a){let n=""+a.type;return(a.type===ze.BINARY_EVENT||a.type===ze.BINARY_ACK)&&(n+=a.attachments+"-"),a.nsp&&a.nsp!=="/"&&(n+=a.nsp+","),a.id!=null&&(n+=a.id),a.data!=null&&(n+=JSON.stringify(a.data,this.replacer)),n}encodeAsBinary(a){const n=Fne(a),t=this.encodeAsString(n.packet),i=n.buffers;return i.unshift(t),i}}class Pg extends Tt{constructor(a){super(),this.opts=Object.assign({reviver:void 0,maxAttachments:10},typeof a=="function"?{reviver:a}:a)}add(a){let n;if(typeof a=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");n=this.decodeString(a);const t=n.type===ze.BINARY_EVENT;t||n.type===ze.BINARY_ACK?(n.type=t?ze.EVENT:ze.ACK,this.reconstructor=new Bne(n),n.attachments===0&&super.emitReserved("decoded",n)):super.emitReserved("decoded",n)}else if(Eg(a)||a.base64)if(this.reconstructor)n=this.reconstructor.takeBinaryData(a),n&&(this.reconstructor=null,super.emitReserved("decoded",n));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+a)}decodeString(a){let n=0;const t={type:Number(a.charAt(0))};if(ze[t.type]===void 0)throw new Error("unknown packet type "+t.type);if(t.type===ze.BINARY_EVENT||t.type===ze.BINARY_ACK){const r=n+1;for(;a.charAt(++n)!=="-"&&n!=a.length;);const o=a.substring(r,n);if(o!=Number(o)||a.charAt(n)!=="-")throw new Error("Illegal attachments");const s=Number(o);if(!Une(s)||s<0)throw new Error("Illegal attachments");if(s>this.opts.maxAttachments)throw new Error("too many attachments");t.attachments=s}if(a.charAt(n+1)==="/"){const r=n+1;for(;++n&&!(a.charAt(n)===","||n===a.length););t.nsp=a.substring(r,n)}else t.nsp="/";const i=a.charAt(n+1);if(i!==""&&Number(i)==i){const r=n+1;for(;++n;){const o=a.charAt(n);if(o==null||Number(o)!=o){--n;break}if(n===a.length)break}t.id=Number(a.substring(r,n+1))}if(a.charAt(++n)){const r=this.tryParse(a.substr(n));if(Pg.isPayloadValid(t.type,r))t.data=r;else throw new Error("invalid payload")}return t}tryParse(a){try{return JSON.parse(a,this.opts.reviver)}catch{return!1}}static isPayloadValid(a,n){switch(a){case ze.CONNECT:return rv(n);case ze.DISCONNECT:return n===void 0;case ze.CONNECT_ERROR:return typeof n=="string"||rv(n);case ze.EVENT:case ze.BINARY_EVENT:return Array.isArray(n)&&(typeof n[0]=="number"||typeof n[0]=="string"&&jne.indexOf(n[0])===-1);case ze.ACK:case ze.BINARY_ACK:return Array.isArray(n)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Bne{constructor(a){this.packet=a,this.buffers=[],this.reconPack=a}takeBinaryData(a){if(this.buffers.push(a),this.buffers.length===this.reconPack.attachments){const n=Lne(this.reconPack,this.buffers);return this.finishedReconstruction(),n}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}const Une=Number.isInteger||function(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e};function rv(e){return Object.prototype.toString.call(e)==="[object Object]"}const qne=Object.freeze(Object.defineProperty({__proto__:null,Decoder:Pg,Encoder:One,get PacketType(){return ze}},Symbol.toStringTag,{value:"Module"}));function Ta(e,a,n){return e.on(a,n),function(){e.off(a,n)}}const Vne=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class hw extends Tt{constructor(a,n,t){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=a,this.nsp=n,t&&t.auth&&(this.auth=t.auth),this._opts=Object.assign({},t),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const a=this.io;this.subs=[Ta(a,"open",this.onopen.bind(this)),Ta(a,"packet",this.onpacket.bind(this)),Ta(a,"error",this.onerror.bind(this)),Ta(a,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...a){return a.unshift("message"),this.emit.apply(this,a),this}emit(a,...n){var t,i,r;if(Vne.hasOwnProperty(a))throw new Error('"'+a.toString()+'" is a reserved event name');if(n.unshift(a),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(n),this;const o={type:ze.EVENT,data:n};if(o.options={},o.options.compress=this.flags.compress!==!1,typeof n[n.length-1]=="function"){const p=this.ids++,u=n.pop();this._registerAckCallback(p,u),o.id=p}const s=(i=(t=this.io.engine)===null||t===void 0?void 0:t.transport)===null||i===void 0?void 0:i.writable,l=this.connected&&!(!((r=this.io.engine)===null||r===void 0)&&r._hasPingExpired());return this.flags.volatile&&!s||(l?(this.notifyOutgoingListeners(o),this.packet(o)):this.sendBuffer.push(o)),this.flags={},this}_registerAckCallback(a,n){var t;const i=(t=this.flags.timeout)!==null&&t!==void 0?t:this._opts.ackTimeout;if(i===void 0){this.acks[a]=n;return}const r=this.io.setTimeoutFn(()=>{delete this.acks[a];for(let s=0;s<this.sendBuffer.length;s++)this.sendBuffer[s].id===a&&this.sendBuffer.splice(s,1);n.call(this,new Error("operation has timed out"))},i),o=(...s)=>{this.io.clearTimeoutFn(r),n.apply(this,s)};o.withError=!0,this.acks[a]=o}emitWithAck(a,...n){return new Promise((t,i)=>{const r=(o,s)=>o?i(o):t(s);r.withError=!0,n.push(r),this.emit(a,...n)})}_addToQueue(a){let n;typeof a[a.length-1]=="function"&&(n=a.pop());const t={id:this._queueSeq++,tryCount:0,pending:!1,args:a,flags:Object.assign({fromQueue:!0},this.flags)};a.push((i,...r)=>(this._queue[0],i!==null?t.tryCount>this._opts.retries&&(this._queue.shift(),n&&n(i)):(this._queue.shift(),n&&n(null,...r)),t.pending=!1,this._drainQueue())),this._queue.push(t),this._drainQueue()}_drainQueue(a=!1){if(!this.connected||this._queue.length===0)return;const n=this._queue[0];n.pending&&!a||(n.pending=!0,n.tryCount++,this.flags=n.flags,this.emit.apply(this,n.args))}packet(a){a.nsp=this.nsp,this.io._packet(a)}onopen(){typeof this.auth=="function"?this.auth(a=>{this._sendConnectPacket(a)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(a){this.packet({type:ze.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},a):a})}onerror(a){this.connected||this.emitReserved("connect_error",a)}onclose(a,n){this.connected=!1,delete this.id,this.emitReserved("disconnect",a,n),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(a=>{if(!this.sendBuffer.some(t=>String(t.id)===a)){const t=this.acks[a];delete this.acks[a],t.withError&&t.call(this,new Error("socket has been disconnected"))}})}onpacket(a){if(a.nsp===this.nsp)switch(a.type){case ze.CONNECT:a.data&&a.data.sid?this.onconnect(a.data.sid,a.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case ze.EVENT:case ze.BINARY_EVENT:this.onevent(a);break;case ze.ACK:case ze.BINARY_ACK:this.onack(a);break;case ze.DISCONNECT:this.ondisconnect();break;case ze.CONNECT_ERROR:this.destroy();const t=new Error(a.data.message);t.data=a.data.data,this.emitReserved("connect_error",t);break}}onevent(a){const n=a.data||[];a.id!=null&&n.push(this.ack(a.id)),this.connected?this.emitEvent(n):this.receiveBuffer.push(Object.freeze(n))}emitEvent(a){if(this._anyListeners&&this._anyListeners.length){const n=this._anyListeners.slice();for(const t of n)t.apply(this,a)}super.emit.apply(this,a),this._pid&&a.length&&typeof a[a.length-1]=="string"&&(this._lastOffset=a[a.length-1])}ack(a){const n=this;let t=!1;return function(...i){t||(t=!0,n.packet({type:ze.ACK,id:a,data:i}))}}onack(a){const n=this.acks[a.id];typeof n=="function"&&(delete this.acks[a.id],n.withError&&a.data.unshift(null),n.apply(this,a.data))}onconnect(a,n){this.id=a,this.recovered=n&&this._pid===n,this._pid=n,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(a=>this.emitEvent(a)),this.receiveBuffer=[],this.sendBuffer.forEach(a=>{this.notifyOutgoingListeners(a),this.packet(a)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(a=>a()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:ze.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(a){return this.flags.compress=a,this}get volatile(){return this.flags.volatile=!0,this}timeout(a){return this.flags.timeout=a,this}onAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(a),this}prependAny(a){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(a),this}offAny(a){if(!this._anyListeners)return this;if(a){const n=this._anyListeners;for(let t=0;t<n.length;t++)if(a===n[t])return n.splice(t,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(a),this}prependAnyOutgoing(a){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(a),this}offAnyOutgoing(a){if(!this._anyOutgoingListeners)return this;if(a){const n=this._anyOutgoingListeners;for(let t=0;t<n.length;t++)if(a===n[t])return n.splice(t,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(a){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const n=this._anyOutgoingListeners.slice();for(const t of n)t.apply(this,a.data)}}}function Nr(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Nr.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var a=Math.random(),n=Math.floor(a*this.jitter*e);e=(Math.floor(a*10)&1)==0?e-n:e+n}return Math.min(e,this.max)|0};Nr.prototype.reset=function(){this.attempts=0};Nr.prototype.setMin=function(e){this.ms=e};Nr.prototype.setMax=function(e){this.max=e};Nr.prototype.setJitter=function(e){this.jitter=e};class dp extends Tt{constructor(a,n){var t;super(),this.nsps={},this.subs=[],a&&typeof a=="object"&&(n=a,a=void 0),n=n||{},n.path=n.path||"/socket.io",this.opts=n,Jc(this,n),this.reconnection(n.reconnection!==!1),this.reconnectionAttempts(n.reconnectionAttempts||1/0),this.reconnectionDelay(n.reconnectionDelay||1e3),this.reconnectionDelayMax(n.reconnectionDelayMax||5e3),this.randomizationFactor((t=n.randomizationFactor)!==null&&t!==void 0?t:.5),this.backoff=new Nr({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(n.timeout==null?2e4:n.timeout),this._readyState="closed",this.uri=a;const i=n.parser||qne;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=n.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(a){return arguments.length?(this._reconnection=!!a,a||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(a){return a===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=a,this)}reconnectionDelay(a){var n;return a===void 0?this._reconnectionDelay:(this._reconnectionDelay=a,(n=this.backoff)===null||n===void 0||n.setMin(a),this)}randomizationFactor(a){var n;return a===void 0?this._randomizationFactor:(this._randomizationFactor=a,(n=this.backoff)===null||n===void 0||n.setJitter(a),this)}reconnectionDelayMax(a){var n;return a===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=a,(n=this.backoff)===null||n===void 0||n.setMax(a),this)}timeout(a){return arguments.length?(this._timeout=a,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(a){if(~this._readyState.indexOf("open"))return this;this.engine=new xne(this.uri,this.opts);const n=this.engine,t=this;this._readyState="opening",this.skipReconnect=!1;const i=Ta(n,"open",function(){t.onopen(),a&&a()}),r=s=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",s),a?a(s):this.maybeReconnectOnOpen()},o=Ta(n,"error",r);if(this._timeout!==!1){const s=this._timeout,l=this.setTimeoutFn(()=>{i(),r(new Error("timeout")),n.close()},s);this.opts.autoUnref&&l.unref(),this.subs.push(()=>{this.clearTimeoutFn(l)})}return this.subs.push(i),this.subs.push(o),this}connect(a){return this.open(a)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const a=this.engine;this.subs.push(Ta(a,"ping",this.onping.bind(this)),Ta(a,"data",this.ondata.bind(this)),Ta(a,"error",this.onerror.bind(this)),Ta(a,"close",this.onclose.bind(this)),Ta(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(a){try{this.decoder.add(a)}catch(n){this.onclose("parse error",n)}}ondecoded(a){Zc(()=>{this.emitReserved("packet",a)},this.setTimeoutFn)}onerror(a){this.emitReserved("error",a)}socket(a,n){let t=this.nsps[a];return t?this._autoConnect&&!t.active&&t.connect():(t=new hw(this,a,n),this.nsps[a]=t),t}_destroy(a){const n=Object.keys(this.nsps);for(const t of n)if(this.nsps[t].active)return;this._close()}_packet(a){const n=this.encoder.encode(a);for(let t=0;t<n.length;t++)this.engine.write(n[t],a.options)}cleanup(){this.subs.forEach(a=>a()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(a,n){var t;this.cleanup(),(t=this.engine)===null||t===void 0||t.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",a,n),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const a=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const n=this.backoff.duration();this._reconnecting=!0;const t=this.setTimeoutFn(()=>{a.skipReconnect||(this.emitReserved("reconnect_attempt",a.backoff.attempts),!a.skipReconnect&&a.open(i=>{i?(a._reconnecting=!1,a.reconnect(),this.emitReserved("reconnect_error",i)):a.onreconnect()}))},n);this.opts.autoUnref&&t.unref(),this.subs.push(()=>{this.clearTimeoutFn(t)})}}onreconnect(){const a=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",a)}}const Zr={};function wl(e,a){typeof e=="object"&&(a=e,e=void 0),a=a||{};const n=Ine(e,a.path||"/socket.io"),t=n.source,i=n.id,r=n.path,o=Zr[i]&&r in Zr[i].nsps,s=a.forceNew||a["force new connection"]||a.multiplex===!1||o;let l;return s?l=new dp(t,a):(Zr[i]||(Zr[i]=new dp(t,a)),l=Zr[i]),n.query&&!a.query&&(a.query=n.queryKey),l.socket(n.path,a)}Object.assign(wl,{Manager:dp,Socket:hw,io:wl,connect:wl});function Qd(e){const a=new URLSearchParams(window.location.search);a.delete(e);const n=window.location.pathname+(a.toString()?"?"+a.toString():"");window.history.replaceState({},"",n)}function ov(e){const{or:a,and:n,...t}=e;return{...Gl(t),or:(...r)=>ov({$or:[t,...r]}),and:(...r)=>ov({$and:[t,...r]}),query:()=>Gl(t)??{}}}function Gl(e,a=49){if(a<=0)return e;if(typeof e!="function"){if(Array.isArray(e)){const n=e.map(t=>Gl(t,a-1)).filter(t=>t!=null);return n.length===0?void 0:n}else if(e!=null&&typeof e=="object"){const n={};for(const t in e){const i=Gl(e[t],a-1);i!=null&&(n[t]=i)}return Object.keys(n).length===0||Object.keys(n).length===1&&n.$options!=null?void 0:n}else if(e===null)return;return e}}var hr={},z;if(typeof window>"u"){var sv={hostname:""};z={crypto:{randomUUID:function(){throw Error("unsupported")}},navigator:{userAgent:"",onLine:!0},document:{createElement:function(){return{}},location:sv,referrer:""},screen:{width:0,height:0},location:sv,addEventListener:function(){},removeEventListener:function(){},dispatchEvent:function(){},CustomEvent:function(){}}}else z=window;var ea={DEBUG:!1,LIB_VERSION:"2.76.0"},Ea="__mp_targeting",up="__mp_recorder",$ne="__MP_RECORDER_FILENAME__",fw="__MP_TARGETING_FILENAME__";function lv(e,a){(a==null||a>e.length)&&(a=e.length);for(var n=0,t=new Array(a);n<a;n++)t[n]=e[n];return t}function cv(e,a,n,t,i,r,o){try{var s=e[r](o),l=s.value}catch(d){n(d);return}s.done?a(l):Promise.resolve(l).then(t,i)}function Qc(e){return function(){var a=this,n=arguments;return new Promise(function(t,i){var r=e.apply(a,n);function o(l){cv(r,t,i,o,s,"next",l)}function s(l){cv(r,t,i,o,s,"throw",l)}o(void 0)})}}function Al(e,a,n){return vw()?Al=Reflect.construct:Al=function(i,r,o){var s=[null];s.push.apply(s,r);var l=Function.bind.apply(i,s),d=new l;return o&&So(d,o.prototype),d},Al.apply(null,arguments)}function Wne(e,a){for(var n=0;n<a.length;n++){var t=a[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}}function rt(e,a,n){return a&&Wne(e.prototype,a),e}function Ce(){return Ce=Object.assign||function(e){for(var a=1;a<arguments.length;a++){var n=arguments[a];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e},Ce.apply(this,arguments)}function pp(e){return pp=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},pp(e)}function lt(e,a){if(typeof a!="function"&&a!==null)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(a&&a.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),a&&So(e,a)}function le(e,a){return a!=null&&typeof Symbol<"u"&&a[Symbol.hasInstance]?!!a[Symbol.hasInstance](e):e instanceof a}function Gne(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function Ci(e,a){if(e==null)return{};var n={},t=Object.keys(e),i,r;for(r=0;r<t.length;r++)i=t[r],!(a.indexOf(i)>=0)&&(n[i]=e[i]);return n}function So(e,a){return So=Object.setPrototypeOf||function(t,i){return t.__proto__=i,t},So(e,a)}function ce(e){"@swc/helpers - typeof";return e&&typeof Symbol<"u"&&e.constructor===Symbol?"symbol":typeof e}function Hne(e,a){if(e){if(typeof e=="string")return lv(e,a);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(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return lv(e,a)}}function Co(e){var a=typeof Map=="function"?new Map:void 0;return Co=function(t){if(t===null||!Gne(t))return t;if(typeof t!="function")throw new TypeError("Super expression must either be null or a function");if(typeof a<"u"){if(a.has(t))return a.get(t);a.set(t,i)}function i(){return Al(t,arguments,pp(this).constructor)}return i.prototype=Object.create(t.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),So(i,t)},Co(e)}function vw(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(vw=function(){return!!e})()}function B(e,a){var n=typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=Hne(e))||a){n&&(e=n);var t=0;return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Di(e,a){var n,t,i,r,o={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(r[Symbol.iterator]=function(){return this}),r;function s(d){return function(p){return l([d,p])}}function l(d){if(n)throw new TypeError("Generator is already executing.");for(;o;)try{if(n=1,t&&(i=d[0]&2?t.return:d[0]?t.throw||((i=t.return)&&i.call(t),0):t.next)&&!(i=i.call(t,d[1])).done)return i;switch(t=0,i&&(d=[d[0]&2,i.value]),d[0]){case 0:case 1:i=d;break;case 4:return o.label++,{value:d[1],done:!1};case 5:o.label++,t=d[1],d=[0];continue;case 7:d=o.ops.pop(),o.trys.pop();continue;default:if(i=o.trys,!(i=i.length>0&&i[i.length-1])&&(d[0]===6||d[0]===2)){o=0;continue}if(d[0]===3&&(!i||d[1]>i[0]&&d[1]<i[3])){o.label=d[1];break}if(d[0]===6&&o.label<i[1]){o.label=i[1],i=d;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(d);break}i[2]&&o.ops.pop(),o.trys.pop();continue}d=a.call(e,o)}catch(p){d=[6,p],t=0}finally{n=i=0}if(d[0]&5)throw d[1];return{value:d[0]?d[1]:void 0,done:!0}}}function _g(e){var a=typeof Symbol=="function"&&Symbol.iterator,n=a&&e[a],t=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&t>=e.length&&(e=void 0),{value:e&&e[t++],done:!e}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")}var Yne=Object.defineProperty,Kne=function(e,a,n){return a in e?Yne(e,a,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[a]=n},G=function(e,a,n){return Kne(e,(typeof a>"u"?"undefined":ce(a))!=="symbol"?a+"":a,n)},dv,Zne=Object.defineProperty,Jne=function(e,a,n){return a in e?Zne(e,a,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[a]=n},uv=function(e,a,n){return Jne(e,(typeof a>"u"?"undefined":ce(a))!=="symbol"?a+"":a,n)},It=(function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e})(It||{}),pv={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},mv={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},Ts={},Qne=function(){return!!globalThis.Zone};function xg(e){if(Ts[e])return Ts[e];var a=globalThis[e],n=a.prototype,t=e in pv?pv[e]:void 0,i=!!(t&&t.every(function(p){var u,g;return!!((g=(u=Object.getOwnPropertyDescriptor(n,p))==null?void 0:u.get)!=null&&g.toString().includes("[native code]"))})),r=e in mv?mv[e]:void 0,o=!!(r&&r.every(function(p){var u;return typeof n[p]=="function"&&((u=n[p])==null?void 0:u.toString().includes("[native code]"))}));if(i&&o&&!Qne())return Ts[e]=a.prototype,a.prototype;try{var s=document.createElement("iframe");document.body.appendChild(s);var l=s.contentWindow;if(!l)return a.prototype;var d=l[e].prototype;return document.body.removeChild(s),d?Ts[e]=d:n}catch{return n}}var Xd={};function ii(e,a,n){var t,i=e+"."+String(n);if(Xd[i])return Xd[i].call(a);var r=xg(e),o=(t=Object.getOwnPropertyDescriptor(r,n))==null?void 0:t.get;return o?(Xd[i]=o,o.call(a)):a[n]}var eu={};function bw(e,a,n){var t=e+"."+String(n);if(eu[t])return eu[t].bind(a);var i=xg(e),r=i[n];return typeof r!="function"?a[n]:(eu[t]=r,r.bind(a))}function Xne(e){return ii("Node",e,"childNodes")}function eie(e){return ii("Node",e,"parentNode")}function tie(e){return ii("Node",e,"parentElement")}function aie(e){return ii("Node",e,"textContent")}function nie(e,a){return bw("Node",e,"contains")(a)}function iie(e){return bw("Node",e,"getRootNode")()}function rie(e){return!e||!("host"in e)?null:ii("ShadowRoot",e,"host")}function oie(e){return e.styleSheets}function sie(e){return!e||!("shadowRoot"in e)?null:ii("Element",e,"shadowRoot")}function lie(e,a){return ii("Element",e,"querySelector")(a)}function cie(e,a){return ii("Element",e,"querySelectorAll")(a)}function die(){return xg("MutationObserver").constructor}function uie(e,a,n){try{if(!(a in e))return function(){};var t=e[a],i=n(t);return typeof i=="function"&&(i.prototype=i.prototype||{},Object.defineProperties(i,{__rrweb_original__:{enumerable:!1,value:t}})),e[a]=i,function(){e[a]=t}}catch{return function(){}}}var qt={childNodes:Xne,parentNode:eie,parentElement:tie,textContent:aie,contains:nie,getRootNode:iie,host:rie,styleSheets:oie,shadowRoot:sie,querySelector:lie,querySelectorAll:cie,mutationObserver:die,patch:uie};function yw(e){return e.nodeType===e.ELEMENT_NODE}function lo(e){var a=e&&"host"in e&&"mode"in e&&qt.host(e)||null;return!!(a&&"shadowRoot"in a&&qt.shadowRoot(a)===e)}function co(e){return Object.prototype.toString.call(e)==="[object ShadowRoot]"}function pie(e){return e.includes(" background-clip: text;")&&!e.includes(" -webkit-background-clip: text;")&&(e=e.replace(/\sbackground-clip:\s*text;/g," -webkit-background-clip: text; background-clip: text;")),e}function mie(e){var a=e.cssText;if(a.split('"').length<3)return a;var n=["@import","url("+JSON.stringify(e.href)+")"];return e.layerName===""?n.push("layer"):e.layerName&&n.push("layer("+e.layerName+")"),e.supportsText&&n.push("supports("+e.supportsText+")"),e.media.length&&n.push(e.media.mediaText),n.join(" ")+";"}function mp(e){try{var a=e.rules||e.cssRules;if(!a)return null;var n=e.href;!n&&e.ownerNode&&e.ownerNode.ownerDocument&&(n=e.ownerNode.ownerDocument.location.href);var t=Array.from(a,function(i){return kw(i,n)}).join("");return pie(t)}catch{return null}}function kw(e,a){if(hie(e)){var n;try{n=mp(e.styleSheet)||mie(e)}catch{n=e.cssText}return e.styleSheet.href?Kl(n,e.styleSheet.href):n}else{var t=e.cssText;return fie(e)&&e.selectorText.includes(":")&&(t=gie(t)),a?Kl(t,a):t}}function gie(e){var a=/(\[(?:[\w-]+)[^\\])(:(?:[\w-]+)\])/gm;return e.replace(a,"$1\\$2")}function hie(e){return"styleSheet"in e}function fie(e){return"selectorText"in e}var ww=(function(){function e(){uv(this,"idNodeMap",new Map),uv(this,"nodeMetaMap",new WeakMap)}var a=e.prototype;return a.getId=function(t){var i;if(!t)return-1;var r=(i=this.getMeta(t))==null?void 0:i.id;return r??-1},a.getNode=function(t){return this.idNodeMap.get(t)||null},a.getIds=function(){return Array.from(this.idNodeMap.keys())},a.getMeta=function(t){return this.nodeMetaMap.get(t)||null},a.removeNodeFromMap=function(t,i){var r=this;i===void 0&&(i=!1);var o=this.getId(t);this.idNodeMap.delete(o),i&&this.nodeMetaMap.delete(t),t.childNodes&&t.childNodes.forEach(function(s){return r.removeNodeFromMap(s,i)})},a.has=function(t){return this.idNodeMap.has(t)},a.hasNode=function(t){return this.nodeMetaMap.has(t)},a.add=function(t,i){var r=i.id;this.idNodeMap.set(r,t),this.nodeMetaMap.set(t,i)},a.replace=function(t,i){var r=this.getNode(t);if(r){var o=this.nodeMetaMap.get(r);o&&this.nodeMetaMap.set(i,o)}this.idNodeMap.set(t,i)},a.reset=function(){this.idNodeMap=new Map,this.nodeMetaMap=new WeakMap},e})();function vie(){return new ww}function Hl(e){var a=e.element,n=e.maskInputOptions,t=e.tagName,i=e.type,r=e.value,o=e.maskInputFn,s=r||"",l=i&&Ti(i);return(n[t.toLowerCase()]||l&&n[l])&&(o?s=o(s,a):s="*".repeat(s.length)),s}function Ti(e){return e.toLowerCase()}var gv="__rrweb_original__";function bie(e){var a=e.getContext("2d");if(!a)return!0;for(var n=50,t=0;t<e.width;t+=n)for(var i=0;i<e.height;i+=n){var r=a.getImageData,o=gv in r?r[gv]:r,s=new Uint32Array(o.call(a,t,i,Math.min(n,e.width-t),Math.min(n,e.height-i)).data.buffer);if(s.some(function(l){return l!==0}))return!1}return!0}function Yl(e){var a=e.type;return e.hasAttribute("data-rr-is-password")?"password":a?Ti(a):null}function Aw(e,a){var n;try{n=new URL(e,a??window.location.href)}catch{return null}var t=/\.([0-9a-z]+)(?:$)/i,i=n.pathname.match(t),r;return(r=i==null?void 0:i[1])!=null?r:null}function yie(e){var a="";return e.indexOf("//")>-1?a=e.split("/").slice(0,3).join("/"):a=e.split("/")[0],a=a.split("?")[0],a}var kie=/url\((?:(')([^']*)'|(")(.*?)"|([^)]*))\)/gm,wie=/^(?:[a-z+]+:)?\/\//i,Aie=/^www\..*/i,Sie=/^(data:)([^,]*),(.*)/i;function Kl(e,a){return(e||"").replace(kie,function(n,t,i,r,o,s){var l=i||o||s,d=t||r||"";if(!l)return n;if(wie.test(l)||Aie.test(l)||Sie.test(l))return"url("+d+l+d+")";if(l[0]==="/")return"url("+d+(yie(a)+l)+d+")";var p=a.split("/"),u=l.split("/");p.pop();for(var g=B(u),b;!(b=g()).done;){var v=b.value;v!=="."&&(v===".."?p.pop():p.push(v))}return"url("+d+p.join("/")+d+")"})}function Es(e,a){return a===void 0&&(a=!1),a?e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,""):e.replace(/(\/\*[^*]*\*\/)|[\s;]/g,"").replace(/0px/g,"0")}function Cie(e,a,n){n===void 0&&(n=!1);var t=Array.from(a.childNodes),i=[],r=0;if(t.length>1&&e&&typeof e=="string"){for(var o=Es(e,n),s=o.length/e.length,l=1;l<t.length;l++)if(t[l].textContent&&typeof t[l].textContent=="string"){for(var d=Es(t[l].textContent,n),p=100,u=3;u<d.length&&(d[u].match(/[a-zA-Z0-9]/)||d.indexOf(d.substring(0,u),1)!==-1);u++);for(;u<d.length;u++){var g=d.substring(0,u),b=o.split(g),v=-1;if(b.length===2)v=b[0].length;else if(b.length>2&&b[0]===""&&t[l-1].textContent!=="")v=o.indexOf(g,1);else if(b.length===1){if(g=g.substring(0,g.length-1),b=o.split(g),b.length<=1)return i.push(e),i;u=p+1}else u===d.length-1&&(v=o.indexOf(g));if(b.length>=2&&u>p){var A=t[l-1].textContent;if(A&&typeof A=="string"){var f=Es(A).length;v=o.indexOf(g,f)}v===-1&&(v=b[0].length)}if(v!==-1){for(var S=Math.floor(v/s);S>0&&S<e.length;){if(r+=1,r>50*t.length)return i.push(e),i;var C=Es(e.substring(0,S),n);if(C.length===v){i.push(e.substring(0,S)),e=e.substring(S),o=o.substring(v);break}else C.length<v?S+=Math.max(1,Math.floor((v-C.length)/s)):S-=Math.max(1,Math.floor((C.length-v)*s))}break}}}}return i.push(e),i}function Die(e,a){return Cie(e,a).join("/* rr_split */")}var Tie=1,Eie=new RegExp("[^a-z0-9-_:]"),Do=-2;function Sw(){return Tie++}function Pie(e){if(le(e,HTMLFormElement))return"form";var a=Ti(e.tagName);return Eie.test(a)?"div":a}var Yi,hv,_ie=/^[^ \t\n\r\u000c]+/,xie=/^[, \t\n\r\u000c]+/;function Iie(e,a){if(a.trim()==="")return a;var n=0;function t(d){var p,u=d.exec(a.substring(n));return u?(p=u[0],n+=p.length,p):""}for(var i=[];t(xie),!(n>=a.length);){var r=t(_ie);if(r.slice(-1)===",")r=ar(e,r.substring(0,r.length-1)),i.push(r);else{var o="";r=ar(e,r);for(var s=!1;;){var l=a.charAt(n);if(l===""){i.push((r+o).trim());break}else if(s)l===")"&&(s=!1);else if(l===","){n+=1,i.push((r+o).trim());break}else l==="("&&(s=!0);o+=l,n+=1}}}return i.join(", ")}var fv=new WeakMap;function ar(e,a){return!a||a.trim()===""?a:Ig(e,a)}function Rie(e){return!!(e.tagName==="svg"||e.ownerSVGElement)}function Ig(e,a){var n=fv.get(e);if(n||(n=e.createElement("a"),fv.set(e,n)),!a)a="";else if(a.startsWith("blob:")||a.startsWith("data:"))return a;return n.setAttribute("href",a),n.href}function Cw(e,a,n,t){return t&&(n==="src"||n==="href"&&!(a==="use"&&t[0]==="#")||n==="xlink:href"&&t[0]!=="#"||n==="background"&&(a==="table"||a==="td"||a==="th")?ar(e,t):n==="srcset"?Iie(e,t):n==="style"?Kl(t,Ig(e)):a==="object"&&n==="data"?ar(e,t):t)}function Dw(e,a,n){return(e==="video"||e==="audio")&&a==="autoplay"}function zie(e,a,n){try{if(typeof a=="string"){if(e.classList.contains(a))return!0}else for(var t=e.classList.length;t--;){var i=e.classList[t];if(a.test(i))return!0}if(n)return e.matches(n)}catch{}return!1}function Zl(e,a,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return n?Zl(qt.parentNode(e),a,n):!1;for(var t=e.classList.length;t--;){var i=e.classList[t];if(a.test(i))return!0}return n?Zl(qt.parentNode(e),a,n):!1}function Tw(e,a,n,t){var i;if(yw(e)){if(i=e,!qt.childNodes(i).length)return!1}else{if(qt.parentElement(e)===null)return!1;i=qt.parentElement(e)}try{if(typeof a=="string"){if(t){if(i.closest("."+a))return!0}else if(i.classList.contains(a))return!0}else if(Zl(i,a,t))return!0;if(n){if(t){if(i.closest(n))return!0}else if(i.matches(n))return!0}}catch{}return!1}function Mie(e,a,n){var t=e.contentWindow;if(t){var i=!1,r;try{r=t.document.readyState}catch{return}if(r!=="complete"){var o=setTimeout(function(){i||(a(),i=!0)},n);e.addEventListener("load",function(){clearTimeout(o),i=!0,a()});return}var s="about:blank";if(t.location.href!==s||e.src===s||e.src==="")return setTimeout(a,0),e.addEventListener("load",a);e.addEventListener("load",a)}}function Nie(e,a,n){var t=!1,i;try{i=e.sheet}catch{return}if(!i){var r=setTimeout(function(){t||(a(),t=!0)},n);e.addEventListener("load",function(){clearTimeout(r),t=!0,a()})}}function Fie(e,a){var n=a.doc,t=a.mirror,i=a.blockClass,r=a.blockSelector,o=a.needsMask,s=a.inlineStylesheet,l=a.maskInputOptions,d=l===void 0?{}:l,p=a.maskTextFn,u=a.maskInputFn,g=a.dataURLOptions,b=g===void 0?{}:g,v=a.inlineImages,A=a.recordCanvas,f=a.keepIframeSrcFn,S=a.newlyAddedElement,C=S===void 0?!1:S,T=a.cssCaptured,E=T===void 0?!1:T,P=Lie(n,t);switch(e.nodeType){case e.DOCUMENT_NODE:return e.compatMode!=="CSS1Compat"?{type:It.Document,childNodes:[],compatMode:e.compatMode}:{type:It.Document,childNodes:[]};case e.DOCUMENT_TYPE_NODE:return{type:It.DocumentType,name:e.name,publicId:e.publicId,systemId:e.systemId,rootId:P};case e.ELEMENT_NODE:return Oie(e,{doc:n,blockClass:i,blockSelector:r,inlineStylesheet:s,maskInputOptions:d,maskInputFn:u,dataURLOptions:b,inlineImages:v,recordCanvas:A,keepIframeSrcFn:f,newlyAddedElement:C,rootId:P});case e.TEXT_NODE:return jie(e,{doc:n,needsMask:o,maskTextFn:p,rootId:P,cssCaptured:E});case e.CDATA_SECTION_NODE:return{type:It.CDATA,textContent:"",rootId:P};case e.COMMENT_NODE:return{type:It.Comment,textContent:qt.textContent(e)||"",rootId:P};default:return!1}}function Lie(e,a){if(a.hasNode(e)){var n=a.getId(e);return n===1?void 0:n}}function jie(e,a){var n=a.needsMask,t=a.maskTextFn,i=a.rootId,r=a.cssCaptured,o=qt.parentNode(e),s=o&&o.tagName,l="",d=s==="STYLE"?!0:void 0,p=s==="SCRIPT"?!0:void 0;return p?l="SCRIPT_PLACEHOLDER":r||(l=qt.textContent(e),d&&l&&(l=Kl(l,Ig(a.doc)))),!d&&!p&&l&&n&&(l=t?t(l,qt.parentElement(e)):l.replace(/[\S]/g,"*")),{type:It.Text,textContent:l||"",rootId:i}}function Oie(e,a){for(var n=a.doc,t=a.blockClass,i=a.blockSelector,r=a.inlineStylesheet,o=a.maskInputOptions,s=o===void 0?{}:o,l=a.maskInputFn,d=a.dataURLOptions,p=d===void 0?{}:d,u=a.inlineImages,g=a.recordCanvas,b=a.keepIframeSrcFn,v=a.newlyAddedElement,A=v===void 0?!1:v,f=a.rootId,S=zie(e,t,i),C=Pie(e),T={},E=e.attributes.length,P=0;P<E;P++){var I=e.attributes[P];Dw(C,I.name,I.value)||(T[I.name]=Cw(n,C,Ti(I.name),I.value))}if(C==="link"&&r){var L=Array.from(n.styleSheets).find(function(de){return de.href===e.href}),N=null;L&&(N=mp(L)),N&&(delete T.rel,delete T.href,T._cssText=N)}if(C==="style"&&e.sheet){var Z=mp(e.sheet);Z&&(e.childNodes.length>1&&(Z=Die(Z,e)),T._cssText=Z)}if(C==="input"||C==="textarea"||C==="select"){var R=e.value,Y=e.checked;T.type!=="radio"&&T.type!=="checkbox"&&T.type!=="submit"&&T.type!=="button"&&R?T.value=Hl({element:e,type:Yl(e),tagName:C,value:R,maskInputOptions:s,maskInputFn:l}):Y&&(T.checked=Y)}if(C==="option"&&(e.selected&&!s.select?T.selected=!0:delete T.selected),C==="dialog"&&e.open&&(T.rr_open_mode=e.matches("dialog:modal")?"modal":"non-modal"),C==="canvas"&&g){if(e.__context==="2d")bie(e)||(T.rr_dataURL=e.toDataURL(p.type,p.quality));else if(!("__context"in e)){var $=e.toDataURL(p.type,p.quality),F=n.createElement("canvas");F.width=e.width,F.height=e.height;var j=F.toDataURL(p.type,p.quality);$!==j&&(T.rr_dataURL=$)}}if(C==="img"&&u){Yi||(Yi=n.createElement("canvas"),hv=Yi.getContext("2d"));var H=e,X=H.currentSrc||H.getAttribute("src")||"<unknown-src>",ie=H.crossOrigin,te=function(){H.removeEventListener("load",te);try{Yi.width=H.naturalWidth,Yi.height=H.naturalHeight,hv.drawImage(H,0,0),T.rr_dataURL=Yi.toDataURL(p.type,p.quality)}catch{if(H.crossOrigin!=="anonymous"){H.crossOrigin="anonymous",H.complete&&H.naturalWidth!==0?te():H.addEventListener("load",te);return}}H.crossOrigin==="anonymous"&&(ie?T.crossOrigin=ie:H.removeAttribute("crossorigin"))};H.complete&&H.naturalWidth!==0?te():H.addEventListener("load",te)}if(C==="audio"||C==="video"){var oe=T;oe.rr_mediaState=e.paused?"paused":"played",oe.rr_mediaCurrentTime=e.currentTime,oe.rr_mediaPlaybackRate=e.playbackRate,oe.rr_mediaMuted=e.muted,oe.rr_mediaLoop=e.loop,oe.rr_mediaVolume=e.volume}if(A||(e.scrollLeft&&(T.rr_scrollLeft=e.scrollLeft),e.scrollTop&&(T.rr_scrollTop=e.scrollTop)),S){var ae=e.getBoundingClientRect(),Me=ae.width,Ne=ae.height;T={class:T.class,rr_width:""+Me+"px",rr_height:""+Ne+"px"}}C==="iframe"&&!b(T.src)&&(e.contentDocument||(T.rr_src=T.src),delete T.src);var re;try{customElements.get(C)&&(re=!0)}catch{}return{type:It.Element,tagName:C,attributes:T,childNodes:[],isSVG:Rie(e)||void 0,needBlock:S,rootId:f,isCustom:re}}function Ke(e){return e==null?"":e.toLowerCase()}function Bie(e,a){if(a.comment&&e.type===It.Comment)return!0;if(e.type===It.Element){if(a.script&&(e.tagName==="script"||e.tagName==="link"&&(e.attributes.rel==="preload"&&e.attributes.as==="script"||e.attributes.rel==="modulepreload")||e.tagName==="link"&&e.attributes.rel==="prefetch"&&typeof e.attributes.href=="string"&&Aw(e.attributes.href)==="js"))return!0;if(a.headFavicon&&(e.tagName==="link"&&e.attributes.rel==="shortcut icon"||e.tagName==="meta"&&(Ke(e.attributes.name).match(/^msapplication-tile(image|color)$/)||Ke(e.attributes.name)==="application-name"||Ke(e.attributes.rel)==="icon"||Ke(e.attributes.rel)==="apple-touch-icon"||Ke(e.attributes.rel)==="shortcut icon")))return!0;if(e.tagName==="meta"){if(a.headMetaDescKeywords&&Ke(e.attributes.name).match(/^description|keywords$/))return!0;if(a.headMetaSocial&&(Ke(e.attributes.property).match(/^(og|twitter|fb):/)||Ke(e.attributes.name).match(/^(og|twitter):/)||Ke(e.attributes.name)==="pinterest"))return!0;if(a.headMetaRobots&&(Ke(e.attributes.name)==="robots"||Ke(e.attributes.name)==="googlebot"||Ke(e.attributes.name)==="bingbot"))return!0;if(a.headMetaHttpEquiv&&e.attributes["http-equiv"]!==void 0)return!0;if(a.headMetaAuthorship&&(Ke(e.attributes.name)==="author"||Ke(e.attributes.name)==="generator"||Ke(e.attributes.name)==="framework"||Ke(e.attributes.name)==="publisher"||Ke(e.attributes.name)==="progid"||Ke(e.attributes.property).match(/^article:/)||Ke(e.attributes.property).match(/^product:/)))return!0;if(a.headMetaVerification&&(Ke(e.attributes.name)==="google-site-verification"||Ke(e.attributes.name)==="yandex-verification"||Ke(e.attributes.name)==="csrf-token"||Ke(e.attributes.name)==="p:domain_verify"||Ke(e.attributes.name)==="verify-v1"||Ke(e.attributes.name)==="verification"||Ke(e.attributes.name)==="shopify-checkout-api-token"))return!0}}return!1}function nr(e,a){var n=a.doc,t=a.mirror,i=a.blockClass,r=a.blockSelector,o=a.maskTextClass,s=a.maskTextSelector,l=a.skipChild,d=l===void 0?!1:l,p=a.inlineStylesheet,u=p===void 0?!0:p,g=a.maskInputOptions,b=g===void 0?{}:g,v=a.maskTextFn,A=a.maskInputFn,f=a.slimDOMOptions,S=a.dataURLOptions,C=S===void 0?{}:S,T=a.inlineImages,E=T===void 0?!1:T,P=a.recordCanvas,I=P===void 0?!1:P,L=a.onSerialize,N=a.onIframeLoad,Z=a.iframeLoadTimeout,R=Z===void 0?5e3:Z,Y=a.onStylesheetLoad,$=a.stylesheetLoadTimeout,F=$===void 0?5e3:$,j=a.keepIframeSrcFn,H=j===void 0?function(){return!1}:j,X=a.newlyAddedElement,ie=X===void 0?!1:X,te=a.cssCaptured,oe=te===void 0?!1:te,ae=a.needsMask,Me=a.preserveWhiteSpace,Ne=Me===void 0?!0:Me;if(!ae){var re=ae===void 0;ae=Tw(e,o,s,re)}var de=Fie(e,{doc:n,mirror:t,blockClass:i,blockSelector:r,needsMask:ae,inlineStylesheet:u,maskInputOptions:b,maskTextFn:v,maskInputFn:A,dataURLOptions:C,inlineImages:E,recordCanvas:I,keepIframeSrcFn:H,newlyAddedElement:ie,cssCaptured:oe});if(!de)return null;var q;t.hasNode(e)?q=t.getId(e):Bie(de,f)||!Ne&&de.type===It.Text&&!de.textContent.replace(/^\s+|\s+$/gm,"").length?q=Do:q=Sw();var ge=Object.assign(de,{id:q});if(t.add(e,ge),q===Do)return null;L&&L(e);var Ot=!d;if(ge.type===It.Element){Ot=Ot&&!ge.needBlock,delete ge.needBlock;var Ee=qt.shadowRoot(e);Ee&&co(Ee)&&(ge.isShadowHost=!0)}if((ge.type===It.Document||ge.type===It.Element)&&Ot){f.headWhitespace&&ge.type===It.Element&&ge.tagName==="head"&&(Ne=!1);var Bt={doc:n,mirror:t,blockClass:i,blockSelector:r,needsMask:ae,maskTextClass:o,maskTextSelector:s,skipChild:d,inlineStylesheet:u,maskInputOptions:b,maskTextFn:v,maskInputFn:A,slimDOMOptions:f,dataURLOptions:C,inlineImages:E,recordCanvas:I,preserveWhiteSpace:Ne,onSerialize:L,onIframeLoad:N,iframeLoadTimeout:R,onStylesheetLoad:Y,stylesheetLoadTimeout:F,keepIframeSrcFn:H,cssCaptured:!1};if(!(ge.type===It.Element&&ge.tagName==="textarea"&&ge.attributes.value!==void 0)){ge.type===It.Element&&ge.attributes._cssText!==void 0&&typeof ge.attributes._cssText=="string"&&(Bt.cssCaptured=!0);for(var ia=B(Array.from(qt.childNodes(e))),ra;!(ra=ia()).done;){var oa=ra.value,jn=nr(oa,Bt);jn&&ge.childNodes.push(jn)}}var Kt=null;if(yw(e)&&(Kt=qt.shadowRoot(e)))for(var va=B(Array.from(qt.childNodes(Kt))),ba;!(ba=va()).done;){var aa=ba.value,ya=nr(aa,Bt);ya&&(co(Kt)&&(ya.isShadow=!0),ge.childNodes.push(ya))}}var Pt=qt.parentNode(e);return Pt&&lo(Pt)&&co(Pt)&&(ge.isShadow=!0),ge.type===It.Element&&ge.tagName==="iframe"&&Mie(e,function(){var Zt=e.contentDocument;if(Zt&&N){var pt=nr(Zt,{doc:Zt,mirror:t,blockClass:i,blockSelector:r,needsMask:ae,maskTextClass:o,maskTextSelector:s,skipChild:!1,inlineStylesheet:u,maskInputOptions:b,maskTextFn:v,maskInputFn:A,slimDOMOptions:f,dataURLOptions:C,inlineImages:E,recordCanvas:I,preserveWhiteSpace:Ne,onSerialize:L,onIframeLoad:N,iframeLoadTimeout:R,onStylesheetLoad:Y,stylesheetLoadTimeout:F,keepIframeSrcFn:H});pt&&N(e,pt)}},R),ge.type===It.Element&&ge.tagName==="link"&&typeof ge.attributes.rel=="string"&&(ge.attributes.rel==="stylesheet"||ge.attributes.rel==="preload"&&typeof ge.attributes.href=="string"&&Aw(ge.attributes.href)==="css")&&Nie(e,function(){if(Y){var Zt=nr(e,{doc:n,mirror:t,blockClass:i,blockSelector:r,needsMask:ae,maskTextClass:o,maskTextSelector:s,skipChild:!1,inlineStylesheet:u,maskInputOptions:b,maskTextFn:v,maskInputFn:A,slimDOMOptions:f,dataURLOptions:C,inlineImages:E,recordCanvas:I,preserveWhiteSpace:Ne,onSerialize:L,onIframeLoad:N,iframeLoadTimeout:R,onStylesheetLoad:Y,stylesheetLoadTimeout:F,keepIframeSrcFn:H});Zt&&Y(e,Zt)}},F),ge}function Uie(e,a){var n=a||{},t=n.mirror,i=t===void 0?new ww:t,r=n.blockClass,o=r===void 0?"rr-block":r,s=n.blockSelector,l=s===void 0?null:s,d=n.maskTextClass,p=d===void 0?"rr-mask":d,u=n.maskTextSelector,g=u===void 0?null:u,b=n.inlineStylesheet,v=b===void 0?!0:b,A=n.inlineImages,f=A===void 0?!1:A,S=n.recordCanvas,C=S===void 0?!1:S,T=n.maskAllInputs,E=T===void 0?!1:T,P=n.maskTextFn,I=n.maskInputFn,L=n.slimDOM,N=L===void 0?!1:L,Z=n.dataURLOptions,R=n.preserveWhiteSpace,Y=n.onSerialize,$=n.onIframeLoad,F=n.iframeLoadTimeout,j=n.onStylesheetLoad,H=n.stylesheetLoadTimeout,X=n.keepIframeSrcFn,ie=X===void 0?function(){return!1}:X,te=E===!0?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:E===!1?{password:!0}:E,oe=N===!0||N==="all"?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaDescKeywords:N==="all",headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaAuthorship:!0,headMetaVerification:!0}:N===!1?{}:N;return nr(e,{doc:e,mirror:i,blockClass:o,blockSelector:l,maskTextClass:p,maskTextSelector:g,skipChild:!1,inlineStylesheet:v,maskInputOptions:te,maskTextFn:P,maskInputFn:I,slimDOMOptions:oe,dataURLOptions:Z,inlineImages:f,recordCanvas:C,preserveWhiteSpace:R,onSerialize:Y,onIframeLoad:$,iframeLoadTimeout:F,onStylesheetLoad:j,stylesheetLoadTimeout:H,keepIframeSrcFn:ie,newlyAddedElement:!1})}function qie(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Vie(e){if(e.__esModule)return e;var a=e.default;if(typeof a=="function"){var n=function t(){return le(this,t)?Reflect.construct(a,arguments,this.constructor):a.apply(this,arguments)};n.prototype=a.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),n}var Rg={exports:{}},Xe=String,Ew=function(){return{isColorSupported:!1,reset:Xe,bold:Xe,dim:Xe,italic:Xe,underline:Xe,inverse:Xe,hidden:Xe,strikethrough:Xe,black:Xe,red:Xe,green:Xe,yellow:Xe,blue:Xe,magenta:Xe,cyan:Xe,white:Xe,gray:Xe,bgBlack:Xe,bgRed:Xe,bgGreen:Xe,bgYellow:Xe,bgBlue:Xe,bgMagenta:Xe,bgCyan:Xe,bgWhite:Xe}};Rg.exports=Ew();Rg.exports.createColors=Ew;var $ie=Rg.exports,Wie={},Gie=Object.freeze(Object.defineProperty({__proto__:null,default:Wie},Symbol.toStringTag,{value:"Module"})),bt=Vie(Gie),vv=$ie,bv=bt,gp=(function(e){lt(a,e);function a(t,i,r,o,s,l){var d;return d=e.call(this,t)||this,d.name="CssSyntaxError",d.reason=t,s&&(d.file=s),o&&(d.source=o),l&&(d.plugin=l),typeof i<"u"&&typeof r<"u"&&(typeof i=="number"?(d.line=i,d.column=r):(d.line=i.line,d.column=i.column,d.endLine=r.line,d.endColumn=r.column)),d.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(d,a),d}var n=a.prototype;return n.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},n.showSourceCode=function(i){var r=this;if(!this.source)return"";var o=this.source;i==null&&(i=vv.isColorSupported),bv&&i&&(o=bv(o));var s=o.split(/\r?\n/),l=Math.max(this.line-3,0),d=Math.min(this.line+2,s.length),p=String(d).length,u,g;if(i){var b=vv.createColors(!0),v=b.bold,A=b.gray,f=b.red;u=function(S){return v(f(S))},g=function(S){return A(S)}}else u=g=function(S){return S};return s.slice(l,d).map(function(S,C){var T=l+1+C,E=" "+(" "+T).slice(-p)+" | ";if(T===r.line){var P=g(E.replace(/\d/g," "))+S.slice(0,r.column-1).replace(/[^\t]/g," ");return u(">")+g(E)+S+`
 `+P+u("^")}return" "+g(E)+S}).join(`
`)},n.toString=function(){var i=this.showSourceCode();return i&&(i=`

`+i+`
`),this.name+": "+this.message+i},a})(Co(Error)),zg=gp;gp.default=gp;var ri={};ri.isClean=Symbol("isClean");ri.my=Symbol("my");var yv={after:`
`,beforeClose:`
`,beforeComment:`
`,beforeDecl:`
`,beforeOpen:" ",beforeRule:`
`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:"    ",semicolon:!1};function Hie(e){return e[0].toUpperCase()+e.slice(1)}var hp=(function(){function e(n){this.builder=n}var a=e.prototype;return a.atrule=function(t,i){var r="@"+t.name,o=t.params?this.rawValue(t,"params"):"";if(typeof t.raws.afterName<"u"?r+=t.raws.afterName:o&&(r+=" "),t.nodes)this.block(t,r+o);else{var s=(t.raws.between||"")+(i?";":"");this.builder(r+o+s,t)}},a.beforeAfter=function(t,i){var r;t.type==="decl"?r=this.raw(t,null,"beforeDecl"):t.type==="comment"?r=this.raw(t,null,"beforeComment"):i==="before"?r=this.raw(t,null,"beforeRule"):r=this.raw(t,null,"beforeClose");for(var o=t.parent,s=0;o&&o.type!=="root";)s+=1,o=o.parent;if(r.includes(`
`)){var l=this.raw(t,null,"indent");if(l.length)for(var d=0;d<s;d++)r+=l}return r},a.block=function(t,i){var r=this.raw(t,"between","beforeOpen");this.builder(i+r+"{",t,"start");var o;t.nodes&&t.nodes.length?(this.body(t),o=this.raw(t,"after")):o=this.raw(t,"after","emptyBody"),o&&this.builder(o),this.builder("}",t,"end")},a.body=function(t){for(var i=t.nodes.length-1;i>0&&t.nodes[i].type==="comment";)i-=1;for(var r=this.raw(t,"semicolon"),o=0;o<t.nodes.length;o++){var s=t.nodes[o],l=this.raw(s,"before");l&&this.builder(l),this.stringify(s,i!==o||r)}},a.comment=function(t){var i=this.raw(t,"left","commentLeft"),r=this.raw(t,"right","commentRight");this.builder("/*"+i+t.text+r+"*/",t)},a.decl=function(t,i){var r=this.raw(t,"between","colon"),o=t.prop+r+this.rawValue(t,"value");t.important&&(o+=t.raws.important||" !important"),i&&(o+=";"),this.builder(o,t)},a.document=function(t){this.body(t)},a.raw=function(t,i,r){var o;if(r||(r=i),i&&(o=t.raws[i],typeof o<"u"))return o;var s=t.parent;if(r==="before"&&(!s||s.type==="root"&&s.first===t||s&&s.type==="document"))return"";if(!s)return yv[r];var l=t.root();if(l.rawCache||(l.rawCache={}),typeof l.rawCache[r]<"u")return l.rawCache[r];if(r==="before"||r==="after")return this.beforeAfter(t,r);var d="raw"+Hie(r);return this[d]?o=this[d](l,t):l.walk(function(p){if(o=p.raws[i],typeof o<"u")return!1}),typeof o>"u"&&(o=yv[r]),l.rawCache[r]=o,o},a.rawBeforeClose=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length>0&&typeof r.raws.after<"u")return i=r.raws.after,i.includes(`
`)&&(i=i.replace(/[^\n]+$/,"")),!1}),i&&(i=i.replace(/\S/g,"")),i},a.rawBeforeComment=function(t,i){var r;return t.walkComments(function(o){if(typeof o.raws.before<"u")return r=o.raws.before,r.includes(`
`)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r>"u"?r=this.raw(i,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},a.rawBeforeDecl=function(t,i){var r;return t.walkDecls(function(o){if(typeof o.raws.before<"u")return r=o.raws.before,r.includes(`
`)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r>"u"?r=this.raw(i,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},a.rawBeforeOpen=function(t){var i;return t.walk(function(r){if(r.type!=="decl"&&(i=r.raws.between,typeof i<"u"))return!1}),i},a.rawBeforeRule=function(t){var i;return t.walk(function(r){if(r.nodes&&(r.parent!==t||t.first!==r)&&typeof r.raws.before<"u")return i=r.raws.before,i.includes(`
`)&&(i=i.replace(/[^\n]+$/,"")),!1}),i&&(i=i.replace(/\S/g,"")),i},a.rawColon=function(t){var i;return t.walkDecls(function(r){if(typeof r.raws.between<"u")return i=r.raws.between.replace(/[^\s:]/g,""),!1}),i},a.rawEmptyBody=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length===0&&(i=r.raws.after,typeof i<"u"))return!1}),i},a.rawIndent=function(t){if(t.raws.indent)return t.raws.indent;var i;return t.walk(function(r){var o=r.parent;if(o&&o!==t&&o.parent&&o.parent===t&&typeof r.raws.before<"u"){var s=r.raws.before.split(`
`);return i=s[s.length-1],i=i.replace(/\S/g,""),!1}}),i},a.rawSemicolon=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length&&r.last.type==="decl"&&(i=r.raws.semicolon,typeof i<"u"))return!1}),i},a.rawValue=function(t,i){var r=t[i],o=t.raws[i];return o&&o.value===r?o.raw:r},a.root=function(t){this.body(t),t.raws.after&&this.builder(t.raws.after)},a.rule=function(t){this.block(t,this.rawValue(t,"selector")),t.raws.ownSemicolon&&this.builder(t.raws.ownSemicolon,t,"end")},a.stringify=function(t,i){if(!this[t.type])throw new Error("Unknown AST node type "+t.type+". Maybe you need to change PostCSS stringifier.");this[t.type](t,i)},e})(),Pw=hp;hp.default=hp;var Yie=Pw;function fp(e,a){var n=new Yie(a);n.stringify(e)}var Xc=fp;fp.default=fp;var Ps=ri.isClean,Kie=ri.my,Zie=zg,Jie=Pw,Qie=Xc;function vp(e,a){var n=new e.constructor;for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t!=="proxyCache"){var i=e[t],r=typeof i>"u"?"undefined":ce(i);t==="parent"&&r==="object"?a&&(n[t]=a):t==="source"?n[t]=i:Array.isArray(i)?n[t]=i.map(function(o){return vp(o,n)}):(r==="object"&&i!==null&&(i=vp(i)),n[t]=i)}return n}var bp=(function(){function e(n){n===void 0&&(n={}),this.raws={},this[Ps]=!1,this[Kie]=!0;for(var t in n)if(t==="nodes"){this.nodes=[];for(var i=B(n[t]),r;!(r=i()).done;){var o=r.value;typeof o.clone=="function"?this.append(o.clone()):this.append(o)}}else this[t]=n[t]}var a=e.prototype;return a.addToError=function(t){if(t.postcssNode=this,t.stack&&this.source&&/\n\s{4}at /.test(t.stack)){var i=this.source;t.stack=t.stack.replace(/\n\s{4}at /,"$&"+i.input.from+":"+i.start.line+":"+i.start.column+"$&")}return t},a.after=function(t){return this.parent.insertAfter(this,t),this},a.assign=function(t){t===void 0&&(t={});for(var i in t)this[i]=t[i];return this},a.before=function(t){return this.parent.insertBefore(this,t),this},a.cleanRaws=function(t){delete this.raws.before,delete this.raws.after,t||delete this.raws.between},a.clone=function(t){t===void 0&&(t={});var i=vp(this);for(var r in t)i[r]=t[r];return i},a.cloneAfter=function(t){t===void 0&&(t={});var i=this.clone(t);return this.parent.insertAfter(this,i),i},a.cloneBefore=function(t){t===void 0&&(t={});var i=this.clone(t);return this.parent.insertBefore(this,i),i},a.error=function(t,i){if(i===void 0&&(i={}),this.source){var r=this.rangeBy(i),o=r.end,s=r.start;return this.source.input.error(t,{column:s.column,line:s.line},{column:o.column,line:o.line},i)}return new Zie(t)},a.getProxyProcessor=function(){return{get:function(i,r){return r==="proxyOf"?i:r==="root"?function(){return i.root().toProxy()}:i[r]},set:function(i,r,o){return i[r]===o||(i[r]=o,(r==="prop"||r==="value"||r==="name"||r==="params"||r==="important"||r==="text")&&i.markDirty()),!0}}},a.markDirty=function(){if(this[Ps]){this[Ps]=!1;for(var t=this;t=t.parent;)t[Ps]=!1}},a.next=function(){if(this.parent){var t=this.parent.index(this);return this.parent.nodes[t+1]}},a.positionBy=function(t,i){var r=this.source.start;if(t.index)r=this.positionInside(t.index,i);else if(t.word){i=this.toString();var o=i.indexOf(t.word);o!==-1&&(r=this.positionInside(o,i))}return r},a.positionInside=function(t,i){for(var r=i||this.toString(),o=this.source.start.column,s=this.source.start.line,l=0;l<t;l++)r[l]===`
`?(o=1,s+=1):o+=1;return{column:o,line:s}},a.prev=function(){if(this.parent){var t=this.parent.index(this);return this.parent.nodes[t-1]}},a.rangeBy=function(t){var i={column:this.source.start.column,line:this.source.start.line},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line}:{column:i.column+1,line:i.line};if(t.word){var o=this.toString(),s=o.indexOf(t.word);s!==-1&&(i=this.positionInside(s,o),r=this.positionInside(s+t.word.length,o))}else t.start?i={column:t.start.column,line:t.start.line}:t.index&&(i=this.positionInside(t.index)),t.end?r={column:t.end.column,line:t.end.line}:typeof t.endIndex=="number"?r=this.positionInside(t.endIndex):t.index&&(r=this.positionInside(t.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line}),{end:r,start:i}},a.raw=function(t,i){var r=new Jie;return r.raw(this,t,i)},a.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},a.replaceWith=function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];if(this.parent){for(var o=this,s=!1,l=B(i),d;!(d=l()).done;){var p=d.value;p===this?s=!0:s?(this.parent.insertAfter(o,p),o=p):this.parent.insertBefore(o,p)}s||this.remove()}return this},a.root=function(){for(var t=this;t.parent&&t.parent.type!=="document";)t=t.parent;return t},a.toJSON=function(t,i){var r={},o=i==null;i=i||new Map;var s=0;for(var l in this)if(Object.prototype.hasOwnProperty.call(this,l)&&!(l==="parent"||l==="proxyCache")){var d=this[l];if(Array.isArray(d))r[l]=d.map(function(u){return(typeof u>"u"?"undefined":ce(u))==="object"&&u.toJSON?u.toJSON(null,i):u});else if((typeof d>"u"?"undefined":ce(d))==="object"&&d.toJSON)r[l]=d.toJSON(null,i);else if(l==="source"){var p=i.get(d.input);p==null&&(p=s,i.set(d.input,s),s++),r[l]={end:d.end,inputId:p,start:d.start}}else r[l]=d}return o&&(r.inputs=[].concat(i.keys()).map(function(u){return u.toJSON()})),r},a.toProxy=function(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache},a.toString=function(t){t===void 0&&(t=Qie),t.stringify&&(t=t.stringify);var i="";return t(this,function(r){i+=r}),i},a.warn=function(t,i,r){var o={node:this};for(var s in r)o[s]=r[s];return t.warn(i,o)},rt(e,[{key:"proxyOf",get:function(){return this}}]),e})(),ed=bp;bp.default=bp;var Xie=ed,yp=(function(e){lt(a,e);function a(n){var t;return n&&typeof n.value<"u"&&typeof n.value!="string"&&(n=Ce({},n,{value:String(n.value)})),t=e.call(this,n)||this,t.type="decl",t}return rt(a,[{key:"variable",get:function(){return this.prop.startsWith("--")||this.prop[0]==="$"}}]),a})(Xie),td=yp;yp.default=yp;var ere="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",tre=function(e){e===void 0&&(e=21);for(var a="",n=e;n--;)a+=ere[Math.random()*64|0];return a},are={nanoid:tre},kv=bt.SourceMapConsumer,wv=bt.SourceMapGenerator,nre=bt.existsSync,ire=bt.readFileSync,tu=bt.dirname,rre=bt.join;function ore(e){return Buffer?Buffer.from(e,"base64").toString():window.atob(e)}var kp=(function(){function e(n,t){if(t.map!==!1){this.loadAnnotation(n),this.inline=this.startWith(this.annotation,"data:");var i=t.map?t.map.prev:void 0,r=this.loadMap(t.from,i);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=tu(this.mapFile)),r&&(this.text=r)}}var a=e.prototype;return a.consumer=function(){return this.consumerCache||(this.consumerCache=new kv(this.text)),this.consumerCache},a.decodeInline=function(t){var i=/^data:application\/json;charset=utf-?8;base64,/,r=/^data:application\/json;base64,/,o=/^data:application\/json;charset=utf-?8,/,s=/^data:application\/json,/;if(o.test(t)||s.test(t))return decodeURIComponent(t.substr(RegExp.lastMatch.length));if(i.test(t)||r.test(t))return ore(t.substr(RegExp.lastMatch.length));var l=t.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+l)},a.getAnnotationURL=function(t){return t.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()},a.isMap=function(t){return(typeof t>"u"?"undefined":ce(t))!=="object"?!1:typeof t.mappings=="string"||typeof t._mappings=="string"||Array.isArray(t.sections)},a.loadAnnotation=function(t){var i=t.match(/\/\*\s*# sourceMappingURL=/gm);if(i){var r=t.lastIndexOf(i.pop()),o=t.indexOf("*/",r);r>-1&&o>-1&&(this.annotation=this.getAnnotationURL(t.substring(r,o)))}},a.loadFile=function(t){if(this.root=tu(t),nre(t))return this.mapFile=t,ire(t,"utf-8").toString().trim()},a.loadMap=function(t,i){if(i===!1)return!1;if(i){if(typeof i=="string")return i;if(typeof i=="function"){var r=i(t);if(r){var o=this.loadFile(r);if(!o)throw new Error("Unable to load previous source map: "+r.toString());return o}}else{if(le(i,kv))return wv.fromSourceMap(i).toString();if(le(i,wv))return i.toString();if(this.isMap(i))return JSON.stringify(i);throw new Error("Unsupported previous source map format: "+i.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var s=this.annotation;return t&&(s=rre(tu(t),s)),this.loadFile(s)}}},a.startWith=function(t,i){return t?t.substr(0,i.length)===i:!1},a.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e})(),_w=kp;kp.default=kp;var sre=bt.SourceMapConsumer,lre=bt.SourceMapGenerator,Av=bt.fileURLToPath,_s=bt.pathToFileURL,wp=bt.isAbsolute,Ap=bt.resolve,cre=are.nanoid,au=bt,Sv=zg,dre=_w,nu=Symbol("fromOffsetCache"),ure=!!(sre&&lre),Cv=!!(Ap&&wp),Jl=(function(){function e(n,t){if(t===void 0&&(t={}),n===null||typeof n>"u"||(typeof n>"u"?"undefined":ce(n))==="object"&&!n.toString)throw new Error("PostCSS received "+n+" instead of CSS string");if(this.css=n.toString(),this.css[0]==="\uFEFF"||this.css[0]==="￾"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Cv||/^\w+:\/\//.test(t.from)||wp(t.from)?this.file=t.from:this.file=Ap(t.from)),Cv&&ure){var i=new dre(this.css,t);if(i.text){this.map=i;var r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+cre(6)+">"),this.map&&(this.map.file=this.from)}var a=e.prototype;return a.error=function(t,i,r,o){o===void 0&&(o={});var s,l,d;if(i&&(typeof i>"u"?"undefined":ce(i))==="object"){var p=i,u=r;if(typeof p.offset=="number"){var g=this.fromOffset(p.offset);i=g.line,r=g.col}else i=p.line,r=p.column;if(typeof u.offset=="number"){var b=this.fromOffset(u.offset);l=b.line,d=b.col}else l=u.line,d=u.column}else if(!r){var v=this.fromOffset(i);i=v.line,r=v.col}var A=this.origin(i,r,l,d);return A?s=new Sv(t,A.endLine===void 0?A.line:{column:A.column,line:A.line},A.endLine===void 0?A.column:{column:A.endColumn,line:A.endLine},A.source,A.file,o.plugin):s=new Sv(t,l===void 0?i:{column:r,line:i},l===void 0?r:{column:d,line:l},this.css,this.file,o.plugin),s.input={column:r,endColumn:d,endLine:l,line:i,source:this.css},this.file&&(_s&&(s.input.url=_s(this.file).toString()),s.input.file=this.file),s},a.fromOffset=function(t){var i,r;if(this[nu])r=this[nu];else{var o=this.css.split(`
`);r=new Array(o.length);for(var s=0,l=0,d=o.length;l<d;l++)r[l]=s,s+=o[l].length+1;this[nu]=r}i=r[r.length-1];var p=0;if(t>=i)p=r.length-1;else for(var u=r.length-2,g;p<u;)if(g=p+(u-p>>1),t<r[g])u=g-1;else if(t>=r[g+1])p=g+1;else{p=g;break}return{col:t-r[p]+1,line:p+1}},a.mapResolve=function(t){return/^\w+:\/\//.test(t)?t:Ap(this.map.consumer().sourceRoot||this.map.root||".",t)},a.origin=function(t,i,r,o){if(!this.map)return!1;var s=this.map.consumer(),l=s.originalPositionFor({column:i,line:t});if(!l.source)return!1;var d;typeof r=="number"&&(d=s.originalPositionFor({column:o,line:r}));var p;wp(l.source)?p=_s(l.source):p=new URL(l.source,this.map.consumer().sourceRoot||_s(this.map.mapFile));var u={column:l.column,endColumn:d&&d.column,endLine:d&&d.line,line:l.line,url:p.toString()};if(p.protocol==="file:")if(Av)u.file=Av(p);else throw new Error("file: protocol is not available in this PostCSS build");var g=s.sourceContentFor(l.source);return g&&(u.source=g),u},a.toJSON=function(){for(var t={},i=0,r=["hasBOM","css","file","id"];i<r.length;i++){var o=r[i];this[o]!=null&&(t[o]=this[o])}return this.map&&(t.map=Ce({},this.map),t.map.consumerCache&&(t.map.consumerCache=void 0)),t},rt(e,[{key:"from",get:function(){return this.file||this.id}}]),e})(),ad=Jl;Jl.default=Jl;au&&au.registerInput&&au.registerInput(Jl);var xw=bt.SourceMapConsumer,Sl=bt.SourceMapGenerator,Cl=bt.dirname,Iw=bt.relative,Rw=bt.resolve,zw=bt.sep,Dv=bt.pathToFileURL,pre=ad,mre=!!(xw&&Sl),gre=!!(Cl&&Rw&&Iw&&zw),hre=(function(){function e(n,t,i,r){this.stringify=n,this.mapOpts=i.map||{},this.root=t,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}var a=e.prototype;return a.addAnnotation=function(){var t;this.isInline()?t="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?t=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?t=this.mapOpts.annotation(this.opts.to,this.root):t=this.outputFile()+".map";var i=`
`;this.css.includes(`\r
`)&&(i=`\r
`),this.css+=i+"/*# sourceMappingURL="+t+" */"},a.applyPrevMaps=function(){for(var t=B(this.previous()),i;!(i=t()).done;){var r=i.value,o=this.toUrl(this.path(r.file)),s=r.root||Cl(r.file),l=void 0;this.mapOpts.sourcesContent===!1?(l=new xw(r.text),l.sourcesContent&&(l.sourcesContent=null)):l=r.consumer(),this.map.applySourceMap(l,o,this.toUrl(this.path(s)))}},a.clearAnnotation=function(){if(this.mapOpts.annotation!==!1)if(this.root)for(var t,i=this.root.nodes.length-1;i>=0;i--)t=this.root.nodes[i],t.type==="comment"&&t.text.indexOf("# sourceMappingURL=")===0&&this.root.removeChild(i);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},a.generate=function(){if(this.clearAnnotation(),gre&&mre&&this.isMap())return this.generateMap();var t="";return this.stringify(this.root,function(i){t+=i}),[t]},a.generateMap=function(){if(this.root)this.generateString();else if(this.previous().length===1){var t=this.previous()[0].consumer();t.file=this.outputFile(),this.map=Sl.fromSourceMap(t,{ignoreInvalidMapping:!0})}else this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},a.generateString=function(){var t=this;this.css="",this.map=new Sl({file:this.outputFile(),ignoreInvalidMapping:!0});var i=1,r=1,o="<no source>",s={generated:{column:0,line:0},original:{column:0,line:0},source:""},l,d;this.stringify(this.root,function(p,u,g){if(t.css+=p,u&&g!=="end"&&(s.generated.line=i,s.generated.column=r-1,u.source&&u.source.start?(s.source=t.sourcePath(u),s.original.line=u.source.start.line,s.original.column=u.source.start.column-1,t.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,t.map.addMapping(s))),l=p.match(/\n/g),l?(i+=l.length,d=p.lastIndexOf(`
`),r=p.length-d):r+=p.length,u&&g!=="start"){var b=u.parent||{raws:{}},v=u.type==="decl"||u.type==="atrule"&&!u.nodes;(!v||u!==b.last||b.raws.semicolon)&&(u.source&&u.source.end?(s.source=t.sourcePath(u),s.original.line=u.source.end.line,s.original.column=u.source.end.column-1,s.generated.line=i,s.generated.column=r-2,t.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=i,s.generated.column=r-1,t.map.addMapping(s)))}})},a.isAnnotation=function(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(function(t){return t.annotation}):!0},a.isInline=function(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;var t=this.mapOpts.annotation;return typeof t<"u"&&t!==!0?!1:this.previous().length?this.previous().some(function(i){return i.inline}):!0},a.isMap=function(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0},a.isSourcesContent=function(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(function(t){return t.withContent()}):!0},a.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},a.path=function(t){if(this.mapOpts.absolute||t.charCodeAt(0)===60||/^\w+:\/\//.test(t))return t;var i=this.memoizedPaths.get(t);if(i)return i;var r=this.opts.to?Cl(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(r=Cl(Rw(r,this.mapOpts.annotation)));var o=Iw(r,t);return this.memoizedPaths.set(t,o),o},a.previous=function(){var t=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(r){if(r.source&&r.source.input.map){var o=r.source.input.map;t.previousMaps.includes(o)||t.previousMaps.push(o)}});else{var i=new pre(this.originalCSS,this.opts);i.map&&this.previousMaps.push(i.map)}return this.previousMaps},a.setSourcesContent=function(){var t=this,i={};if(this.root)this.root.walk(function(o){if(o.source){var s=o.source.input.from;if(s&&!i[s]){i[s]=!0;var l=t.usesFileUrls?t.toFileUrl(s):t.toUrl(t.path(s));t.map.setSourceContent(l,o.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(r,this.css)}},a.sourcePath=function(t){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(t.source.input.from):this.toUrl(this.path(t.source.input.from))},a.toBase64=function(t){return Buffer?Buffer.from(t).toString("base64"):window.btoa(unescape(encodeURIComponent(t)))},a.toFileUrl=function(t){var i=this.memoizedFileURLs.get(t);if(i)return i;if(Dv){var r=Dv(t).toString();return this.memoizedFileURLs.set(t,r),r}else throw new Error("`map.absolute` option is not available in this PostCSS build")},a.toUrl=function(t){var i=this.memoizedURLs.get(t);if(i)return i;zw==="\\"&&(t=t.replace(/\\/g,"/"));var r=encodeURI(t).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(t,r),r},e})(),Mw=hre,fre=ed,Sp=(function(e){lt(a,e);function a(n){var t;return t=e.call(this,n)||this,t.type="comment",t}return a})(fre),nd=Sp;Sp.default=Sp;var Nw=ri.isClean,Fw=ri.my,Lw=td,jw=nd,vre=ed,Ow,Mg,Ng,Bw;function Uw(e){return e.map(function(a){return a.nodes&&(a.nodes=Uw(a.nodes)),delete a.source,a})}function qw(e){if(e[Nw]=!1,e.proxyOf.nodes)for(var a=B(e.proxyOf.nodes),n;!(n=a()).done;){var t=n.value;qw(t)}}var xn=(function(e){lt(a,e);function a(){return e.apply(this,arguments)||this}var n=a.prototype;return n.append=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];for(var s=B(r),l;!(l=s()).done;)for(var d=l.value,p=this.normalize(d,this.last),u=B(p),g;!(g=u()).done;){var b=g.value;this.proxyOf.nodes.push(b)}return this.markDirty(),this},n.cleanRaws=function(i){if(e.prototype.cleanRaws.call(this,i),this.nodes)for(var r=B(this.nodes),o;!(o=r()).done;){var s=o.value;s.cleanRaws(i)}},n.each=function(i){if(this.proxyOf.nodes){for(var r=this.getIterator(),o,s;this.indexes[r]<this.proxyOf.nodes.length&&(o=this.indexes[r],s=i(this.proxyOf.nodes[o],o),s!==!1);)this.indexes[r]+=1;return delete this.indexes[r],s}},n.every=function(i){return this.nodes.every(i)},n.getIterator=function(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var i=this.lastEach;return this.indexes[i]=0,i},n.getProxyProcessor=function(){return{get:function(r,o){return o==="proxyOf"?r:r[o]?o==="each"||typeof o=="string"&&o.startsWith("walk")?function(){for(var s=arguments.length,l=new Array(s),d=0;d<s;d++)l[d]=arguments[d];var p;return(p=r)[o].apply(p,[].concat(l.map(function(u){return typeof u=="function"?function(g,b){return u(g.toProxy(),b)}:u})))}:o==="every"||o==="some"?function(s){return r[o](function(l){for(var d=arguments.length,p=new Array(d>1?d-1:0),u=1;u<d;u++)p[u-1]=arguments[u];return s.apply(void 0,[].concat([l.toProxy()],p))})}:o==="root"?function(){return r.root().toProxy()}:o==="nodes"?r.nodes.map(function(s){return s.toProxy()}):o==="first"||o==="last"?r[o].toProxy():r[o]:r[o]},set:function(r,o,s){return r[o]===s||(r[o]=s,(o==="name"||o==="params"||o==="selector")&&r.markDirty()),!0}}},n.index=function(i){return typeof i=="number"?i:(i.proxyOf&&(i=i.proxyOf),this.proxyOf.nodes.indexOf(i))},n.insertAfter=function(i,r){var o=this.index(i),s=this.normalize(r,this.proxyOf.nodes[o]).reverse();o=this.index(i);for(var l=B(s),d;!(d=l()).done;){var p=d.value;this.proxyOf.nodes.splice(o+1,0,p)}var u;for(var g in this.indexes)u=this.indexes[g],o<u&&(this.indexes[g]=u+s.length);return this.markDirty(),this},n.insertBefore=function(i,r){var o=this.index(i),s=o===0?"prepend":!1,l=this.normalize(r,this.proxyOf.nodes[o],s).reverse();o=this.index(i);for(var d=B(l),p;!(p=d()).done;){var u=p.value;this.proxyOf.nodes.splice(o,0,u)}var g;for(var b in this.indexes)g=this.indexes[b],o<=g&&(this.indexes[b]=g+l.length);return this.markDirty(),this},n.normalize=function(i,r){var o=this;if(typeof i=="string")i=Uw(Ow(i).nodes);else if(typeof i>"u")i=[];else if(Array.isArray(i)){i=i.slice(0);for(var s=B(i),l;!(l=s()).done;){var d=l.value;d.parent&&d.parent.removeChild(d,"ignore")}}else if(i.type==="root"&&this.type!=="document"){i=i.nodes.slice(0);for(var p=B(i),u;!(u=p()).done;){var g=u.value;g.parent&&g.parent.removeChild(g,"ignore")}}else if(i.type)i=[i];else if(i.prop){if(typeof i.value>"u")throw new Error("Value field is missed in node creation");typeof i.value!="string"&&(i.value=String(i.value)),i=[new Lw(i)]}else if(i.selector)i=[new Mg(i)];else if(i.name)i=[new Ng(i)];else if(i.text)i=[new jw(i)];else throw new Error("Unknown node type in node creation");var b=i.map(function(v){return v[Fw]||a.rebuild(v),v=v.proxyOf,v.parent&&v.parent.removeChild(v),v[Nw]&&qw(v),typeof v.raws.before>"u"&&r&&typeof r.raws.before<"u"&&(v.raws.before=r.raws.before.replace(/\S/g,"")),v.parent=o.proxyOf,v});return b},n.prepend=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];r=r.reverse();for(var s=B(r),l;!(l=s()).done;){for(var d=l.value,p=this.normalize(d,this.first,"prepend").reverse(),u=B(p),g;!(g=u()).done;){var b=g.value;this.proxyOf.nodes.unshift(b)}for(var v in this.indexes)this.indexes[v]=this.indexes[v]+p.length}return this.markDirty(),this},n.push=function(i){return i.parent=this,this.proxyOf.nodes.push(i),this},n.removeAll=function(){for(var i=B(this.proxyOf.nodes),r;!(r=i()).done;){var o=r.value;o.parent=void 0}return this.proxyOf.nodes=[],this.markDirty(),this},n.removeChild=function(i){i=this.index(i),this.proxyOf.nodes[i].parent=void 0,this.proxyOf.nodes.splice(i,1);var r;for(var o in this.indexes)r=this.indexes[o],r>=i&&(this.indexes[o]=r-1);return this.markDirty(),this},n.replaceValues=function(i,r,o){return o||(o=r,r={}),this.walkDecls(function(s){r.props&&!r.props.includes(s.prop)||r.fast&&!s.value.includes(r.fast)||(s.value=s.value.replace(i,o))}),this.markDirty(),this},n.some=function(i){return this.nodes.some(i)},n.walk=function(i){return this.each(function(r,o){var s;try{s=i(r,o)}catch(l){throw r.addToError(l)}return s!==!1&&r.walk&&(s=r.walk(i)),s})},n.walkAtRules=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="atrule"&&i.test(o.name))return r(o,s)}):this.walk(function(o,s){if(o.type==="atrule"&&o.name===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="atrule")return r(o,s)}))},n.walkComments=function(i){return this.walk(function(r,o){if(r.type==="comment")return i(r,o)})},n.walkDecls=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="decl"&&i.test(o.prop))return r(o,s)}):this.walk(function(o,s){if(o.type==="decl"&&o.prop===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="decl")return r(o,s)}))},n.walkRules=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="rule"&&i.test(o.selector))return r(o,s)}):this.walk(function(o,s){if(o.type==="rule"&&o.selector===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="rule")return r(o,s)}))},rt(a,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),a})(vre);xn.registerParse=function(e){Ow=e};xn.registerRule=function(e){Mg=e};xn.registerAtRule=function(e){Ng=e};xn.registerRoot=function(e){Bw=e};var Ii=xn;xn.default=xn;xn.rebuild=function(e){e.type==="atrule"?Object.setPrototypeOf(e,Ng.prototype):e.type==="rule"?Object.setPrototypeOf(e,Mg.prototype):e.type==="decl"?Object.setPrototypeOf(e,Lw.prototype):e.type==="comment"?Object.setPrototypeOf(e,jw.prototype):e.type==="root"&&Object.setPrototypeOf(e,Bw.prototype),e[Fw]=!0,e.nodes&&e.nodes.forEach(function(a){xn.rebuild(a)})};var bre=Ii,Vw,$w,To=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,Ce({type:"document"},t))||this,i.nodes||(i.nodes=[]),i}var n=a.prototype;return n.toResult=function(i){i===void 0&&(i={});var r=new Vw(new $w,this,i);return r.stringify()},a})(bre);To.registerLazyResult=function(e){Vw=e};To.registerProcessor=function(e){$w=e};var Fg=To;To.default=To;var Cp=(function(){function e(n,t){if(t===void 0&&(t={}),this.type="warning",this.text=n,t.node&&t.node.source){var i=t.node.rangeBy(t);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(var r in t)this[r]=t[r]}var a=e.prototype;return a.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e})(),Ww=Cp;Cp.default=Cp;var yre=Ww,Dp=(function(){function e(n,t,i){this.processor=n,this.messages=[],this.root=t,this.opts=i,this.css=void 0,this.map=void 0}var a=e.prototype;return a.toString=function(){return this.css},a.warn=function(t,i){i===void 0&&(i={}),i.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(i.plugin=this.lastPlugin.postcssPlugin);var r=new yre(t,i);return this.messages.push(r),r},a.warnings=function(){return this.messages.filter(function(t){return t.type==="warning"})},rt(e,[{key:"content",get:function(){return this.css}}]),e})(),Lg=Dp;Dp.default=Dp;var iu=39,Tv=34,xs=92,Ev=47,Is=10,Jr=32,Rs=12,zs=9,Ms=13,kre=91,wre=93,Are=40,Sre=41,Cre=123,Dre=125,Tre=59,Ere=42,Pre=58,_re=64,Ns=/[\t\n\f\r "#'()/;[\\\]{}]/g,Fs=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,xre=/.[\r\n"'(/\\]/,Pv=/[\da-f]/i,Ire=function(a,n){n===void 0&&(n={});var t=a.css.valueOf(),i=n.ignoreErrors,r,o,s,l,d,p,u,g,b,v,A=t.length,f=0,S=[],C=[];function T(){return f}function E(N){throw a.error("Unclosed "+N,f)}function P(){return C.length===0&&f>=A}function I(N){if(C.length)return C.pop();if(!(f>=A)){var Z=N?N.ignoreUnclosed:!1;switch(r=t.charCodeAt(f),r){case Is:case Jr:case zs:case Ms:case Rs:{o=f;do o+=1,r=t.charCodeAt(o);while(r===Jr||r===Is||r===zs||r===Ms||r===Rs);v=["space",t.slice(f,o)],f=o-1;break}case kre:case wre:case Cre:case Dre:case Pre:case Tre:case Sre:{var R=String.fromCharCode(r);v=[R,R,f];break}case Are:{if(g=S.length?S.pop()[1]:"",b=t.charCodeAt(f+1),g==="url"&&b!==iu&&b!==Tv&&b!==Jr&&b!==Is&&b!==zs&&b!==Rs&&b!==Ms){o=f;do{if(p=!1,o=t.indexOf(")",o+1),o===-1)if(i||Z){o=f;break}else E("bracket");for(u=o;t.charCodeAt(u-1)===xs;)u-=1,p=!p}while(p);v=["brackets",t.slice(f,o+1),f,o],f=o}else o=t.indexOf(")",f+1),l=t.slice(f,o+1),o===-1||xre.test(l)?v=["(","(",f]:(v=["brackets",l,f,o],f=o);break}case iu:case Tv:{s=r===iu?"'":'"',o=f;do{if(p=!1,o=t.indexOf(s,o+1),o===-1)if(i||Z){o=f+1;break}else E("string");for(u=o;t.charCodeAt(u-1)===xs;)u-=1,p=!p}while(p);v=["string",t.slice(f,o+1),f,o],f=o;break}case _re:{Ns.lastIndex=f+1,Ns.test(t),Ns.lastIndex===0?o=t.length-1:o=Ns.lastIndex-2,v=["at-word",t.slice(f,o+1),f,o],f=o;break}case xs:{for(o=f,d=!0;t.charCodeAt(o+1)===xs;)o+=1,d=!d;if(r=t.charCodeAt(o+1),d&&r!==Ev&&r!==Jr&&r!==Is&&r!==zs&&r!==Ms&&r!==Rs&&(o+=1,Pv.test(t.charAt(o)))){for(;Pv.test(t.charAt(o+1));)o+=1;t.charCodeAt(o+1)===Jr&&(o+=1)}v=["word",t.slice(f,o+1),f,o],f=o;break}default:{r===Ev&&t.charCodeAt(f+1)===Ere?(o=t.indexOf("*/",f+2)+1,o===0&&(i||Z?o=t.length:E("comment")),v=["comment",t.slice(f,o+1),f,o],f=o):(Fs.lastIndex=f+1,Fs.test(t),Fs.lastIndex===0?o=t.length-1:o=Fs.lastIndex-2,v=["word",t.slice(f,o+1),f,o],S.push(v),f=o);break}}return f++,v}}function L(N){C.push(N)}return{back:L,endOfFile:P,nextToken:I,position:T}},Gw=Ii,Ql=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,t)||this,i.type="atrule",i}var n=a.prototype;return n.append=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];var s;return this.proxyOf.nodes||(this.nodes=[]),(s=e.prototype.append).call.apply(s,[].concat([this],r))},n.prepend=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];var s;return this.proxyOf.nodes||(this.nodes=[]),(s=e.prototype.prepend).call.apply(s,[].concat([this],r))},a})(Gw),jg=Ql;Ql.default=Ql;Gw.registerAtRule(Ql);var Hw=Ii,Yw,Kw,fr=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,t)||this,i.type="root",i.nodes||(i.nodes=[]),i}var n=a.prototype;return n.normalize=function(i,r,o){var s=e.prototype.normalize.call(this,i);if(r){if(o==="prepend")this.nodes.length>1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var l=B(s),d;!(d=l()).done;){var p=d.value;p.raws.before=r.raws.before}}return s},n.removeChild=function(i,r){var o=this.index(i);return!r&&o===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[o].raws.before),e.prototype.removeChild.call(this,i)},n.toResult=function(i){i===void 0&&(i={});var r=new Yw(new Kw,this,i);return r.stringify()},a})(Hw);fr.registerLazyResult=function(e){Yw=e};fr.registerProcessor=function(e){Kw=e};var es=fr;fr.default=fr;Hw.registerRoot(fr);var Eo={comma:function(a){return Eo.split(a,[","],!0)},space:function(a){var n=[" ",`
`,"	"];return Eo.split(a,n)},split:function(a,n,t){for(var i=[],r="",o=!1,s=0,l=!1,d="",p=!1,u=B(a),g;!(g=u()).done;){var b=g.value;p?p=!1:b==="\\"?p=!0:l?b===d&&(l=!1):b==='"'||b==="'"?(l=!0,d=b):b==="("?s+=1:b===")"?s>0&&(s-=1):s===0&&n.includes(b)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=b}return(t||r!=="")&&i.push(r.trim()),i}},Zw=Eo;Eo.default=Eo;var Jw=Ii,Rre=Zw,Xl=(function(e){lt(a,e);function a(n){var t;return t=e.call(this,n)||this,t.type="rule",t.nodes||(t.nodes=[]),t}return rt(a,[{key:"selectors",get:function(){return Rre.comma(this.selector)},set:function(t){var i=this.selector?this.selector.match(/,\s*/):null,r=i?i[0]:","+this.raw("between","beforeOpen");this.selector=t.join(r)}}]),a})(Jw),Og=Xl;Xl.default=Xl;Jw.registerRule(Xl);var zre=td,Mre=Ire,Nre=nd,Fre=jg,Lre=es,_v=Og,xv={empty:!0,space:!0};function jre(e){for(var a=e.length-1;a>=0;a--){var n=e[a],t=n[3]||n[2];if(t)return t}}var Ore=(function(){function e(n){this.input=n,this.root=new Lre,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:n,start:{column:1,line:1,offset:0}}}var a=e.prototype;return a.atrule=function(t){var i=new Fre;i.name=t[1].slice(1),i.name===""&&this.unnamedAtrule(i,t),this.init(i,t[2]);for(var r,o,s,l=!1,d=!1,p=[],u=[];!this.tokenizer.endOfFile();){if(t=this.tokenizer.nextToken(),r=t[0],r==="("||r==="["?u.push(r==="("?")":"]"):r==="{"&&u.length>0?u.push("}"):r===u[u.length-1]&&u.pop(),u.length===0)if(r===";"){i.source.end=this.getPosition(t[2]),i.source.end.offset++,this.semicolon=!0;break}else if(r==="{"){d=!0;break}else if(r==="}"){if(p.length>0){for(s=p.length-1,o=p[s];o&&o[0]==="space";)o=p[--s];o&&(i.source.end=this.getPosition(o[3]||o[2]),i.source.end.offset++)}this.end(t);break}else p.push(t);else p.push(t);if(this.tokenizer.endOfFile()){l=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(p),p.length?(i.raws.afterName=this.spacesAndCommentsFromStart(p),this.raw(i,"params",p),l&&(t=p[p.length-1],i.source.end=this.getPosition(t[3]||t[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),d&&(i.nodes=[],this.current=i)},a.checkMissedSemicolon=function(t){var i=this.colon(t);if(i!==!1){for(var r=0,o,s=i-1;s>=0&&(o=t[s],!(o[0]!=="space"&&(r+=1,r===2)));s--);throw this.input.error("Missed semicolon",o[0]==="word"?o[3]+1:o[2])}},a.colon=function(t){for(var i=0,r,o,s,l=B(t.entries()),d;!(d=l()).done;){var p=d.value,u=p[0],g=p[1];if(r=g,o=r[0],o==="("&&(i+=1),o===")"&&(i-=1),i===0&&o===":")if(!s)this.doubleColon(r);else{if(s[0]==="word"&&s[1]==="progid")continue;return u}s=r}return!1},a.comment=function(t){var i=new Nre;this.init(i,t[2]),i.source.end=this.getPosition(t[3]||t[2]),i.source.end.offset++;var r=t[1].slice(2,-2);if(/^\s*$/.test(r))i.text="",i.raws.left=r,i.raws.right="";else{var o=r.match(/^(\s*)([^]*\S)(\s*)$/);i.text=o[2],i.raws.left=o[1],i.raws.right=o[3]}},a.createTokenizer=function(){this.tokenizer=Mre(this.input)},a.decl=function(t,i){var r=new zre;this.init(r,t[0][2]);var o=t[t.length-1];for(o[0]===";"&&(this.semicolon=!0,t.pop()),r.source.end=this.getPosition(o[3]||o[2]||jre(t)),r.source.end.offset++;t[0][0]!=="word";)t.length===1&&this.unknownWord(t),r.raws.before+=t.shift()[1];for(r.source.start=this.getPosition(t[0][2]),r.prop="";t.length;){var s=t[0][0];if(s===":"||s==="space"||s==="comment")break;r.prop+=t.shift()[1]}r.raws.between="";for(var l;t.length;)if(l=t.shift(),l[0]===":"){r.raws.between+=l[1];break}else l[0]==="word"&&/\w/.test(l[1])&&this.unknownWord([l]),r.raws.between+=l[1];(r.prop[0]==="_"||r.prop[0]==="*")&&(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var d=[],p;t.length&&(p=t[0][0],!(p!=="space"&&p!=="comment"));)d.push(t.shift());this.precheckMissedSemicolon(t);for(var u=t.length-1;u>=0;u--){if(l=t[u],l[1].toLowerCase()==="!important"){r.important=!0;var g=this.stringFrom(t,u);g=this.spacesFromEnd(t)+g,g!==" !important"&&(r.raws.important=g);break}else if(l[1].toLowerCase()==="important"){for(var b=t.slice(0),v="",A=u;A>0;A--){var f=b[A][0];if(v.trim().indexOf("!")===0&&f!=="space")break;v=b.pop()[1]+v}v.trim().indexOf("!")===0&&(r.important=!0,r.raws.important=v,t=b)}if(l[0]!=="space"&&l[0]!=="comment")break}var S=t.some(function(C){return C[0]!=="space"&&C[0]!=="comment"});S&&(r.raws.between+=d.map(function(C){return C[1]}).join(""),d=[]),this.raw(r,"value",d.concat(t),i),r.value.includes(":")&&!i&&this.checkMissedSemicolon(t)},a.doubleColon=function(t){throw this.input.error("Double colon",{offset:t[2]},{offset:t[2]+t[1].length})},a.emptyRule=function(t){var i=new _v;this.init(i,t[2]),i.selector="",i.raws.between="",this.current=i},a.end=function(t){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(t[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(t)},a.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},a.freeSemicolon=function(t){if(this.spaces+=t[1],this.current.nodes){var i=this.current.nodes[this.current.nodes.length-1];i&&i.type==="rule"&&!i.raws.ownSemicolon&&(i.raws.ownSemicolon=this.spaces,this.spaces="")}},a.getPosition=function(t){var i=this.input.fromOffset(t);return{column:i.col,line:i.line,offset:t}},a.init=function(t,i){this.current.push(t),t.source={input:this.input,start:this.getPosition(i)},t.raws.before=this.spaces,this.spaces="",t.type!=="comment"&&(this.semicolon=!1)},a.other=function(t){for(var i=!1,r=null,o=!1,s=null,l=[],d=t[1].startsWith("--"),p=[],u=t;u;){if(r=u[0],p.push(u),r==="("||r==="[")s||(s=u),l.push(r==="("?")":"]");else if(d&&o&&r==="{")s||(s=u),l.push("}");else if(l.length===0)if(r===";")if(o){this.decl(p,d);return}else break;else if(r==="{"){this.rule(p);return}else if(r==="}"){this.tokenizer.back(p.pop()),i=!0;break}else r===":"&&(o=!0);else r===l[l.length-1]&&(l.pop(),l.length===0&&(s=null));u=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(i=!0),l.length>0&&this.unclosedBracket(s),i&&o){if(!d)for(;p.length&&(u=p[p.length-1][0],!(u!=="space"&&u!=="comment"));)this.tokenizer.back(p.pop());this.decl(p,d)}else this.unknownWord(p)},a.parse=function(){for(var t;!this.tokenizer.endOfFile();)switch(t=this.tokenizer.nextToken(),t[0]){case"space":this.spaces+=t[1];break;case";":this.freeSemicolon(t);break;case"}":this.end(t);break;case"comment":this.comment(t);break;case"at-word":this.atrule(t);break;case"{":this.emptyRule(t);break;default:this.other(t);break}this.endFile()},a.precheckMissedSemicolon=function(){},a.raw=function(t,i,r,o){for(var s,l,d=r.length,p="",u=!0,g,b,v=0;v<d;v+=1)s=r[v],l=s[0],l==="space"&&v===d-1&&!o?u=!1:l==="comment"?(b=r[v-1]?r[v-1][0]:"empty",g=r[v+1]?r[v+1][0]:"empty",!xv[b]&&!xv[g]?p.slice(-1)===","?u=!1:p+=s[1]:u=!1):p+=s[1];if(!u){var A=r.reduce(function(f,S){return f+S[1]},"");t.raws[i]={raw:A,value:p}}t[i]=p},a.rule=function(t){t.pop();var i=new _v;this.init(i,t[0][2]),i.raws.between=this.spacesAndCommentsFromEnd(t),this.raw(i,"selector",t),this.current=i},a.spacesAndCommentsFromEnd=function(t){for(var i,r="";t.length&&(i=t[t.length-1][0],!(i!=="space"&&i!=="comment"));)r=t.pop()[1]+r;return r},a.spacesAndCommentsFromStart=function(t){for(var i,r="";t.length&&(i=t[0][0],!(i!=="space"&&i!=="comment"));)r+=t.shift()[1];return r},a.spacesFromEnd=function(t){for(var i,r="";t.length&&(i=t[t.length-1][0],i==="space");)r=t.pop()[1]+r;return r},a.stringFrom=function(t,i){for(var r="",o=i;o<t.length;o++)r+=t[o][1];return t.splice(i,t.length-i),r},a.unclosedBlock=function(){var t=this.current.source.start;throw this.input.error("Unclosed block",t.line,t.column)},a.unclosedBracket=function(t){throw this.input.error("Unclosed bracket",{offset:t[2]},{offset:t[2]+1})},a.unexpectedClose=function(t){throw this.input.error("Unexpected }",{offset:t[2]},{offset:t[2]+1})},a.unknownWord=function(t){throw this.input.error("Unknown word",{offset:t[0][2]},{offset:t[0][2]+t[0][1].length})},a.unnamedAtrule=function(t,i){throw this.input.error("At-rule without name",{offset:i[2]},{offset:i[2]+i[1].length})},e})(),Bre=Ore,Ure=Ii,qre=Bre,Vre=ad;function ec(e,a){var n=new Vre(e,a),t=new qre(n);try{t.parse()}catch(i){throw i}return t.root}var Bg=ec;ec.default=ec;Ure.registerParse(ec);var ja=ri.isClean,$re=ri.my,Wre=Mw,Gre=Xc,Hre=Ii,Yre=Fg,Iv=Lg,Kre=Bg,Zre=es,Jre={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},Qre={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Xre={Once:!0,postcssPlugin:!0,prepare:!0},vr=0;function Qr(e){return(typeof e>"u"?"undefined":ce(e))==="object"&&typeof e.then=="function"}function Qw(e){var a=!1,n=Jre[e.type];return e.type==="decl"?a=e.prop.toLowerCase():e.type==="atrule"&&(a=e.name.toLowerCase()),a&&e.append?[n,n+"-"+a,vr,n+"Exit",n+"Exit-"+a]:a?[n,n+"-"+a,n+"Exit",n+"Exit-"+a]:e.append?[n,vr,n+"Exit"]:[n,n+"Exit"]}function Rv(e){var a;return e.type==="document"?a=["Document",vr,"DocumentExit"]:e.type==="root"?a=["Root",vr,"RootExit"]:a=Qw(e),{eventIndex:0,events:a,iterator:0,node:e,visitorIndex:0,visitors:[]}}function Tp(e){return e[ja]=!1,e.nodes&&e.nodes.forEach(function(a){return Tp(a)}),e}var Ep={},br=(function(){function e(n,t,i){var r=this;this.stringified=!1,this.processed=!1;var o;if((typeof t>"u"?"undefined":ce(t))==="object"&&t!==null&&(t.type==="root"||t.type==="document"))o=Tp(t);else if(le(t,e)||le(t,Iv))o=Tp(t.root),t.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=t.map);else{var s=Kre;i.syntax&&(s=i.syntax.parse),i.parser&&(s=i.parser),s.parse&&(s=s.parse);try{o=s(t,i)}catch(l){this.processed=!0,this.error=l}o&&!o[$re]&&Hre.rebuild(o)}this.result=new Iv(n,o,i),this.helpers=Ce({},Ep,{postcss:Ep,result:this.result}),this.plugins=this.processor.plugins.map(function(l){return(typeof l>"u"?"undefined":ce(l))==="object"&&l.prepare?Ce({},l,l.prepare(r.result)):l})}var a=e.prototype;return a.async=function(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)},a.catch=function(t){return this.async().catch(t)},a.finally=function(t){return this.async().then(t,t)},a.getAsyncError=function(){throw new Error("Use process(css).then(cb) to work with async plugins")},a.handleError=function(t,i){var r=this.result.lastPlugin;try{if(i&&i.addToError(t),this.error=t,t.name==="CssSyntaxError"&&!t.plugin)t.plugin=r.postcssPlugin,t.setMessage();else if(r.postcssVersion)var o,s,l,d,p}catch{}return t},a.prepareVisitors=function(){var t=this;this.listeners={};for(var i=function(p,u,g){t.listeners[u]||(t.listeners[u]=[]),t.listeners[u].push([p,g])},r=B(this.plugins),o;!(o=r()).done;){var s=o.value;if((typeof s>"u"?"undefined":ce(s))==="object")for(var l in s){if(!Qre[l]&&/^[A-Z]/.test(l))throw new Error("Unknown event "+l+" in "+s.postcssPlugin+". Try to update PostCSS ("+this.processor.version+" now).");if(!Xre[l])if(ce(s[l])==="object")for(var d in s[l])d==="*"?i(s,l,s[l][d]):i(s,l+"-"+d.toLowerCase(),s[l][d]);else typeof s[l]=="function"&&i(s,l,s[l])}}this.hasListener=Object.keys(this.listeners).length>0},a.runAsync=function(){var t=this;return Qc(function(){var i,r,o,s,l,d,p,u,g,b,v,A;return Di(this,function(f){switch(f.label){case 0:t.plugin=0,i=0,f.label=1;case 1:if(!(i<t.plugins.length))return[3,6];if(r=t.plugins[i],o=t.runOnRoot(r),!Qr(o))return[3,5];f.label=2;case 2:return f.trys.push([2,4,,5]),[4,o];case 3:return f.sent(),[3,5];case 4:throw s=f.sent(),t.handleError(s);case 5:return i++,[3,1];case 6:if(t.prepareVisitors(),!t.hasListener)return[3,18];l=t.result.root,f.label=7;case 7:if(l[ja])return[3,14];l[ja]=!0,d=[Rv(l)],f.label=8;case 8:if(!(d.length>0))return[3,13];if(p=t.visitTick(d),!Qr(p))return[3,12];f.label=9;case 9:return f.trys.push([9,11,,12]),[4,p];case 10:return f.sent(),[3,12];case 11:throw u=f.sent(),g=d[d.length-1].node,t.handleError(u,g);case 12:return[3,8];case 13:return[3,7];case 14:if(!t.listeners.OnceExit)return[3,18];b=function(){var S,C,T,E,P;return Di(this,function(I){switch(I.label){case 0:S=A.value,C=S[0],T=S[1],t.result.lastPlugin=C,I.label=1;case 1:return I.trys.push([1,6,,7]),l.type!=="document"?[3,3]:(E=l.nodes.map(function(L){return T(L,t.helpers)}),[4,Promise.all(E)]);case 2:return I.sent(),[3,5];case 3:return[4,T(l,t.helpers)];case 4:I.sent(),I.label=5;case 5:return[3,7];case 6:throw P=I.sent(),t.handleError(P);case 7:return[2]}})},v=B(t.listeners.OnceExit),f.label=15;case 15:return(A=v()).done?[3,18]:[5,_g(b())];case 16:f.sent(),f.label=17;case 17:return[3,15];case 18:return t.processed=!0,[2,t.stringify()]}})})()},a.runOnRoot=function(t){var i=this;this.result.lastPlugin=t;try{if((typeof t>"u"?"undefined":ce(t))==="object"&&t.Once){if(this.result.root.type==="document"){var r=this.result.root.nodes.map(function(o){return t.Once(o,i.helpers)});return Qr(r[0])?Promise.all(r):r}return t.Once(this.result.root,this.helpers)}else if(typeof t=="function")return t(this.result.root,this.result)}catch(o){throw this.handleError(o)}},a.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var t=this.result.opts,i=Gre;t.syntax&&(i=t.syntax.stringify),t.stringifier&&(i=t.stringifier),i.stringify&&(i=i.stringify);var r=new Wre(i,this.result.root,this.result.opts),o=r.generate();return this.result.css=o[0],this.result.map=o[1],this.result},a.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var t=B(this.plugins),i;!(i=t()).done;){var r=i.value,o=this.runOnRoot(r);if(Qr(o))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var s=this.result.root;!s[ja];)s[ja]=!0,this.walkSync(s);if(this.listeners.OnceExit)if(s.type==="document")for(var l=B(s.nodes),d;!(d=l()).done;){var p=d.value;this.visitSync(this.listeners.OnceExit,p)}else this.visitSync(this.listeners.OnceExit,s)}return this.result},a.then=function(t,i){return this.async().then(t,i)},a.toString=function(){return this.css},a.visitSync=function(t,i){for(var r=B(t),o;!(o=r()).done;){var s=o.value,l=s[0],d=s[1];this.result.lastPlugin=l;var p=void 0;try{p=d(i,this.helpers)}catch(u){throw this.handleError(u,i.proxyOf)}if(i.type!=="root"&&i.type!=="document"&&!i.parent)return!0;if(Qr(p))throw this.getAsyncError()}},a.visitTick=function(t){var i=t[t.length-1],r=i.node,o=i.visitors;if(r.type!=="root"&&r.type!=="document"&&!r.parent){t.pop();return}if(o.length>0&&i.visitorIndex<o.length){var s=o[i.visitorIndex],l=s[0],d=s[1];i.visitorIndex+=1,i.visitorIndex===o.length&&(i.visitors=[],i.visitorIndex=0),this.result.lastPlugin=l;try{return d(r.toProxy(),this.helpers)}catch(v){throw this.handleError(v,r)}}if(i.iterator!==0){for(var p=i.iterator,u;u=r.nodes[r.indexes[p]];)if(r.indexes[p]+=1,!u[ja]){u[ja]=!0,t.push(Rv(u));return}i.iterator=0,delete r.indexes[p]}for(var g=i.events;i.eventIndex<g.length;){var b=g[i.eventIndex];if(i.eventIndex+=1,b===vr){r.nodes&&r.nodes.length&&(r[ja]=!0,i.iterator=r.getIterator());return}else if(this.listeners[b]){i.visitors=this.listeners[b];return}}t.pop()},a.walkSync=function(t){var i=this;t[ja]=!0;for(var r=Qw(t),o=B(r),s;!(s=o()).done;){var l=s.value;if(l===vr)t.nodes&&t.each(function(p){p[ja]||i.walkSync(p)});else{var d=this.listeners[l];if(d&&this.visitSync(d,t.toProxy()))return}}},a.warnings=function(){return this.sync().warnings()},rt(e,[{key:"content",get:function(){return this.stringify().content}},{key:"css",get:function(){return this.stringify().css}},{key:"map",get:function(){return this.stringify().map}},{key:"messages",get:function(){return this.sync().messages}},{key:"opts",get:function(){return this.result.opts}},{key:"processor",get:function(){return this.result.processor}},{key:"root",get:function(){return this.sync().root}},{key:Symbol.toStringTag,get:function(){return"LazyResult"}}]),e})();br.registerPostcss=function(e){Ep=e};var Xw=br;br.default=br;Zre.registerLazyResult(br);Yre.registerLazyResult(br);var eoe=Mw,toe=Xc,aoe=Bg,noe=Lg,Pp=(function(){function e(n,t,i){t=t.toString(),this.stringified=!1,this._processor=n,this._css=t,this._opts=i,this._map=void 0;var r,o=toe;this.result=new noe(this._processor,r,this._opts),this.result.css=t;var s=this;Object.defineProperty(this.result,"root",{get:function(){return s.root}});var l=new eoe(o,r,this._opts,t);if(l.isMap()){var d=l.generate(),p=d[0],u=d[1];p&&(this.result.css=p),u&&(this.result.map=u)}else l.clearAnnotation(),this.result.css=l.css}var a=e.prototype;return a.async=function(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)},a.catch=function(t){return this.async().catch(t)},a.finally=function(t){return this.async().then(t,t)},a.sync=function(){if(this.error)throw this.error;return this.result},a.then=function(t,i){return this.async().then(t,i)},a.toString=function(){return this._css},a.warnings=function(){return[]},rt(e,[{key:"content",get:function(){return this.result.css}},{key:"css",get:function(){return this.result.css}},{key:"map",get:function(){return this.result.map}},{key:"messages",get:function(){return[]}},{key:"opts",get:function(){return this.result.opts}},{key:"processor",get:function(){return this.result.processor}},{key:"root",get:function(){if(this._root)return this._root;var t,i=aoe;try{t=i(this._css,this._opts)}catch(r){this.error=r}if(this.error)throw this.error;return this._root=t,t}},{key:Symbol.toStringTag,get:function(){return"NoWorkResult"}}]),e})(),ioe=Pp;Pp.default=Pp;var roe=ioe,ooe=Xw,soe=Fg,loe=es,Po=(function(){function e(n){n===void 0&&(n=[]),this.version="8.4.38",this.plugins=this.normalize(n)}var a=e.prototype;return a.normalize=function(t){for(var i=[],r=B(t),o;!(o=r()).done;){var s=o.value;if(s.postcss===!0?s=s():s.postcss&&(s=s.postcss),(typeof s>"u"?"undefined":ce(s))==="object"&&Array.isArray(s.plugins))i=i.concat(s.plugins);else if((typeof s>"u"?"undefined":ce(s))==="object"&&s.postcssPlugin)i.push(s);else if(typeof s=="function")i.push(s);else if(!((typeof s>"u"?"undefined":ce(s))==="object"&&(s.parse||s.stringify)))throw new Error(s+" is not a PostCSS plugin")}return i},a.process=function(t,i){return i===void 0&&(i={}),!this.plugins.length&&!i.parser&&!i.stringifier&&!i.syntax?new roe(this,t,i):new ooe(this,t,i)},a.use=function(t){return this.plugins=this.plugins.concat(this.normalize([t])),this},e})(),coe=Po;Po.default=Po;loe.registerProcessor(Po);soe.registerProcessor(Po);var doe=td,uoe=_w,poe=nd,moe=jg,goe=ad,hoe=es,foe=Og;function _o(e,a){if(Array.isArray(e))return e.map(function(u){return _o(u)});var n=e.inputs,t=Ci(e,["inputs"]);if(n){a=[];for(var i=B(n),r;!(r=i()).done;){var o=r.value,s=Ce({},o,{__proto__:goe.prototype});s.map&&(s.map=Ce({},s.map,{__proto__:uoe.prototype})),a.push(s)}}if(t.nodes&&(t.nodes=e.nodes.map(function(u){return _o(u,a)})),t.source){var l=t.source,d=l.inputId,p=Ci(l,["inputId"]);t.source=p,d!=null&&(t.source.input=a[d])}if(t.type==="root")return new hoe(t);if(t.type==="decl")return new doe(t);if(t.type==="rule")return new foe(t);if(t.type==="comment")return new poe(t);if(t.type==="atrule")return new moe(t);throw new Error("Unknown node type: "+e.type)}var voe=_o;_o.default=_o;var boe=zg,eA=td,yoe=Xw,koe=Ii,Ug=coe,woe=Xc,Aoe=voe,tA=Fg,Soe=Ww,aA=nd,nA=jg,Coe=Lg,Doe=ad,Toe=Bg,Eoe=Zw,iA=Og,rA=es,Poe=ed;function $e(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];return a.length===1&&Array.isArray(a[0])&&(a=a[0]),new Ug(a)}$e.plugin=function(a,n){var t=!1;function i(){for(var o=arguments.length,s=new Array(o),l=0;l<o;l++)s[l]=arguments[l];console&&console.warn&&!t&&(t=!0,hr.LANG&&hr.LANG.startsWith("cn"));var d=n.apply(void 0,[].concat(s));return d.postcssPlugin=a,d.postcssVersion=new Ug().version,d}var r;return Object.defineProperty(i,"postcss",{get:function(){return r||(r=i()),r}}),i.process=function(o,s,l){return $e([i(l)]).process(o,s)},i};$e.stringify=woe;$e.parse=Toe;$e.fromJSON=Aoe;$e.list=Eoe;$e.comment=function(e){return new aA(e)};$e.atRule=function(e){return new nA(e)};$e.decl=function(e){return new eA(e)};$e.rule=function(e){return new iA(e)};$e.root=function(e){return new rA(e)};$e.document=function(e){return new tA(e)};$e.CssSyntaxError=boe;$e.Declaration=eA;$e.Container=koe;$e.Processor=Ug;$e.Document=tA;$e.Comment=aA;$e.Warning=Soe;$e.AtRule=nA;$e.Result=Coe;$e.Input=Doe;$e.Rule=iA;$e.Root=rA;$e.Node=Poe;yoe.registerPostcss($e);var _oe=$e;$e.default=$e;var ct=qie(_oe);ct.stringify;ct.fromJSON;ct.plugin;ct.parse;ct.list;ct.document;ct.comment;ct.atRule;ct.rule;ct.decl;ct.root;ct.CssSyntaxError;ct.Declaration;ct.Container;ct.Processor;ct.Document;ct.Comment;ct.Warning;ct.AtRule;ct.Result;ct.Input;ct.Rule;ct.Root;ct.Node;var xoe=Object.defineProperty,Ioe=function(e,a,n){return a in e?xoe(e,a,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[a]=n},ca=function(e,a,n){return Ioe(e,(typeof a>"u"?"undefined":ce(a))!=="symbol"?a+"":a,n)};function Roe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function zoe(e){if(e.__esModule)return e;var a=e.default;if(typeof a=="function"){var n=function t(){return le(this,t)?Reflect.construct(a,arguments,this.constructor):a.apply(this,arguments)};n.prototype=a.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),n}var qg={exports:{}},et=String,oA=function(){return{isColorSupported:!1,reset:et,bold:et,dim:et,italic:et,underline:et,inverse:et,hidden:et,strikethrough:et,black:et,red:et,green:et,yellow:et,blue:et,magenta:et,cyan:et,white:et,gray:et,bgBlack:et,bgRed:et,bgGreen:et,bgYellow:et,bgBlue:et,bgMagenta:et,bgCyan:et,bgWhite:et}};qg.exports=oA();qg.exports.createColors=oA;var Moe=qg.exports,Noe={},Foe=Object.freeze(Object.defineProperty({__proto__:null,default:Noe},Symbol.toStringTag,{value:"Module"})),yt=zoe(Foe),zv=Moe,Mv=yt,_p=(function(e){lt(a,e);function a(t,i,r,o,s,l){var d;return d=e.call(this,t)||this,d.name="CssSyntaxError",d.reason=t,s&&(d.file=s),o&&(d.source=o),l&&(d.plugin=l),typeof i<"u"&&typeof r<"u"&&(typeof i=="number"?(d.line=i,d.column=r):(d.line=i.line,d.column=i.column,d.endLine=r.line,d.endColumn=r.column)),d.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(d,a),d}var n=a.prototype;return n.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},n.showSourceCode=function(i){var r=this;if(!this.source)return"";var o=this.source;i==null&&(i=zv.isColorSupported),Mv&&i&&(o=Mv(o));var s=o.split(/\r?\n/),l=Math.max(this.line-3,0),d=Math.min(this.line+2,s.length),p=String(d).length,u,g;if(i){var b=zv.createColors(!0),v=b.bold,A=b.gray,f=b.red;u=function(S){return v(f(S))},g=function(S){return A(S)}}else u=g=function(S){return S};return s.slice(l,d).map(function(S,C){var T=l+1+C,E=" "+(" "+T).slice(-p)+" | ";if(T===r.line){var P=g(E.replace(/\d/g," "))+S.slice(0,r.column-1).replace(/[^\t]/g," ");return u(">")+g(E)+S+`
 `+P+u("^")}return" "+g(E)+S}).join(`
`)},n.toString=function(){var i=this.showSourceCode();return i&&(i=`

`+i+`
`),this.name+": "+this.message+i},a})(Co(Error)),Vg=_p;_p.default=_p;var oi={};oi.isClean=Symbol("isClean");oi.my=Symbol("my");var Nv={after:`
`,beforeClose:`
`,beforeComment:`
`,beforeDecl:`
`,beforeOpen:" ",beforeRule:`
`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:"    ",semicolon:!1};function Loe(e){return e[0].toUpperCase()+e.slice(1)}var xp=(function(){function e(n){this.builder=n}var a=e.prototype;return a.atrule=function(t,i){var r="@"+t.name,o=t.params?this.rawValue(t,"params"):"";if(typeof t.raws.afterName<"u"?r+=t.raws.afterName:o&&(r+=" "),t.nodes)this.block(t,r+o);else{var s=(t.raws.between||"")+(i?";":"");this.builder(r+o+s,t)}},a.beforeAfter=function(t,i){var r;t.type==="decl"?r=this.raw(t,null,"beforeDecl"):t.type==="comment"?r=this.raw(t,null,"beforeComment"):i==="before"?r=this.raw(t,null,"beforeRule"):r=this.raw(t,null,"beforeClose");for(var o=t.parent,s=0;o&&o.type!=="root";)s+=1,o=o.parent;if(r.includes(`
`)){var l=this.raw(t,null,"indent");if(l.length)for(var d=0;d<s;d++)r+=l}return r},a.block=function(t,i){var r=this.raw(t,"between","beforeOpen");this.builder(i+r+"{",t,"start");var o;t.nodes&&t.nodes.length?(this.body(t),o=this.raw(t,"after")):o=this.raw(t,"after","emptyBody"),o&&this.builder(o),this.builder("}",t,"end")},a.body=function(t){for(var i=t.nodes.length-1;i>0&&t.nodes[i].type==="comment";)i-=1;for(var r=this.raw(t,"semicolon"),o=0;o<t.nodes.length;o++){var s=t.nodes[o],l=this.raw(s,"before");l&&this.builder(l),this.stringify(s,i!==o||r)}},a.comment=function(t){var i=this.raw(t,"left","commentLeft"),r=this.raw(t,"right","commentRight");this.builder("/*"+i+t.text+r+"*/",t)},a.decl=function(t,i){var r=this.raw(t,"between","colon"),o=t.prop+r+this.rawValue(t,"value");t.important&&(o+=t.raws.important||" !important"),i&&(o+=";"),this.builder(o,t)},a.document=function(t){this.body(t)},a.raw=function(t,i,r){var o;if(r||(r=i),i&&(o=t.raws[i],typeof o<"u"))return o;var s=t.parent;if(r==="before"&&(!s||s.type==="root"&&s.first===t||s&&s.type==="document"))return"";if(!s)return Nv[r];var l=t.root();if(l.rawCache||(l.rawCache={}),typeof l.rawCache[r]<"u")return l.rawCache[r];if(r==="before"||r==="after")return this.beforeAfter(t,r);var d="raw"+Loe(r);return this[d]?o=this[d](l,t):l.walk(function(p){if(o=p.raws[i],typeof o<"u")return!1}),typeof o>"u"&&(o=Nv[r]),l.rawCache[r]=o,o},a.rawBeforeClose=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length>0&&typeof r.raws.after<"u")return i=r.raws.after,i.includes(`
`)&&(i=i.replace(/[^\n]+$/,"")),!1}),i&&(i=i.replace(/\S/g,"")),i},a.rawBeforeComment=function(t,i){var r;return t.walkComments(function(o){if(typeof o.raws.before<"u")return r=o.raws.before,r.includes(`
`)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r>"u"?r=this.raw(i,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},a.rawBeforeDecl=function(t,i){var r;return t.walkDecls(function(o){if(typeof o.raws.before<"u")return r=o.raws.before,r.includes(`
`)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r>"u"?r=this.raw(i,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},a.rawBeforeOpen=function(t){var i;return t.walk(function(r){if(r.type!=="decl"&&(i=r.raws.between,typeof i<"u"))return!1}),i},a.rawBeforeRule=function(t){var i;return t.walk(function(r){if(r.nodes&&(r.parent!==t||t.first!==r)&&typeof r.raws.before<"u")return i=r.raws.before,i.includes(`
`)&&(i=i.replace(/[^\n]+$/,"")),!1}),i&&(i=i.replace(/\S/g,"")),i},a.rawColon=function(t){var i;return t.walkDecls(function(r){if(typeof r.raws.between<"u")return i=r.raws.between.replace(/[^\s:]/g,""),!1}),i},a.rawEmptyBody=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length===0&&(i=r.raws.after,typeof i<"u"))return!1}),i},a.rawIndent=function(t){if(t.raws.indent)return t.raws.indent;var i;return t.walk(function(r){var o=r.parent;if(o&&o!==t&&o.parent&&o.parent===t&&typeof r.raws.before<"u"){var s=r.raws.before.split(`
`);return i=s[s.length-1],i=i.replace(/\S/g,""),!1}}),i},a.rawSemicolon=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length&&r.last.type==="decl"&&(i=r.raws.semicolon,typeof i<"u"))return!1}),i},a.rawValue=function(t,i){var r=t[i],o=t.raws[i];return o&&o.value===r?o.raw:r},a.root=function(t){this.body(t),t.raws.after&&this.builder(t.raws.after)},a.rule=function(t){this.block(t,this.rawValue(t,"selector")),t.raws.ownSemicolon&&this.builder(t.raws.ownSemicolon,t,"end")},a.stringify=function(t,i){if(!this[t.type])throw new Error("Unknown AST node type "+t.type+". Maybe you need to change PostCSS stringifier.");this[t.type](t,i)},e})(),sA=xp;xp.default=xp;var joe=sA;function Ip(e,a){var n=new joe(a);n.stringify(e)}var id=Ip;Ip.default=Ip;var Ls=oi.isClean,Ooe=oi.my,Boe=Vg,Uoe=sA,qoe=id;function Rp(e,a){var n=new e.constructor;for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t!=="proxyCache"){var i=e[t],r=typeof i>"u"?"undefined":ce(i);t==="parent"&&r==="object"?a&&(n[t]=a):t==="source"?n[t]=i:Array.isArray(i)?n[t]=i.map(function(o){return Rp(o,n)}):(r==="object"&&i!==null&&(i=Rp(i)),n[t]=i)}return n}var zp=(function(){function e(n){n===void 0&&(n={}),this.raws={},this[Ls]=!1,this[Ooe]=!0;for(var t in n)if(t==="nodes"){this.nodes=[];for(var i=B(n[t]),r;!(r=i()).done;){var o=r.value;typeof o.clone=="function"?this.append(o.clone()):this.append(o)}}else this[t]=n[t]}var a=e.prototype;return a.addToError=function(t){if(t.postcssNode=this,t.stack&&this.source&&/\n\s{4}at /.test(t.stack)){var i=this.source;t.stack=t.stack.replace(/\n\s{4}at /,"$&"+i.input.from+":"+i.start.line+":"+i.start.column+"$&")}return t},a.after=function(t){return this.parent.insertAfter(this,t),this},a.assign=function(t){t===void 0&&(t={});for(var i in t)this[i]=t[i];return this},a.before=function(t){return this.parent.insertBefore(this,t),this},a.cleanRaws=function(t){delete this.raws.before,delete this.raws.after,t||delete this.raws.between},a.clone=function(t){t===void 0&&(t={});var i=Rp(this);for(var r in t)i[r]=t[r];return i},a.cloneAfter=function(t){t===void 0&&(t={});var i=this.clone(t);return this.parent.insertAfter(this,i),i},a.cloneBefore=function(t){t===void 0&&(t={});var i=this.clone(t);return this.parent.insertBefore(this,i),i},a.error=function(t,i){if(i===void 0&&(i={}),this.source){var r=this.rangeBy(i),o=r.end,s=r.start;return this.source.input.error(t,{column:s.column,line:s.line},{column:o.column,line:o.line},i)}return new Boe(t)},a.getProxyProcessor=function(){return{get:function(i,r){return r==="proxyOf"?i:r==="root"?function(){return i.root().toProxy()}:i[r]},set:function(i,r,o){return i[r]===o||(i[r]=o,(r==="prop"||r==="value"||r==="name"||r==="params"||r==="important"||r==="text")&&i.markDirty()),!0}}},a.markDirty=function(){if(this[Ls]){this[Ls]=!1;for(var t=this;t=t.parent;)t[Ls]=!1}},a.next=function(){if(this.parent){var t=this.parent.index(this);return this.parent.nodes[t+1]}},a.positionBy=function(t,i){var r=this.source.start;if(t.index)r=this.positionInside(t.index,i);else if(t.word){i=this.toString();var o=i.indexOf(t.word);o!==-1&&(r=this.positionInside(o,i))}return r},a.positionInside=function(t,i){for(var r=i||this.toString(),o=this.source.start.column,s=this.source.start.line,l=0;l<t;l++)r[l]===`
`?(o=1,s+=1):o+=1;return{column:o,line:s}},a.prev=function(){if(this.parent){var t=this.parent.index(this);return this.parent.nodes[t-1]}},a.rangeBy=function(t){var i={column:this.source.start.column,line:this.source.start.line},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line}:{column:i.column+1,line:i.line};if(t.word){var o=this.toString(),s=o.indexOf(t.word);s!==-1&&(i=this.positionInside(s,o),r=this.positionInside(s+t.word.length,o))}else t.start?i={column:t.start.column,line:t.start.line}:t.index&&(i=this.positionInside(t.index)),t.end?r={column:t.end.column,line:t.end.line}:typeof t.endIndex=="number"?r=this.positionInside(t.endIndex):t.index&&(r=this.positionInside(t.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line}),{end:r,start:i}},a.raw=function(t,i){var r=new Uoe;return r.raw(this,t,i)},a.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},a.replaceWith=function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];if(this.parent){for(var o=this,s=!1,l=B(i),d;!(d=l()).done;){var p=d.value;p===this?s=!0:s?(this.parent.insertAfter(o,p),o=p):this.parent.insertBefore(o,p)}s||this.remove()}return this},a.root=function(){for(var t=this;t.parent&&t.parent.type!=="document";)t=t.parent;return t},a.toJSON=function(t,i){var r={},o=i==null;i=i||new Map;var s=0;for(var l in this)if(Object.prototype.hasOwnProperty.call(this,l)&&!(l==="parent"||l==="proxyCache")){var d=this[l];if(Array.isArray(d))r[l]=d.map(function(u){return(typeof u>"u"?"undefined":ce(u))==="object"&&u.toJSON?u.toJSON(null,i):u});else if((typeof d>"u"?"undefined":ce(d))==="object"&&d.toJSON)r[l]=d.toJSON(null,i);else if(l==="source"){var p=i.get(d.input);p==null&&(p=s,i.set(d.input,s),s++),r[l]={end:d.end,inputId:p,start:d.start}}else r[l]=d}return o&&(r.inputs=[].concat(i.keys()).map(function(u){return u.toJSON()})),r},a.toProxy=function(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache},a.toString=function(t){t===void 0&&(t=qoe),t.stringify&&(t=t.stringify);var i="";return t(this,function(r){i+=r}),i},a.warn=function(t,i,r){var o={node:this};for(var s in r)o[s]=r[s];return t.warn(i,o)},rt(e,[{key:"proxyOf",get:function(){return this}}]),e})(),rd=zp;zp.default=zp;var Voe=rd,Mp=(function(e){lt(a,e);function a(n){var t;return n&&typeof n.value<"u"&&typeof n.value!="string"&&(n=Ce({},n,{value:String(n.value)})),t=e.call(this,n)||this,t.type="decl",t}return rt(a,[{key:"variable",get:function(){return this.prop.startsWith("--")||this.prop[0]==="$"}}]),a})(Voe),od=Mp;Mp.default=Mp;var $oe="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Woe=function(e){e===void 0&&(e=21);for(var a="",n=e;n--;)a+=$oe[Math.random()*64|0];return a},Goe={nanoid:Woe},Fv=yt.SourceMapConsumer,Lv=yt.SourceMapGenerator,Hoe=yt.existsSync,Yoe=yt.readFileSync,ru=yt.dirname,Koe=yt.join;function Zoe(e){return Buffer?Buffer.from(e,"base64").toString():window.atob(e)}var Np=(function(){function e(n,t){if(t.map!==!1){this.loadAnnotation(n),this.inline=this.startWith(this.annotation,"data:");var i=t.map?t.map.prev:void 0,r=this.loadMap(t.from,i);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=ru(this.mapFile)),r&&(this.text=r)}}var a=e.prototype;return a.consumer=function(){return this.consumerCache||(this.consumerCache=new Fv(this.text)),this.consumerCache},a.decodeInline=function(t){var i=/^data:application\/json;charset=utf-?8;base64,/,r=/^data:application\/json;base64,/,o=/^data:application\/json;charset=utf-?8,/,s=/^data:application\/json,/;if(o.test(t)||s.test(t))return decodeURIComponent(t.substr(RegExp.lastMatch.length));if(i.test(t)||r.test(t))return Zoe(t.substr(RegExp.lastMatch.length));var l=t.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+l)},a.getAnnotationURL=function(t){return t.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()},a.isMap=function(t){return(typeof t>"u"?"undefined":ce(t))!=="object"?!1:typeof t.mappings=="string"||typeof t._mappings=="string"||Array.isArray(t.sections)},a.loadAnnotation=function(t){var i=t.match(/\/\*\s*# sourceMappingURL=/gm);if(i){var r=t.lastIndexOf(i.pop()),o=t.indexOf("*/",r);r>-1&&o>-1&&(this.annotation=this.getAnnotationURL(t.substring(r,o)))}},a.loadFile=function(t){if(this.root=ru(t),Hoe(t))return this.mapFile=t,Yoe(t,"utf-8").toString().trim()},a.loadMap=function(t,i){if(i===!1)return!1;if(i){if(typeof i=="string")return i;if(typeof i=="function"){var r=i(t);if(r){var o=this.loadFile(r);if(!o)throw new Error("Unable to load previous source map: "+r.toString());return o}}else{if(le(i,Fv))return Lv.fromSourceMap(i).toString();if(le(i,Lv))return i.toString();if(this.isMap(i))return JSON.stringify(i);throw new Error("Unsupported previous source map format: "+i.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var s=this.annotation;return t&&(s=Koe(ru(t),s)),this.loadFile(s)}}},a.startWith=function(t,i){return t?t.substr(0,i.length)===i:!1},a.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e})(),lA=Np;Np.default=Np;var Joe=yt.SourceMapConsumer,Qoe=yt.SourceMapGenerator,jv=yt.fileURLToPath,js=yt.pathToFileURL,Fp=yt.isAbsolute,Lp=yt.resolve,Xoe=Goe.nanoid,ou=yt,Ov=Vg,ese=lA,su=Symbol("fromOffsetCache"),tse=!!(Joe&&Qoe),Bv=!!(Lp&&Fp),tc=(function(){function e(n,t){if(t===void 0&&(t={}),n===null||typeof n>"u"||(typeof n>"u"?"undefined":ce(n))==="object"&&!n.toString)throw new Error("PostCSS received "+n+" instead of CSS string");if(this.css=n.toString(),this.css[0]==="\uFEFF"||this.css[0]==="￾"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!Bv||/^\w+:\/\//.test(t.from)||Fp(t.from)?this.file=t.from:this.file=Lp(t.from)),Bv&&tse){var i=new ese(this.css,t);if(i.text){this.map=i;var r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+Xoe(6)+">"),this.map&&(this.map.file=this.from)}var a=e.prototype;return a.error=function(t,i,r,o){o===void 0&&(o={});var s,l,d;if(i&&(typeof i>"u"?"undefined":ce(i))==="object"){var p=i,u=r;if(typeof p.offset=="number"){var g=this.fromOffset(p.offset);i=g.line,r=g.col}else i=p.line,r=p.column;if(typeof u.offset=="number"){var b=this.fromOffset(u.offset);l=b.line,d=b.col}else l=u.line,d=u.column}else if(!r){var v=this.fromOffset(i);i=v.line,r=v.col}var A=this.origin(i,r,l,d);return A?s=new Ov(t,A.endLine===void 0?A.line:{column:A.column,line:A.line},A.endLine===void 0?A.column:{column:A.endColumn,line:A.endLine},A.source,A.file,o.plugin):s=new Ov(t,l===void 0?i:{column:r,line:i},l===void 0?r:{column:d,line:l},this.css,this.file,o.plugin),s.input={column:r,endColumn:d,endLine:l,line:i,source:this.css},this.file&&(js&&(s.input.url=js(this.file).toString()),s.input.file=this.file),s},a.fromOffset=function(t){var i,r;if(this[su])r=this[su];else{var o=this.css.split(`
`);r=new Array(o.length);for(var s=0,l=0,d=o.length;l<d;l++)r[l]=s,s+=o[l].length+1;this[su]=r}i=r[r.length-1];var p=0;if(t>=i)p=r.length-1;else for(var u=r.length-2,g;p<u;)if(g=p+(u-p>>1),t<r[g])u=g-1;else if(t>=r[g+1])p=g+1;else{p=g;break}return{col:t-r[p]+1,line:p+1}},a.mapResolve=function(t){return/^\w+:\/\//.test(t)?t:Lp(this.map.consumer().sourceRoot||this.map.root||".",t)},a.origin=function(t,i,r,o){if(!this.map)return!1;var s=this.map.consumer(),l=s.originalPositionFor({column:i,line:t});if(!l.source)return!1;var d;typeof r=="number"&&(d=s.originalPositionFor({column:o,line:r}));var p;Fp(l.source)?p=js(l.source):p=new URL(l.source,this.map.consumer().sourceRoot||js(this.map.mapFile));var u={column:l.column,endColumn:d&&d.column,endLine:d&&d.line,line:l.line,url:p.toString()};if(p.protocol==="file:")if(jv)u.file=jv(p);else throw new Error("file: protocol is not available in this PostCSS build");var g=s.sourceContentFor(l.source);return g&&(u.source=g),u},a.toJSON=function(){for(var t={},i=0,r=["hasBOM","css","file","id"];i<r.length;i++){var o=r[i];this[o]!=null&&(t[o]=this[o])}return this.map&&(t.map=Ce({},this.map),t.map.consumerCache&&(t.map.consumerCache=void 0)),t},rt(e,[{key:"from",get:function(){return this.file||this.id}}]),e})(),sd=tc;tc.default=tc;ou&&ou.registerInput&&ou.registerInput(tc);var cA=yt.SourceMapConsumer,Dl=yt.SourceMapGenerator,Tl=yt.dirname,dA=yt.relative,uA=yt.resolve,pA=yt.sep,Uv=yt.pathToFileURL,ase=sd,nse=!!(cA&&Dl),ise=!!(Tl&&uA&&dA&&pA),rse=(function(){function e(n,t,i,r){this.stringify=n,this.mapOpts=i.map||{},this.root=t,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}var a=e.prototype;return a.addAnnotation=function(){var t;this.isInline()?t="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?t=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?t=this.mapOpts.annotation(this.opts.to,this.root):t=this.outputFile()+".map";var i=`
`;this.css.includes(`\r
`)&&(i=`\r
`),this.css+=i+"/*# sourceMappingURL="+t+" */"},a.applyPrevMaps=function(){for(var t=B(this.previous()),i;!(i=t()).done;){var r=i.value,o=this.toUrl(this.path(r.file)),s=r.root||Tl(r.file),l=void 0;this.mapOpts.sourcesContent===!1?(l=new cA(r.text),l.sourcesContent&&(l.sourcesContent=null)):l=r.consumer(),this.map.applySourceMap(l,o,this.toUrl(this.path(s)))}},a.clearAnnotation=function(){if(this.mapOpts.annotation!==!1)if(this.root)for(var t,i=this.root.nodes.length-1;i>=0;i--)t=this.root.nodes[i],t.type==="comment"&&t.text.indexOf("# sourceMappingURL=")===0&&this.root.removeChild(i);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},a.generate=function(){if(this.clearAnnotation(),ise&&nse&&this.isMap())return this.generateMap();var t="";return this.stringify(this.root,function(i){t+=i}),[t]},a.generateMap=function(){if(this.root)this.generateString();else if(this.previous().length===1){var t=this.previous()[0].consumer();t.file=this.outputFile(),this.map=Dl.fromSourceMap(t,{ignoreInvalidMapping:!0})}else this.map=new Dl({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},a.generateString=function(){var t=this;this.css="",this.map=new Dl({file:this.outputFile(),ignoreInvalidMapping:!0});var i=1,r=1,o="<no source>",s={generated:{column:0,line:0},original:{column:0,line:0},source:""},l,d;this.stringify(this.root,function(p,u,g){if(t.css+=p,u&&g!=="end"&&(s.generated.line=i,s.generated.column=r-1,u.source&&u.source.start?(s.source=t.sourcePath(u),s.original.line=u.source.start.line,s.original.column=u.source.start.column-1,t.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,t.map.addMapping(s))),l=p.match(/\n/g),l?(i+=l.length,d=p.lastIndexOf(`
`),r=p.length-d):r+=p.length,u&&g!=="start"){var b=u.parent||{raws:{}},v=u.type==="decl"||u.type==="atrule"&&!u.nodes;(!v||u!==b.last||b.raws.semicolon)&&(u.source&&u.source.end?(s.source=t.sourcePath(u),s.original.line=u.source.end.line,s.original.column=u.source.end.column-1,s.generated.line=i,s.generated.column=r-2,t.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=i,s.generated.column=r-1,t.map.addMapping(s)))}})},a.isAnnotation=function(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(function(t){return t.annotation}):!0},a.isInline=function(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;var t=this.mapOpts.annotation;return typeof t<"u"&&t!==!0?!1:this.previous().length?this.previous().some(function(i){return i.inline}):!0},a.isMap=function(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0},a.isSourcesContent=function(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(function(t){return t.withContent()}):!0},a.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},a.path=function(t){if(this.mapOpts.absolute||t.charCodeAt(0)===60||/^\w+:\/\//.test(t))return t;var i=this.memoizedPaths.get(t);if(i)return i;var r=this.opts.to?Tl(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(r=Tl(uA(r,this.mapOpts.annotation)));var o=dA(r,t);return this.memoizedPaths.set(t,o),o},a.previous=function(){var t=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(r){if(r.source&&r.source.input.map){var o=r.source.input.map;t.previousMaps.includes(o)||t.previousMaps.push(o)}});else{var i=new ase(this.originalCSS,this.opts);i.map&&this.previousMaps.push(i.map)}return this.previousMaps},a.setSourcesContent=function(){var t=this,i={};if(this.root)this.root.walk(function(o){if(o.source){var s=o.source.input.from;if(s&&!i[s]){i[s]=!0;var l=t.usesFileUrls?t.toFileUrl(s):t.toUrl(t.path(s));t.map.setSourceContent(l,o.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(r,this.css)}},a.sourcePath=function(t){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(t.source.input.from):this.toUrl(this.path(t.source.input.from))},a.toBase64=function(t){return Buffer?Buffer.from(t).toString("base64"):window.btoa(unescape(encodeURIComponent(t)))},a.toFileUrl=function(t){var i=this.memoizedFileURLs.get(t);if(i)return i;if(Uv){var r=Uv(t).toString();return this.memoizedFileURLs.set(t,r),r}else throw new Error("`map.absolute` option is not available in this PostCSS build")},a.toUrl=function(t){var i=this.memoizedURLs.get(t);if(i)return i;pA==="\\"&&(t=t.replace(/\\/g,"/"));var r=encodeURI(t).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(t,r),r},e})(),mA=rse,ose=rd,jp=(function(e){lt(a,e);function a(n){var t;return t=e.call(this,n)||this,t.type="comment",t}return a})(ose),ld=jp;jp.default=jp;var gA=oi.isClean,hA=oi.my,fA=od,vA=ld,sse=rd,bA,$g,Wg,yA;function kA(e){return e.map(function(a){return a.nodes&&(a.nodes=kA(a.nodes)),delete a.source,a})}function wA(e){if(e[gA]=!1,e.proxyOf.nodes)for(var a=B(e.proxyOf.nodes),n;!(n=a()).done;){var t=n.value;wA(t)}}var In=(function(e){lt(a,e);function a(){return e.apply(this,arguments)||this}var n=a.prototype;return n.append=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];for(var s=B(r),l;!(l=s()).done;)for(var d=l.value,p=this.normalize(d,this.last),u=B(p),g;!(g=u()).done;){var b=g.value;this.proxyOf.nodes.push(b)}return this.markDirty(),this},n.cleanRaws=function(i){if(e.prototype.cleanRaws.call(this,i),this.nodes)for(var r=B(this.nodes),o;!(o=r()).done;){var s=o.value;s.cleanRaws(i)}},n.each=function(i){if(this.proxyOf.nodes){for(var r=this.getIterator(),o,s;this.indexes[r]<this.proxyOf.nodes.length&&(o=this.indexes[r],s=i(this.proxyOf.nodes[o],o),s!==!1);)this.indexes[r]+=1;return delete this.indexes[r],s}},n.every=function(i){return this.nodes.every(i)},n.getIterator=function(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var i=this.lastEach;return this.indexes[i]=0,i},n.getProxyProcessor=function(){return{get:function(r,o){return o==="proxyOf"?r:r[o]?o==="each"||typeof o=="string"&&o.startsWith("walk")?function(){for(var s=arguments.length,l=new Array(s),d=0;d<s;d++)l[d]=arguments[d];var p;return(p=r)[o].apply(p,[].concat(l.map(function(u){return typeof u=="function"?function(g,b){return u(g.toProxy(),b)}:u})))}:o==="every"||o==="some"?function(s){return r[o](function(l){for(var d=arguments.length,p=new Array(d>1?d-1:0),u=1;u<d;u++)p[u-1]=arguments[u];return s.apply(void 0,[].concat([l.toProxy()],p))})}:o==="root"?function(){return r.root().toProxy()}:o==="nodes"?r.nodes.map(function(s){return s.toProxy()}):o==="first"||o==="last"?r[o].toProxy():r[o]:r[o]},set:function(r,o,s){return r[o]===s||(r[o]=s,(o==="name"||o==="params"||o==="selector")&&r.markDirty()),!0}}},n.index=function(i){return typeof i=="number"?i:(i.proxyOf&&(i=i.proxyOf),this.proxyOf.nodes.indexOf(i))},n.insertAfter=function(i,r){var o=this.index(i),s=this.normalize(r,this.proxyOf.nodes[o]).reverse();o=this.index(i);for(var l=B(s),d;!(d=l()).done;){var p=d.value;this.proxyOf.nodes.splice(o+1,0,p)}var u;for(var g in this.indexes)u=this.indexes[g],o<u&&(this.indexes[g]=u+s.length);return this.markDirty(),this},n.insertBefore=function(i,r){var o=this.index(i),s=o===0?"prepend":!1,l=this.normalize(r,this.proxyOf.nodes[o],s).reverse();o=this.index(i);for(var d=B(l),p;!(p=d()).done;){var u=p.value;this.proxyOf.nodes.splice(o,0,u)}var g;for(var b in this.indexes)g=this.indexes[b],o<=g&&(this.indexes[b]=g+l.length);return this.markDirty(),this},n.normalize=function(i,r){var o=this;if(typeof i=="string")i=kA(bA(i).nodes);else if(typeof i>"u")i=[];else if(Array.isArray(i)){i=i.slice(0);for(var s=B(i),l;!(l=s()).done;){var d=l.value;d.parent&&d.parent.removeChild(d,"ignore")}}else if(i.type==="root"&&this.type!=="document"){i=i.nodes.slice(0);for(var p=B(i),u;!(u=p()).done;){var g=u.value;g.parent&&g.parent.removeChild(g,"ignore")}}else if(i.type)i=[i];else if(i.prop){if(typeof i.value>"u")throw new Error("Value field is missed in node creation");typeof i.value!="string"&&(i.value=String(i.value)),i=[new fA(i)]}else if(i.selector)i=[new $g(i)];else if(i.name)i=[new Wg(i)];else if(i.text)i=[new vA(i)];else throw new Error("Unknown node type in node creation");var b=i.map(function(v){return v[hA]||a.rebuild(v),v=v.proxyOf,v.parent&&v.parent.removeChild(v),v[gA]&&wA(v),typeof v.raws.before>"u"&&r&&typeof r.raws.before<"u"&&(v.raws.before=r.raws.before.replace(/\S/g,"")),v.parent=o.proxyOf,v});return b},n.prepend=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];r=r.reverse();for(var s=B(r),l;!(l=s()).done;){for(var d=l.value,p=this.normalize(d,this.first,"prepend").reverse(),u=B(p),g;!(g=u()).done;){var b=g.value;this.proxyOf.nodes.unshift(b)}for(var v in this.indexes)this.indexes[v]=this.indexes[v]+p.length}return this.markDirty(),this},n.push=function(i){return i.parent=this,this.proxyOf.nodes.push(i),this},n.removeAll=function(){for(var i=B(this.proxyOf.nodes),r;!(r=i()).done;){var o=r.value;o.parent=void 0}return this.proxyOf.nodes=[],this.markDirty(),this},n.removeChild=function(i){i=this.index(i),this.proxyOf.nodes[i].parent=void 0,this.proxyOf.nodes.splice(i,1);var r;for(var o in this.indexes)r=this.indexes[o],r>=i&&(this.indexes[o]=r-1);return this.markDirty(),this},n.replaceValues=function(i,r,o){return o||(o=r,r={}),this.walkDecls(function(s){r.props&&!r.props.includes(s.prop)||r.fast&&!s.value.includes(r.fast)||(s.value=s.value.replace(i,o))}),this.markDirty(),this},n.some=function(i){return this.nodes.some(i)},n.walk=function(i){return this.each(function(r,o){var s;try{s=i(r,o)}catch(l){throw r.addToError(l)}return s!==!1&&r.walk&&(s=r.walk(i)),s})},n.walkAtRules=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="atrule"&&i.test(o.name))return r(o,s)}):this.walk(function(o,s){if(o.type==="atrule"&&o.name===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="atrule")return r(o,s)}))},n.walkComments=function(i){return this.walk(function(r,o){if(r.type==="comment")return i(r,o)})},n.walkDecls=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="decl"&&i.test(o.prop))return r(o,s)}):this.walk(function(o,s){if(o.type==="decl"&&o.prop===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="decl")return r(o,s)}))},n.walkRules=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="rule"&&i.test(o.selector))return r(o,s)}):this.walk(function(o,s){if(o.type==="rule"&&o.selector===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="rule")return r(o,s)}))},rt(a,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),a})(sse);In.registerParse=function(e){bA=e};In.registerRule=function(e){$g=e};In.registerAtRule=function(e){Wg=e};In.registerRoot=function(e){yA=e};var Ri=In;In.default=In;In.rebuild=function(e){e.type==="atrule"?Object.setPrototypeOf(e,Wg.prototype):e.type==="rule"?Object.setPrototypeOf(e,$g.prototype):e.type==="decl"?Object.setPrototypeOf(e,fA.prototype):e.type==="comment"?Object.setPrototypeOf(e,vA.prototype):e.type==="root"&&Object.setPrototypeOf(e,yA.prototype),e[hA]=!0,e.nodes&&e.nodes.forEach(function(a){In.rebuild(a)})};var lse=Ri,AA,SA,xo=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,Ce({type:"document"},t))||this,i.nodes||(i.nodes=[]),i}var n=a.prototype;return n.toResult=function(i){i===void 0&&(i={});var r=new AA(new SA,this,i);return r.stringify()},a})(lse);xo.registerLazyResult=function(e){AA=e};xo.registerProcessor=function(e){SA=e};var Gg=xo;xo.default=xo;var Op=(function(){function e(n,t){if(t===void 0&&(t={}),this.type="warning",this.text=n,t.node&&t.node.source){var i=t.node.rangeBy(t);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(var r in t)this[r]=t[r]}var a=e.prototype;return a.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e})(),CA=Op;Op.default=Op;var cse=CA,Bp=(function(){function e(n,t,i){this.processor=n,this.messages=[],this.root=t,this.opts=i,this.css=void 0,this.map=void 0}var a=e.prototype;return a.toString=function(){return this.css},a.warn=function(t,i){i===void 0&&(i={}),i.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(i.plugin=this.lastPlugin.postcssPlugin);var r=new cse(t,i);return this.messages.push(r),r},a.warnings=function(){return this.messages.filter(function(t){return t.type==="warning"})},rt(e,[{key:"content",get:function(){return this.css}}]),e})(),Hg=Bp;Bp.default=Bp;var lu=39,qv=34,Os=92,Vv=47,Bs=10,Xr=32,Us=12,qs=9,Vs=13,dse=91,use=93,pse=40,mse=41,gse=123,hse=125,fse=59,vse=42,bse=58,yse=64,$s=/[\t\n\f\r "#'()/;[\\\]{}]/g,Ws=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,kse=/.[\r\n"'(/\\]/,$v=/[\da-f]/i,wse=function(a,n){n===void 0&&(n={});var t=a.css.valueOf(),i=n.ignoreErrors,r,o,s,l,d,p,u,g,b,v,A=t.length,f=0,S=[],C=[];function T(){return f}function E(N){throw a.error("Unclosed "+N,f)}function P(){return C.length===0&&f>=A}function I(N){if(C.length)return C.pop();if(!(f>=A)){var Z=N?N.ignoreUnclosed:!1;switch(r=t.charCodeAt(f),r){case Bs:case Xr:case qs:case Vs:case Us:{o=f;do o+=1,r=t.charCodeAt(o);while(r===Xr||r===Bs||r===qs||r===Vs||r===Us);v=["space",t.slice(f,o)],f=o-1;break}case dse:case use:case gse:case hse:case bse:case fse:case mse:{var R=String.fromCharCode(r);v=[R,R,f];break}case pse:{if(g=S.length?S.pop()[1]:"",b=t.charCodeAt(f+1),g==="url"&&b!==lu&&b!==qv&&b!==Xr&&b!==Bs&&b!==qs&&b!==Us&&b!==Vs){o=f;do{if(p=!1,o=t.indexOf(")",o+1),o===-1)if(i||Z){o=f;break}else E("bracket");for(u=o;t.charCodeAt(u-1)===Os;)u-=1,p=!p}while(p);v=["brackets",t.slice(f,o+1),f,o],f=o}else o=t.indexOf(")",f+1),l=t.slice(f,o+1),o===-1||kse.test(l)?v=["(","(",f]:(v=["brackets",l,f,o],f=o);break}case lu:case qv:{s=r===lu?"'":'"',o=f;do{if(p=!1,o=t.indexOf(s,o+1),o===-1)if(i||Z){o=f+1;break}else E("string");for(u=o;t.charCodeAt(u-1)===Os;)u-=1,p=!p}while(p);v=["string",t.slice(f,o+1),f,o],f=o;break}case yse:{$s.lastIndex=f+1,$s.test(t),$s.lastIndex===0?o=t.length-1:o=$s.lastIndex-2,v=["at-word",t.slice(f,o+1),f,o],f=o;break}case Os:{for(o=f,d=!0;t.charCodeAt(o+1)===Os;)o+=1,d=!d;if(r=t.charCodeAt(o+1),d&&r!==Vv&&r!==Xr&&r!==Bs&&r!==qs&&r!==Vs&&r!==Us&&(o+=1,$v.test(t.charAt(o)))){for(;$v.test(t.charAt(o+1));)o+=1;t.charCodeAt(o+1)===Xr&&(o+=1)}v=["word",t.slice(f,o+1),f,o],f=o;break}default:{r===Vv&&t.charCodeAt(f+1)===vse?(o=t.indexOf("*/",f+2)+1,o===0&&(i||Z?o=t.length:E("comment")),v=["comment",t.slice(f,o+1),f,o],f=o):(Ws.lastIndex=f+1,Ws.test(t),Ws.lastIndex===0?o=t.length-1:o=Ws.lastIndex-2,v=["word",t.slice(f,o+1),f,o],S.push(v),f=o);break}}return f++,v}}function L(N){C.push(N)}return{back:L,endOfFile:P,nextToken:I,position:T}},DA=Ri,ac=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,t)||this,i.type="atrule",i}var n=a.prototype;return n.append=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];var s;return this.proxyOf.nodes||(this.nodes=[]),(s=e.prototype.append).call.apply(s,[].concat([this],r))},n.prepend=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];var s;return this.proxyOf.nodes||(this.nodes=[]),(s=e.prototype.prepend).call.apply(s,[].concat([this],r))},a})(DA),Yg=ac;ac.default=ac;DA.registerAtRule(ac);var TA=Ri,EA,PA,yr=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,t)||this,i.type="root",i.nodes||(i.nodes=[]),i}var n=a.prototype;return n.normalize=function(i,r,o){var s=e.prototype.normalize.call(this,i);if(r){if(o==="prepend")this.nodes.length>1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var l=B(s),d;!(d=l()).done;){var p=d.value;p.raws.before=r.raws.before}}return s},n.removeChild=function(i,r){var o=this.index(i);return!r&&o===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[o].raws.before),e.prototype.removeChild.call(this,i)},n.toResult=function(i){i===void 0&&(i={});var r=new EA(new PA,this,i);return r.stringify()},a})(TA);yr.registerLazyResult=function(e){EA=e};yr.registerProcessor=function(e){PA=e};var ts=yr;yr.default=yr;TA.registerRoot(yr);var Io={comma:function(a){return Io.split(a,[","],!0)},space:function(a){var n=[" ",`
`,"	"];return Io.split(a,n)},split:function(a,n,t){for(var i=[],r="",o=!1,s=0,l=!1,d="",p=!1,u=B(a),g;!(g=u()).done;){var b=g.value;p?p=!1:b==="\\"?p=!0:l?b===d&&(l=!1):b==='"'||b==="'"?(l=!0,d=b):b==="("?s+=1:b===")"?s>0&&(s-=1):s===0&&n.includes(b)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=b}return(t||r!=="")&&i.push(r.trim()),i}},_A=Io;Io.default=Io;var xA=Ri,Ase=_A,nc=(function(e){lt(a,e);function a(n){var t;return t=e.call(this,n)||this,t.type="rule",t.nodes||(t.nodes=[]),t}return rt(a,[{key:"selectors",get:function(){return Ase.comma(this.selector)},set:function(t){var i=this.selector?this.selector.match(/,\s*/):null,r=i?i[0]:","+this.raw("between","beforeOpen");this.selector=t.join(r)}}]),a})(xA),Kg=nc;nc.default=nc;xA.registerRule(nc);var Sse=od,Cse=wse,Dse=ld,Tse=Yg,Ese=ts,Wv=Kg,Gv={empty:!0,space:!0};function Pse(e){for(var a=e.length-1;a>=0;a--){var n=e[a],t=n[3]||n[2];if(t)return t}}var _se=(function(){function e(n){this.input=n,this.root=new Ese,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:n,start:{column:1,line:1,offset:0}}}var a=e.prototype;return a.atrule=function(t){var i=new Tse;i.name=t[1].slice(1),i.name===""&&this.unnamedAtrule(i,t),this.init(i,t[2]);for(var r,o,s,l=!1,d=!1,p=[],u=[];!this.tokenizer.endOfFile();){if(t=this.tokenizer.nextToken(),r=t[0],r==="("||r==="["?u.push(r==="("?")":"]"):r==="{"&&u.length>0?u.push("}"):r===u[u.length-1]&&u.pop(),u.length===0)if(r===";"){i.source.end=this.getPosition(t[2]),i.source.end.offset++,this.semicolon=!0;break}else if(r==="{"){d=!0;break}else if(r==="}"){if(p.length>0){for(s=p.length-1,o=p[s];o&&o[0]==="space";)o=p[--s];o&&(i.source.end=this.getPosition(o[3]||o[2]),i.source.end.offset++)}this.end(t);break}else p.push(t);else p.push(t);if(this.tokenizer.endOfFile()){l=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(p),p.length?(i.raws.afterName=this.spacesAndCommentsFromStart(p),this.raw(i,"params",p),l&&(t=p[p.length-1],i.source.end=this.getPosition(t[3]||t[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),d&&(i.nodes=[],this.current=i)},a.checkMissedSemicolon=function(t){var i=this.colon(t);if(i!==!1){for(var r=0,o,s=i-1;s>=0&&(o=t[s],!(o[0]!=="space"&&(r+=1,r===2)));s--);throw this.input.error("Missed semicolon",o[0]==="word"?o[3]+1:o[2])}},a.colon=function(t){for(var i=0,r,o,s,l=B(t.entries()),d;!(d=l()).done;){var p=d.value,u=p[0],g=p[1];if(r=g,o=r[0],o==="("&&(i+=1),o===")"&&(i-=1),i===0&&o===":")if(!s)this.doubleColon(r);else{if(s[0]==="word"&&s[1]==="progid")continue;return u}s=r}return!1},a.comment=function(t){var i=new Dse;this.init(i,t[2]),i.source.end=this.getPosition(t[3]||t[2]),i.source.end.offset++;var r=t[1].slice(2,-2);if(/^\s*$/.test(r))i.text="",i.raws.left=r,i.raws.right="";else{var o=r.match(/^(\s*)([^]*\S)(\s*)$/);i.text=o[2],i.raws.left=o[1],i.raws.right=o[3]}},a.createTokenizer=function(){this.tokenizer=Cse(this.input)},a.decl=function(t,i){var r=new Sse;this.init(r,t[0][2]);var o=t[t.length-1];for(o[0]===";"&&(this.semicolon=!0,t.pop()),r.source.end=this.getPosition(o[3]||o[2]||Pse(t)),r.source.end.offset++;t[0][0]!=="word";)t.length===1&&this.unknownWord(t),r.raws.before+=t.shift()[1];for(r.source.start=this.getPosition(t[0][2]),r.prop="";t.length;){var s=t[0][0];if(s===":"||s==="space"||s==="comment")break;r.prop+=t.shift()[1]}r.raws.between="";for(var l;t.length;)if(l=t.shift(),l[0]===":"){r.raws.between+=l[1];break}else l[0]==="word"&&/\w/.test(l[1])&&this.unknownWord([l]),r.raws.between+=l[1];(r.prop[0]==="_"||r.prop[0]==="*")&&(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var d=[],p;t.length&&(p=t[0][0],!(p!=="space"&&p!=="comment"));)d.push(t.shift());this.precheckMissedSemicolon(t);for(var u=t.length-1;u>=0;u--){if(l=t[u],l[1].toLowerCase()==="!important"){r.important=!0;var g=this.stringFrom(t,u);g=this.spacesFromEnd(t)+g,g!==" !important"&&(r.raws.important=g);break}else if(l[1].toLowerCase()==="important"){for(var b=t.slice(0),v="",A=u;A>0;A--){var f=b[A][0];if(v.trim().indexOf("!")===0&&f!=="space")break;v=b.pop()[1]+v}v.trim().indexOf("!")===0&&(r.important=!0,r.raws.important=v,t=b)}if(l[0]!=="space"&&l[0]!=="comment")break}var S=t.some(function(C){return C[0]!=="space"&&C[0]!=="comment"});S&&(r.raws.between+=d.map(function(C){return C[1]}).join(""),d=[]),this.raw(r,"value",d.concat(t),i),r.value.includes(":")&&!i&&this.checkMissedSemicolon(t)},a.doubleColon=function(t){throw this.input.error("Double colon",{offset:t[2]},{offset:t[2]+t[1].length})},a.emptyRule=function(t){var i=new Wv;this.init(i,t[2]),i.selector="",i.raws.between="",this.current=i},a.end=function(t){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(t[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(t)},a.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},a.freeSemicolon=function(t){if(this.spaces+=t[1],this.current.nodes){var i=this.current.nodes[this.current.nodes.length-1];i&&i.type==="rule"&&!i.raws.ownSemicolon&&(i.raws.ownSemicolon=this.spaces,this.spaces="")}},a.getPosition=function(t){var i=this.input.fromOffset(t);return{column:i.col,line:i.line,offset:t}},a.init=function(t,i){this.current.push(t),t.source={input:this.input,start:this.getPosition(i)},t.raws.before=this.spaces,this.spaces="",t.type!=="comment"&&(this.semicolon=!1)},a.other=function(t){for(var i=!1,r=null,o=!1,s=null,l=[],d=t[1].startsWith("--"),p=[],u=t;u;){if(r=u[0],p.push(u),r==="("||r==="[")s||(s=u),l.push(r==="("?")":"]");else if(d&&o&&r==="{")s||(s=u),l.push("}");else if(l.length===0)if(r===";")if(o){this.decl(p,d);return}else break;else if(r==="{"){this.rule(p);return}else if(r==="}"){this.tokenizer.back(p.pop()),i=!0;break}else r===":"&&(o=!0);else r===l[l.length-1]&&(l.pop(),l.length===0&&(s=null));u=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(i=!0),l.length>0&&this.unclosedBracket(s),i&&o){if(!d)for(;p.length&&(u=p[p.length-1][0],!(u!=="space"&&u!=="comment"));)this.tokenizer.back(p.pop());this.decl(p,d)}else this.unknownWord(p)},a.parse=function(){for(var t;!this.tokenizer.endOfFile();)switch(t=this.tokenizer.nextToken(),t[0]){case"space":this.spaces+=t[1];break;case";":this.freeSemicolon(t);break;case"}":this.end(t);break;case"comment":this.comment(t);break;case"at-word":this.atrule(t);break;case"{":this.emptyRule(t);break;default:this.other(t);break}this.endFile()},a.precheckMissedSemicolon=function(){},a.raw=function(t,i,r,o){for(var s,l,d=r.length,p="",u=!0,g,b,v=0;v<d;v+=1)s=r[v],l=s[0],l==="space"&&v===d-1&&!o?u=!1:l==="comment"?(b=r[v-1]?r[v-1][0]:"empty",g=r[v+1]?r[v+1][0]:"empty",!Gv[b]&&!Gv[g]?p.slice(-1)===","?u=!1:p+=s[1]:u=!1):p+=s[1];if(!u){var A=r.reduce(function(f,S){return f+S[1]},"");t.raws[i]={raw:A,value:p}}t[i]=p},a.rule=function(t){t.pop();var i=new Wv;this.init(i,t[0][2]),i.raws.between=this.spacesAndCommentsFromEnd(t),this.raw(i,"selector",t),this.current=i},a.spacesAndCommentsFromEnd=function(t){for(var i,r="";t.length&&(i=t[t.length-1][0],!(i!=="space"&&i!=="comment"));)r=t.pop()[1]+r;return r},a.spacesAndCommentsFromStart=function(t){for(var i,r="";t.length&&(i=t[0][0],!(i!=="space"&&i!=="comment"));)r+=t.shift()[1];return r},a.spacesFromEnd=function(t){for(var i,r="";t.length&&(i=t[t.length-1][0],i==="space");)r=t.pop()[1]+r;return r},a.stringFrom=function(t,i){for(var r="",o=i;o<t.length;o++)r+=t[o][1];return t.splice(i,t.length-i),r},a.unclosedBlock=function(){var t=this.current.source.start;throw this.input.error("Unclosed block",t.line,t.column)},a.unclosedBracket=function(t){throw this.input.error("Unclosed bracket",{offset:t[2]},{offset:t[2]+1})},a.unexpectedClose=function(t){throw this.input.error("Unexpected }",{offset:t[2]},{offset:t[2]+1})},a.unknownWord=function(t){throw this.input.error("Unknown word",{offset:t[0][2]},{offset:t[0][2]+t[0][1].length})},a.unnamedAtrule=function(t,i){throw this.input.error("At-rule without name",{offset:i[2]},{offset:i[2]+i[1].length})},e})(),xse=_se,Ise=Ri,Rse=xse,zse=sd;function ic(e,a){var n=new zse(e,a),t=new Rse(n);try{t.parse()}catch(i){throw i}return t.root}var Zg=ic;ic.default=ic;Ise.registerParse(ic);var Oa=oi.isClean,Mse=oi.my,Nse=mA,Fse=id,Lse=Ri,jse=Gg,Hv=Hg,Ose=Zg,Bse=ts,Use={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},qse={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Vse={Once:!0,postcssPlugin:!0,prepare:!0},kr=0;function eo(e){return(typeof e>"u"?"undefined":ce(e))==="object"&&typeof e.then=="function"}function IA(e){var a=!1,n=Use[e.type];return e.type==="decl"?a=e.prop.toLowerCase():e.type==="atrule"&&(a=e.name.toLowerCase()),a&&e.append?[n,n+"-"+a,kr,n+"Exit",n+"Exit-"+a]:a?[n,n+"-"+a,n+"Exit",n+"Exit-"+a]:e.append?[n,kr,n+"Exit"]:[n,n+"Exit"]}function Yv(e){var a;return e.type==="document"?a=["Document",kr,"DocumentExit"]:e.type==="root"?a=["Root",kr,"RootExit"]:a=IA(e),{eventIndex:0,events:a,iterator:0,node:e,visitorIndex:0,visitors:[]}}function Up(e){return e[Oa]=!1,e.nodes&&e.nodes.forEach(function(a){return Up(a)}),e}var qp={},wr=(function(){function e(n,t,i){var r=this;this.stringified=!1,this.processed=!1;var o;if((typeof t>"u"?"undefined":ce(t))==="object"&&t!==null&&(t.type==="root"||t.type==="document"))o=Up(t);else if(le(t,e)||le(t,Hv))o=Up(t.root),t.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=t.map);else{var s=Ose;i.syntax&&(s=i.syntax.parse),i.parser&&(s=i.parser),s.parse&&(s=s.parse);try{o=s(t,i)}catch(l){this.processed=!0,this.error=l}o&&!o[Mse]&&Lse.rebuild(o)}this.result=new Hv(n,o,i),this.helpers=Ce({},qp,{postcss:qp,result:this.result}),this.plugins=this.processor.plugins.map(function(l){return(typeof l>"u"?"undefined":ce(l))==="object"&&l.prepare?Ce({},l,l.prepare(r.result)):l})}var a=e.prototype;return a.async=function(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)},a.catch=function(t){return this.async().catch(t)},a.finally=function(t){return this.async().then(t,t)},a.getAsyncError=function(){throw new Error("Use process(css).then(cb) to work with async plugins")},a.handleError=function(t,i){var r=this.result.lastPlugin;try{if(i&&i.addToError(t),this.error=t,t.name==="CssSyntaxError"&&!t.plugin)t.plugin=r.postcssPlugin,t.setMessage();else if(r.postcssVersion)var o,s,l,d,p}catch{}return t},a.prepareVisitors=function(){var t=this;this.listeners={};for(var i=function(p,u,g){t.listeners[u]||(t.listeners[u]=[]),t.listeners[u].push([p,g])},r=B(this.plugins),o;!(o=r()).done;){var s=o.value;if((typeof s>"u"?"undefined":ce(s))==="object")for(var l in s){if(!qse[l]&&/^[A-Z]/.test(l))throw new Error("Unknown event "+l+" in "+s.postcssPlugin+". Try to update PostCSS ("+this.processor.version+" now).");if(!Vse[l])if(ce(s[l])==="object")for(var d in s[l])d==="*"?i(s,l,s[l][d]):i(s,l+"-"+d.toLowerCase(),s[l][d]);else typeof s[l]=="function"&&i(s,l,s[l])}}this.hasListener=Object.keys(this.listeners).length>0},a.runAsync=function(){var t=this;return Qc(function(){var i,r,o,s,l,d,p,u,g,b,v,A;return Di(this,function(f){switch(f.label){case 0:t.plugin=0,i=0,f.label=1;case 1:if(!(i<t.plugins.length))return[3,6];if(r=t.plugins[i],o=t.runOnRoot(r),!eo(o))return[3,5];f.label=2;case 2:return f.trys.push([2,4,,5]),[4,o];case 3:return f.sent(),[3,5];case 4:throw s=f.sent(),t.handleError(s);case 5:return i++,[3,1];case 6:if(t.prepareVisitors(),!t.hasListener)return[3,18];l=t.result.root,f.label=7;case 7:if(l[Oa])return[3,14];l[Oa]=!0,d=[Yv(l)],f.label=8;case 8:if(!(d.length>0))return[3,13];if(p=t.visitTick(d),!eo(p))return[3,12];f.label=9;case 9:return f.trys.push([9,11,,12]),[4,p];case 10:return f.sent(),[3,12];case 11:throw u=f.sent(),g=d[d.length-1].node,t.handleError(u,g);case 12:return[3,8];case 13:return[3,7];case 14:if(!t.listeners.OnceExit)return[3,18];b=function(){var S,C,T,E,P;return Di(this,function(I){switch(I.label){case 0:S=A.value,C=S[0],T=S[1],t.result.lastPlugin=C,I.label=1;case 1:return I.trys.push([1,6,,7]),l.type!=="document"?[3,3]:(E=l.nodes.map(function(L){return T(L,t.helpers)}),[4,Promise.all(E)]);case 2:return I.sent(),[3,5];case 3:return[4,T(l,t.helpers)];case 4:I.sent(),I.label=5;case 5:return[3,7];case 6:throw P=I.sent(),t.handleError(P);case 7:return[2]}})},v=B(t.listeners.OnceExit),f.label=15;case 15:return(A=v()).done?[3,18]:[5,_g(b())];case 16:f.sent(),f.label=17;case 17:return[3,15];case 18:return t.processed=!0,[2,t.stringify()]}})})()},a.runOnRoot=function(t){var i=this;this.result.lastPlugin=t;try{if((typeof t>"u"?"undefined":ce(t))==="object"&&t.Once){if(this.result.root.type==="document"){var r=this.result.root.nodes.map(function(o){return t.Once(o,i.helpers)});return eo(r[0])?Promise.all(r):r}return t.Once(this.result.root,this.helpers)}else if(typeof t=="function")return t(this.result.root,this.result)}catch(o){throw this.handleError(o)}},a.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var t=this.result.opts,i=Fse;t.syntax&&(i=t.syntax.stringify),t.stringifier&&(i=t.stringifier),i.stringify&&(i=i.stringify);var r=new Nse(i,this.result.root,this.result.opts),o=r.generate();return this.result.css=o[0],this.result.map=o[1],this.result},a.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var t=B(this.plugins),i;!(i=t()).done;){var r=i.value,o=this.runOnRoot(r);if(eo(o))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var s=this.result.root;!s[Oa];)s[Oa]=!0,this.walkSync(s);if(this.listeners.OnceExit)if(s.type==="document")for(var l=B(s.nodes),d;!(d=l()).done;){var p=d.value;this.visitSync(this.listeners.OnceExit,p)}else this.visitSync(this.listeners.OnceExit,s)}return this.result},a.then=function(t,i){return this.async().then(t,i)},a.toString=function(){return this.css},a.visitSync=function(t,i){for(var r=B(t),o;!(o=r()).done;){var s=o.value,l=s[0],d=s[1];this.result.lastPlugin=l;var p=void 0;try{p=d(i,this.helpers)}catch(u){throw this.handleError(u,i.proxyOf)}if(i.type!=="root"&&i.type!=="document"&&!i.parent)return!0;if(eo(p))throw this.getAsyncError()}},a.visitTick=function(t){var i=t[t.length-1],r=i.node,o=i.visitors;if(r.type!=="root"&&r.type!=="document"&&!r.parent){t.pop();return}if(o.length>0&&i.visitorIndex<o.length){var s=o[i.visitorIndex],l=s[0],d=s[1];i.visitorIndex+=1,i.visitorIndex===o.length&&(i.visitors=[],i.visitorIndex=0),this.result.lastPlugin=l;try{return d(r.toProxy(),this.helpers)}catch(v){throw this.handleError(v,r)}}if(i.iterator!==0){for(var p=i.iterator,u;u=r.nodes[r.indexes[p]];)if(r.indexes[p]+=1,!u[Oa]){u[Oa]=!0,t.push(Yv(u));return}i.iterator=0,delete r.indexes[p]}for(var g=i.events;i.eventIndex<g.length;){var b=g[i.eventIndex];if(i.eventIndex+=1,b===kr){r.nodes&&r.nodes.length&&(r[Oa]=!0,i.iterator=r.getIterator());return}else if(this.listeners[b]){i.visitors=this.listeners[b];return}}t.pop()},a.walkSync=function(t){var i=this;t[Oa]=!0;for(var r=IA(t),o=B(r),s;!(s=o()).done;){var l=s.value;if(l===kr)t.nodes&&t.each(function(p){p[Oa]||i.walkSync(p)});else{var d=this.listeners[l];if(d&&this.visitSync(d,t.toProxy()))return}}},a.warnings=function(){return this.sync().warnings()},rt(e,[{key:"content",get:function(){return this.stringify().content}},{key:"css",get:function(){return this.stringify().css}},{key:"map",get:function(){return this.stringify().map}},{key:"messages",get:function(){return this.sync().messages}},{key:"opts",get:function(){return this.result.opts}},{key:"processor",get:function(){return this.result.processor}},{key:"root",get:function(){return this.sync().root}},{key:Symbol.toStringTag,get:function(){return"LazyResult"}}]),e})();wr.registerPostcss=function(e){qp=e};var RA=wr;wr.default=wr;Bse.registerLazyResult(wr);jse.registerLazyResult(wr);var $se=mA,Wse=id,Gse=Zg,Hse=Hg,Vp=(function(){function e(n,t,i){t=t.toString(),this.stringified=!1,this._processor=n,this._css=t,this._opts=i,this._map=void 0;var r,o=Wse;this.result=new Hse(this._processor,r,this._opts),this.result.css=t;var s=this;Object.defineProperty(this.result,"root",{get:function(){return s.root}});var l=new $se(o,r,this._opts,t);if(l.isMap()){var d=l.generate(),p=d[0],u=d[1];p&&(this.result.css=p),u&&(this.result.map=u)}else l.clearAnnotation(),this.result.css=l.css}var a=e.prototype;return a.async=function(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)},a.catch=function(t){return this.async().catch(t)},a.finally=function(t){return this.async().then(t,t)},a.sync=function(){if(this.error)throw this.error;return this.result},a.then=function(t,i){return this.async().then(t,i)},a.toString=function(){return this._css},a.warnings=function(){return[]},rt(e,[{key:"content",get:function(){return this.result.css}},{key:"css",get:function(){return this.result.css}},{key:"map",get:function(){return this.result.map}},{key:"messages",get:function(){return[]}},{key:"opts",get:function(){return this.result.opts}},{key:"processor",get:function(){return this.result.processor}},{key:"root",get:function(){if(this._root)return this._root;var t,i=Gse;try{t=i(this._css,this._opts)}catch(r){this.error=r}if(this.error)throw this.error;return this._root=t,t}},{key:Symbol.toStringTag,get:function(){return"NoWorkResult"}}]),e})(),Yse=Vp;Vp.default=Vp;var Kse=Yse,Zse=RA,Jse=Gg,Qse=ts,Ro=(function(){function e(n){n===void 0&&(n=[]),this.version="8.4.38",this.plugins=this.normalize(n)}var a=e.prototype;return a.normalize=function(t){for(var i=[],r=B(t),o;!(o=r()).done;){var s=o.value;if(s.postcss===!0?s=s():s.postcss&&(s=s.postcss),(typeof s>"u"?"undefined":ce(s))==="object"&&Array.isArray(s.plugins))i=i.concat(s.plugins);else if((typeof s>"u"?"undefined":ce(s))==="object"&&s.postcssPlugin)i.push(s);else if(typeof s=="function")i.push(s);else if(!((typeof s>"u"?"undefined":ce(s))==="object"&&(s.parse||s.stringify)))throw new Error(s+" is not a PostCSS plugin")}return i},a.process=function(t,i){return i===void 0&&(i={}),!this.plugins.length&&!i.parser&&!i.stringifier&&!i.syntax?new Kse(this,t,i):new Zse(this,t,i)},a.use=function(t){return this.plugins=this.plugins.concat(this.normalize([t])),this},e})(),Xse=Ro;Ro.default=Ro;Qse.registerProcessor(Ro);Jse.registerProcessor(Ro);var ele=od,tle=lA,ale=ld,nle=Yg,ile=sd,rle=ts,ole=Kg;function zo(e,a){if(Array.isArray(e))return e.map(function(u){return zo(u)});var n=e.inputs,t=Ci(e,["inputs"]);if(n){a=[];for(var i=B(n),r;!(r=i()).done;){var o=r.value,s=Ce({},o,{__proto__:ile.prototype});s.map&&(s.map=Ce({},s.map,{__proto__:tle.prototype})),a.push(s)}}if(t.nodes&&(t.nodes=e.nodes.map(function(u){return zo(u,a)})),t.source){var l=t.source,d=l.inputId,p=Ci(l,["inputId"]);t.source=p,d!=null&&(t.source.input=a[d])}if(t.type==="root")return new rle(t);if(t.type==="decl")return new ele(t);if(t.type==="rule")return new ole(t);if(t.type==="comment")return new ale(t);if(t.type==="atrule")return new nle(t);throw new Error("Unknown node type: "+e.type)}var sle=zo;zo.default=zo;var lle=Vg,zA=od,cle=RA,dle=Ri,Jg=Xse,ule=id,ple=sle,MA=Gg,mle=CA,NA=ld,FA=Yg,gle=Hg,hle=sd,fle=Zg,vle=_A,LA=Kg,jA=ts,ble=rd;function We(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];return a.length===1&&Array.isArray(a[0])&&(a=a[0]),new Jg(a)}We.plugin=function(a,n){var t=!1;function i(){for(var o=arguments.length,s=new Array(o),l=0;l<o;l++)s[l]=arguments[l];console&&console.warn&&!t&&(t=!0,hr.LANG&&hr.LANG.startsWith("cn"));var d=n.apply(void 0,[].concat(s));return d.postcssPlugin=a,d.postcssVersion=new Jg().version,d}var r;return Object.defineProperty(i,"postcss",{get:function(){return r||(r=i()),r}}),i.process=function(o,s,l){return We([i(l)]).process(o,s)},i};We.stringify=ule;We.parse=fle;We.fromJSON=ple;We.list=vle;We.comment=function(e){return new NA(e)};We.atRule=function(e){return new FA(e)};We.decl=function(e){return new zA(e)};We.rule=function(e){return new LA(e)};We.root=function(e){return new jA(e)};We.document=function(e){return new MA(e)};We.CssSyntaxError=lle;We.Declaration=zA;We.Container=dle;We.Processor=Jg;We.Document=MA;We.Comment=NA;We.Warning=mle;We.AtRule=FA;We.Result=gle;We.Input=hle;We.Rule=LA;We.Root=jA;We.Node=ble;cle.registerPostcss(We);var yle=We;We.default=We;var dt=Roe(yle);dt.stringify;dt.fromJSON;dt.plugin;dt.parse;dt.list;dt.document;dt.comment;dt.atRule;dt.rule;dt.decl;dt.root;dt.CssSyntaxError;dt.Declaration;dt.Container;dt.Processor;dt.Document;dt.Comment;dt.Warning;dt.AtRule;dt.Result;dt.Input;dt.Rule;dt.Root;dt.Node;var kle=(function(){function e(){for(var n=arguments.length,t=new Array(n),i=0;i<n;i++)t[i]=arguments[i];ca(this,"parentElement",null),ca(this,"parentNode",null),ca(this,"ownerDocument"),ca(this,"firstChild",null),ca(this,"lastChild",null),ca(this,"previousSibling",null),ca(this,"nextSibling",null),ca(this,"ELEMENT_NODE",1),ca(this,"TEXT_NODE",3),ca(this,"nodeType"),ca(this,"nodeName"),ca(this,"RRNodeType")}var a=e.prototype;return a.contains=function(t){if(le(t,e)){if(t.ownerDocument!==this.ownerDocument)return!1;if(t===this)return!0}else return!1;for(;t.parentNode;){if(t.parentNode===this)return!0;t=t.parentNode}return!1},a.appendChild=function(t){throw new Error("RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.")},a.insertBefore=function(t,i){throw new Error("RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.")},a.removeChild=function(t){throw new Error("RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.")},a.toString=function(){return"RRNode"},rt(e,[{key:"childNodes",get:function(){for(var t=[],i=this.firstChild;i;)t.push(i),i=i.nextSibling;return t}}]),e})(),Kv={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},Zv={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},Gs={},wle=function(){return!!globalThis.Zone};function Qg(e){if(Gs[e])return Gs[e];var a=globalThis[e],n=a.prototype,t=e in Kv?Kv[e]:void 0,i=!!(t&&t.every(function(p){var u,g;return!!((g=(u=Object.getOwnPropertyDescriptor(n,p))==null?void 0:u.get)!=null&&g.toString().includes("[native code]"))})),r=e in Zv?Zv[e]:void 0,o=!!(r&&r.every(function(p){var u;return typeof n[p]=="function"&&((u=n[p])==null?void 0:u.toString().includes("[native code]"))}));if(i&&o&&!wle())return Gs[e]=a.prototype,a.prototype;try{var s=document.createElement("iframe");document.body.appendChild(s);var l=s.contentWindow;if(!l)return a.prototype;var d=l[e].prototype;return document.body.removeChild(s),d?Gs[e]=d:n}catch{return n}}var cu={};function si(e,a,n){var t,i=e+"."+String(n);if(cu[i])return cu[i].call(a);var r=Qg(e),o=(t=Object.getOwnPropertyDescriptor(r,n))==null?void 0:t.get;return o?(cu[i]=o,o.call(a)):a[n]}var du={};function OA(e,a,n){var t=e+"."+String(n);if(du[t])return du[t].bind(a);var i=Qg(e),r=i[n];return typeof r!="function"?a[n]:(du[t]=r,r.bind(a))}function Ale(e){return si("Node",e,"childNodes")}function Sle(e){return si("Node",e,"parentNode")}function Cle(e){return si("Node",e,"parentElement")}function Dle(e){return si("Node",e,"textContent")}function Tle(e,a){return OA("Node",e,"contains")(a)}function Ele(e){return OA("Node",e,"getRootNode")()}function Ple(e){return!e||!("host"in e)?null:si("ShadowRoot",e,"host")}function _le(e){return e.styleSheets}function xle(e){return!e||!("shadowRoot"in e)?null:si("Element",e,"shadowRoot")}function Ile(e,a){return si("Element",e,"querySelector")(a)}function Rle(e,a){return si("Element",e,"querySelectorAll")(a)}function BA(){return Qg("MutationObserver").constructor}function zi(e,a,n){try{if(!(a in e))return function(){};var t=e[a],i=n(t);return typeof i=="function"&&(i.prototype=i.prototype||{},Object.defineProperties(i,{__rrweb_original__:{enumerable:!1,value:t}})),e[a]=i,function(){e[a]=t}}catch{return function(){}}}var _e={childNodes:Ale,parentNode:Sle,parentElement:Cle,textContent:Dle,contains:Tle,getRootNode:Ele,host:Ple,styleSheets:_le,shadowRoot:xle,querySelector:Ile,querySelectorAll:Rle,mutationObserver:BA,patch:zi};function Ht(e,a,n){n===void 0&&(n=document);var t={capture:!0,passive:!0};return n.addEventListener(e,a,t),function(){return n.removeEventListener(e,a,t)}}var Jv={map:{},getId:function(){return-1},getNode:function(){return null},removeNodeFromMap:function(){},has:function(){return!1},reset:function(){}};typeof window<"u"&&window.Proxy&&window.Reflect&&(Jv=new Proxy(Jv,{get:function(a,n,t){return Reflect.get(a,n,t)}}));function Mo(e,a,n){n===void 0&&(n={});var t=null,i=0;return function(){for(var r=arguments.length,o=new Array(r),s=0;s<r;s++)o[s]=arguments[s];var l=Date.now();!i&&n.leading===!1&&(i=l);var d=a-(l-i),p=this;d<=0||d>a?(t&&(clearTimeout(t),t=null),i=l,e.apply(p,o)):!t&&n.trailing!==!1&&(t=setTimeout(function(){i=n.leading===!1?0:Date.now(),t=null,e.apply(p,o)},d))}}function cd(e,a,n,t,i){i===void 0&&(i=window);var r=i.Object.getOwnPropertyDescriptor(e,a);return i.Object.defineProperty(e,a,t?n:{set:function(s){var l=this;setTimeout(function(){n.set.call(l,s)},0),r&&r.set&&r.set.call(this,s)}}),function(){return cd(e,a,r||{},!0)}}var rc=Date.now;/[1-9][0-9]{12}/.test(Date.now().toString())||(rc=function(){return new Date().getTime()});function UA(e){var a,n,t,i,r=e.document;return{left:r.scrollingElement?r.scrollingElement.scrollLeft:e.pageXOffset!==void 0?e.pageXOffset:r.documentElement.scrollLeft||(r==null?void 0:r.body)&&((a=_e.parentElement(r.body))==null?void 0:a.scrollLeft)||((n=r==null?void 0:r.body)==null?void 0:n.scrollLeft)||0,top:r.scrollingElement?r.scrollingElement.scrollTop:e.pageYOffset!==void 0?e.pageYOffset:(r==null?void 0:r.documentElement.scrollTop)||(r==null?void 0:r.body)&&((t=_e.parentElement(r.body))==null?void 0:t.scrollTop)||((i=r==null?void 0:r.body)==null?void 0:i.scrollTop)||0}}function qA(){return window.innerHeight||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight}function VA(){return window.innerWidth||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth}function $A(e){if(!e)return null;var a=e.nodeType===e.ELEMENT_NODE?e:_e.parentElement(e);return a}function Yt(e,a,n,t){if(!e)return!1;var i=$A(e);if(!i)return!1;try{if(typeof a=="string"){if(i.classList.contains(a)||t&&i.closest("."+a)!==null)return!0}else if(Zl(i,a,t))return!0}catch{}return!!(n&&(i.matches(n)||t&&i.closest(n)!==null))}function zle(e,a){return a.getId(e)!==-1}function uu(e,a,n){return e.tagName==="TITLE"&&n.headTitleMutations?!0:a.getId(e)===Do}function WA(e,a){if(lo(e))return!1;var n=a.getId(e);if(!a.has(n))return!0;var t=_e.parentNode(e);return t&&t.nodeType===e.DOCUMENT_NODE?!1:t?WA(t,a):!0}function $p(e){return!!e.changedTouches}function Mle(e){e===void 0&&(e=window),"NodeList"in e&&!e.NodeList.prototype.forEach&&(e.NodeList.prototype.forEach=Array.prototype.forEach),"DOMTokenList"in e&&!e.DOMTokenList.prototype.forEach&&(e.DOMTokenList.prototype.forEach=Array.prototype.forEach)}function GA(e,a){return!!(e.nodeName==="IFRAME"&&a.getMeta(e))}function HA(e,a){return!!(e.nodeName==="LINK"&&e.nodeType===e.ELEMENT_NODE&&e.getAttribute&&e.getAttribute("rel")==="stylesheet"&&a.getMeta(e))}function Wp(e){return e?le(e,kle)&&"shadowRoot"in e?!!e.shadowRoot:!!_e.shadowRoot(e):!1}var Nle=(function(){function e(){G(this,"id",1),G(this,"styleIDMap",new WeakMap),G(this,"idStyleMap",new Map)}var a=e.prototype;return a.getId=function(t){var i;return(i=this.styleIDMap.get(t))!=null?i:-1},a.has=function(t){return this.styleIDMap.has(t)},a.add=function(t,i){if(this.has(t))return this.getId(t);var r;return i===void 0?r=this.id++:r=i,this.styleIDMap.set(t,r),this.idStyleMap.set(r,t),r},a.getStyle=function(t){return this.idStyleMap.get(t)||null},a.reset=function(){this.styleIDMap=new WeakMap,this.idStyleMap=new Map,this.id=1},a.generateId=function(){return this.id++},a.remove=function(t){var i=this.styleIDMap.get(t);return i!==void 0?(this.styleIDMap.delete(t),this.idStyleMap.delete(i),!0):!1},e})();function YA(e){var a,n=null;return"getRootNode"in e&&((a=_e.getRootNode(e))==null?void 0:a.nodeType)===Node.DOCUMENT_FRAGMENT_NODE&&_e.host(_e.getRootNode(e))&&(n=_e.host(_e.getRootNode(e))),n}function Fle(e){for(var a=e,n;n=YA(a);)a=n;return a}function Lle(e){var a=e.ownerDocument;if(!a)return!1;var n=Fle(e);return _e.contains(a,n)}function KA(e){var a=e.ownerDocument;return a?_e.contains(a,e)||Lle(e):!1}var Re=(function(e){return e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e})(Re||{}),ve=(function(e){return e[e.Mutation=0]="Mutation",e[e.MouseMove=1]="MouseMove",e[e.MouseInteraction=2]="MouseInteraction",e[e.Scroll=3]="Scroll",e[e.ViewportResize=4]="ViewportResize",e[e.Input=5]="Input",e[e.TouchMove=6]="TouchMove",e[e.MediaInteraction=7]="MediaInteraction",e[e.StyleSheetRule=8]="StyleSheetRule",e[e.CanvasMutation=9]="CanvasMutation",e[e.Font=10]="Font",e[e.Log=11]="Log",e[e.Drag=12]="Drag",e[e.StyleDeclaration=13]="StyleDeclaration",e[e.Selection=14]="Selection",e[e.AdoptedStyleSheet=15]="AdoptedStyleSheet",e[e.CustomElement=16]="CustomElement",e})(ve||{}),Qt=(function(e){return e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e})(Qt||{}),kn=(function(e){return e[e.Mouse=0]="Mouse",e[e.Pen=1]="Pen",e[e.Touch=2]="Touch",e})(kn||{}),Ar=(function(e){return e[e["2D"]=0]="2D",e[e.WebGL=1]="WebGL",e[e.WebGL2=2]="WebGL2",e})(Ar||{}),Qi=(function(e){return e[e.Play=0]="Play",e[e.Pause=1]="Pause",e[e.Seeked=2]="Seeked",e[e.VolumeChange=3]="VolumeChange",e[e.RateChange=4]="RateChange",e})(Qi||{}),ZA=(function(e){return e[e.Document=0]="Document",e[e.DocumentType=1]="DocumentType",e[e.Element=2]="Element",e[e.Text=3]="Text",e[e.CDATA=4]="CDATA",e[e.Comment=5]="Comment",e})(ZA||{});function Qv(e){return"__ln"in e}var jle=(function(){function e(){G(this,"length",0),G(this,"head",null),G(this,"tail",null)}var a=e.prototype;return a.get=function(t){if(t>=this.length)throw new Error("Position outside of list range");for(var i=this.head,r=0;r<t;r++)i=(i==null?void 0:i.next)||null;return i},a.addNode=function(t){var i={value:t,previous:null,next:null};if(t.__ln=i,t.previousSibling&&Qv(t.previousSibling)){var r=t.previousSibling.__ln.next;i.next=r,i.previous=t.previousSibling.__ln,t.previousSibling.__ln.next=i,r&&(r.previous=i)}else if(t.nextSibling&&Qv(t.nextSibling)&&t.nextSibling.__ln.previous){var o=t.nextSibling.__ln.previous;i.previous=o,i.next=t.nextSibling.__ln,t.nextSibling.__ln.previous=i,o&&(o.next=i)}else this.head&&(this.head.previous=i),i.next=this.head,this.head=i;i.next===null&&(this.tail=i),this.length++},a.removeNode=function(t){var i=t.__ln;this.head&&(i.previous?(i.previous.next=i.next,i.next?i.next.previous=i.previous:this.tail=i.previous):(this.head=i.next,this.head?this.head.previous=null:this.tail=null),t.__ln&&delete t.__ln,this.length--)},e})(),Xv=function(e,a){return e+"@"+a},Ole=(function(){function e(){var n=this;G(this,"frozen",!1),G(this,"locked",!1),G(this,"texts",[]),G(this,"attributes",[]),G(this,"attributeMap",new WeakMap),G(this,"removes",[]),G(this,"mapRemoves",[]),G(this,"movedMap",{}),G(this,"addedSet",new Set),G(this,"movedSet",new Set),G(this,"droppedSet",new Set),G(this,"removesSubTreeCache",new Set),G(this,"mutationCb"),G(this,"blockClass"),G(this,"blockSelector"),G(this,"maskTextClass"),G(this,"maskTextSelector"),G(this,"inlineStylesheet"),G(this,"maskInputOptions"),G(this,"maskTextFn"),G(this,"maskInputFn"),G(this,"keepIframeSrcFn"),G(this,"recordCanvas"),G(this,"inlineImages"),G(this,"slimDOMOptions"),G(this,"dataURLOptions"),G(this,"doc"),G(this,"mirror"),G(this,"iframeManager"),G(this,"stylesheetManager"),G(this,"shadowDomManager"),G(this,"canvasManager"),G(this,"processedNodeManager"),G(this,"unattachedDoc"),G(this,"processMutations",function(t){t.forEach(n.processMutation),n.emit()}),G(this,"emit",function(){if(!(n.frozen||n.locked)){for(var t=[],i=new Set,r=new jle,o=function($){for(var F=$,j=Do;j===Do;)F=F&&F.nextSibling,j=F&&n.mirror.getId(F);return j},s=function($){var F=_e.parentNode($);if(!(!F||!KA($))){var j=!1;if($.nodeType===Node.TEXT_NODE){var H=F.tagName;if(H==="TEXTAREA")return;H==="STYLE"&&n.addedSet.has(F)&&(j=!0)}var X=lo(F)?n.mirror.getId(YA($)):n.mirror.getId(F),ie=o($);if(X===-1||ie===-1)return r.addNode($);var te=nr($,{doc:n.doc,mirror:n.mirror,blockClass:n.blockClass,blockSelector:n.blockSelector,maskTextClass:n.maskTextClass,maskTextSelector:n.maskTextSelector,skipChild:!0,newlyAddedElement:!0,inlineStylesheet:n.inlineStylesheet,maskInputOptions:n.maskInputOptions,maskTextFn:n.maskTextFn,maskInputFn:n.maskInputFn,slimDOMOptions:n.slimDOMOptions,dataURLOptions:n.dataURLOptions,recordCanvas:n.recordCanvas,inlineImages:n.inlineImages,onSerialize:function(oe){GA(oe,n.mirror)&&n.iframeManager.addIframe(oe),HA(oe,n.mirror)&&n.stylesheetManager.trackLinkElement(oe),Wp($)&&n.shadowDomManager.addShadowRoot(_e.shadowRoot($),n.doc)},onIframeLoad:function(oe,ae){n.iframeManager.attachIframe(oe,ae),n.shadowDomManager.observeAttachShadow(oe)},onStylesheetLoad:function(oe,ae){n.stylesheetManager.attachLinkElement(oe,ae)},cssCaptured:j});te&&(t.push({parentId:X,nextId:ie,node:te}),i.add(te.id))}};n.mapRemoves.length;){var l=n.mapRemoves.shift();if(l.nodeName==="IFRAME")try{n.iframeManager.removeIframe(l)}catch{}else n.stylesheetManager.cleanupStylesheetsForRemovedNode(l);n.mirror.removeNodeFromMap(l)}for(var d=B(n.movedSet),p;!(p=d()).done;){var u=p.value;eb(n.removesSubTreeCache,u,n.mirror)&&!n.movedSet.has(_e.parentNode(u))||s(u)}for(var g=B(n.addedSet),b;!(b=g()).done;){var v=b.value;!tb(n.droppedSet,v)&&!eb(n.removesSubTreeCache,v,n.mirror)||tb(n.movedSet,v)?s(v):n.droppedSet.add(v)}for(var A=null;r.length;){var f=null;if(A){var S=n.mirror.getId(_e.parentNode(A.value)),C=o(A.value);S!==-1&&C!==-1&&(f=A)}if(!f)for(var T=r.tail;T;){var E=T;if(T=T.previous,E){var P=n.mirror.getId(_e.parentNode(E.value)),I=o(E.value);if(I===-1)continue;if(P!==-1){f=E;break}else{var L=E.value,N=_e.parentNode(L);if(N&&N.nodeType===Node.DOCUMENT_FRAGMENT_NODE){var Z=_e.host(N),R=n.mirror.getId(Z);if(R!==-1){f=E;break}}}}}if(!f){for(;r.head;)r.removeNode(r.head.value);break}A=f.previous,r.removeNode(f.value),s(f.value)}var Y={texts:n.texts.map(function($){var F=$.node,j=_e.parentNode(F);return j&&j.tagName==="TEXTAREA"&&n.genTextAreaValueMutation(j),{id:n.mirror.getId(F),value:$.value}}).filter(function($){return!i.has($.id)}).filter(function($){return n.mirror.has($.id)}),attributes:n.attributes.map(function($){var F=$.attributes;if(typeof F.style=="string"){var j=JSON.stringify($.styleDiff),H=JSON.stringify($._unchangedStyles);j.length<F.style.length&&(j+H).split("var(").length===F.style.split("var(").length&&(F.style=$.styleDiff)}return{id:n.mirror.getId($.node),attributes:F}}).filter(function($){return!i.has($.id)}).filter(function($){return n.mirror.has($.id)}),removes:n.removes,adds:t};!Y.texts.length&&!Y.attributes.length&&!Y.removes.length&&!Y.adds.length||(n.texts=[],n.attributes=[],n.attributeMap=new WeakMap,n.removes=[],n.addedSet=new Set,n.movedSet=new Set,n.droppedSet=new Set,n.removesSubTreeCache=new Set,n.movedMap={},n.mutationCb(Y))}}),G(this,"genTextAreaValueMutation",function(t){var i=n.attributeMap.get(t);i||(i={node:t,attributes:{},styleDiff:{},_unchangedStyles:{}},n.attributes.push(i),n.attributeMap.set(t,i));var r=Array.from(_e.childNodes(t),function(o){return _e.textContent(o)||""}).join("");i.attributes.value=Hl({element:t,maskInputOptions:n.maskInputOptions,tagName:t.tagName,type:Yl(t),value:r,maskInputFn:n.maskInputFn})}),G(this,"processMutation",function(t){if(!uu(t.target,n.mirror,n.slimDOMOptions))switch(t.type){case"characterData":{var i=_e.textContent(t.target);!Yt(t.target,n.blockClass,n.blockSelector,!1)&&i!==t.oldValue&&n.texts.push({value:Tw(t.target,n.maskTextClass,n.maskTextSelector,!0)&&i?n.maskTextFn?n.maskTextFn(i,$A(t.target)):i.replace(/[\S]/g,"*"):i,node:t.target});break}case"attributes":{var r=t.target,o=t.attributeName,s=t.target.getAttribute(o);if(o==="value"){var l=Yl(r);s=Hl({element:r,maskInputOptions:n.maskInputOptions,tagName:r.tagName,type:l,value:s,maskInputFn:n.maskInputFn})}if(Yt(t.target,n.blockClass,n.blockSelector,!1)||s===t.oldValue)return;var d=n.attributeMap.get(t.target);if(r.tagName==="IFRAME"&&o==="src"&&!n.keepIframeSrcFn(s))if(!r.contentDocument)o="rr_src";else return;if(d||(d={node:t.target,attributes:{},styleDiff:{},_unchangedStyles:{}},n.attributes.push(d),n.attributeMap.set(t.target,d)),o==="type"&&r.tagName==="INPUT"&&(t.oldValue||"").toLowerCase()==="password"&&r.setAttribute("data-rr-is-password","true"),!Dw(r.tagName,o))if(d.attributes[o]=Cw(n.doc,Ti(r.tagName),Ti(o),s),o==="style"){if(!n.unattachedDoc)try{n.unattachedDoc=document.implementation.createHTMLDocument()}catch{n.unattachedDoc=n.doc}var p=n.unattachedDoc.createElement("span");t.oldValue&&p.setAttribute("style",t.oldValue);for(var u=B(Array.from(r.style)),g;!(g=u()).done;){var b=g.value,v=r.style.getPropertyValue(b),A=r.style.getPropertyPriority(b);v!==p.style.getPropertyValue(b)||A!==p.style.getPropertyPriority(b)?A===""?d.styleDiff[b]=v:d.styleDiff[b]=[v,A]:d._unchangedStyles[b]=[v,A]}for(var f=B(Array.from(p.style)),S;!(S=f()).done;){var C=S.value;r.style.getPropertyValue(C)===""&&(d.styleDiff[C]=!1)}}else o==="open"&&r.tagName==="DIALOG"&&(r.matches("dialog:modal")?d.attributes.rr_open_mode="modal":d.attributes.rr_open_mode="non-modal");break}case"childList":{if(Yt(t.target,n.blockClass,n.blockSelector,!0))return;if(t.target.tagName==="TEXTAREA"){n.genTextAreaValueMutation(t.target);return}t.addedNodes.forEach(function(T){return n.genAdds(T,t.target)}),t.removedNodes.forEach(function(T){var E=n.mirror.getId(T),P=lo(t.target)?n.mirror.getId(_e.host(t.target)):n.mirror.getId(t.target);Yt(t.target,n.blockClass,n.blockSelector,!1)||uu(T,n.mirror,n.slimDOMOptions)||!zle(T,n.mirror)||(n.addedSet.has(T)?(Gp(n.addedSet,T),n.droppedSet.add(T)):n.addedSet.has(t.target)&&E===-1||WA(t.target,n.mirror)||(n.movedSet.has(T)&&n.movedMap[Xv(E,P)]?Gp(n.movedSet,T):(n.removes.push({parentId:P,id:E,isShadow:lo(t.target)&&co(t.target)?!0:void 0}),Ble(T,n.removesSubTreeCache))),n.mapRemoves.push(T))});break}}}),G(this,"genAdds",function(t,i){if(!n.processedNodeManager.inOtherBuffer(t,n)&&!(n.addedSet.has(t)||n.movedSet.has(t))){if(n.mirror.hasNode(t)){if(uu(t,n.mirror,n.slimDOMOptions))return;n.movedSet.add(t);var r=null;i&&n.mirror.hasNode(i)&&(r=n.mirror.getId(i)),r&&r!==-1&&(n.movedMap[Xv(n.mirror.getId(t),r)]=!0)}else n.addedSet.add(t),n.droppedSet.delete(t);Yt(t,n.blockClass,n.blockSelector,!1)||(_e.childNodes(t).forEach(function(o){return n.genAdds(o)}),Wp(t)&&_e.childNodes(_e.shadowRoot(t)).forEach(function(o){n.processedNodeManager.add(o,n),n.genAdds(o,t)}))}})}var a=e.prototype;return a.init=function(t){var i=this;["mutationCb","blockClass","blockSelector","maskTextClass","maskTextSelector","inlineStylesheet","maskInputOptions","maskTextFn","maskInputFn","keepIframeSrcFn","recordCanvas","inlineImages","slimDOMOptions","dataURLOptions","doc","mirror","iframeManager","stylesheetManager","shadowDomManager","canvasManager","processedNodeManager"].forEach(function(r){i[r]=t[r]})},a.freeze=function(){this.frozen=!0,this.canvasManager.freeze()},a.unfreeze=function(){this.frozen=!1,this.canvasManager.unfreeze(),this.emit()},a.isFrozen=function(){return this.frozen},a.lock=function(){this.locked=!0,this.canvasManager.lock()},a.unlock=function(){this.locked=!1,this.canvasManager.unlock(),this.emit()},a.reset=function(){this.shadowDomManager.reset(),this.canvasManager.reset()},a.getDoc=function(){return this.doc},e})();function Gp(e,a){e.delete(a),_e.childNodes(a).forEach(function(n){return Gp(e,n)})}function Ble(e,a){for(var n=[e];n.length;){var t=n.pop();a.has(t)||(a.add(t),_e.childNodes(t).forEach(function(i){return n.push(i)}))}}function eb(e,a,n){return e.size===0?!1:Ule(e,a)}function Ule(e,a,n){var t=_e.parentNode(a);return t?e.has(t):!1}function tb(e,a){return e.size===0?!1:JA(e,a)}function JA(e,a){var n=_e.parentNode(a);return n?e.has(n)?!0:JA(e,n):!1}var uo;function qle(e){uo=e}function Vle(){uo=void 0}var Le=function(e){if(!uo)return e;var a=function(){for(var n=arguments.length,t=new Array(n),i=0;i<n;i++)t[i]=arguments[i];try{return e.apply(void 0,[].concat(t))}catch(r){if(uo&&uo(r)===!0)return;throw r}};return a},Ha=[];function as(e){try{if("composedPath"in e){var a=e.composedPath();if(a.length)return a[0]}else if("path"in e&&e.path.length)return e.path[0]}catch{}return e&&e.target}function QA(e,a){var n=new Ole;Ha.push(n),n.init(e);var t=new(BA())(Le(n.processMutations.bind(n)));return t.observe(a,{attributes:!0,attributeOldValue:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0}),t}function $le(e){for(var a=Ha.length-1;a>=0;a--){var n=Ha[a];n.getDoc()===e&&Ha.splice(a,1)}}function Wle(e){var a=e.mousemoveCb,n=e.sampling,t=e.doc,i=e.mirror;if(n.mousemove===!1)return function(){};var r=typeof n.mousemove=="number"?n.mousemove:50,o=typeof n.mousemoveCallback=="number"?n.mousemoveCallback:500,s=[],l,d=Mo(Le(function(g){var b=Date.now()-l;a(s.map(function(v){return v.timeOffset-=b,v}),g),s=[],l=null}),o),p=Le(Mo(Le(function(g){var b=as(g),v=$p(g)?g.changedTouches[0]:g,A=v.clientX,f=v.clientY;l||(l=rc()),s.push({x:A,y:f,id:i.getId(b),timeOffset:rc()-l}),d(typeof DragEvent<"u"&&le(g,DragEvent)?ve.Drag:le(g,MouseEvent)?ve.MouseMove:ve.TouchMove)}),r,{trailing:!1})),u=[Ht("mousemove",p,t),Ht("touchmove",p,t),Ht("drag",p,t)];return Le(function(){u.forEach(function(g){return g()})})}function Gle(e){var a=e.mouseInteractionCb,n=e.doc,t=e.mirror,i=e.blockClass,r=e.blockSelector,o=e.sampling;if(o.mouseInteraction===!1)return function(){};var s=o.mouseInteraction===!0||o.mouseInteraction===void 0?{}:o.mouseInteraction,l=[],d=null,p=function(u){return function(g){var b=as(g);if(!Yt(b,i,r,!0)){var v=null,A=u;if("pointerType"in g){switch(g.pointerType){case"mouse":v=kn.Mouse;break;case"touch":v=kn.Touch;break;case"pen":v=kn.Pen;break}v===kn.Touch?Qt[u]===Qt.MouseDown?A="TouchStart":Qt[u]===Qt.MouseUp&&(A="TouchEnd"):kn.Pen}else $p(g)&&(v=kn.Touch);v!==null?(d=v,(A.startsWith("Touch")&&v===kn.Touch||A.startsWith("Mouse")&&v===kn.Mouse)&&(v=null)):Qt[u]===Qt.Click&&(v=d,d=null);var f=$p(g)?g.changedTouches[0]:g;if(f){var S=t.getId(b),C=f.clientX,T=f.clientY;Le(a)(Ce({type:Qt[A],id:S,x:C,y:T},v!==null&&{pointerType:v}))}}}};return Object.keys(Qt).filter(function(u){return Number.isNaN(Number(u))&&!u.endsWith("_Departed")&&s[u]!==!1}).forEach(function(u){var g=Ti(u),b=p(u);if(window.PointerEvent)switch(Qt[u]){case Qt.MouseDown:case Qt.MouseUp:g=g.replace("mouse","pointer");break;case Qt.TouchStart:case Qt.TouchEnd:return}l.push(Ht(g,b,n))}),Le(function(){l.forEach(function(u){return u()})})}function XA(e){var a=e.scrollCb,n=e.doc,t=e.mirror,i=e.blockClass,r=e.blockSelector,o=e.sampling,s=Le(Mo(Le(function(l){var d=as(l);if(!(!d||Yt(d,i,r,!0))){var p=t.getId(d);if(d===n&&n.defaultView){var u=UA(n.defaultView);a({id:p,x:u.left,y:u.top})}else a({id:p,x:d.scrollLeft,y:d.scrollTop})}}),o.scroll||100));return Ht("scroll",s,n)}function Hle(e,a){var n=e.viewportResizeCb,t=a.win,i=-1,r=-1,o=Le(Mo(Le(function(){var s=qA(),l=VA();(i!==s||r!==l)&&(n({width:Number(l),height:Number(s)}),i=s,r=l)}),200));return Ht("resize",o,t)}var Yle=["INPUT","TEXTAREA","SELECT"],ab=new WeakMap;function Kle(e){var a=e.inputCb,n=e.doc,t=e.mirror,i=e.blockClass,r=e.blockSelector,o=e.ignoreClass,s=e.ignoreSelector,l=e.maskInputOptions,d=e.maskInputFn,p=e.sampling,u=e.userTriggeredOnInput;function g(E){var P=as(E),I=E.isTrusted,L=P&&P.tagName;if(P&&L==="OPTION"&&(P=_e.parentElement(P)),!(!P||!L||Yle.indexOf(L)<0||Yt(P,i,r,!0))&&!(P.classList.contains(o)||s&&P.matches(s))){var N=P.value,Z=!1,R=Yl(P)||"";R==="radio"||R==="checkbox"?Z=P.checked:(l[L.toLowerCase()]||l[R])&&(N=Hl({element:P,maskInputOptions:l,tagName:L,type:R,value:N,maskInputFn:d})),b(P,u?{text:N,isChecked:Z,userTriggered:I}:{text:N,isChecked:Z});var Y=P.name;R==="radio"&&Y&&Z&&n.querySelectorAll('input[type="radio"][name="'+Y+'"]').forEach(function($){if($!==P){var F=$.value;b($,u?{text:F,isChecked:!Z,userTriggered:!1}:{text:F,isChecked:!Z})}})}}function b(E,P){var I=ab.get(E);if(!I||I.text!==P.text||I.isChecked!==P.isChecked){ab.set(E,P);var L=t.getId(E);Le(a)(Ce({},P,{id:L}))}}var v=p.input==="last"?["change"]:["input","change"],A=v.map(function(E){return Ht(E,Le(g),n)}),f=n.defaultView;if(!f)return function(){A.forEach(function(E){return E()})};var S=f.Object.getOwnPropertyDescriptor(f.HTMLInputElement.prototype,"value"),C=[[f.HTMLInputElement.prototype,"value"],[f.HTMLInputElement.prototype,"checked"],[f.HTMLSelectElement.prototype,"value"],[f.HTMLTextAreaElement.prototype,"value"],[f.HTMLSelectElement.prototype,"selectedIndex"],[f.HTMLOptionElement.prototype,"selected"]];if(S&&S.set){var T;(T=A).push.apply(T,[].concat(C.map(function(E){return cd(E[0],E[1],{set:function(){Le(g)({target:this,isTrusted:!1})}},!1,f)})))}return Le(function(){A.forEach(function(E){return E()})})}function oc(e){var a=[];function n(t,i){if(Hs("CSSGroupingRule")&&le(t.parentRule,CSSGroupingRule)||Hs("CSSMediaRule")&&le(t.parentRule,CSSMediaRule)||Hs("CSSSupportsRule")&&le(t.parentRule,CSSSupportsRule)||Hs("CSSConditionRule")&&le(t.parentRule,CSSConditionRule)){var r=Array.from(t.parentRule.cssRules),o=r.indexOf(t);i.unshift(o)}else if(t.parentStyleSheet){var s=Array.from(t.parentStyleSheet.cssRules),l=s.indexOf(t);i.unshift(l)}return i}return n(e,a)}function Vn(e,a,n){var t,i;return e?(e.ownerNode?t=a.getId(e.ownerNode):i=n.getId(e),{styleId:i,id:t}):{}}function Zle(e,a){var n=e.styleSheetRuleCb,t=e.mirror,i=e.stylesheetManager,r=a.win;if(!r.CSSStyleSheet||!r.CSSStyleSheet.prototype)return function(){};var o=r.CSSStyleSheet.prototype.insertRule;r.CSSStyleSheet.prototype.insertRule=new Proxy(o,{apply:Le(function(g,b,v){var A=v[0],f=v[1],S=Vn(b,t,i.styleMirror),C=S.id,T=S.styleId;return(C&&C!==-1||T&&T!==-1)&&n({id:C,styleId:T,adds:[{rule:A,index:f}]}),g.apply(b,v)})}),r.CSSStyleSheet.prototype.addRule=function(g,b,v){v===void 0&&(v=this.cssRules.length);var A=g+" { "+b+" }";return r.CSSStyleSheet.prototype.insertRule.apply(this,[A,v])};var s=r.CSSStyleSheet.prototype.deleteRule;r.CSSStyleSheet.prototype.deleteRule=new Proxy(s,{apply:Le(function(g,b,v){var A=v[0],f=Vn(b,t,i.styleMirror),S=f.id,C=f.styleId;return(S&&S!==-1||C&&C!==-1)&&n({id:S,styleId:C,removes:[{index:A}]}),g.apply(b,v)})}),r.CSSStyleSheet.prototype.removeRule=function(g){return r.CSSStyleSheet.prototype.deleteRule.apply(this,[g])};var l;r.CSSStyleSheet.prototype.replace&&(l=r.CSSStyleSheet.prototype.replace,r.CSSStyleSheet.prototype.replace=new Proxy(l,{apply:Le(function(g,b,v){var A=v[0],f=Vn(b,t,i.styleMirror),S=f.id,C=f.styleId;return(S&&S!==-1||C&&C!==-1)&&n({id:S,styleId:C,replace:A}),g.apply(b,v)})}));var d;r.CSSStyleSheet.prototype.replaceSync&&(d=r.CSSStyleSheet.prototype.replaceSync,r.CSSStyleSheet.prototype.replaceSync=new Proxy(d,{apply:Le(function(g,b,v){var A=v[0],f=Vn(b,t,i.styleMirror),S=f.id,C=f.styleId;return(S&&S!==-1||C&&C!==-1)&&n({id:S,styleId:C,replaceSync:A}),g.apply(b,v)})}));var p={};Ys("CSSGroupingRule")?p.CSSGroupingRule=r.CSSGroupingRule:(Ys("CSSMediaRule")&&(p.CSSMediaRule=r.CSSMediaRule),Ys("CSSConditionRule")&&(p.CSSConditionRule=r.CSSConditionRule),Ys("CSSSupportsRule")&&(p.CSSSupportsRule=r.CSSSupportsRule));var u={};return Object.entries(p).forEach(function(g){var b=g[0],v=g[1];u[b]={insertRule:v.prototype.insertRule,deleteRule:v.prototype.deleteRule},v.prototype.insertRule=new Proxy(u[b].insertRule,{apply:Le(function(A,f,S){var C=S[0],T=S[1],E=Vn(f.parentStyleSheet,t,i.styleMirror),P=E.id,I=E.styleId;return(P&&P!==-1||I&&I!==-1)&&n({id:P,styleId:I,adds:[{rule:C,index:[].concat(oc(f),[T||0])}]}),A.apply(f,S)})}),v.prototype.deleteRule=new Proxy(u[b].deleteRule,{apply:Le(function(A,f,S){var C=S[0],T=Vn(f.parentStyleSheet,t,i.styleMirror),E=T.id,P=T.styleId;return(E&&E!==-1||P&&P!==-1)&&n({id:E,styleId:P,removes:[{index:[].concat(oc(f),[C])}]}),A.apply(f,S)})})}),Le(function(){r.CSSStyleSheet.prototype.insertRule=o,r.CSSStyleSheet.prototype.deleteRule=s,l&&(r.CSSStyleSheet.prototype.replace=l),d&&(r.CSSStyleSheet.prototype.replaceSync=d),Object.entries(p).forEach(function(g){var b=g[0],v=g[1];v.prototype.insertRule=u[b].insertRule,v.prototype.deleteRule=u[b].deleteRule})})}function eS(e,a){var n=e.mirror,t=e.stylesheetManager,i,r,o,s=null;a.nodeName==="#document"?s=n.getId(a):s=n.getId(_e.host(a));var l=a.nodeName==="#document"?(i=a.defaultView)==null?void 0:i.Document:(o=(r=a.ownerDocument)==null?void 0:r.defaultView)==null?void 0:o.ShadowRoot,d=l!=null&&l.prototype?Object.getOwnPropertyDescriptor(l==null?void 0:l.prototype,"adoptedStyleSheets"):void 0;return s===null||s===-1||!l||!d?function(){}:(Object.defineProperty(a,"adoptedStyleSheets",{configurable:d.configurable,enumerable:d.enumerable,get:function(){var u;return(u=d.get)==null?void 0:u.call(this)},set:function(u){var g,b=(g=d.set)==null?void 0:g.call(this,u);if(s!==null&&s!==-1)try{t.adoptStyleSheets(u,s)}catch{}return b}}),Le(function(){Object.defineProperty(a,"adoptedStyleSheets",{configurable:d.configurable,enumerable:d.enumerable,get:d.get,set:d.set})}))}function Jle(e,a){var n=e.styleDeclarationCb,t=e.mirror,i=e.ignoreCSSAttributes,r=e.stylesheetManager,o=a.win,s=o.CSSStyleDeclaration.prototype.setProperty;o.CSSStyleDeclaration.prototype.setProperty=new Proxy(s,{apply:Le(function(d,p,u){var g,b=u[0],v=u[1],A=u[2];if(i.has(b))return s.apply(p,[b,v,A]);var f=Vn((g=p.parentRule)==null?void 0:g.parentStyleSheet,t,r.styleMirror),S=f.id,C=f.styleId;return(S&&S!==-1||C&&C!==-1)&&n({id:S,styleId:C,set:{property:b,value:v,priority:A},index:oc(p.parentRule)}),d.apply(p,u)})});var l=o.CSSStyleDeclaration.prototype.removeProperty;return o.CSSStyleDeclaration.prototype.removeProperty=new Proxy(l,{apply:Le(function(d,p,u){var g,b=u[0];if(i.has(b))return l.apply(p,[b]);var v=Vn((g=p.parentRule)==null?void 0:g.parentStyleSheet,t,r.styleMirror),A=v.id,f=v.styleId;return(A&&A!==-1||f&&f!==-1)&&n({id:A,styleId:f,remove:{property:b},index:oc(p.parentRule)}),d.apply(p,u)})}),Le(function(){o.CSSStyleDeclaration.prototype.setProperty=s,o.CSSStyleDeclaration.prototype.removeProperty=l})}function Qle(e){var a=e.mediaInteractionCb,n=e.blockClass,t=e.blockSelector,i=e.mirror,r=e.sampling,o=e.doc,s=Le(function(d){return Mo(Le(function(p){var u=as(p);if(!(!u||Yt(u,n,t,!0))){var g=u.currentTime,b=u.volume,v=u.muted,A=u.playbackRate,f=u.loop;a({type:d,id:i.getId(u),currentTime:g,volume:b,muted:v,playbackRate:A,loop:f})}}),r.media||500)}),l=[Ht("play",s(Qi.Play),o),Ht("pause",s(Qi.Pause),o),Ht("seeked",s(Qi.Seeked),o),Ht("volumechange",s(Qi.VolumeChange),o),Ht("ratechange",s(Qi.RateChange),o)];return Le(function(){l.forEach(function(d){return d()})})}function Xle(e){var a=e.fontCb,n=e.doc,t=n.defaultView;if(!t)return function(){};var i=[],r=new WeakMap,o=t.FontFace;t.FontFace=function(d,p,u){var g=new o(d,p,u);return r.set(g,{family:d,buffer:typeof p!="string",descriptors:u,fontSource:typeof p=="string"?p:JSON.stringify(Array.from(new Uint8Array(p)))}),g};var s=zi(n.fonts,"add",function(l){return function(d){return setTimeout(Le(function(){var p=r.get(d);p&&(a(p),r.delete(d))}),0),l.apply(this,[d])}});return i.push(function(){t.FontFace=o}),i.push(s),Le(function(){i.forEach(function(l){return l()})})}function ece(e){var a=e.doc,n=e.mirror,t=e.blockClass,i=e.blockSelector,r=e.selectionCb,o=!0,s=Le(function(){var l=a.getSelection();if(!(!l||o&&(l!=null&&l.isCollapsed))){o=l.isCollapsed||!1;for(var d=[],p=l.rangeCount||0,u=0;u<p;u++){var g=l.getRangeAt(u),b=g.startContainer,v=g.startOffset,A=g.endContainer,f=g.endOffset,S=Yt(b,t,i,!0)||Yt(A,t,i,!0);S||d.push({start:n.getId(b),startOffset:v,end:n.getId(A),endOffset:f})}r({ranges:d})}});return s(),Ht("selectionchange",s)}function tce(e){var a=e.doc,n=e.customElementCb,t=a.defaultView;if(!t||!t.customElements)return function(){};var i=zi(t.customElements,"define",function(r){return function(o,s,l){try{n({define:{name:o}})}catch{}return r.apply(this,[o,s,l])}});return i}function ace(e,a){var n=e.mutationCb,t=e.mousemoveCb,i=e.mouseInteractionCb,r=e.scrollCb,o=e.viewportResizeCb,s=e.inputCb,l=e.mediaInteractionCb,d=e.styleSheetRuleCb,p=e.styleDeclarationCb,u=e.canvasMutationCb,g=e.fontCb,b=e.selectionCb,v=e.customElementCb;e.mutationCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.mutation){var C;(C=a).mutation.apply(C,[].concat(f))}n.apply(void 0,[].concat(f))},e.mousemoveCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.mousemove){var C;(C=a).mousemove.apply(C,[].concat(f))}t.apply(void 0,[].concat(f))},e.mouseInteractionCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.mouseInteraction){var C;(C=a).mouseInteraction.apply(C,[].concat(f))}i.apply(void 0,[].concat(f))},e.scrollCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.scroll){var C;(C=a).scroll.apply(C,[].concat(f))}r.apply(void 0,[].concat(f))},e.viewportResizeCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.viewportResize){var C;(C=a).viewportResize.apply(C,[].concat(f))}o.apply(void 0,[].concat(f))},e.inputCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.input){var C;(C=a).input.apply(C,[].concat(f))}s.apply(void 0,[].concat(f))},e.mediaInteractionCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.mediaInteaction){var C;(C=a).mediaInteaction.apply(C,[].concat(f))}l.apply(void 0,[].concat(f))},e.styleSheetRuleCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.styleSheetRule){var C;(C=a).styleSheetRule.apply(C,[].concat(f))}d.apply(void 0,[].concat(f))},e.styleDeclarationCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.styleDeclaration){var C;(C=a).styleDeclaration.apply(C,[].concat(f))}p.apply(void 0,[].concat(f))},e.canvasMutationCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.canvasMutation){var C;(C=a).canvasMutation.apply(C,[].concat(f))}u.apply(void 0,[].concat(f))},e.fontCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.font){var C;(C=a).font.apply(C,[].concat(f))}g.apply(void 0,[].concat(f))},e.selectionCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.selection){var C;(C=a).selection.apply(C,[].concat(f))}b.apply(void 0,[].concat(f))},e.customElementCb=function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];if(a.customElement){var C;(C=a).customElement.apply(C,[].concat(f))}v.apply(void 0,[].concat(f))}}function nce(e,a){a===void 0&&(a={});var n=e.doc.defaultView;if(!n)return function(){};ace(e,a);var t;e.recordDOM&&(t=QA(e,e.doc));var i=Wle(e),r=Gle(e),o=XA(e),s=Hle(e,{win:n}),l=Kle(e),d=Qle(e),p=function(){},u=function(){},g=function(){},b=function(){};e.recordDOM&&(p=Zle(e,{win:n}),u=eS(e,e.doc),g=Jle(e,{win:n}),e.collectFonts&&(b=Xle(e)));for(var v=ece(e),A=tce(e),f=[],S=B(e.plugins),C;!(C=S()).done;){var T=C.value;f.push(T.observer(T.callback,n,T.options))}return Le(function(){Ha.forEach(function(E){return E.reset()}),t==null||t.disconnect(),i(),r(),o(),s(),l(),d(),p(),u(),g(),b(),v(),A(),f.forEach(function(E){return E()})})}function Hs(e){return typeof window[e]<"u"}function Ys(e){return!!(typeof window[e]<"u"&&window[e].prototype&&"insertRule"in window[e].prototype&&"deleteRule"in window[e].prototype)}var nb=(function(){function e(n){G(this,"iframeIdToRemoteIdMap",new WeakMap),G(this,"iframeRemoteIdToIdMap",new WeakMap),this.generateIdFn=n}var a=e.prototype;return a.getId=function(t,i,r,o){var s=r||this.getIdToRemoteIdMap(t),l=o||this.getRemoteIdToIdMap(t),d=s.get(i);return d||(d=this.generateIdFn(),s.set(i,d),l.set(d,i)),d},a.getIds=function(t,i){var r=this,o=this.getIdToRemoteIdMap(t),s=this.getRemoteIdToIdMap(t);return i.map(function(l){return r.getId(t,l,o,s)})},a.getRemoteId=function(t,i,r){var o=r||this.getRemoteIdToIdMap(t);if(typeof i!="number")return i;var s=o.get(i);return s||-1},a.getRemoteIds=function(t,i){var r=this,o=this.getRemoteIdToIdMap(t);return i.map(function(s){return r.getRemoteId(t,s,o)})},a.reset=function(t){if(!t){this.iframeIdToRemoteIdMap=new WeakMap,this.iframeRemoteIdToIdMap=new WeakMap;return}this.iframeIdToRemoteIdMap.delete(t),this.iframeRemoteIdToIdMap.delete(t)},a.getIdToRemoteIdMap=function(t){var i=this.iframeIdToRemoteIdMap.get(t);return i||(i=new Map,this.iframeIdToRemoteIdMap.set(t,i)),i},a.getRemoteIdToIdMap=function(t){var i=this.iframeRemoteIdToIdMap.get(t);return i||(i=new Map,this.iframeRemoteIdToIdMap.set(t,i)),i},e})(),ice=(function(){function e(n){G(this,"iframes",new WeakMap),G(this,"crossOriginIframeMap",new WeakMap),G(this,"crossOriginIframeMirror",new nb(Sw)),G(this,"crossOriginIframeStyleMirror"),G(this,"crossOriginIframeRootIdMap",new WeakMap),G(this,"iframeContentDocumentMap",new WeakMap),G(this,"iframeObserverCleanupMap",new WeakMap),G(this,"mirror"),G(this,"mutationCb"),G(this,"wrappedEmit"),G(this,"loadListener"),G(this,"stylesheetManager"),G(this,"recordCrossOriginIframes"),this.mutationCb=n.mutationCb,this.wrappedEmit=n.wrappedEmit,this.stylesheetManager=n.stylesheetManager,this.recordCrossOriginIframes=n.recordCrossOriginIframes,this.crossOriginIframeStyleMirror=new nb(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror)),this.mirror=n.mirror,this.recordCrossOriginIframes&&window.addEventListener("message",this.handleMessage.bind(this))}var a=e.prototype;return a.addIframe=function(t){this.iframes.set(t,!0),t.contentWindow&&this.crossOriginIframeMap.set(t.contentWindow,t)},a.getIframeContentDocument=function(t){return this.iframeContentDocumentMap.get(t)},a.setObserverCleanup=function(t,i){this.iframeObserverCleanupMap.set(t,i)},a.getObserverCleanup=function(t){return this.iframeObserverCleanupMap.get(t)},a.removeIframe=function(t){var i=this.iframeContentDocumentMap.get(t);i&&(this.stylesheetManager.cleanupStylesheetsForRemovedNode(i),this.mirror.removeNodeFromMap(i,!0)),this.iframes.delete(t),this.iframeContentDocumentMap.delete(t);var r=this.iframeObserverCleanupMap.get(t);if(r){try{r()}catch{}this.iframeObserverCleanupMap.delete(t)}},a.addLoadListener=function(t){this.loadListener=t},a.attachIframe=function(t,i){var r,o;this.mutationCb({adds:[{parentId:this.mirror.getId(t),nextId:null,node:i}],removes:[],texts:[],attributes:[],isAttachIframe:!0}),t.contentDocument&&this.iframeContentDocumentMap.set(t,t.contentDocument),this.recordCrossOriginIframes&&((r=t.contentWindow)==null||r.addEventListener("message",this.handleMessage.bind(this))),(o=this.loadListener)==null||o.call(this,t),t.contentDocument&&t.contentDocument.adoptedStyleSheets&&t.contentDocument.adoptedStyleSheets.length>0&&this.stylesheetManager.adoptStyleSheets(t.contentDocument.adoptedStyleSheets,this.mirror.getId(t.contentDocument))},a.handleMessage=function(t){var i=t;if(!(i.data.type!=="rrweb"||i.origin!==i.data.origin)){var r=t.source;if(r){var o=this.crossOriginIframeMap.get(t.source);if(o){var s=this.transformCrossOriginEvent(o,i.data.event);s&&this.wrappedEmit(s,i.data.isCheckout)}}}},a.transformCrossOriginEvent=function(t,i){var r=this,o;switch(i.type){case Re.FullSnapshot:{this.crossOriginIframeMirror.reset(t),this.crossOriginIframeStyleMirror.reset(t),this.replaceIdOnNode(i.data.node,t);var s=i.data.node.id;return this.crossOriginIframeRootIdMap.set(t,s),this.patchRootIdOnNode(i.data.node,s),{timestamp:i.timestamp,type:Re.IncrementalSnapshot,data:{source:ve.Mutation,adds:[{parentId:this.mirror.getId(t),nextId:null,node:i.data.node}],removes:[],texts:[],attributes:[],isAttachIframe:!0}}}case Re.Meta:case Re.Load:case Re.DomContentLoaded:return!1;case Re.Plugin:return i;case Re.Custom:return this.replaceIds(i.data.payload,t,["id","parentId","previousId","nextId"]),i;case Re.IncrementalSnapshot:switch(i.data.source){case ve.Mutation:return i.data.adds.forEach(function(l){r.replaceIds(l,t,["parentId","nextId","previousId"]),r.replaceIdOnNode(l.node,t);var d=r.crossOriginIframeRootIdMap.get(t);d&&r.patchRootIdOnNode(l.node,d)}),i.data.removes.forEach(function(l){r.replaceIds(l,t,["parentId","id"])}),i.data.attributes.forEach(function(l){r.replaceIds(l,t,["id"])}),i.data.texts.forEach(function(l){r.replaceIds(l,t,["id"])}),i;case ve.Drag:case ve.TouchMove:case ve.MouseMove:return i.data.positions.forEach(function(l){r.replaceIds(l,t,["id"])}),i;case ve.ViewportResize:return!1;case ve.MediaInteraction:case ve.MouseInteraction:case ve.Scroll:case ve.CanvasMutation:case ve.Input:return this.replaceIds(i.data,t,["id"]),i;case ve.StyleSheetRule:case ve.StyleDeclaration:return this.replaceIds(i.data,t,["id"]),this.replaceStyleIds(i.data,t,["styleId"]),i;case ve.Font:return i;case ve.Selection:return i.data.ranges.forEach(function(l){r.replaceIds(l,t,["start","end"])}),i;case ve.AdoptedStyleSheet:return this.replaceIds(i.data,t,["id"]),this.replaceStyleIds(i.data,t,["styleIds"]),(o=i.data.styles)==null||o.forEach(function(l){r.replaceStyleIds(l,t,["styleId"])}),i}}return!1},a.replace=function(t,i,r,o){for(var s=B(o),l;!(l=s()).done;){var d=l.value;!Array.isArray(i[d])&&typeof i[d]!="number"||(Array.isArray(i[d])?i[d]=t.getIds(r,i[d]):i[d]=t.getId(r,i[d]))}return i},a.replaceIds=function(t,i,r){return this.replace(this.crossOriginIframeMirror,t,i,r)},a.replaceStyleIds=function(t,i,r){return this.replace(this.crossOriginIframeStyleMirror,t,i,r)},a.replaceIdOnNode=function(t,i){var r=this;this.replaceIds(t,i,["id","rootId"]),"childNodes"in t&&t.childNodes.forEach(function(o){r.replaceIdOnNode(o,i)})},a.patchRootIdOnNode=function(t,i){var r=this;t.type!==ZA.Document&&!t.rootId&&(t.rootId=i),"childNodes"in t&&t.childNodes.forEach(function(o){r.patchRootIdOnNode(o,i)})},e})(),rce=(function(){function e(n){G(this,"shadowDoms",new WeakSet),G(this,"mutationCb"),G(this,"scrollCb"),G(this,"bypassOptions"),G(this,"mirror"),G(this,"restoreHandlers",[]),this.mutationCb=n.mutationCb,this.scrollCb=n.scrollCb,this.bypassOptions=n.bypassOptions,this.mirror=n.mirror,this.init()}var a=e.prototype;return a.init=function(){this.reset(),this.patchAttachShadow(Element,document)},a.addShadowRoot=function(t,i){var r=this;if(co(t)&&!this.shadowDoms.has(t)){this.shadowDoms.add(t);var o=QA(Ce({},this.bypassOptions,{doc:i,mutationCb:this.mutationCb,mirror:this.mirror,shadowDomManager:this}),t);this.restoreHandlers.push(function(){return o.disconnect()}),this.restoreHandlers.push(XA(Ce({},this.bypassOptions,{scrollCb:this.scrollCb,doc:t,mirror:this.mirror}))),setTimeout(function(){t.adoptedStyleSheets&&t.adoptedStyleSheets.length>0&&r.bypassOptions.stylesheetManager.adoptStyleSheets(t.adoptedStyleSheets,r.mirror.getId(_e.host(t))),r.restoreHandlers.push(eS({mirror:r.mirror,stylesheetManager:r.bypassOptions.stylesheetManager},t))},0)}},a.observeAttachShadow=function(t){!t.contentWindow||!t.contentDocument||this.patchAttachShadow(t.contentWindow.Element,t.contentDocument)},a.patchAttachShadow=function(t,i){var r=this;this.restoreHandlers.push(zi(t.prototype,"attachShadow",function(o){return function(s){var l=o.call(this,s),d=_e.shadowRoot(this);return d&&KA(this)&&r.addShadowRoot(d,i),l}}))},a.reset=function(){this.restoreHandlers.forEach(function(t){try{t()}catch{}}),this.restoreHandlers=[],this.shadowDoms=new WeakSet},e})(),ir="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",oce=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(var Ks=0;Ks<ir.length;Ks++)oce[ir.charCodeAt(Ks)]=Ks;var sce=function(a){var n=new Uint8Array(a),t,i=n.length,r="";for(t=0;t<i;t+=3)r+=ir[n[t]>>2],r+=ir[(n[t]&3)<<4|n[t+1]>>4],r+=ir[(n[t+1]&15)<<2|n[t+2]>>6],r+=ir[n[t+2]&63];return i%3===2?r=r.substring(0,r.length-1)+"=":i%3===1&&(r=r.substring(0,r.length-2)+"=="),r},ib=new Map;function lce(e,a){var n=ib.get(e);return n||(n=new Map,ib.set(e,n)),n.has(a)||n.set(a,[]),n.get(a)}var tS=function(e,a,n){if(!(!e||!(nS(e,a)||(typeof e>"u"?"undefined":ce(e))==="object"))){var t=e.constructor.name,i=lce(n,t),r=i.indexOf(e);return r===-1&&(r=i.length,i.push(e)),r}};function El(e,a,n){if(le(e,Array))return e.map(function(v){return El(v,a,n)});if(e===null)return e;if(le(e,Float32Array)||le(e,Float64Array)||le(e,Int32Array)||le(e,Uint32Array)||le(e,Uint8Array)||le(e,Uint16Array)||le(e,Int16Array)||le(e,Int8Array)||le(e,Uint8ClampedArray)){var t=e.constructor.name;return{rr_type:t,args:[Object.values(e)]}}else if(le(e,ArrayBuffer)){var i=e.constructor.name,r=sce(e);return{rr_type:i,base64:r}}else if(le(e,DataView)){var o=e.constructor.name;return{rr_type:o,args:[El(e.buffer,a,n),e.byteOffset,e.byteLength]}}else if(le(e,HTMLImageElement)){var s=e.constructor.name,l=e.src;return{rr_type:s,src:l}}else if(le(e,HTMLCanvasElement)){var d="HTMLImageElement",p=e.toDataURL();return{rr_type:d,src:p}}else if(le(e,ImageData)){var u=e.constructor.name;return{rr_type:u,args:[El(e.data,a,n),e.width,e.height]}}else if(nS(e,a)||(typeof e>"u"?"undefined":ce(e))==="object"){var g=e.constructor.name,b=tS(e,a,n);return{rr_type:g,index:b}}return e}var aS=function(e,a,n){return e.map(function(t){return El(t,a,n)})},nS=function(e,a){var n=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject","WebGLVertexArrayObjectOES"],t=n.filter(function(i){return typeof a[i]=="function"});return!!t.find(function(i){return le(e,a[i])})};function cce(e,a,n,t){for(var i=function(){var d=l.value;try{if(typeof a.CanvasRenderingContext2D.prototype[d]!="function")return"continue";var p=zi(a.CanvasRenderingContext2D.prototype,d,function(g){return function(){for(var b=this,v=arguments.length,A=new Array(v),f=0;f<v;f++)A[f]=arguments[f];return Yt(this.canvas,n,t,!0)||setTimeout(function(){var S=aS(A,a,b);e(b.canvas,{type:Ar["2D"],property:d,args:S})},0),g.apply(this,A)}});r.push(p)}catch{var u=cd(a.CanvasRenderingContext2D.prototype,d,{set:function(v){e(this.canvas,{type:Ar["2D"],property:d,args:[v],setter:!0})}});r.push(u)}},r=[],o=Object.getOwnPropertyNames(a.CanvasRenderingContext2D.prototype),s=B(o),l;!(l=s()).done;)i();return function(){r.forEach(function(d){return d()})}}function dce(e){return e==="experimental-webgl"?"webgl":e}function rb(e,a,n,t){var i=[];try{var r=zi(e.HTMLCanvasElement.prototype,"getContext",function(o){return function(s){for(var l=arguments.length,d=new Array(l>1?l-1:0),p=1;p<l;p++)d[p-1]=arguments[p];if(!Yt(this,a,n,!0)){var u=dce(s);if("__context"in this||(this.__context=u),t&&["webgl","webgl2"].includes(u))if(d[0]&&ce(d[0])==="object"){var g=d[0];g.preserveDrawingBuffer||(g.preserveDrawingBuffer=!0)}else d.splice(0,1,{preserveDrawingBuffer:!0})}return o.apply(this,[].concat([s],d))}});i.push(r)}catch{}return function(){i.forEach(function(o){return o()})}}function ob(e,a,n,t,i,r){for(var o=function(){var u=p.value;if(["isContextLost","canvas","drawingBufferWidth","drawingBufferHeight"].includes(u))return"continue";try{if(typeof e[u]!="function")return"continue";var g=zi(e,u,function(v){return function(){for(var A=arguments.length,f=new Array(A),S=0;S<A;S++)f[S]=arguments[S];var C=v.apply(this,f);if(tS(C,r,this),"tagName"in this.canvas&&!Yt(this.canvas,t,i,!0)){var T=aS(f,r,this),E={type:a,property:u,args:T};n(this.canvas,E)}return C}});s.push(g)}catch{var b=cd(e,u,{set:function(f){n(this.canvas,{type:a,property:u,args:[f],setter:!0})}});s.push(b)}},s=[],l=Object.getOwnPropertyNames(e),d=B(l),p;!(p=d()).done;)o();return s}function uce(e,a,n,t){var i,r=[];if((i=r).push.apply(i,[].concat(ob(a.WebGLRenderingContext.prototype,Ar.WebGL,e,n,t,a))),typeof a.WebGL2RenderingContext<"u"){var o;(o=r).push.apply(o,[].concat(ob(a.WebGL2RenderingContext.prototype,Ar.WebGL2,e,n,t,a)))}return function(){r.forEach(function(s){return s()})}}var iS="KGZ1bmN0aW9uKCkgewogICJ1c2Ugc3RyaWN0IjsKICB2YXIgY2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAgdmFyIGxvb2t1cCA9IHR5cGVvZiBVaW50OEFycmF5ID09PSAidW5kZWZpbmVkIiA/IFtdIDogbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSsrKSB7CiAgICBsb29rdXBbY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwogIH0KICB2YXIgZW5jb2RlID0gZnVuY3Rpb24oYXJyYXlidWZmZXIpIHsKICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGFycmF5YnVmZmVyKSwgaTIsIGxlbiA9IGJ5dGVzLmxlbmd0aCwgYmFzZTY0ID0gIiI7CiAgICBmb3IgKGkyID0gMDsgaTIgPCBsZW47IGkyICs9IDMpIHsKICAgICAgYmFzZTY0ICs9IGNoYXJzW2J5dGVzW2kyXSA+PiAyXTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMl0gJiAzKSA8PCA0IHwgYnl0ZXNbaTIgKyAxXSA+PiA0XTsKICAgICAgYmFzZTY0ICs9IGNoYXJzWyhieXRlc1tpMiArIDFdICYgMTUpIDw8IDIgfCBieXRlc1tpMiArIDJdID4+IDZdOwogICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaTIgKyAyXSAmIDYzXTsKICAgIH0KICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgIj0iOwogICAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgIj09IjsKICAgIH0KICAgIHJldHVybiBiYXNlNjQ7CiAgfTsKICBjb25zdCBsYXN0QmxvYk1hcCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7CiAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTsKICBhc3luYyBmdW5jdGlvbiBnZXRUcmFuc3BhcmVudEJsb2JGb3Iod2lkdGgsIGhlaWdodCwgZGF0YVVSTE9wdGlvbnMpIHsKICAgIGNvbnN0IGlkID0gYCR7d2lkdGh9LSR7aGVpZ2h0fWA7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBpZiAodHJhbnNwYXJlbnRCbG9iTWFwLmhhcyhpZCkpIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsKICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsKICAgICAgb2Zmc2NyZWVuLmdldENvbnRleHQoIjJkIik7CiAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCBvZmZzY3JlZW4uY29udmVydFRvQmxvYihkYXRhVVJMT3B0aW9ucyk7CiAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpOwogICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOwogICAgICB0cmFuc3BhcmVudEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICByZXR1cm4gYmFzZTY0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogIH0KICBjb25zdCB3b3JrZXIgPSBzZWxmOwogIHdvcmtlci5vbm1lc3NhZ2UgPSBhc3luYyBmdW5jdGlvbihlKSB7CiAgICBpZiAoIk9mZnNjcmVlbkNhbnZhcyIgaW4gZ2xvYmFsVGhpcykgewogICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zIH0gPSBlLmRhdGE7CiAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKAogICAgICAgIHdpZHRoLAogICAgICAgIGhlaWdodCwKICAgICAgICBkYXRhVVJMT3B0aW9ucwogICAgICApOwogICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOwogICAgICBjb25zdCBjdHggPSBvZmZzY3JlZW4uZ2V0Q29udGV4dCgiMmQiKTsKICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOwogICAgICBiaXRtYXAuY2xvc2UoKTsKICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IG9mZnNjcmVlbi5jb252ZXJ0VG9CbG9iKGRhdGFVUkxPcHRpb25zKTsKICAgICAgY29uc3QgdHlwZSA9IGJsb2IudHlwZTsKICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBibG9iLmFycmF5QnVmZmVyKCk7CiAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7CiAgICAgIGlmICghbGFzdEJsb2JNYXAuaGFzKGlkKSAmJiBhd2FpdCB0cmFuc3BhcmVudEJhc2U2NCA9PT0gYmFzZTY0KSB7CiAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOwogICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsKICAgICAgfQogICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KSByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7CiAgICAgICAgaWQsCiAgICAgICAgdHlwZSwKICAgICAgICBiYXNlNjQsCiAgICAgICAgd2lkdGgsCiAgICAgICAgaGVpZ2h0CiAgICAgIH0pOwogICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsKICAgIH0KICB9Owp9KSgpOwovLyMgc291cmNlTWFwcGluZ1VSTD1pbWFnZS1iaXRtYXAtZGF0YS11cmwtd29ya2VyLUlKcEM3Z19iLmpzLm1hcAo=",pce=function(e){return Uint8Array.from(atob(e),function(a){return a.charCodeAt(0)})},sb=typeof window<"u"&&window.Blob&&new Blob([pce(iS)],{type:"text/javascript;charset=utf-8"});function mce(e){var a;try{if(a=sb&&(window.URL||window.webkitURL).createObjectURL(sb),!a)throw"";var n=new Worker(a,{name:e==null?void 0:e.name});return n.addEventListener("error",function(){(window.URL||window.webkitURL).revokeObjectURL(a)}),n}catch{return new Worker("data:text/javascript;base64,"+iS,{name:e==null?void 0:e.name})}finally{a&&(window.URL||window.webkitURL).revokeObjectURL(a)}}var gce=(function(){function e(n){var t=this;G(this,"pendingCanvasMutations",new Map),G(this,"rafStamps",{latestId:0,invokeId:null}),G(this,"mirror"),G(this,"mutationCb"),G(this,"resetObservers"),G(this,"frozen",!1),G(this,"locked",!1),G(this,"processMutation",function(u,g){var b=t.rafStamps.invokeId&&t.rafStamps.latestId!==t.rafStamps.invokeId;(b||!t.rafStamps.invokeId)&&(t.rafStamps.invokeId=t.rafStamps.latestId),t.pendingCanvasMutations.has(u)||t.pendingCanvasMutations.set(u,[]),t.pendingCanvasMutations.get(u).push(g)});var i=n.sampling,r=i===void 0?"all":i,o=n.win,s=n.blockClass,l=n.blockSelector,d=n.recordCanvas,p=n.dataURLOptions;this.mutationCb=n.mutationCb,this.mirror=n.mirror,d&&r==="all"&&this.initCanvasMutationObserver(o,s,l),d&&typeof r=="number"&&this.initCanvasFPSObserver(r,o,s,l,{dataURLOptions:p})}var a=e.prototype;return a.reset=function(){this.pendingCanvasMutations.clear(),this.resetObservers&&this.resetObservers()},a.freeze=function(){this.frozen=!0},a.unfreeze=function(){this.frozen=!1},a.lock=function(){this.locked=!0},a.unlock=function(){this.locked=!1},a.initCanvasFPSObserver=function(t,i,r,o,s){var l=this,d=rb(i,r,o,!0),p=new Map,u=new mce;u.onmessage=function(S){var C=S.data.id;if(p.set(C,!1),"base64"in S.data){var T=S.data,E=T.base64,P=T.type,I=T.width,L=T.height;l.mutationCb({id:C,type:Ar["2D"],commands:[{property:"clearRect",args:[0,0,I,L]},{property:"drawImage",args:[{rr_type:"ImageBitmap",args:[{rr_type:"Blob",data:[{rr_type:"ArrayBuffer",base64:E}],type:P}]},0,0]}]})}};var g=1e3/t,b=0,v,A=function(){var S=[];return i.document.querySelectorAll("canvas").forEach(function(C){Yt(C,r,o,!0)||S.push(C)}),S},f=function(S){if(b&&S-b<g){v=requestAnimationFrame(f);return}b=S;var C=l;A().forEach(Qc(function(T){var E,P,I,L;return Di(this,function(N){switch(N.label){case 0:return P=C.mirror.getId(T),p.get(P)?[2]:T.width===0||T.height===0?[2]:(p.set(P,!0),["webgl","webgl2"].includes(T.__context)&&(I=T.getContext(T.__context),((E=I==null?void 0:I.getContextAttributes())==null?void 0:E.preserveDrawingBuffer)===!1&&I.clear(I.COLOR_BUFFER_BIT)),[4,createImageBitmap(T)]);case 1:return L=N.sent(),u.postMessage({id:P,bitmap:L,width:T.width,height:T.height,dataURLOptions:s.dataURLOptions},[L]),[2]}})})),v=requestAnimationFrame(f)};v=requestAnimationFrame(f),this.resetObservers=function(){d(),cancelAnimationFrame(v)}},a.initCanvasMutationObserver=function(t,i,r){this.startRAFTimestamping(),this.startPendingCanvasMutationFlusher();var o=rb(t,i,r,!1),s=cce(this.processMutation.bind(this),t,i,r),l=uce(this.processMutation.bind(this),t,i,r);this.resetObservers=function(){o(),s(),l()}},a.startPendingCanvasMutationFlusher=function(){var t=this;requestAnimationFrame(function(){return t.flushPendingCanvasMutations()})},a.startRAFTimestamping=function(){var t=this,i=function(r){t.rafStamps.latestId=r,requestAnimationFrame(i)};requestAnimationFrame(i)},a.flushPendingCanvasMutations=function(){var t=this;this.pendingCanvasMutations.forEach(function(i,r){var o=t.mirror.getId(r);t.flushPendingCanvasMutationFor(r,o)}),requestAnimationFrame(function(){return t.flushPendingCanvasMutations()})},a.flushPendingCanvasMutationFor=function(t,i){if(!(this.frozen||this.locked)){var r=this.pendingCanvasMutations.get(t);if(!(!r||i===-1)){var o=r.map(function(l){l.type;var d=Ci(l,["type"]);return d}),s=r[0].type;this.mutationCb({id:i,type:s,commands:o}),this.pendingCanvasMutations.delete(t)}}},e})(),hce=(function(){function e(n){G(this,"trackedLinkElements",new WeakSet),G(this,"mutationCb"),G(this,"adoptedStyleSheetCb"),G(this,"styleMirror",new Nle),this.mutationCb=n.mutationCb,this.adoptedStyleSheetCb=n.adoptedStyleSheetCb}var a=e.prototype;return a.attachLinkElement=function(t,i){"_cssText"in i.attributes&&this.mutationCb({adds:[],removes:[],texts:[],attributes:[{id:i.id,attributes:i.attributes}]}),this.trackLinkElement(t)},a.trackLinkElement=function(t){this.trackedLinkElements.has(t)||(this.trackedLinkElements.add(t),this.trackStylesheetInLinkElement(t))},a.adoptStyleSheets=function(t,i){var r,o=function(){var u=p.value,g=void 0;r.styleMirror.has(u)?g=r.styleMirror.getId(u):(g=r.styleMirror.add(u),l.push({styleId:g,rules:Array.from(u.rules||CSSRule,function(b,v){return{rule:kw(b,u.href),index:v}})})),s.styleIds.push(g)};if(t.length!==0){for(var s={id:i,styleIds:[]},l=[],d=B(t),p;!(p=d()).done;)r=this,o();l.length>0&&(s.styles=l),this.adoptedStyleSheetCb(s)}},a.reset=function(){this.styleMirror.reset(),this.trackedLinkElements=new WeakSet},a.cleanupStylesheetsForRemovedNode=function(t){var i=this;try{if(t.nodeType===Node.DOCUMENT_NODE){var r=t;if(r.adoptedStyleSheets)for(var o=B(r.adoptedStyleSheets),s;!(s=o()).done;){var l=s.value;this.styleMirror.remove(l)}}if(t.nodeName==="STYLE"){var d=t;d.sheet&&this.styleMirror.remove(d.sheet)}if(t.nodeName==="LINK"&&t.rel==="stylesheet"){var p=t;p.sheet&&this.styleMirror.remove(p.sheet)}t.childNodes&&t.childNodes.forEach(function(u){i.cleanupStylesheetsForRemovedNode(u)})}catch{}},a.trackStylesheetInLinkElement=function(t){},e})(),fce=(function(){function e(){G(this,"nodeMap",new WeakMap),G(this,"active",!1)}var a=e.prototype;return a.inOtherBuffer=function(t,i){var r=this.nodeMap.get(t);return r&&Array.from(r).some(function(o){return o!==i})},a.add=function(t,i){var r=this;this.active||(this.active=!0,requestAnimationFrame(function(){r.nodeMap=new WeakMap,r.active=!1})),this.nodeMap.set(t,(this.nodeMap.get(t)||new Set).add(i))},a.destroy=function(){},e})(),mt,Pl,pu,sc=!1;try{if(Array.from([1],function(e){return e*2})[0]!==2){var mu=document.createElement("iframe");document.body.appendChild(mu),Array.from=((dv=mu.contentWindow)==null?void 0:dv.Array.from)||Array.from,document.body.removeChild(mu)}}catch{}var Da=vie();function li(e){e===void 0&&(e={});var a=e.emit,n=e.checkoutEveryNms,t=e.checkoutEveryNth,i=e.blockClass,r=i===void 0?"rr-block":i,o=e.blockSelector,s=o===void 0?null:o,l=e.ignoreClass,d=l===void 0?"rr-ignore":l,p=e.ignoreSelector,u=p===void 0?null:p,g=e.maskTextClass,b=g===void 0?"rr-mask":g,v=e.maskTextSelector,A=v===void 0?null:v,f=e.inlineStylesheet,S=f===void 0?!0:f,C=e.maskAllInputs,T=e.maskInputOptions,E=e.slimDOMOptions,P=e.maskInputFn,I=e.maskTextFn,L=e.hooks,N=e.packFn,Z=e.sampling,R=Z===void 0?{}:Z,Y=e.dataURLOptions,$=Y===void 0?{}:Y,F=e.mousemoveWait,j=e.recordDOM,H=j===void 0?!0:j,X=e.recordCanvas,ie=X===void 0?!1:X,te=e.recordCrossOriginIframes,oe=te===void 0?!1:te,ae=e.recordAfter,Me=ae===void 0?e.recordAfter==="DOMContentLoaded"?e.recordAfter:"load":ae,Ne=e.userTriggeredOnInput,re=Ne===void 0?!1:Ne,de=e.collectFonts,q=de===void 0?!1:de,ge=e.inlineImages,Ot=ge===void 0?!1:ge,Ee=e.plugins,Bt=e.keepIframeSrcFn,ia=Bt===void 0?function(){return!1}:Bt,ra=e.ignoreCSSAttributes,oa=ra===void 0?new Set([]):ra,jn=e.errorHandler;qle(jn);var Kt=oe?window.parent===window:!0,va=!1;if(!Kt)try{window.parent.document&&(va=!1)}catch{va=!0}if(Kt&&!a)throw new Error("emit function is required");if(!Kt&&!va)return function(){};F!==void 0&&R.mousemove===void 0&&(R.mousemove=F),Da.reset();var ba=C===!0?{color:!0,date:!0,"datetime-local":!0,email:!0,month:!0,number:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0,textarea:!0,select:!0,password:!0,hidden:!0}:T!==void 0?T:{password:!0},aa=E===!0||E==="all"?{script:!0,comment:!0,headFavicon:!0,headWhitespace:!0,headMetaSocial:!0,headMetaRobots:!0,headMetaHttpEquiv:!0,headMetaVerification:!0,headMetaAuthorship:E==="all",headMetaDescKeywords:E==="all",headTitleMutations:E==="all"}:E||{};Mle();var ya,Pt=0,Zt=function(De){for(var Je=B(Ee||[]),ne;!(ne=Je()).done;){var Oe=ne.value;Oe.eventProcessor&&(De=Oe.eventProcessor(De))}return N&&!va&&(De=N(De)),De};mt=function(De,Je){var ne,Oe=De;if(Oe.timestamp=rc(),(ne=Ha[0])!=null&&ne.isFrozen()&&Oe.type!==Re.FullSnapshot&&!(Oe.type===Re.IncrementalSnapshot&&Oe.data.source===ve.Mutation)&&Ha.forEach(function(Aa){return Aa.unfreeze()}),Kt)a==null||a(Zt(Oe),Je);else if(va){var _t={type:"rrweb",event:Zt(Oe),origin:window.location.origin,isCheckout:Je};window.parent.postMessage(_t,"*")}if(Oe.type===Re.FullSnapshot)ya=Oe,Pt=0;else if(Oe.type===Re.IncrementalSnapshot){if(Oe.data.source===ve.Mutation&&Oe.data.isAttachIframe)return;Pt++;var hi=t&&Pt>=t,cn=n&&Oe.timestamp-ya.timestamp>n;(hi||cn)&&Pl(!0)}};for(var pt=function(De){mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.Mutation},De)})},At=function(De){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.Scroll},De)})},ka=function(De){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.CanvasMutation},De)})},Or=function(De){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.AdoptedStyleSheet},De)})},sa=new hce({mutationCb:pt,adoptedStyleSheetCb:Or}),He=new ice({mirror:Da,mutationCb:pt,stylesheetManager:sa,recordCrossOriginIframes:oe,wrappedEmit:mt}),Ni=B(Ee||[]),on;!(on=Ni()).done;){var wa=on.value;wa.getMirror&&wa.getMirror({nodeMirror:Da,crossOriginIframeMirror:He.crossOriginIframeMirror,crossOriginIframeStyleMirror:He.crossOriginIframeStyleMirror})}var Pe=new fce;pu=new gce({recordCanvas:ie,mutationCb:ka,win:window,blockClass:r,blockSelector:s,mirror:Da,sampling:R.canvas,dataURLOptions:$});var Na=new rce({mutationCb:pt,scrollCb:At,bypassOptions:{blockClass:r,blockSelector:s,maskTextClass:b,maskTextSelector:A,inlineStylesheet:S,maskInputOptions:ba,dataURLOptions:$,maskTextFn:I,maskInputFn:P,recordCanvas:ie,inlineImages:Ot,sampling:R,slimDOMOptions:aa,iframeManager:He,stylesheetManager:sa,canvasManager:pu,keepIframeSrcFn:ia,processedNodeManager:Pe},mirror:Da});Pl=function(De){if(De===void 0&&(De=!1),!!H){mt({type:Re.Meta,data:{href:window.location.href,width:VA(),height:qA()}},De),sa.reset(),Na.init(),Ha.forEach(function(ne){return ne.lock()});var Je=Uie(document,{mirror:Da,blockClass:r,blockSelector:s,maskTextClass:b,maskTextSelector:A,inlineStylesheet:S,maskAllInputs:ba,maskTextFn:I,maskInputFn:P,slimDOM:aa,dataURLOptions:$,recordCanvas:ie,inlineImages:Ot,onSerialize:function(ne){GA(ne,Da)&&He.addIframe(ne),HA(ne,Da)&&sa.trackLinkElement(ne),Wp(ne)&&Na.addShadowRoot(_e.shadowRoot(ne),document)},onIframeLoad:function(ne,Oe){He.attachIframe(ne,Oe),Na.observeAttachShadow(ne)},onStylesheetLoad:function(ne,Oe){sa.attachLinkElement(ne,Oe)},keepIframeSrcFn:ia});Je&&(mt({type:Re.FullSnapshot,data:{node:Je,initialOffset:UA(window)}},De),Ha.forEach(function(ne){return ne.unlock()}),document.adoptedStyleSheets&&document.adoptedStyleSheets.length>0&&sa.adoptStyleSheets(document.adoptedStyleSheets,Da.getId(document)))}};try{var Nt=[],sn=function(De){var Je;return Le(nce)({mutationCb:pt,mousemoveCb:function(ne,Oe){return mt({type:Re.IncrementalSnapshot,data:{source:Oe,positions:ne}})},mouseInteractionCb:function(ne){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.MouseInteraction},ne)})},scrollCb:At,viewportResizeCb:function(ne){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.ViewportResize},ne)})},inputCb:function(ne){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.Input},ne)})},mediaInteractionCb:function(ne){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.MediaInteraction},ne)})},styleSheetRuleCb:function(ne){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.StyleSheetRule},ne)})},styleDeclarationCb:function(ne){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.StyleDeclaration},ne)})},canvasMutationCb:ka,fontCb:function(ne){return mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.Font},ne)})},selectionCb:function(ne){mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.Selection},ne)})},customElementCb:function(ne){mt({type:Re.IncrementalSnapshot,data:Ce({source:ve.CustomElement},ne)})},blockClass:r,ignoreClass:d,ignoreSelector:u,maskTextClass:b,maskTextSelector:A,maskInputOptions:ba,inlineStylesheet:S,sampling:R,recordDOM:H,recordCanvas:ie,inlineImages:Ot,userTriggeredOnInput:re,collectFonts:q,doc:De,maskInputFn:P,maskTextFn:I,keepIframeSrcFn:ia,blockSelector:s,slimDOMOptions:aa,dataURLOptions:$,mirror:Da,iframeManager:He,stylesheetManager:sa,shadowDomManager:Na,processedNodeManager:Pe,canvasManager:pu,ignoreCSSAttributes:oa,plugins:((Je=Ee==null?void 0:Ee.filter(function(ne){return ne.observer}))==null?void 0:Je.map(function(ne){return{observer:ne.observer,options:ne.options,callback:function(Oe){return mt({type:Re.Plugin,data:{plugin:ne.name,payload:Oe}})}}}))||[]},L)};He.addLoadListener(function(De){try{var Je=De.contentDocument,ne=sn(Je);Nt.push(ne);var Oe=He.getObserverCleanup(De);He.setObserverCleanup(De,function(){if(Oe)try{Oe()}catch{}try{ne();var _t=Nt.indexOf(ne);_t!==-1&&Nt.splice(_t,1),$le(Je)}catch{}})}catch{}});var ln=function(){Pl(),Nt.push(sn(document)),sc=!0};return document.readyState==="interactive"||document.readyState==="complete"?ln():(Nt.push(Ht("DOMContentLoaded",function(){mt({type:Re.DomContentLoaded,data:{}}),Me==="DOMContentLoaded"&&ln()})),Nt.push(Ht("load",function(){mt({type:Re.Load,data:{}}),Me==="load"&&ln()},window))),function(){Nt.forEach(function(De){try{De()}catch(ne){var Je=String(ne).toLowerCase();Je.includes("cross-origin")}}),Pe.destroy(),sc=!1,Vle()}}catch{}}li.addCustomEvent=function(e,a){if(!sc)throw new Error("please add custom event after start recording");mt({type:Re.Custom,data:{tag:e,payload:a}})};li.freezePage=function(){Ha.forEach(function(e){return e.freeze()})};li.takeFullSnapshot=function(e){if(!sc)throw new Error("please take full snapshot after start recording");Pl(e)};li.mirror=Da;var lb;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(lb||(lb={}));li.addCustomEvent;li.freezePage;li.takeFullSnapshot;var cb={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},db={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},Zs={},vce=function(){return!!globalThis.Zone};function Xg(e){if(Zs[e])return Zs[e];var a=globalThis[e],n=a.prototype,t=e in cb?cb[e]:void 0,i=!!(t&&t.every(function(p){var u,g;return!!((g=(u=Object.getOwnPropertyDescriptor(n,p))==null?void 0:u.get)!=null&&g.toString().includes("[native code]"))})),r=e in db?db[e]:void 0,o=!!(r&&r.every(function(p){var u;return typeof n[p]=="function"&&((u=n[p])==null?void 0:u.toString().includes("[native code]"))}));if(i&&o&&!vce())return Zs[e]=a.prototype,a.prototype;try{var s=document.createElement("iframe");document.body.appendChild(s);var l=s.contentWindow;if(!l)return a.prototype;var d=l[e].prototype;return document.body.removeChild(s),d?Zs[e]=d:n}catch{return n}}var gu={};function ci(e,a,n){var t,i=e+"."+String(n);if(gu[i])return gu[i].call(a);var r=Xg(e),o=(t=Object.getOwnPropertyDescriptor(r,n))==null?void 0:t.get;return o?(gu[i]=o,o.call(a)):a[n]}var hu={};function rS(e,a,n){var t=e+"."+String(n);if(hu[t])return hu[t].bind(a);var i=Xg(e),r=i[n];return typeof r!="function"?a[n]:(hu[t]=r,r.bind(a))}function bce(e){return ci("Node",e,"childNodes")}function yce(e){return ci("Node",e,"parentNode")}function kce(e){return ci("Node",e,"parentElement")}function wce(e){return ci("Node",e,"textContent")}function Ace(e,a){return rS("Node",e,"contains")(a)}function Sce(e){return rS("Node",e,"getRootNode")()}function Cce(e){return!e||!("host"in e)?null:ci("ShadowRoot",e,"host")}function Dce(e){return e.styleSheets}function Tce(e){return!e||!("shadowRoot"in e)?null:ci("Element",e,"shadowRoot")}function Ece(e,a){return ci("Element",e,"querySelector")(a)}function Pce(e,a){return ci("Element",e,"querySelectorAll")(a)}function _ce(){return Xg("MutationObserver").constructor}function xce(e,a,n){try{if(!(a in e))return function(){};var t=e[a],i=n(t);return typeof i=="function"&&(i.prototype=i.prototype||{},Object.defineProperties(i,{__rrweb_original__:{enumerable:!1,value:t}})),e[a]=i,function(){e[a]=t}}catch{return function(){}}}var ub={childNodes:bce,parentNode:yce,parentElement:kce,textContent:wce,contains:Ace,getRootNode:Sce,host:Cce,styleSheets:Dce,shadowRoot:Tce,querySelector:Ece,querySelectorAll:Pce,mutationObserver:_ce,patch:xce};function Hp(e,a,n){if(!e)return!1;if(e.nodeType!==e.ELEMENT_NODE)return Hp(ub.parentNode(e),a);for(var t=e.classList.length;t--;){var i=e.classList[t];if(a.test(i))return!0}return Hp(ub.parentNode(e),a)}function Ice(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Rce(e){if(e.__esModule)return e;var a=e.default;if(typeof a=="function"){var n=function t(){return le(this,t)?Reflect.construct(a,arguments,this.constructor):a.apply(this,arguments)};n.prototype=a.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),n}var eh={exports:{}},tt=String,oS=function(){return{isColorSupported:!1,reset:tt,bold:tt,dim:tt,italic:tt,underline:tt,inverse:tt,hidden:tt,strikethrough:tt,black:tt,red:tt,green:tt,yellow:tt,blue:tt,magenta:tt,cyan:tt,white:tt,gray:tt,bgBlack:tt,bgRed:tt,bgGreen:tt,bgYellow:tt,bgBlue:tt,bgMagenta:tt,bgCyan:tt,bgWhite:tt}};eh.exports=oS();eh.exports.createColors=oS;var zce=eh.exports,Mce={},Nce=Object.freeze(Object.defineProperty({__proto__:null,default:Mce},Symbol.toStringTag,{value:"Module"})),kt=Rce(Nce),pb=zce,mb=kt,Yp=(function(e){lt(a,e);function a(t,i,r,o,s,l){var d;return d=e.call(this,t)||this,d.name="CssSyntaxError",d.reason=t,s&&(d.file=s),o&&(d.source=o),l&&(d.plugin=l),typeof i<"u"&&typeof r<"u"&&(typeof i=="number"?(d.line=i,d.column=r):(d.line=i.line,d.column=i.column,d.endLine=r.line,d.endColumn=r.column)),d.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(d,a),d}var n=a.prototype;return n.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},n.showSourceCode=function(i){var r=this;if(!this.source)return"";var o=this.source;i==null&&(i=pb.isColorSupported),mb&&i&&(o=mb(o));var s=o.split(/\r?\n/),l=Math.max(this.line-3,0),d=Math.min(this.line+2,s.length),p=String(d).length,u,g;if(i){var b=pb.createColors(!0),v=b.bold,A=b.gray,f=b.red;u=function(S){return v(f(S))},g=function(S){return A(S)}}else u=g=function(S){return S};return s.slice(l,d).map(function(S,C){var T=l+1+C,E=" "+(" "+T).slice(-p)+" | ";if(T===r.line){var P=g(E.replace(/\d/g," "))+S.slice(0,r.column-1).replace(/[^\t]/g," ");return u(">")+g(E)+S+`
 `+P+u("^")}return" "+g(E)+S}).join(`
`)},n.toString=function(){var i=this.showSourceCode();return i&&(i=`

`+i+`
`),this.name+": "+this.message+i},a})(Co(Error)),th=Yp;Yp.default=Yp;var di={};di.isClean=Symbol("isClean");di.my=Symbol("my");var gb={after:`
`,beforeClose:`
`,beforeComment:`
`,beforeDecl:`
`,beforeOpen:" ",beforeRule:`
`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:"    ",semicolon:!1};function Fce(e){return e[0].toUpperCase()+e.slice(1)}var Kp=(function(){function e(n){this.builder=n}var a=e.prototype;return a.atrule=function(t,i){var r="@"+t.name,o=t.params?this.rawValue(t,"params"):"";if(typeof t.raws.afterName<"u"?r+=t.raws.afterName:o&&(r+=" "),t.nodes)this.block(t,r+o);else{var s=(t.raws.between||"")+(i?";":"");this.builder(r+o+s,t)}},a.beforeAfter=function(t,i){var r;t.type==="decl"?r=this.raw(t,null,"beforeDecl"):t.type==="comment"?r=this.raw(t,null,"beforeComment"):i==="before"?r=this.raw(t,null,"beforeRule"):r=this.raw(t,null,"beforeClose");for(var o=t.parent,s=0;o&&o.type!=="root";)s+=1,o=o.parent;if(r.includes(`
`)){var l=this.raw(t,null,"indent");if(l.length)for(var d=0;d<s;d++)r+=l}return r},a.block=function(t,i){var r=this.raw(t,"between","beforeOpen");this.builder(i+r+"{",t,"start");var o;t.nodes&&t.nodes.length?(this.body(t),o=this.raw(t,"after")):o=this.raw(t,"after","emptyBody"),o&&this.builder(o),this.builder("}",t,"end")},a.body=function(t){for(var i=t.nodes.length-1;i>0&&t.nodes[i].type==="comment";)i-=1;for(var r=this.raw(t,"semicolon"),o=0;o<t.nodes.length;o++){var s=t.nodes[o],l=this.raw(s,"before");l&&this.builder(l),this.stringify(s,i!==o||r)}},a.comment=function(t){var i=this.raw(t,"left","commentLeft"),r=this.raw(t,"right","commentRight");this.builder("/*"+i+t.text+r+"*/",t)},a.decl=function(t,i){var r=this.raw(t,"between","colon"),o=t.prop+r+this.rawValue(t,"value");t.important&&(o+=t.raws.important||" !important"),i&&(o+=";"),this.builder(o,t)},a.document=function(t){this.body(t)},a.raw=function(t,i,r){var o;if(r||(r=i),i&&(o=t.raws[i],typeof o<"u"))return o;var s=t.parent;if(r==="before"&&(!s||s.type==="root"&&s.first===t||s&&s.type==="document"))return"";if(!s)return gb[r];var l=t.root();if(l.rawCache||(l.rawCache={}),typeof l.rawCache[r]<"u")return l.rawCache[r];if(r==="before"||r==="after")return this.beforeAfter(t,r);var d="raw"+Fce(r);return this[d]?o=this[d](l,t):l.walk(function(p){if(o=p.raws[i],typeof o<"u")return!1}),typeof o>"u"&&(o=gb[r]),l.rawCache[r]=o,o},a.rawBeforeClose=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length>0&&typeof r.raws.after<"u")return i=r.raws.after,i.includes(`
`)&&(i=i.replace(/[^\n]+$/,"")),!1}),i&&(i=i.replace(/\S/g,"")),i},a.rawBeforeComment=function(t,i){var r;return t.walkComments(function(o){if(typeof o.raws.before<"u")return r=o.raws.before,r.includes(`
`)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r>"u"?r=this.raw(i,null,"beforeDecl"):r&&(r=r.replace(/\S/g,"")),r},a.rawBeforeDecl=function(t,i){var r;return t.walkDecls(function(o){if(typeof o.raws.before<"u")return r=o.raws.before,r.includes(`
`)&&(r=r.replace(/[^\n]+$/,"")),!1}),typeof r>"u"?r=this.raw(i,null,"beforeRule"):r&&(r=r.replace(/\S/g,"")),r},a.rawBeforeOpen=function(t){var i;return t.walk(function(r){if(r.type!=="decl"&&(i=r.raws.between,typeof i<"u"))return!1}),i},a.rawBeforeRule=function(t){var i;return t.walk(function(r){if(r.nodes&&(r.parent!==t||t.first!==r)&&typeof r.raws.before<"u")return i=r.raws.before,i.includes(`
`)&&(i=i.replace(/[^\n]+$/,"")),!1}),i&&(i=i.replace(/\S/g,"")),i},a.rawColon=function(t){var i;return t.walkDecls(function(r){if(typeof r.raws.between<"u")return i=r.raws.between.replace(/[^\s:]/g,""),!1}),i},a.rawEmptyBody=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length===0&&(i=r.raws.after,typeof i<"u"))return!1}),i},a.rawIndent=function(t){if(t.raws.indent)return t.raws.indent;var i;return t.walk(function(r){var o=r.parent;if(o&&o!==t&&o.parent&&o.parent===t&&typeof r.raws.before<"u"){var s=r.raws.before.split(`
`);return i=s[s.length-1],i=i.replace(/\S/g,""),!1}}),i},a.rawSemicolon=function(t){var i;return t.walk(function(r){if(r.nodes&&r.nodes.length&&r.last.type==="decl"&&(i=r.raws.semicolon,typeof i<"u"))return!1}),i},a.rawValue=function(t,i){var r=t[i],o=t.raws[i];return o&&o.value===r?o.raw:r},a.root=function(t){this.body(t),t.raws.after&&this.builder(t.raws.after)},a.rule=function(t){this.block(t,this.rawValue(t,"selector")),t.raws.ownSemicolon&&this.builder(t.raws.ownSemicolon,t,"end")},a.stringify=function(t,i){if(!this[t.type])throw new Error("Unknown AST node type "+t.type+". Maybe you need to change PostCSS stringifier.");this[t.type](t,i)},e})(),sS=Kp;Kp.default=Kp;var Lce=sS;function Zp(e,a){var n=new Lce(a);n.stringify(e)}var dd=Zp;Zp.default=Zp;var Js=di.isClean,jce=di.my,Oce=th,Bce=sS,Uce=dd;function Jp(e,a){var n=new e.constructor;for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t!=="proxyCache"){var i=e[t],r=typeof i>"u"?"undefined":ce(i);t==="parent"&&r==="object"?a&&(n[t]=a):t==="source"?n[t]=i:Array.isArray(i)?n[t]=i.map(function(o){return Jp(o,n)}):(r==="object"&&i!==null&&(i=Jp(i)),n[t]=i)}return n}var Qp=(function(){function e(n){n===void 0&&(n={}),this.raws={},this[Js]=!1,this[jce]=!0;for(var t in n)if(t==="nodes"){this.nodes=[];for(var i=B(n[t]),r;!(r=i()).done;){var o=r.value;typeof o.clone=="function"?this.append(o.clone()):this.append(o)}}else this[t]=n[t]}var a=e.prototype;return a.addToError=function(t){if(t.postcssNode=this,t.stack&&this.source&&/\n\s{4}at /.test(t.stack)){var i=this.source;t.stack=t.stack.replace(/\n\s{4}at /,"$&"+i.input.from+":"+i.start.line+":"+i.start.column+"$&")}return t},a.after=function(t){return this.parent.insertAfter(this,t),this},a.assign=function(t){t===void 0&&(t={});for(var i in t)this[i]=t[i];return this},a.before=function(t){return this.parent.insertBefore(this,t),this},a.cleanRaws=function(t){delete this.raws.before,delete this.raws.after,t||delete this.raws.between},a.clone=function(t){t===void 0&&(t={});var i=Jp(this);for(var r in t)i[r]=t[r];return i},a.cloneAfter=function(t){t===void 0&&(t={});var i=this.clone(t);return this.parent.insertAfter(this,i),i},a.cloneBefore=function(t){t===void 0&&(t={});var i=this.clone(t);return this.parent.insertBefore(this,i),i},a.error=function(t,i){if(i===void 0&&(i={}),this.source){var r=this.rangeBy(i),o=r.end,s=r.start;return this.source.input.error(t,{column:s.column,line:s.line},{column:o.column,line:o.line},i)}return new Oce(t)},a.getProxyProcessor=function(){return{get:function(i,r){return r==="proxyOf"?i:r==="root"?function(){return i.root().toProxy()}:i[r]},set:function(i,r,o){return i[r]===o||(i[r]=o,(r==="prop"||r==="value"||r==="name"||r==="params"||r==="important"||r==="text")&&i.markDirty()),!0}}},a.markDirty=function(){if(this[Js]){this[Js]=!1;for(var t=this;t=t.parent;)t[Js]=!1}},a.next=function(){if(this.parent){var t=this.parent.index(this);return this.parent.nodes[t+1]}},a.positionBy=function(t,i){var r=this.source.start;if(t.index)r=this.positionInside(t.index,i);else if(t.word){i=this.toString();var o=i.indexOf(t.word);o!==-1&&(r=this.positionInside(o,i))}return r},a.positionInside=function(t,i){for(var r=i||this.toString(),o=this.source.start.column,s=this.source.start.line,l=0;l<t;l++)r[l]===`
`?(o=1,s+=1):o+=1;return{column:o,line:s}},a.prev=function(){if(this.parent){var t=this.parent.index(this);return this.parent.nodes[t-1]}},a.rangeBy=function(t){var i={column:this.source.start.column,line:this.source.start.line},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line}:{column:i.column+1,line:i.line};if(t.word){var o=this.toString(),s=o.indexOf(t.word);s!==-1&&(i=this.positionInside(s,o),r=this.positionInside(s+t.word.length,o))}else t.start?i={column:t.start.column,line:t.start.line}:t.index&&(i=this.positionInside(t.index)),t.end?r={column:t.end.column,line:t.end.line}:typeof t.endIndex=="number"?r=this.positionInside(t.endIndex):t.index&&(r=this.positionInside(t.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line}),{end:r,start:i}},a.raw=function(t,i){var r=new Bce;return r.raw(this,t,i)},a.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},a.replaceWith=function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];if(this.parent){for(var o=this,s=!1,l=B(i),d;!(d=l()).done;){var p=d.value;p===this?s=!0:s?(this.parent.insertAfter(o,p),o=p):this.parent.insertBefore(o,p)}s||this.remove()}return this},a.root=function(){for(var t=this;t.parent&&t.parent.type!=="document";)t=t.parent;return t},a.toJSON=function(t,i){var r={},o=i==null;i=i||new Map;var s=0;for(var l in this)if(Object.prototype.hasOwnProperty.call(this,l)&&!(l==="parent"||l==="proxyCache")){var d=this[l];if(Array.isArray(d))r[l]=d.map(function(u){return(typeof u>"u"?"undefined":ce(u))==="object"&&u.toJSON?u.toJSON(null,i):u});else if((typeof d>"u"?"undefined":ce(d))==="object"&&d.toJSON)r[l]=d.toJSON(null,i);else if(l==="source"){var p=i.get(d.input);p==null&&(p=s,i.set(d.input,s),s++),r[l]={end:d.end,inputId:p,start:d.start}}else r[l]=d}return o&&(r.inputs=[].concat(i.keys()).map(function(u){return u.toJSON()})),r},a.toProxy=function(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache},a.toString=function(t){t===void 0&&(t=Uce),t.stringify&&(t=t.stringify);var i="";return t(this,function(r){i+=r}),i},a.warn=function(t,i,r){var o={node:this};for(var s in r)o[s]=r[s];return t.warn(i,o)},rt(e,[{key:"proxyOf",get:function(){return this}}]),e})(),ud=Qp;Qp.default=Qp;var qce=ud,Xp=(function(e){lt(a,e);function a(n){var t;return n&&typeof n.value<"u"&&typeof n.value!="string"&&(n=Ce({},n,{value:String(n.value)})),t=e.call(this,n)||this,t.type="decl",t}return rt(a,[{key:"variable",get:function(){return this.prop.startsWith("--")||this.prop[0]==="$"}}]),a})(qce),pd=Xp;Xp.default=Xp;var Vce="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",$ce=function(e){e===void 0&&(e=21);for(var a="",n=e;n--;)a+=Vce[Math.random()*64|0];return a},Wce={nanoid:$ce},hb=kt.SourceMapConsumer,fb=kt.SourceMapGenerator,Gce=kt.existsSync,Hce=kt.readFileSync,fu=kt.dirname,Yce=kt.join;function Kce(e){return Buffer?Buffer.from(e,"base64").toString():window.atob(e)}var em=(function(){function e(n,t){if(t.map!==!1){this.loadAnnotation(n),this.inline=this.startWith(this.annotation,"data:");var i=t.map?t.map.prev:void 0,r=this.loadMap(t.from,i);!this.mapFile&&t.from&&(this.mapFile=t.from),this.mapFile&&(this.root=fu(this.mapFile)),r&&(this.text=r)}}var a=e.prototype;return a.consumer=function(){return this.consumerCache||(this.consumerCache=new hb(this.text)),this.consumerCache},a.decodeInline=function(t){var i=/^data:application\/json;charset=utf-?8;base64,/,r=/^data:application\/json;base64,/,o=/^data:application\/json;charset=utf-?8,/,s=/^data:application\/json,/;if(o.test(t)||s.test(t))return decodeURIComponent(t.substr(RegExp.lastMatch.length));if(i.test(t)||r.test(t))return Kce(t.substr(RegExp.lastMatch.length));var l=t.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+l)},a.getAnnotationURL=function(t){return t.replace(/^\/\*\s*# sourceMappingURL=/,"").trim()},a.isMap=function(t){return(typeof t>"u"?"undefined":ce(t))!=="object"?!1:typeof t.mappings=="string"||typeof t._mappings=="string"||Array.isArray(t.sections)},a.loadAnnotation=function(t){var i=t.match(/\/\*\s*# sourceMappingURL=/gm);if(i){var r=t.lastIndexOf(i.pop()),o=t.indexOf("*/",r);r>-1&&o>-1&&(this.annotation=this.getAnnotationURL(t.substring(r,o)))}},a.loadFile=function(t){if(this.root=fu(t),Gce(t))return this.mapFile=t,Hce(t,"utf-8").toString().trim()},a.loadMap=function(t,i){if(i===!1)return!1;if(i){if(typeof i=="string")return i;if(typeof i=="function"){var r=i(t);if(r){var o=this.loadFile(r);if(!o)throw new Error("Unable to load previous source map: "+r.toString());return o}}else{if(le(i,hb))return fb.fromSourceMap(i).toString();if(le(i,fb))return i.toString();if(this.isMap(i))return JSON.stringify(i);throw new Error("Unsupported previous source map format: "+i.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var s=this.annotation;return t&&(s=Yce(fu(t),s)),this.loadFile(s)}}},a.startWith=function(t,i){return t?t.substr(0,i.length)===i:!1},a.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e})(),lS=em;em.default=em;var Zce=kt.SourceMapConsumer,Jce=kt.SourceMapGenerator,vb=kt.fileURLToPath,Qs=kt.pathToFileURL,tm=kt.isAbsolute,am=kt.resolve,Qce=Wce.nanoid,vu=kt,bb=th,Xce=lS,bu=Symbol("fromOffsetCache"),ede=!!(Zce&&Jce),yb=!!(am&&tm),lc=(function(){function e(n,t){if(t===void 0&&(t={}),n===null||typeof n>"u"||(typeof n>"u"?"undefined":ce(n))==="object"&&!n.toString)throw new Error("PostCSS received "+n+" instead of CSS string");if(this.css=n.toString(),this.css[0]==="\uFEFF"||this.css[0]==="￾"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,t.from&&(!yb||/^\w+:\/\//.test(t.from)||tm(t.from)?this.file=t.from:this.file=am(t.from)),yb&&ede){var i=new Xce(this.css,t);if(i.text){this.map=i;var r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+Qce(6)+">"),this.map&&(this.map.file=this.from)}var a=e.prototype;return a.error=function(t,i,r,o){o===void 0&&(o={});var s,l,d;if(i&&(typeof i>"u"?"undefined":ce(i))==="object"){var p=i,u=r;if(typeof p.offset=="number"){var g=this.fromOffset(p.offset);i=g.line,r=g.col}else i=p.line,r=p.column;if(typeof u.offset=="number"){var b=this.fromOffset(u.offset);l=b.line,d=b.col}else l=u.line,d=u.column}else if(!r){var v=this.fromOffset(i);i=v.line,r=v.col}var A=this.origin(i,r,l,d);return A?s=new bb(t,A.endLine===void 0?A.line:{column:A.column,line:A.line},A.endLine===void 0?A.column:{column:A.endColumn,line:A.endLine},A.source,A.file,o.plugin):s=new bb(t,l===void 0?i:{column:r,line:i},l===void 0?r:{column:d,line:l},this.css,this.file,o.plugin),s.input={column:r,endColumn:d,endLine:l,line:i,source:this.css},this.file&&(Qs&&(s.input.url=Qs(this.file).toString()),s.input.file=this.file),s},a.fromOffset=function(t){var i,r;if(this[bu])r=this[bu];else{var o=this.css.split(`
`);r=new Array(o.length);for(var s=0,l=0,d=o.length;l<d;l++)r[l]=s,s+=o[l].length+1;this[bu]=r}i=r[r.length-1];var p=0;if(t>=i)p=r.length-1;else for(var u=r.length-2,g;p<u;)if(g=p+(u-p>>1),t<r[g])u=g-1;else if(t>=r[g+1])p=g+1;else{p=g;break}return{col:t-r[p]+1,line:p+1}},a.mapResolve=function(t){return/^\w+:\/\//.test(t)?t:am(this.map.consumer().sourceRoot||this.map.root||".",t)},a.origin=function(t,i,r,o){if(!this.map)return!1;var s=this.map.consumer(),l=s.originalPositionFor({column:i,line:t});if(!l.source)return!1;var d;typeof r=="number"&&(d=s.originalPositionFor({column:o,line:r}));var p;tm(l.source)?p=Qs(l.source):p=new URL(l.source,this.map.consumer().sourceRoot||Qs(this.map.mapFile));var u={column:l.column,endColumn:d&&d.column,endLine:d&&d.line,line:l.line,url:p.toString()};if(p.protocol==="file:")if(vb)u.file=vb(p);else throw new Error("file: protocol is not available in this PostCSS build");var g=s.sourceContentFor(l.source);return g&&(u.source=g),u},a.toJSON=function(){for(var t={},i=0,r=["hasBOM","css","file","id"];i<r.length;i++){var o=r[i];this[o]!=null&&(t[o]=this[o])}return this.map&&(t.map=Ce({},this.map),t.map.consumerCache&&(t.map.consumerCache=void 0)),t},rt(e,[{key:"from",get:function(){return this.file||this.id}}]),e})(),md=lc;lc.default=lc;vu&&vu.registerInput&&vu.registerInput(lc);var cS=kt.SourceMapConsumer,_l=kt.SourceMapGenerator,xl=kt.dirname,dS=kt.relative,uS=kt.resolve,pS=kt.sep,kb=kt.pathToFileURL,tde=md,ade=!!(cS&&_l),nde=!!(xl&&uS&&dS&&pS),ide=(function(){function e(n,t,i,r){this.stringify=n,this.mapOpts=i.map||{},this.root=t,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}var a=e.prototype;return a.addAnnotation=function(){var t;this.isInline()?t="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?t=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?t=this.mapOpts.annotation(this.opts.to,this.root):t=this.outputFile()+".map";var i=`
`;this.css.includes(`\r
`)&&(i=`\r
`),this.css+=i+"/*# sourceMappingURL="+t+" */"},a.applyPrevMaps=function(){for(var t=B(this.previous()),i;!(i=t()).done;){var r=i.value,o=this.toUrl(this.path(r.file)),s=r.root||xl(r.file),l=void 0;this.mapOpts.sourcesContent===!1?(l=new cS(r.text),l.sourcesContent&&(l.sourcesContent=null)):l=r.consumer(),this.map.applySourceMap(l,o,this.toUrl(this.path(s)))}},a.clearAnnotation=function(){if(this.mapOpts.annotation!==!1)if(this.root)for(var t,i=this.root.nodes.length-1;i>=0;i--)t=this.root.nodes[i],t.type==="comment"&&t.text.indexOf("# sourceMappingURL=")===0&&this.root.removeChild(i);else this.css&&(this.css=this.css.replace(/\n*?\/\*#[\S\s]*?\*\/$/gm,""))},a.generate=function(){if(this.clearAnnotation(),nde&&ade&&this.isMap())return this.generateMap();var t="";return this.stringify(this.root,function(i){t+=i}),[t]},a.generateMap=function(){if(this.root)this.generateString();else if(this.previous().length===1){var t=this.previous()[0].consumer();t.file=this.outputFile(),this.map=_l.fromSourceMap(t,{ignoreInvalidMapping:!0})}else this.map=new _l({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},a.generateString=function(){var t=this;this.css="",this.map=new _l({file:this.outputFile(),ignoreInvalidMapping:!0});var i=1,r=1,o="<no source>",s={generated:{column:0,line:0},original:{column:0,line:0},source:""},l,d;this.stringify(this.root,function(p,u,g){if(t.css+=p,u&&g!=="end"&&(s.generated.line=i,s.generated.column=r-1,u.source&&u.source.start?(s.source=t.sourcePath(u),s.original.line=u.source.start.line,s.original.column=u.source.start.column-1,t.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,t.map.addMapping(s))),l=p.match(/\n/g),l?(i+=l.length,d=p.lastIndexOf(`
`),r=p.length-d):r+=p.length,u&&g!=="start"){var b=u.parent||{raws:{}},v=u.type==="decl"||u.type==="atrule"&&!u.nodes;(!v||u!==b.last||b.raws.semicolon)&&(u.source&&u.source.end?(s.source=t.sourcePath(u),s.original.line=u.source.end.line,s.original.column=u.source.end.column-1,s.generated.line=i,s.generated.column=r-2,t.map.addMapping(s)):(s.source=o,s.original.line=1,s.original.column=0,s.generated.line=i,s.generated.column=r-1,t.map.addMapping(s)))}})},a.isAnnotation=function(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(function(t){return t.annotation}):!0},a.isInline=function(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;var t=this.mapOpts.annotation;return typeof t<"u"&&t!==!0?!1:this.previous().length?this.previous().some(function(i){return i.inline}):!0},a.isMap=function(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0},a.isSourcesContent=function(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(function(t){return t.withContent()}):!0},a.outputFile=function(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"},a.path=function(t){if(this.mapOpts.absolute||t.charCodeAt(0)===60||/^\w+:\/\//.test(t))return t;var i=this.memoizedPaths.get(t);if(i)return i;var r=this.opts.to?xl(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(r=xl(uS(r,this.mapOpts.annotation)));var o=dS(r,t);return this.memoizedPaths.set(t,o),o},a.previous=function(){var t=this;if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(function(r){if(r.source&&r.source.input.map){var o=r.source.input.map;t.previousMaps.includes(o)||t.previousMaps.push(o)}});else{var i=new tde(this.originalCSS,this.opts);i.map&&this.previousMaps.push(i.map)}return this.previousMaps},a.setSourcesContent=function(){var t=this,i={};if(this.root)this.root.walk(function(o){if(o.source){var s=o.source.input.from;if(s&&!i[s]){i[s]=!0;var l=t.usesFileUrls?t.toFileUrl(s):t.toUrl(t.path(s));t.map.setSourceContent(l,o.source.input.css)}}});else if(this.css){var r=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(r,this.css)}},a.sourcePath=function(t){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(t.source.input.from):this.toUrl(this.path(t.source.input.from))},a.toBase64=function(t){return Buffer?Buffer.from(t).toString("base64"):window.btoa(unescape(encodeURIComponent(t)))},a.toFileUrl=function(t){var i=this.memoizedFileURLs.get(t);if(i)return i;if(kb){var r=kb(t).toString();return this.memoizedFileURLs.set(t,r),r}else throw new Error("`map.absolute` option is not available in this PostCSS build")},a.toUrl=function(t){var i=this.memoizedURLs.get(t);if(i)return i;pS==="\\"&&(t=t.replace(/\\/g,"/"));var r=encodeURI(t).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(t,r),r},e})(),mS=ide,rde=ud,nm=(function(e){lt(a,e);function a(n){var t;return t=e.call(this,n)||this,t.type="comment",t}return a})(rde),gd=nm;nm.default=nm;var gS=di.isClean,hS=di.my,fS=pd,vS=gd,ode=ud,bS,ah,nh,yS;function kS(e){return e.map(function(a){return a.nodes&&(a.nodes=kS(a.nodes)),delete a.source,a})}function wS(e){if(e[gS]=!1,e.proxyOf.nodes)for(var a=B(e.proxyOf.nodes),n;!(n=a()).done;){var t=n.value;wS(t)}}var Rn=(function(e){lt(a,e);function a(){return e.apply(this,arguments)||this}var n=a.prototype;return n.append=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];for(var s=B(r),l;!(l=s()).done;)for(var d=l.value,p=this.normalize(d,this.last),u=B(p),g;!(g=u()).done;){var b=g.value;this.proxyOf.nodes.push(b)}return this.markDirty(),this},n.cleanRaws=function(i){if(e.prototype.cleanRaws.call(this,i),this.nodes)for(var r=B(this.nodes),o;!(o=r()).done;){var s=o.value;s.cleanRaws(i)}},n.each=function(i){if(this.proxyOf.nodes){for(var r=this.getIterator(),o,s;this.indexes[r]<this.proxyOf.nodes.length&&(o=this.indexes[r],s=i(this.proxyOf.nodes[o],o),s!==!1);)this.indexes[r]+=1;return delete this.indexes[r],s}},n.every=function(i){return this.nodes.every(i)},n.getIterator=function(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var i=this.lastEach;return this.indexes[i]=0,i},n.getProxyProcessor=function(){return{get:function(r,o){return o==="proxyOf"?r:r[o]?o==="each"||typeof o=="string"&&o.startsWith("walk")?function(){for(var s=arguments.length,l=new Array(s),d=0;d<s;d++)l[d]=arguments[d];var p;return(p=r)[o].apply(p,[].concat(l.map(function(u){return typeof u=="function"?function(g,b){return u(g.toProxy(),b)}:u})))}:o==="every"||o==="some"?function(s){return r[o](function(l){for(var d=arguments.length,p=new Array(d>1?d-1:0),u=1;u<d;u++)p[u-1]=arguments[u];return s.apply(void 0,[].concat([l.toProxy()],p))})}:o==="root"?function(){return r.root().toProxy()}:o==="nodes"?r.nodes.map(function(s){return s.toProxy()}):o==="first"||o==="last"?r[o].toProxy():r[o]:r[o]},set:function(r,o,s){return r[o]===s||(r[o]=s,(o==="name"||o==="params"||o==="selector")&&r.markDirty()),!0}}},n.index=function(i){return typeof i=="number"?i:(i.proxyOf&&(i=i.proxyOf),this.proxyOf.nodes.indexOf(i))},n.insertAfter=function(i,r){var o=this.index(i),s=this.normalize(r,this.proxyOf.nodes[o]).reverse();o=this.index(i);for(var l=B(s),d;!(d=l()).done;){var p=d.value;this.proxyOf.nodes.splice(o+1,0,p)}var u;for(var g in this.indexes)u=this.indexes[g],o<u&&(this.indexes[g]=u+s.length);return this.markDirty(),this},n.insertBefore=function(i,r){var o=this.index(i),s=o===0?"prepend":!1,l=this.normalize(r,this.proxyOf.nodes[o],s).reverse();o=this.index(i);for(var d=B(l),p;!(p=d()).done;){var u=p.value;this.proxyOf.nodes.splice(o,0,u)}var g;for(var b in this.indexes)g=this.indexes[b],o<=g&&(this.indexes[b]=g+l.length);return this.markDirty(),this},n.normalize=function(i,r){var o=this;if(typeof i=="string")i=kS(bS(i).nodes);else if(typeof i>"u")i=[];else if(Array.isArray(i)){i=i.slice(0);for(var s=B(i),l;!(l=s()).done;){var d=l.value;d.parent&&d.parent.removeChild(d,"ignore")}}else if(i.type==="root"&&this.type!=="document"){i=i.nodes.slice(0);for(var p=B(i),u;!(u=p()).done;){var g=u.value;g.parent&&g.parent.removeChild(g,"ignore")}}else if(i.type)i=[i];else if(i.prop){if(typeof i.value>"u")throw new Error("Value field is missed in node creation");typeof i.value!="string"&&(i.value=String(i.value)),i=[new fS(i)]}else if(i.selector)i=[new ah(i)];else if(i.name)i=[new nh(i)];else if(i.text)i=[new vS(i)];else throw new Error("Unknown node type in node creation");var b=i.map(function(v){return v[hS]||a.rebuild(v),v=v.proxyOf,v.parent&&v.parent.removeChild(v),v[gS]&&wS(v),typeof v.raws.before>"u"&&r&&typeof r.raws.before<"u"&&(v.raws.before=r.raws.before.replace(/\S/g,"")),v.parent=o.proxyOf,v});return b},n.prepend=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];r=r.reverse();for(var s=B(r),l;!(l=s()).done;){for(var d=l.value,p=this.normalize(d,this.first,"prepend").reverse(),u=B(p),g;!(g=u()).done;){var b=g.value;this.proxyOf.nodes.unshift(b)}for(var v in this.indexes)this.indexes[v]=this.indexes[v]+p.length}return this.markDirty(),this},n.push=function(i){return i.parent=this,this.proxyOf.nodes.push(i),this},n.removeAll=function(){for(var i=B(this.proxyOf.nodes),r;!(r=i()).done;){var o=r.value;o.parent=void 0}return this.proxyOf.nodes=[],this.markDirty(),this},n.removeChild=function(i){i=this.index(i),this.proxyOf.nodes[i].parent=void 0,this.proxyOf.nodes.splice(i,1);var r;for(var o in this.indexes)r=this.indexes[o],r>=i&&(this.indexes[o]=r-1);return this.markDirty(),this},n.replaceValues=function(i,r,o){return o||(o=r,r={}),this.walkDecls(function(s){r.props&&!r.props.includes(s.prop)||r.fast&&!s.value.includes(r.fast)||(s.value=s.value.replace(i,o))}),this.markDirty(),this},n.some=function(i){return this.nodes.some(i)},n.walk=function(i){return this.each(function(r,o){var s;try{s=i(r,o)}catch(l){throw r.addToError(l)}return s!==!1&&r.walk&&(s=r.walk(i)),s})},n.walkAtRules=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="atrule"&&i.test(o.name))return r(o,s)}):this.walk(function(o,s){if(o.type==="atrule"&&o.name===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="atrule")return r(o,s)}))},n.walkComments=function(i){return this.walk(function(r,o){if(r.type==="comment")return i(r,o)})},n.walkDecls=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="decl"&&i.test(o.prop))return r(o,s)}):this.walk(function(o,s){if(o.type==="decl"&&o.prop===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="decl")return r(o,s)}))},n.walkRules=function(i,r){return r?le(i,RegExp)?this.walk(function(o,s){if(o.type==="rule"&&i.test(o.selector))return r(o,s)}):this.walk(function(o,s){if(o.type==="rule"&&o.selector===i)return r(o,s)}):(r=i,this.walk(function(o,s){if(o.type==="rule")return r(o,s)}))},rt(a,[{key:"first",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}},{key:"last",get:function(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}}]),a})(ode);Rn.registerParse=function(e){bS=e};Rn.registerRule=function(e){ah=e};Rn.registerAtRule=function(e){nh=e};Rn.registerRoot=function(e){yS=e};var Mi=Rn;Rn.default=Rn;Rn.rebuild=function(e){e.type==="atrule"?Object.setPrototypeOf(e,nh.prototype):e.type==="rule"?Object.setPrototypeOf(e,ah.prototype):e.type==="decl"?Object.setPrototypeOf(e,fS.prototype):e.type==="comment"?Object.setPrototypeOf(e,vS.prototype):e.type==="root"&&Object.setPrototypeOf(e,yS.prototype),e[hS]=!0,e.nodes&&e.nodes.forEach(function(a){Rn.rebuild(a)})};var sde=Mi,AS,SS,No=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,Ce({type:"document"},t))||this,i.nodes||(i.nodes=[]),i}var n=a.prototype;return n.toResult=function(i){i===void 0&&(i={});var r=new AS(new SS,this,i);return r.stringify()},a})(sde);No.registerLazyResult=function(e){AS=e};No.registerProcessor=function(e){SS=e};var ih=No;No.default=No;var im=(function(){function e(n,t){if(t===void 0&&(t={}),this.type="warning",this.text=n,t.node&&t.node.source){var i=t.node.rangeBy(t);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(var r in t)this[r]=t[r]}var a=e.prototype;return a.toString=function(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},e})(),CS=im;im.default=im;var lde=CS,rm=(function(){function e(n,t,i){this.processor=n,this.messages=[],this.root=t,this.opts=i,this.css=void 0,this.map=void 0}var a=e.prototype;return a.toString=function(){return this.css},a.warn=function(t,i){i===void 0&&(i={}),i.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(i.plugin=this.lastPlugin.postcssPlugin);var r=new lde(t,i);return this.messages.push(r),r},a.warnings=function(){return this.messages.filter(function(t){return t.type==="warning"})},rt(e,[{key:"content",get:function(){return this.css}}]),e})(),rh=rm;rm.default=rm;var yu=39,wb=34,Xs=92,Ab=47,el=10,to=32,tl=12,al=9,nl=13,cde=91,dde=93,ude=40,pde=41,mde=123,gde=125,hde=59,fde=42,vde=58,bde=64,il=/[\t\n\f\r "#'()/;[\\\]{}]/g,rl=/[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g,yde=/.[\r\n"'(/\\]/,Sb=/[\da-f]/i,kde=function(a,n){n===void 0&&(n={});var t=a.css.valueOf(),i=n.ignoreErrors,r,o,s,l,d,p,u,g,b,v,A=t.length,f=0,S=[],C=[];function T(){return f}function E(N){throw a.error("Unclosed "+N,f)}function P(){return C.length===0&&f>=A}function I(N){if(C.length)return C.pop();if(!(f>=A)){var Z=N?N.ignoreUnclosed:!1;switch(r=t.charCodeAt(f),r){case el:case to:case al:case nl:case tl:{o=f;do o+=1,r=t.charCodeAt(o);while(r===to||r===el||r===al||r===nl||r===tl);v=["space",t.slice(f,o)],f=o-1;break}case cde:case dde:case mde:case gde:case vde:case hde:case pde:{var R=String.fromCharCode(r);v=[R,R,f];break}case ude:{if(g=S.length?S.pop()[1]:"",b=t.charCodeAt(f+1),g==="url"&&b!==yu&&b!==wb&&b!==to&&b!==el&&b!==al&&b!==tl&&b!==nl){o=f;do{if(p=!1,o=t.indexOf(")",o+1),o===-1)if(i||Z){o=f;break}else E("bracket");for(u=o;t.charCodeAt(u-1)===Xs;)u-=1,p=!p}while(p);v=["brackets",t.slice(f,o+1),f,o],f=o}else o=t.indexOf(")",f+1),l=t.slice(f,o+1),o===-1||yde.test(l)?v=["(","(",f]:(v=["brackets",l,f,o],f=o);break}case yu:case wb:{s=r===yu?"'":'"',o=f;do{if(p=!1,o=t.indexOf(s,o+1),o===-1)if(i||Z){o=f+1;break}else E("string");for(u=o;t.charCodeAt(u-1)===Xs;)u-=1,p=!p}while(p);v=["string",t.slice(f,o+1),f,o],f=o;break}case bde:{il.lastIndex=f+1,il.test(t),il.lastIndex===0?o=t.length-1:o=il.lastIndex-2,v=["at-word",t.slice(f,o+1),f,o],f=o;break}case Xs:{for(o=f,d=!0;t.charCodeAt(o+1)===Xs;)o+=1,d=!d;if(r=t.charCodeAt(o+1),d&&r!==Ab&&r!==to&&r!==el&&r!==al&&r!==nl&&r!==tl&&(o+=1,Sb.test(t.charAt(o)))){for(;Sb.test(t.charAt(o+1));)o+=1;t.charCodeAt(o+1)===to&&(o+=1)}v=["word",t.slice(f,o+1),f,o],f=o;break}default:{r===Ab&&t.charCodeAt(f+1)===fde?(o=t.indexOf("*/",f+2)+1,o===0&&(i||Z?o=t.length:E("comment")),v=["comment",t.slice(f,o+1),f,o],f=o):(rl.lastIndex=f+1,rl.test(t),rl.lastIndex===0?o=t.length-1:o=rl.lastIndex-2,v=["word",t.slice(f,o+1),f,o],S.push(v),f=o);break}}return f++,v}}function L(N){C.push(N)}return{back:L,endOfFile:P,nextToken:I,position:T}},DS=Mi,cc=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,t)||this,i.type="atrule",i}var n=a.prototype;return n.append=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];var s;return this.proxyOf.nodes||(this.nodes=[]),(s=e.prototype.append).call.apply(s,[].concat([this],r))},n.prepend=function(){for(var i=arguments.length,r=new Array(i),o=0;o<i;o++)r[o]=arguments[o];var s;return this.proxyOf.nodes||(this.nodes=[]),(s=e.prototype.prepend).call.apply(s,[].concat([this],r))},a})(DS),oh=cc;cc.default=cc;DS.registerAtRule(cc);var TS=Mi,ES,PS,Sr=(function(e){lt(a,e);function a(t){var i;return i=e.call(this,t)||this,i.type="root",i.nodes||(i.nodes=[]),i}var n=a.prototype;return n.normalize=function(i,r,o){var s=e.prototype.normalize.call(this,i);if(r){if(o==="prepend")this.nodes.length>1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r)for(var l=B(s),d;!(d=l()).done;){var p=d.value;p.raws.before=r.raws.before}}return s},n.removeChild=function(i,r){var o=this.index(i);return!r&&o===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[o].raws.before),e.prototype.removeChild.call(this,i)},n.toResult=function(i){i===void 0&&(i={});var r=new ES(new PS,this,i);return r.stringify()},a})(TS);Sr.registerLazyResult=function(e){ES=e};Sr.registerProcessor=function(e){PS=e};var ns=Sr;Sr.default=Sr;TS.registerRoot(Sr);var Fo={comma:function(a){return Fo.split(a,[","],!0)},space:function(a){var n=[" ",`
`,"	"];return Fo.split(a,n)},split:function(a,n,t){for(var i=[],r="",o=!1,s=0,l=!1,d="",p=!1,u=B(a),g;!(g=u()).done;){var b=g.value;p?p=!1:b==="\\"?p=!0:l?b===d&&(l=!1):b==='"'||b==="'"?(l=!0,d=b):b==="("?s+=1:b===")"?s>0&&(s-=1):s===0&&n.includes(b)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=b}return(t||r!=="")&&i.push(r.trim()),i}},_S=Fo;Fo.default=Fo;var xS=Mi,wde=_S,dc=(function(e){lt(a,e);function a(n){var t;return t=e.call(this,n)||this,t.type="rule",t.nodes||(t.nodes=[]),t}return rt(a,[{key:"selectors",get:function(){return wde.comma(this.selector)},set:function(t){var i=this.selector?this.selector.match(/,\s*/):null,r=i?i[0]:","+this.raw("between","beforeOpen");this.selector=t.join(r)}}]),a})(xS),sh=dc;dc.default=dc;xS.registerRule(dc);var Ade=pd,Sde=kde,Cde=gd,Dde=oh,Tde=ns,Cb=sh,Db={empty:!0,space:!0};function Ede(e){for(var a=e.length-1;a>=0;a--){var n=e[a],t=n[3]||n[2];if(t)return t}}var Pde=(function(){function e(n){this.input=n,this.root=new Tde,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:n,start:{column:1,line:1,offset:0}}}var a=e.prototype;return a.atrule=function(t){var i=new Dde;i.name=t[1].slice(1),i.name===""&&this.unnamedAtrule(i,t),this.init(i,t[2]);for(var r,o,s,l=!1,d=!1,p=[],u=[];!this.tokenizer.endOfFile();){if(t=this.tokenizer.nextToken(),r=t[0],r==="("||r==="["?u.push(r==="("?")":"]"):r==="{"&&u.length>0?u.push("}"):r===u[u.length-1]&&u.pop(),u.length===0)if(r===";"){i.source.end=this.getPosition(t[2]),i.source.end.offset++,this.semicolon=!0;break}else if(r==="{"){d=!0;break}else if(r==="}"){if(p.length>0){for(s=p.length-1,o=p[s];o&&o[0]==="space";)o=p[--s];o&&(i.source.end=this.getPosition(o[3]||o[2]),i.source.end.offset++)}this.end(t);break}else p.push(t);else p.push(t);if(this.tokenizer.endOfFile()){l=!0;break}}i.raws.between=this.spacesAndCommentsFromEnd(p),p.length?(i.raws.afterName=this.spacesAndCommentsFromStart(p),this.raw(i,"params",p),l&&(t=p[p.length-1],i.source.end=this.getPosition(t[3]||t[2]),i.source.end.offset++,this.spaces=i.raws.between,i.raws.between="")):(i.raws.afterName="",i.params=""),d&&(i.nodes=[],this.current=i)},a.checkMissedSemicolon=function(t){var i=this.colon(t);if(i!==!1){for(var r=0,o,s=i-1;s>=0&&(o=t[s],!(o[0]!=="space"&&(r+=1,r===2)));s--);throw this.input.error("Missed semicolon",o[0]==="word"?o[3]+1:o[2])}},a.colon=function(t){for(var i=0,r,o,s,l=B(t.entries()),d;!(d=l()).done;){var p=d.value,u=p[0],g=p[1];if(r=g,o=r[0],o==="("&&(i+=1),o===")"&&(i-=1),i===0&&o===":")if(!s)this.doubleColon(r);else{if(s[0]==="word"&&s[1]==="progid")continue;return u}s=r}return!1},a.comment=function(t){var i=new Cde;this.init(i,t[2]),i.source.end=this.getPosition(t[3]||t[2]),i.source.end.offset++;var r=t[1].slice(2,-2);if(/^\s*$/.test(r))i.text="",i.raws.left=r,i.raws.right="";else{var o=r.match(/^(\s*)([^]*\S)(\s*)$/);i.text=o[2],i.raws.left=o[1],i.raws.right=o[3]}},a.createTokenizer=function(){this.tokenizer=Sde(this.input)},a.decl=function(t,i){var r=new Ade;this.init(r,t[0][2]);var o=t[t.length-1];for(o[0]===";"&&(this.semicolon=!0,t.pop()),r.source.end=this.getPosition(o[3]||o[2]||Ede(t)),r.source.end.offset++;t[0][0]!=="word";)t.length===1&&this.unknownWord(t),r.raws.before+=t.shift()[1];for(r.source.start=this.getPosition(t[0][2]),r.prop="";t.length;){var s=t[0][0];if(s===":"||s==="space"||s==="comment")break;r.prop+=t.shift()[1]}r.raws.between="";for(var l;t.length;)if(l=t.shift(),l[0]===":"){r.raws.between+=l[1];break}else l[0]==="word"&&/\w/.test(l[1])&&this.unknownWord([l]),r.raws.between+=l[1];(r.prop[0]==="_"||r.prop[0]==="*")&&(r.raws.before+=r.prop[0],r.prop=r.prop.slice(1));for(var d=[],p;t.length&&(p=t[0][0],!(p!=="space"&&p!=="comment"));)d.push(t.shift());this.precheckMissedSemicolon(t);for(var u=t.length-1;u>=0;u--){if(l=t[u],l[1].toLowerCase()==="!important"){r.important=!0;var g=this.stringFrom(t,u);g=this.spacesFromEnd(t)+g,g!==" !important"&&(r.raws.important=g);break}else if(l[1].toLowerCase()==="important"){for(var b=t.slice(0),v="",A=u;A>0;A--){var f=b[A][0];if(v.trim().indexOf("!")===0&&f!=="space")break;v=b.pop()[1]+v}v.trim().indexOf("!")===0&&(r.important=!0,r.raws.important=v,t=b)}if(l[0]!=="space"&&l[0]!=="comment")break}var S=t.some(function(C){return C[0]!=="space"&&C[0]!=="comment"});S&&(r.raws.between+=d.map(function(C){return C[1]}).join(""),d=[]),this.raw(r,"value",d.concat(t),i),r.value.includes(":")&&!i&&this.checkMissedSemicolon(t)},a.doubleColon=function(t){throw this.input.error("Double colon",{offset:t[2]},{offset:t[2]+t[1].length})},a.emptyRule=function(t){var i=new Cb;this.init(i,t[2]),i.selector="",i.raws.between="",this.current=i},a.end=function(t){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(t[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(t)},a.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())},a.freeSemicolon=function(t){if(this.spaces+=t[1],this.current.nodes){var i=this.current.nodes[this.current.nodes.length-1];i&&i.type==="rule"&&!i.raws.ownSemicolon&&(i.raws.ownSemicolon=this.spaces,this.spaces="")}},a.getPosition=function(t){var i=this.input.fromOffset(t);return{column:i.col,line:i.line,offset:t}},a.init=function(t,i){this.current.push(t),t.source={input:this.input,start:this.getPosition(i)},t.raws.before=this.spaces,this.spaces="",t.type!=="comment"&&(this.semicolon=!1)},a.other=function(t){for(var i=!1,r=null,o=!1,s=null,l=[],d=t[1].startsWith("--"),p=[],u=t;u;){if(r=u[0],p.push(u),r==="("||r==="[")s||(s=u),l.push(r==="("?")":"]");else if(d&&o&&r==="{")s||(s=u),l.push("}");else if(l.length===0)if(r===";")if(o){this.decl(p,d);return}else break;else if(r==="{"){this.rule(p);return}else if(r==="}"){this.tokenizer.back(p.pop()),i=!0;break}else r===":"&&(o=!0);else r===l[l.length-1]&&(l.pop(),l.length===0&&(s=null));u=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(i=!0),l.length>0&&this.unclosedBracket(s),i&&o){if(!d)for(;p.length&&(u=p[p.length-1][0],!(u!=="space"&&u!=="comment"));)this.tokenizer.back(p.pop());this.decl(p,d)}else this.unknownWord(p)},a.parse=function(){for(var t;!this.tokenizer.endOfFile();)switch(t=this.tokenizer.nextToken(),t[0]){case"space":this.spaces+=t[1];break;case";":this.freeSemicolon(t);break;case"}":this.end(t);break;case"comment":this.comment(t);break;case"at-word":this.atrule(t);break;case"{":this.emptyRule(t);break;default:this.other(t);break}this.endFile()},a.precheckMissedSemicolon=function(){},a.raw=function(t,i,r,o){for(var s,l,d=r.length,p="",u=!0,g,b,v=0;v<d;v+=1)s=r[v],l=s[0],l==="space"&&v===d-1&&!o?u=!1:l==="comment"?(b=r[v-1]?r[v-1][0]:"empty",g=r[v+1]?r[v+1][0]:"empty",!Db[b]&&!Db[g]?p.slice(-1)===","?u=!1:p+=s[1]:u=!1):p+=s[1];if(!u){var A=r.reduce(function(f,S){return f+S[1]},"");t.raws[i]={raw:A,value:p}}t[i]=p},a.rule=function(t){t.pop();var i=new Cb;this.init(i,t[0][2]),i.raws.between=this.spacesAndCommentsFromEnd(t),this.raw(i,"selector",t),this.current=i},a.spacesAndCommentsFromEnd=function(t){for(var i,r="";t.length&&(i=t[t.length-1][0],!(i!=="space"&&i!=="comment"));)r=t.pop()[1]+r;return r},a.spacesAndCommentsFromStart=function(t){for(var i,r="";t.length&&(i=t[0][0],!(i!=="space"&&i!=="comment"));)r+=t.shift()[1];return r},a.spacesFromEnd=function(t){for(var i,r="";t.length&&(i=t[t.length-1][0],i==="space");)r=t.pop()[1]+r;return r},a.stringFrom=function(t,i){for(var r="",o=i;o<t.length;o++)r+=t[o][1];return t.splice(i,t.length-i),r},a.unclosedBlock=function(){var t=this.current.source.start;throw this.input.error("Unclosed block",t.line,t.column)},a.unclosedBracket=function(t){throw this.input.error("Unclosed bracket",{offset:t[2]},{offset:t[2]+1})},a.unexpectedClose=function(t){throw this.input.error("Unexpected }",{offset:t[2]},{offset:t[2]+1})},a.unknownWord=function(t){throw this.input.error("Unknown word",{offset:t[0][2]},{offset:t[0][2]+t[0][1].length})},a.unnamedAtrule=function(t,i){throw this.input.error("At-rule without name",{offset:i[2]},{offset:i[2]+i[1].length})},e})(),_de=Pde,xde=Mi,Ide=_de,Rde=md;function uc(e,a){var n=new Rde(e,a),t=new Ide(n);try{t.parse()}catch(i){throw i}return t.root}var lh=uc;uc.default=uc;xde.registerParse(uc);var Ba=di.isClean,zde=di.my,Mde=mS,Nde=dd,Fde=Mi,Lde=ih,Tb=rh,jde=lh,Ode=ns,Bde={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},Ude={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},qde={Once:!0,postcssPlugin:!0,prepare:!0},Cr=0;function ao(e){return(typeof e>"u"?"undefined":ce(e))==="object"&&typeof e.then=="function"}function IS(e){var a=!1,n=Bde[e.type];return e.type==="decl"?a=e.prop.toLowerCase():e.type==="atrule"&&(a=e.name.toLowerCase()),a&&e.append?[n,n+"-"+a,Cr,n+"Exit",n+"Exit-"+a]:a?[n,n+"-"+a,n+"Exit",n+"Exit-"+a]:e.append?[n,Cr,n+"Exit"]:[n,n+"Exit"]}function Eb(e){var a;return e.type==="document"?a=["Document",Cr,"DocumentExit"]:e.type==="root"?a=["Root",Cr,"RootExit"]:a=IS(e),{eventIndex:0,events:a,iterator:0,node:e,visitorIndex:0,visitors:[]}}function om(e){return e[Ba]=!1,e.nodes&&e.nodes.forEach(function(a){return om(a)}),e}var sm={},Dr=(function(){function e(n,t,i){var r=this;this.stringified=!1,this.processed=!1;var o;if((typeof t>"u"?"undefined":ce(t))==="object"&&t!==null&&(t.type==="root"||t.type==="document"))o=om(t);else if(le(t,e)||le(t,Tb))o=om(t.root),t.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=t.map);else{var s=jde;i.syntax&&(s=i.syntax.parse),i.parser&&(s=i.parser),s.parse&&(s=s.parse);try{o=s(t,i)}catch(l){this.processed=!0,this.error=l}o&&!o[zde]&&Fde.rebuild(o)}this.result=new Tb(n,o,i),this.helpers=Ce({},sm,{postcss:sm,result:this.result}),this.plugins=this.processor.plugins.map(function(l){return(typeof l>"u"?"undefined":ce(l))==="object"&&l.prepare?Ce({},l,l.prepare(r.result)):l})}var a=e.prototype;return a.async=function(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)},a.catch=function(t){return this.async().catch(t)},a.finally=function(t){return this.async().then(t,t)},a.getAsyncError=function(){throw new Error("Use process(css).then(cb) to work with async plugins")},a.handleError=function(t,i){var r=this.result.lastPlugin;try{if(i&&i.addToError(t),this.error=t,t.name==="CssSyntaxError"&&!t.plugin)t.plugin=r.postcssPlugin,t.setMessage();else if(r.postcssVersion)var o,s,l,d,p}catch{}return t},a.prepareVisitors=function(){var t=this;this.listeners={};for(var i=function(p,u,g){t.listeners[u]||(t.listeners[u]=[]),t.listeners[u].push([p,g])},r=B(this.plugins),o;!(o=r()).done;){var s=o.value;if((typeof s>"u"?"undefined":ce(s))==="object")for(var l in s){if(!Ude[l]&&/^[A-Z]/.test(l))throw new Error("Unknown event "+l+" in "+s.postcssPlugin+". Try to update PostCSS ("+this.processor.version+" now).");if(!qde[l])if(ce(s[l])==="object")for(var d in s[l])d==="*"?i(s,l,s[l][d]):i(s,l+"-"+d.toLowerCase(),s[l][d]);else typeof s[l]=="function"&&i(s,l,s[l])}}this.hasListener=Object.keys(this.listeners).length>0},a.runAsync=function(){var t=this;return Qc(function(){var i,r,o,s,l,d,p,u,g,b,v,A;return Di(this,function(f){switch(f.label){case 0:t.plugin=0,i=0,f.label=1;case 1:if(!(i<t.plugins.length))return[3,6];if(r=t.plugins[i],o=t.runOnRoot(r),!ao(o))return[3,5];f.label=2;case 2:return f.trys.push([2,4,,5]),[4,o];case 3:return f.sent(),[3,5];case 4:throw s=f.sent(),t.handleError(s);case 5:return i++,[3,1];case 6:if(t.prepareVisitors(),!t.hasListener)return[3,18];l=t.result.root,f.label=7;case 7:if(l[Ba])return[3,14];l[Ba]=!0,d=[Eb(l)],f.label=8;case 8:if(!(d.length>0))return[3,13];if(p=t.visitTick(d),!ao(p))return[3,12];f.label=9;case 9:return f.trys.push([9,11,,12]),[4,p];case 10:return f.sent(),[3,12];case 11:throw u=f.sent(),g=d[d.length-1].node,t.handleError(u,g);case 12:return[3,8];case 13:return[3,7];case 14:if(!t.listeners.OnceExit)return[3,18];b=function(){var S,C,T,E,P;return Di(this,function(I){switch(I.label){case 0:S=A.value,C=S[0],T=S[1],t.result.lastPlugin=C,I.label=1;case 1:return I.trys.push([1,6,,7]),l.type!=="document"?[3,3]:(E=l.nodes.map(function(L){return T(L,t.helpers)}),[4,Promise.all(E)]);case 2:return I.sent(),[3,5];case 3:return[4,T(l,t.helpers)];case 4:I.sent(),I.label=5;case 5:return[3,7];case 6:throw P=I.sent(),t.handleError(P);case 7:return[2]}})},v=B(t.listeners.OnceExit),f.label=15;case 15:return(A=v()).done?[3,18]:[5,_g(b())];case 16:f.sent(),f.label=17;case 17:return[3,15];case 18:return t.processed=!0,[2,t.stringify()]}})})()},a.runOnRoot=function(t){var i=this;this.result.lastPlugin=t;try{if((typeof t>"u"?"undefined":ce(t))==="object"&&t.Once){if(this.result.root.type==="document"){var r=this.result.root.nodes.map(function(o){return t.Once(o,i.helpers)});return ao(r[0])?Promise.all(r):r}return t.Once(this.result.root,this.helpers)}else if(typeof t=="function")return t(this.result.root,this.result)}catch(o){throw this.handleError(o)}},a.stringify=function(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();var t=this.result.opts,i=Nde;t.syntax&&(i=t.syntax.stringify),t.stringifier&&(i=t.stringifier),i.stringify&&(i=i.stringify);var r=new Mde(i,this.result.root,this.result.opts),o=r.generate();return this.result.css=o[0],this.result.map=o[1],this.result},a.sync=function(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(var t=B(this.plugins),i;!(i=t()).done;){var r=i.value,o=this.runOnRoot(r);if(ao(o))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){for(var s=this.result.root;!s[Ba];)s[Ba]=!0,this.walkSync(s);if(this.listeners.OnceExit)if(s.type==="document")for(var l=B(s.nodes),d;!(d=l()).done;){var p=d.value;this.visitSync(this.listeners.OnceExit,p)}else this.visitSync(this.listeners.OnceExit,s)}return this.result},a.then=function(t,i){return this.async().then(t,i)},a.toString=function(){return this.css},a.visitSync=function(t,i){for(var r=B(t),o;!(o=r()).done;){var s=o.value,l=s[0],d=s[1];this.result.lastPlugin=l;var p=void 0;try{p=d(i,this.helpers)}catch(u){throw this.handleError(u,i.proxyOf)}if(i.type!=="root"&&i.type!=="document"&&!i.parent)return!0;if(ao(p))throw this.getAsyncError()}},a.visitTick=function(t){var i=t[t.length-1],r=i.node,o=i.visitors;if(r.type!=="root"&&r.type!=="document"&&!r.parent){t.pop();return}if(o.length>0&&i.visitorIndex<o.length){var s=o[i.visitorIndex],l=s[0],d=s[1];i.visitorIndex+=1,i.visitorIndex===o.length&&(i.visitors=[],i.visitorIndex=0),this.result.lastPlugin=l;try{return d(r.toProxy(),this.helpers)}catch(v){throw this.handleError(v,r)}}if(i.iterator!==0){for(var p=i.iterator,u;u=r.nodes[r.indexes[p]];)if(r.indexes[p]+=1,!u[Ba]){u[Ba]=!0,t.push(Eb(u));return}i.iterator=0,delete r.indexes[p]}for(var g=i.events;i.eventIndex<g.length;){var b=g[i.eventIndex];if(i.eventIndex+=1,b===Cr){r.nodes&&r.nodes.length&&(r[Ba]=!0,i.iterator=r.getIterator());return}else if(this.listeners[b]){i.visitors=this.listeners[b];return}}t.pop()},a.walkSync=function(t){var i=this;t[Ba]=!0;for(var r=IS(t),o=B(r),s;!(s=o()).done;){var l=s.value;if(l===Cr)t.nodes&&t.each(function(p){p[Ba]||i.walkSync(p)});else{var d=this.listeners[l];if(d&&this.visitSync(d,t.toProxy()))return}}},a.warnings=function(){return this.sync().warnings()},rt(e,[{key:"content",get:function(){return this.stringify().content}},{key:"css",get:function(){return this.stringify().css}},{key:"map",get:function(){return this.stringify().map}},{key:"messages",get:function(){return this.sync().messages}},{key:"opts",get:function(){return this.result.opts}},{key:"processor",get:function(){return this.result.processor}},{key:"root",get:function(){return this.sync().root}},{key:Symbol.toStringTag,get:function(){return"LazyResult"}}]),e})();Dr.registerPostcss=function(e){sm=e};var RS=Dr;Dr.default=Dr;Ode.registerLazyResult(Dr);Lde.registerLazyResult(Dr);var Vde=mS,$de=dd,Wde=lh,Gde=rh,lm=(function(){function e(n,t,i){t=t.toString(),this.stringified=!1,this._processor=n,this._css=t,this._opts=i,this._map=void 0;var r,o=$de;this.result=new Gde(this._processor,r,this._opts),this.result.css=t;var s=this;Object.defineProperty(this.result,"root",{get:function(){return s.root}});var l=new Vde(o,r,this._opts,t);if(l.isMap()){var d=l.generate(),p=d[0],u=d[1];p&&(this.result.css=p),u&&(this.result.map=u)}else l.clearAnnotation(),this.result.css=l.css}var a=e.prototype;return a.async=function(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)},a.catch=function(t){return this.async().catch(t)},a.finally=function(t){return this.async().then(t,t)},a.sync=function(){if(this.error)throw this.error;return this.result},a.then=function(t,i){return this.async().then(t,i)},a.toString=function(){return this._css},a.warnings=function(){return[]},rt(e,[{key:"content",get:function(){return this.result.css}},{key:"css",get:function(){return this.result.css}},{key:"map",get:function(){return this.result.map}},{key:"messages",get:function(){return[]}},{key:"opts",get:function(){return this.result.opts}},{key:"processor",get:function(){return this.result.processor}},{key:"root",get:function(){if(this._root)return this._root;var t,i=Wde;try{t=i(this._css,this._opts)}catch(r){this.error=r}if(this.error)throw this.error;return this._root=t,t}},{key:Symbol.toStringTag,get:function(){return"NoWorkResult"}}]),e})(),Hde=lm;lm.default=lm;var Yde=Hde,Kde=RS,Zde=ih,Jde=ns,Lo=(function(){function e(n){n===void 0&&(n=[]),this.version="8.4.38",this.plugins=this.normalize(n)}var a=e.prototype;return a.normalize=function(t){for(var i=[],r=B(t),o;!(o=r()).done;){var s=o.value;if(s.postcss===!0?s=s():s.postcss&&(s=s.postcss),(typeof s>"u"?"undefined":ce(s))==="object"&&Array.isArray(s.plugins))i=i.concat(s.plugins);else if((typeof s>"u"?"undefined":ce(s))==="object"&&s.postcssPlugin)i.push(s);else if(typeof s=="function")i.push(s);else if(!((typeof s>"u"?"undefined":ce(s))==="object"&&(s.parse||s.stringify)))throw new Error(s+" is not a PostCSS plugin")}return i},a.process=function(t,i){return i===void 0&&(i={}),!this.plugins.length&&!i.parser&&!i.stringifier&&!i.syntax?new Yde(this,t,i):new Kde(this,t,i)},a.use=function(t){return this.plugins=this.plugins.concat(this.normalize([t])),this},e})(),Qde=Lo;Lo.default=Lo;Jde.registerProcessor(Lo);Zde.registerProcessor(Lo);var Xde=pd,eue=lS,tue=gd,aue=oh,nue=md,iue=ns,rue=sh;function jo(e,a){if(Array.isArray(e))return e.map(function(u){return jo(u)});var n=e.inputs,t=Ci(e,["inputs"]);if(n){a=[];for(var i=B(n),r;!(r=i()).done;){var o=r.value,s=Ce({},o,{__proto__:nue.prototype});s.map&&(s.map=Ce({},s.map,{__proto__:eue.prototype})),a.push(s)}}if(t.nodes&&(t.nodes=e.nodes.map(function(u){return jo(u,a)})),t.source){var l=t.source,d=l.inputId,p=Ci(l,["inputId"]);t.source=p,d!=null&&(t.source.input=a[d])}if(t.type==="root")return new iue(t);if(t.type==="decl")return new Xde(t);if(t.type==="rule")return new rue(t);if(t.type==="comment")return new tue(t);if(t.type==="atrule")return new aue(t);throw new Error("Unknown node type: "+e.type)}var oue=jo;jo.default=jo;var sue=th,zS=pd,lue=RS,cue=Mi,ch=Qde,due=dd,uue=oue,MS=ih,pue=CS,NS=gd,FS=oh,mue=rh,gue=md,hue=lh,fue=_S,LS=sh,jS=ns,vue=ud;function Ge(){for(var e=arguments.length,a=new Array(e),n=0;n<e;n++)a[n]=arguments[n];return a.length===1&&Array.isArray(a[0])&&(a=a[0]),new ch(a)}Ge.plugin=function(a,n){var t=!1;function i(){for(var o=arguments.length,s=new Array(o),l=0;l<o;l++)s[l]=arguments[l];console&&console.warn&&!t&&(t=!0,hr.LANG&&hr.LANG.startsWith("cn"));var d=n.apply(void 0,[].concat(s));return d.postcssPlugin=a,d.postcssVersion=new ch().version,d}var r;return Object.defineProperty(i,"postcss",{get:function(){return r||(r=i()),r}}),i.process=function(o,s,l){return Ge([i(l)]).process(o,s)},i};Ge.stringify=due;Ge.parse=hue;Ge.fromJSON=uue;Ge.list=fue;Ge.comment=function(e){return new NS(e)};Ge.atRule=function(e){return new FS(e)};Ge.decl=function(e){return new zS(e)};Ge.rule=function(e){return new LS(e)};Ge.root=function(e){return new jS(e)};Ge.document=function(e){return new MS(e)};Ge.CssSyntaxError=sue;Ge.Declaration=zS;Ge.Container=cue;Ge.Processor=ch;Ge.Document=MS;Ge.Comment=NS;Ge.Warning=pue;Ge.AtRule=FS;Ge.Result=mue;Ge.Input=gue;Ge.Rule=LS;Ge.Root=jS;Ge.Node=vue;lue.registerPostcss(Ge);var bue=Ge;Ge.default=Ge;var ut=Ice(bue);ut.stringify;ut.fromJSON;ut.plugin;ut.parse;ut.list;ut.document;ut.comment;ut.atRule;ut.rule;ut.decl;ut.root;ut.CssSyntaxError;ut.Declaration;ut.Container;ut.Processor;ut.Document;ut.Comment;ut.Warning;ut.AtRule;ut.Result;ut.Input;ut.Rule;ut.Root;ut.Node;var yue=Object.defineProperty,kue=function(e,a,n){return a in e?yue(e,a,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[a]=n},ol=function(e,a,n){return kue(e,(typeof a>"u"?"undefined":ce(a))!=="symbol"?a+"":a,n)};function wue(e,a,n){try{if(!(a in e))return function(){};var t=e[a],i=n(t);return typeof i=="function"&&(i.prototype=i.prototype||{},Object.defineProperties(i,{__rrweb_original__:{enumerable:!1,value:t}})),e[a]=i,function(){e[a]=t}}catch{return function(){}}}var Ki=(function(){function e(n){ol(this,"fileName"),ol(this,"functionName"),ol(this,"lineNumber"),ol(this,"columnNumber"),this.fileName=n.fileName||"",this.functionName=n.functionName||"",this.lineNumber=n.lineNumber,this.columnNumber=n.columnNumber}var a=e.prototype;return a.toString=function(){var t=this.lineNumber||"",i=this.columnNumber||"";return this.functionName?this.functionName+" ("+this.fileName+":"+t+":"+i+")":this.fileName+":"+t+":"+i},e})(),Aue=/(^|@)\S+:\d+/,Pb=/^\s*at .*(\S+:\d+|\(native\))/m,Sue=/^(eval@)?(\[native code])?$/,ku={parse:function(a){return a?typeof a.stacktrace<"u"||typeof a["opera#sourceloc"]<"u"?this.parseOpera(a):a.stack&&a.stack.match(Pb)?this.parseV8OrIE(a):a.stack?this.parseFFOrSafari(a):[]:[]},extractLocation:function(a){if(a.indexOf(":")===-1)return[a];var n=/(.+?)(?::(\d+))?(?::(\d+))?$/,t=n.exec(a.replace(/[()]/g,""));if(!t)throw new Error("Cannot parse given url: "+a);return[t[1],t[2]||void 0,t[3]||void 0]},parseV8OrIE:function(a){var n=a.stack.split(`
`).filter(function(t){return!!t.match(Pb)},this);return n.map(function(t){t.indexOf("(eval ")>-1&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var i=t.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=i.match(/ (\((.+):(\d+):(\d+)\)$)/);i=r?i.replace(r[0],""):i;var o=i.split(/\s+/).slice(1),s=this.extractLocation(r?r[1]:o.pop()),l=o.join(" ")||void 0,d=["eval","<anonymous>"].indexOf(s[0])>-1?void 0:s[0];return new Ki({functionName:l,fileName:d,lineNumber:s[1],columnNumber:s[2]})},this)},parseFFOrSafari:function(a){var n=a.stack.split(`
`).filter(function(t){return!t.match(Sue)},this);return n.map(function(t){if(t.indexOf(" > eval")>-1&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),t.indexOf("@")===-1&&t.indexOf(":")===-1)return new Ki({functionName:t});var i=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=t.match(i),o=r&&r[1]?r[1]:void 0,s=this.extractLocation(t.replace(i,""));return new Ki({functionName:o,fileName:s[0],lineNumber:s[1],columnNumber:s[2]})},this)},parseOpera:function(a){return!a.stacktrace||a.message.indexOf(`
`)>-1&&a.message.split(`
`).length>a.stacktrace.split(`
`).length?this.parseOpera9(a):a.stack?this.parseOpera11(a):this.parseOpera10(a)},parseOpera9:function(a){for(var n=/Line (\d+).*script (?:in )?(\S+)/i,t=a.message.split(`
`),i=[],r=2,o=t.length;r<o;r+=2){var s=n.exec(t[r]);s&&i.push(new Ki({fileName:s[2],lineNumber:parseFloat(s[1])}))}return i},parseOpera10:function(a){for(var n=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,t=a.stacktrace.split(`
`),i=[],r=0,o=t.length;r<o;r+=2){var s=n.exec(t[r]);s&&i.push(new Ki({functionName:s[3]||void 0,fileName:s[2],lineNumber:parseFloat(s[1])}))}return i},parseOpera11:function(a){var n=a.stack.split(`
`).filter(function(t){return!!t.match(Aue)&&!t.match(/^Error created at/)},this);return n.map(function(t){var i=t.split("@"),r=this.extractLocation(i.pop()),o=i.shift()||"",s=o.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^)]*\)/g,"")||void 0;return new Ki({functionName:s,fileName:r[0],lineNumber:r[1],columnNumber:r[2]})},this)}};function Cue(e){if(!e||!e.outerHTML)return"";for(var a="";e.parentElement;){var n=e.localName;if(!n)break;n=n.toLowerCase();var t=e.parentElement,i=[];if(t.children&&t.children.length>0)for(var r=0;r<t.children.length;r++){var o=t.children[r];o.localName&&o.localName.toLowerCase&&o.localName.toLowerCase()===n&&i.push(o)}i.length>1&&(n+=":eq("+i.indexOf(e)+")"),a=n+(a?">"+a:""),e=t}return a}function cm(e){return Object.prototype.toString.call(e)==="[object Object]"}function OS(e,a){if(a===0)return!0;for(var n=Object.keys(e),t=B(n),i;!(i=t()).done;){var r=i.value;if(cm(e[r])&&OS(e[r],a-1))return!0}return!1}function Zi(e,a){var n={numOfKeysLimit:50,depthOfLimit:4};Object.assign(n,a);var t=[],i=[];return JSON.stringify(e,function(s,l){if(t.length>0){var d=t.indexOf(this);~d?t.splice(d+1):t.push(this),~d?i.splice(d,1/0,s):i.push(s),~t.indexOf(l)&&(t[0]===l?l="[Circular ~]":l="[Circular ~."+i.slice(0,t.indexOf(l)).join(".")+"]")}else t.push(l);if(l===null)return l;if(l===void 0)return"undefined";if(r(l))return o(l);if((typeof l>"u"?"undefined":ce(l))==="bigint")return l.toString()+"n";if(le(l,Event)){var p={};for(var u in l){var g=l[u];Array.isArray(g)?p[u]=Cue(g.length?g[0]:null):p[u]=g}return p}else{if(le(l,Node))return le(l,HTMLElement)?l?l.outerHTML:"":l.nodeName;if(le(l,Error))return l.stack?l.stack+`
End of stack for Error object`:l.name+": "+l.message}return l});function r(s){return!!(cm(s)&&Object.keys(s).length>n.numOfKeysLimit||typeof s=="function"||cm(s)&&OS(s,n.depthOfLimit))}function o(s){var l=s.toString();return n.stringLengthLimit&&l.length>n.stringLengthLimit&&(l=""+l.slice(0,n.stringLengthLimit)+"..."),l}}var _b={level:["assert","clear","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"],lengthThreshold:1e3,logger:"console"};function Due(e,a,n){var t=n?Object.assign({},_b,n):_b,i=t.logger;if(!i)return function(){};var r;typeof i=="string"?r=a[i]:r=i;var o=0,s=!1,l=[];if(t.level.includes("error")){var d=function(A){var f=A.message,S=A.error,C=ku.parse(S).map(function(E){return E.toString()}),T=[Zi(f,t.stringifyOptions)];e({level:"error",trace:C,payload:T})};a.addEventListener("error",d),l.push(function(){a.removeEventListener("error",d)});var p=function(A){var f,S;le(A.reason,Error)?(f=A.reason,S=[Zi("Uncaught (in promise) "+f.name+": "+f.message,t.stringifyOptions)]):(f=new Error,S=[Zi("Uncaught (in promise)",t.stringifyOptions),Zi(A.reason,t.stringifyOptions)]);var C=ku.parse(f).map(function(T){return T.toString()});e({level:"error",trace:C,payload:S})};a.addEventListener("unhandledrejection",p),l.push(function(){a.removeEventListener("unhandledrejection",p)})}for(var u=B(t.level),g;!(g=u()).done;){var b=g.value;l.push(v(r,b))}return function(){l.forEach(function(A){return A()})};function v(A,f){var S=this;return A[f]?wue(A,f,function(C){var T=S;return function(){for(var E=arguments.length,P=new Array(E),I=0;I<E;I++)P[I]=arguments[I];if(C.apply(T,P),!(f==="assert"&&P[0])&&!s){s=!0;try{var L=ku.parse(new Error).map(function(R){return R.toString()}).splice(1),N=f==="assert"?P.slice(1):P,Z=N.map(function(R){return Zi(R,t.stringifyOptions)});o++,o<t.lengthThreshold?e({level:f,trace:L,payload:Z}):o===t.lengthThreshold&&e({level:"warn",trace:[],payload:[Zi("The number of log records reached the threshold.")]})}catch(R){C.apply(void 0,[].concat(["rrweb logger error:",R],P))}finally{s=!1}}}}):function(){}}}var Tue="rrweb/console@1",Eue=function(e){return{name:Tue,observer:Due,options:e}},xb=z.setImmediate,Xn,dm,um,BS=Object.prototype.toString,Pue=typeof xb<"u"?function(a){return xb(a)}:setTimeout;try{Object.defineProperty({},"x",{}),Xn=function(a,n,t,i){return Object.defineProperty(a,n,{value:t,writable:!0,configurable:i!==!1})}}catch{Xn=function(n,t,i){return n[t]=i,n}}um=(function(){var a,n,t;function i(r,o){this.fn=r,this.self=o,this.next=void 0}return{add:function(o,s){t=new i(o,s),n?n.next=t:a=t,n=t,t=void 0},drain:function(){var o=a;for(a=n=dm=void 0;o;)o.fn.call(o.self),o=o.next}}})();function pc(e,a){um.add(e,a),dm||(dm=Pue(um.drain))}function US(e){var a,n=typeof e;return e!==null&&(n==="object"||n==="function")&&(a=e.then),typeof a=="function"?a:!1}function dh(){for(var e=0;e<this.chain.length;e++)_ue(this,this.state===1?this.chain[e].success:this.chain[e].failure,this.chain[e]);this.chain.length=0}function _ue(e,a,n){var t,i;try{a===!1?n.reject(e.msg):(a===!0?t=e.msg:t=a.call(void 0,e.msg),t===n.promise?n.reject(TypeError("Promise-chain cycle")):(i=US(t))?i.call(t,n.resolve,n.reject):n.resolve(t))}catch(r){n.reject(r)}}function qS(e){var a,n=this;if(!n.triggered){n.triggered=!0,n.def&&(n=n.def);try{(a=US(e))?pc(function(){var t=new Ib(n);try{a.call(e,function(){qS.apply(t,arguments)},function(){po.apply(t,arguments)})}catch(i){po.call(t,i)}}):(n.msg=e,n.state=1,n.chain.length>0&&pc(dh,n))}catch(t){po.call(new Ib(n),t)}}}function po(e){var a=this;a.triggered||(a.triggered=!0,a.def&&(a=a.def),a.msg=e,a.state=2,a.chain.length>0&&pc(dh,a))}function VS(e,a,n,t){for(var i=0;i<a.length;i++)(function(o){e.resolve(a[o]).then(function(l){n(o,l)},t)})(i)}function Ib(e){this.def=e,this.triggered=!1}function xue(e){this.promise=e,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function ui(e){if(typeof e!="function")throw TypeError("Not a function");if(this.__NPO__!==0)throw TypeError("Not a promise");this.__NPO__=1;var a=new xue(this);this.then=function(t,i){var r={success:typeof t=="function"?t:!0,failure:typeof i=="function"?i:!1};return r.promise=new this.constructor(function(s,l){if(typeof s!="function"||typeof l!="function")throw TypeError("Not a function");r.resolve=s,r.reject=l}),a.chain.push(r),a.state!==0&&pc(dh,a),r.promise},this.catch=function(t){return this.then(void 0,t)};try{e.call(void 0,function(t){qS.call(a,t)},function(t){po.call(a,t)})}catch(n){po.call(a,n)}}var $S=Xn({},"constructor",ui,!1);ui.prototype=$S;Xn($S,"__NPO__",0,!1);Xn(ui,"resolve",function(a){var n=this;return a&&typeof a=="object"&&a.__NPO__===1?a:new n(function(i,r){if(typeof i!="function"||typeof r!="function")throw TypeError("Not a function");i(a)})});Xn(ui,"reject",function(a){return new this(function(t,i){if(typeof t!="function"||typeof i!="function")throw TypeError("Not a function");i(a)})});Xn(ui,"all",function(a){var n=this;return BS.call(a)!=="[object Array]"?n.reject(TypeError("Not an array")):a.length===0?n.resolve([]):new n(function(i,r){if(typeof i!="function"||typeof r!="function")throw TypeError("Not a function");var o=a.length,s=Array(o),l=0;VS(n,a,function(p,u){s[p]=u,++l===o&&i(s)},r)})});Xn(ui,"race",function(a){var n=this;return BS.call(a)!=="[object Array]"?n.reject(TypeError("Not an array")):new n(function(i,r){if(typeof i!="function"||typeof r!="function")throw TypeError("Not a function");VS(n,a,function(s,l){i(l)},r)})});var we;typeof Promise<"u"&&Promise.toString().indexOf("[native code]")!==-1?we=Promise:we=ui;var mo=1440*60*1e3,wu=8*1e3,hd=Array.prototype,Iue=Function.prototype,WS=Object.prototype,Yn=hd.slice,is=WS.toString,fd=WS.hasOwnProperty,St=z.console,Cn=z.navigator,be=z.document,io=z.opera,Rb=z.screen,Ua=Cn.userAgent,Au=Iue.bind,zb=hd.forEach,Mb=hd.indexOf,Nb=hd.map,Rue=Array.isArray,pm={},k={trim:function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},ye={log:function(){if(ea.DEBUG&&!k.isUndefined(St)&&St)try{St.log.apply(St,arguments)}catch{k.each(arguments,function(a){St.log(a)})}},warn:function(){if(ea.DEBUG&&!k.isUndefined(St)&&St){var e=["Mixpanel warning:"].concat(k.toArray(arguments));try{St.warn.apply(St,e)}catch{k.each(e,function(n){St.warn(n)})}}},error:function(){if(ea.DEBUG&&!k.isUndefined(St)&&St){var e=["Mixpanel error:"].concat(k.toArray(arguments));try{St.error.apply(St,e)}catch{k.each(e,function(n){St.error(n)})}}},critical:function(){if(!k.isUndefined(St)&&St){var e=["Mixpanel error:"].concat(k.toArray(arguments));try{St.error.apply(St,e)}catch{k.each(e,function(n){St.error(n)})}}}},Su=function(e,a){return function(){return arguments[0]="["+a+"] "+arguments[0],e.apply(ye,arguments)}},pi=function(e){return{log:Su(ye.log,e),error:Su(ye.error,e),critical:Su(ye.critical,e)}},Tr=function(e){return function(){try{return e.apply(this,arguments)}catch(a){ye.critical("Implementation error. Please turn on debug and contact support@mixpanel.com."),ea.DEBUG&&ye.critical(a)}}},uh=function(e){var a=e.prototype;for(var n in a)typeof a[n]=="function"&&(a[n]=Tr(a[n]))};k.bind=function(e,a){var n,t;if(Au&&e.bind===Au)return Au.apply(e,Yn.call(arguments,1));if(!k.isFunction(e))throw new TypeError;return n=Yn.call(arguments,2),t=function(){if(!(this instanceof t))return e.apply(a,n.concat(Yn.call(arguments)));var i={};i.prototype=e.prototype;var r=new i;i.prototype=null;var o=e.apply(r,n.concat(Yn.call(arguments)));return Object(o)===o?o:r},t};k.each=function(e,a,n){if(e!=null){if(zb&&e.forEach===zb)e.forEach(a,n);else if(e.length===+e.length){for(var t=0,i=e.length;t<i;t++)if(t in e&&a.call(n,e[t],t,e)===pm)return}else for(var r in e)if(fd.call(e,r)&&a.call(n,e[r],r,e)===pm)return}};k.extend=function(e){return k.each(Yn.call(arguments,1),function(a){for(var n in a)a[n]!==void 0&&(e[n]=a[n])}),e};k.isArray=Rue||function(e){return is.call(e)==="[object Array]"};k.isFunction=function(e){return typeof e=="function"};k.isArguments=function(e){return!!(e&&fd.call(e,"callee"))};k.toArray=function(e){return e?e.toArray?e.toArray():k.isArray(e)||k.isArguments(e)?Yn.call(e):k.values(e):[]};k.map=function(e,a,n){if(Nb&&e.map===Nb)return e.map(a,n);var t=[];return k.each(e,function(i){t.push(a.call(n,i))}),t};k.keys=function(e){var a=[];return e===null||k.each(e,function(n,t){a[a.length]=t}),a};k.values=function(e){var a=[];return e===null||k.each(e,function(n){a[a.length]=n}),a};k.include=function(e,a){var n=!1;return e===null?n:Mb&&e.indexOf===Mb?e.indexOf(a)!=-1:(k.each(e,function(t){if(n||(n=t===a))return pm}),n)};k.includes=function(e,a){return e.indexOf(a)!==-1};k.inherit=function(e,a){return e.prototype=new a,e.prototype.constructor=e,e.superclass=a.prototype,e};k.isObject=function(e){return e===Object(e)&&!k.isArray(e)};k.isEmptyObject=function(e){if(k.isObject(e)){for(var a in e)if(fd.call(e,a))return!1;return!0}return!1};k.isUndefined=function(e){return e===void 0};k.isString=function(e){return is.call(e)=="[object String]"};k.isDate=function(e){return is.call(e)=="[object Date]"};k.isNumber=function(e){return is.call(e)=="[object Number]"};k.isElement=function(e){return!!(e&&e.nodeType===1)};k.encodeDates=function(e){return k.each(e,function(a,n){k.isDate(a)?e[n]=k.formatDate(a):k.isObject(a)&&(e[n]=k.encodeDates(a))}),e};k.timestamp=function(){return Date.now=Date.now||function(){return+new Date},Date.now()};k.formatDate=function(e){function a(n){return n<10?"0"+n:n}return e.getUTCFullYear()+"-"+a(e.getUTCMonth()+1)+"-"+a(e.getUTCDate())+"T"+a(e.getUTCHours())+":"+a(e.getUTCMinutes())+":"+a(e.getUTCSeconds())};k.strip_empty_properties=function(e){var a={};return k.each(e,function(n,t){k.isString(n)&&n.length>0&&(a[t]=n)}),a};k.truncate=function(e,a){var n;return typeof e=="string"?n=e.slice(0,a):k.isArray(e)?(n=[],k.each(e,function(t){n.push(k.truncate(t,a))})):k.isObject(e)?(n={},k.each(e,function(t,i){n[i]=k.truncate(t,a)})):n=e,n};k.JSONEncode=(function(){return function(e){var a=e,n=function(i){var r=/[\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,o={"\b":"\\b","	":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};return r.lastIndex=0,r.test(i)?'"'+i.replace(r,function(s){var l=o[s];return typeof l=="string"?l:"\\u"+("0000"+s.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+i+'"'},t=function(i,r){var o="",s="    ",l=0,d="",p="",u=0,g=o,b=[],v=r[i];switch(v&&typeof v=="object"&&typeof v.toJSON=="function"&&(v=v.toJSON(i)),typeof v){case"string":return n(v);case"number":return isFinite(v)?String(v):"null";case"boolean":case"null":return String(v);case"object":if(!v)return"null";if(o+=s,b=[],is.apply(v)==="[object Array]"){for(u=v.length,l=0;l<u;l+=1)b[l]=t(l,v)||"null";return p=b.length===0?"[]":o?`[
`+o+b.join(`,
`+o)+`
`+g+"]":"["+b.join(",")+"]",o=g,p}for(d in v)fd.call(v,d)&&(p=t(d,v),p&&b.push(n(d)+(o?": ":":")+p));return p=b.length===0?"{}":o?"{"+b.join(",")+g+"}":"{"+b.join(",")+"}",o=g,p}};return t("",{"":a})}})();k.JSONDecode=(function(){var e,a,n={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
`,r:"\r",t:"	"},t,i=function(b){var v=new SyntaxError(b);throw v.at=e,v.text=t,v},r=function(b){return b&&b!==a&&i("Expected '"+b+"' instead of '"+a+"'"),a=t.charAt(e),e+=1,a},o=function(){var b,v="";for(a==="-"&&(v="-",r("-"));a>="0"&&a<="9";)v+=a,r();if(a===".")for(v+=".";r()&&a>="0"&&a<="9";)v+=a;if(a==="e"||a==="E")for(v+=a,r(),(a==="-"||a==="+")&&(v+=a,r());a>="0"&&a<="9";)v+=a,r();if(b=+v,!isFinite(b))i("Bad number");else return b},s=function(){var b,v,A="",f;if(a==='"')for(;r();){if(a==='"')return r(),A;if(a==="\\")if(r(),a==="u"){for(f=0,v=0;v<4&&(b=parseInt(r(),16),!!isFinite(b));v+=1)f=f*16+b;A+=String.fromCharCode(f)}else if(typeof n[a]=="string")A+=n[a];else break;else A+=a}i("Bad string")},l=function(){for(;a&&a<=" ";)r()},d=function(){switch(a){case"t":return r("t"),r("r"),r("u"),r("e"),!0;case"f":return r("f"),r("a"),r("l"),r("s"),r("e"),!1;case"n":return r("n"),r("u"),r("l"),r("l"),null}i('Unexpected "'+a+'"')},p,u=function(){var b=[];if(a==="["){if(r("["),l(),a==="]")return r("]"),b;for(;a;){if(b.push(p()),l(),a==="]")return r("]"),b;r(","),l()}}i("Bad array")},g=function(){var b,v={};if(a==="{"){if(r("{"),l(),a==="}")return r("}"),v;for(;a;){if(b=s(),l(),r(":"),Object.hasOwnProperty.call(v,b)&&i('Duplicate key "'+b+'"'),v[b]=p(),l(),a==="}")return r("}"),v;r(","),l()}}i("Bad object")};return p=function(){switch(l(),a){case"{":return g();case"[":return u();case'"':return s();case"-":return o();default:return a>="0"&&a<="9"?o():d()}},function(b){var v;return t=b,e=0,a=" ",v=p(),l(),a&&i("Syntax error"),v}})();k.base64Encode=function(e){var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n,t,i,r,o,s,l,d,p=0,u=0,g="",b=[];if(!e)return e;e=k.utf8Encode(e);do n=e.charCodeAt(p++),t=e.charCodeAt(p++),i=e.charCodeAt(p++),d=n<<16|t<<8|i,r=d>>18&63,o=d>>12&63,s=d>>6&63,l=d&63,b[u++]=a.charAt(r)+a.charAt(o)+a.charAt(s)+a.charAt(l);while(p<e.length);switch(g=b.join(""),e.length%3){case 1:g=g.slice(0,-2)+"==";break;case 2:g=g.slice(0,-1)+"=";break}return g};k.utf8Encode=function(e){e=(e+"").replace(/\r\n/g,`
`).replace(/\r/g,`
`);var a="",n,t,i=0,r;for(n=t=0,i=e.length,r=0;r<i;r++){var o=e.charCodeAt(r),s=null;o<128?t++:o>127&&o<2048?s=String.fromCharCode(o>>6|192,o&63|128):s=String.fromCharCode(o>>12|224,o>>6&63|128,o&63|128),s!==null&&(t>n&&(a+=e.substring(n,t)),a+=s,n=t=r+1)}return t>n&&(a+=e.substring(n,e.length)),a};k.UUID=function(){try{return z.crypto.randomUUID()}catch{for(var e=new Array(36),a=0;a<36;a++)e[a]=Math.floor(Math.random()*16);return e[14]=4,e[19]=e[19]&=-5,e[19]=e[19]|=8,e[8]=e[13]=e[18]=e[23]="-",k.map(e,function(t){return t.toString(16)}).join("")}};var Fb=["ahrefsbot","ahrefssiteaudit","amazonbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","facebookexternal","petalbot","pinterest","screaming frog","yahoo! slurp","yandex","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleweblight","mediapartners-google","storebot-google"];k.isBlockedUA=function(e){var a;for(e=e.toLowerCase(),a=0;a<Fb.length;a++)if(e.indexOf(Fb[a])!==-1)return!0;return!1};k.HTTPBuildQuery=function(e,a){var n,t,i=[];return k.isUndefined(a)&&(a="&"),k.each(e,function(r,o){n=encodeURIComponent(r.toString()),t=encodeURIComponent(o),i[i.length]=t+"="+n}),i.join(a)};k.getQueryParam=function(e,a){a=a.replace(/[[]/g,"\\[").replace(/[\]]/g,"\\]");var n="[\\?&]"+a+"=([^&#]*)",t=new RegExp(n),i=t.exec(e);if(i===null||i&&typeof i[1]!="string"&&i[1].length)return"";var r=i[1];try{r=decodeURIComponent(r)}catch{ye.error("Skipping decoding for malformed query param: "+r)}return r.replace(/\+/g," ")};k.cookie={get:function(e){for(var a=e+"=",n=be.cookie.split(";"),t=0;t<n.length;t++){for(var i=n[t];i.charAt(0)==" ";)i=i.substring(1,i.length);if(i.indexOf(a)===0)return decodeURIComponent(i.substring(a.length,i.length))}return null},parse:function(e){var a;try{a=k.JSONDecode(k.cookie.get(e))||{}}catch{}return a},set_seconds:function(e,a,n,t,i,r,o){var s="",l="",d="";if(o)s="; domain="+o;else if(t){var p=Lb(be.location.hostname);s=p?"; domain=."+p:""}if(n){var u=new Date;u.setTime(u.getTime()+n*1e3),l="; expires="+u.toGMTString()}r&&(i=!0,d="; SameSite=None"),i&&(d+="; secure"),be.cookie=e+"="+encodeURIComponent(a)+l+"; path=/"+s+d},set:function(e,a,n,t,i,r,o){var s="",l="",d="";if(o)s="; domain="+o;else if(t){var p=Lb(be.location.hostname);s=p?"; domain=."+p:""}if(n){var u=new Date;u.setTime(u.getTime()+n*24*60*60*1e3),l="; expires="+u.toGMTString()}r&&(i=!0,d="; SameSite=None"),i&&(d+="; secure");var g=e+"="+encodeURIComponent(a)+l+"; path=/"+s+d;return be.cookie=g,g},remove:function(e,a,n){k.cookie.set(e,"",-1,a,!1,!1,n)}};var GS=function(e){var a=!0;try{var n="__mplss_"+ph(8),t="xyz";e.setItem(n,t),e.getItem(n)!==t&&(a=!1),e.removeItem(n)}catch{a=!1}return a},Cu=null,Oo=function(e,a){return Cu!==null&&!a?Cu:Cu=GS(e||z.localStorage)},Du=null,zue=function(e,a){return Du!==null&&!a?Du:Du=GS(e||z.sessionStorage)};function HS(e,a,n){var t=function(i){ye.error(a+" error: "+i)};return{is_supported:function(i){var r=n(e,i);return r||ye.error(a+" unsupported"),r},error:t,get:function(i){try{return e.getItem(i)}catch(r){t(r)}return null},parse:function(i){try{return k.JSONDecode(e.getItem(i))||{}}catch{}return null},set:function(i,r){try{e.setItem(i,r)}catch(o){t(o)}},remove:function(i){try{e.removeItem(i)}catch(r){t(r)}}}}var YS=null,KS=null;try{YS=z.localStorage,KS=z.sessionStorage}catch{}k.localStorage=HS(YS,"localStorage",Oo);k.sessionStorage=HS(KS,"sessionStorage",zue);k.register_event=(function(){var e=function(t,i,r,o,s){if(!t){ye.error("No valid element provided to register_event");return}if(t.addEventListener&&!o)t.addEventListener(i,r,!!s);else{var l="on"+i,d=t[l];t[l]=a(t,r,d)}};function a(t,i,r){var o=function(s){if(s=s||n(z.event),!!s){var l=!0,d,p;return k.isFunction(r)&&(d=r(s)),p=i.call(t,s),(d===!1||p===!1)&&(l=!1),l}};return o}function n(t){return t&&(t.preventDefault=n.preventDefault,t.stopPropagation=n.stopPropagation),t}return n.preventDefault=function(){this.returnValue=!1},n.stopPropagation=function(){this.cancelBubble=!0},e})();var Mue=new RegExp('^(\\w*)\\[(\\w+)([=~\\|\\^\\$\\*]?)=?"?([^\\]"]*)"?\\]$');k.dom_query=(function(){function e(i){return i.all?i.all:i.getElementsByTagName("*")}var a=/[\t\r\n]/g;function n(i,r){var o=" "+r+" ";return(" "+i.className+" ").replace(a," ").indexOf(o)>=0}function t(i){if(!be.getElementsByTagName)return[];var r=i.split(" "),o,s,l,d,p,u,g,b,v,A,f=[be];for(u=0;u<r.length;u++){if(o=r[u].replace(/^\s+/,"").replace(/\s+$/,""),o.indexOf("#")>-1){s=o.split("#"),l=s[0];var S=s[1],C=be.getElementById(S);if(!C||l&&C.nodeName.toLowerCase()!=l)return[];f=[C];continue}if(o.indexOf(".")>-1){s=o.split("."),l=s[0];var T=s[1];for(l||(l="*"),d=[],p=0,g=0;g<f.length;g++)for(l=="*"?v=e(f[g]):v=f[g].getElementsByTagName(l),b=0;b<v.length;b++)d[p++]=v[b];for(f=[],A=0,g=0;g<d.length;g++)d[g].className&&k.isString(d[g].className)&&n(d[g],T)&&(f[A++]=d[g]);continue}var E=o.match(Mue);if(E){l=E[1];var P=E[2],I=E[3],L=E[4];for(l||(l="*"),d=[],p=0,g=0;g<f.length;g++)for(l=="*"?v=e(f[g]):v=f[g].getElementsByTagName(l),b=0;b<v.length;b++)d[p++]=v[b];f=[],A=0;var N;switch(I){case"=":N=function(Z){return Z.getAttribute(P)==L};break;case"~":N=function(Z){return Z.getAttribute(P).match(new RegExp("\\b"+L+"\\b"))};break;case"|":N=function(Z){return Z.getAttribute(P).match(new RegExp("^"+L+"-?"))};break;case"^":N=function(Z){return Z.getAttribute(P).indexOf(L)===0};break;case"$":N=function(Z){return Z.getAttribute(P).lastIndexOf(L)==Z.getAttribute(P).length-L.length};break;case"*":N=function(Z){return Z.getAttribute(P).indexOf(L)>-1};break;default:N=function(Z){return Z.getAttribute(P)}}for(f=[],A=0,g=0;g<d.length;g++)N(d[g])&&(f[A++]=d[g]);continue}for(l=o,d=[],p=0,g=0;g<f.length;g++)for(v=f[g].getElementsByTagName(l),b=0;b<v.length;b++)d[p++]=v[b];f=d}return f}return function(i){return k.isElement(i)?[i]:k.isObject(i)&&!k.isUndefined(i.length)?i:t.call(this,i)}})();var Nue=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","utm_id","utm_source_platform","utm_campaign_id","utm_creative_format","utm_marketing_tactic"],Fue=["dclid","fbclid","gclid","ko_click_id","li_fat_id","msclkid","sccid","ttclid","twclid","wbraid"];k.info={campaignParams:function(e){var a="",n={};return k.each(Nue,function(t){a=k.getQueryParam(be.URL,t),a.length?n[t]=a:e!==void 0&&(n[t]=e)}),n},clickParams:function(){var e="",a={};return k.each(Fue,function(n){e=k.getQueryParam(be.URL,n),e.length&&(a[n]=e)}),a},marketingParams:function(){return k.extend(k.info.campaignParams(),k.info.clickParams())},searchEngine:function(e){return e.search("https?://(.*)google.([^/?]*)")===0?"google":e.search("https?://(.*)bing.com")===0?"bing":e.search("https?://(.*)yahoo.com")===0?"yahoo":e.search("https?://(.*)duckduckgo.com")===0?"duckduckgo":null},searchInfo:function(e){var a=k.info.searchEngine(e),n=a!="yahoo"?"q":"p",t={};if(a!==null){t.$search_engine=a;var i=k.getQueryParam(e,n);i.length&&(t.mp_keyword=i)}return t},browser:function(e,a,n){return a=a||"",n||k.includes(e," OPR/")?k.includes(e,"Mini")?"Opera Mini":"Opera":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":k.includes(e,"IEMobile")||k.includes(e,"WPDesktop")?"Internet Explorer Mobile":k.includes(e,"SamsungBrowser/")?"Samsung Internet":k.includes(e,"Edge")||k.includes(e,"Edg/")?"Microsoft Edge":k.includes(e,"FBIOS")?"Facebook Mobile":k.includes(e,"Whale/")?"Whale Browser":k.includes(e,"Chrome")?"Chrome":k.includes(e,"CriOS")?"Chrome iOS":k.includes(e,"UCWEB")||k.includes(e,"UCBrowser")?"UC Browser":k.includes(e,"FxiOS")?"Firefox iOS":k.includes(a,"Apple")?k.includes(e,"Mobile")?"Mobile Safari":"Safari":k.includes(e,"Android")?"Android Mobile":k.includes(e,"Konqueror")?"Konqueror":k.includes(e,"Firefox")?"Firefox":k.includes(e,"MSIE")||k.includes(e,"Trident/")?"Internet Explorer":k.includes(e,"Gecko")?"Mozilla":""},browserVersion:function(e,a,n){var t=k.info.browser(e,a,n),i={"Internet Explorer Mobile":/rv:(\d+(\.\d+)?)/,"Microsoft Edge":/Edge?\/(\d+(\.\d+)?)/,Chrome:/Chrome\/(\d+(\.\d+)?)/,"Chrome iOS":/CriOS\/(\d+(\.\d+)?)/,"UC Browser":/(UCBrowser|UCWEB)\/(\d+(\.\d+)?)/,Safari:/Version\/(\d+(\.\d+)?)/,"Mobile Safari":/Version\/(\d+(\.\d+)?)/,Opera:/(Opera|OPR)\/(\d+(\.\d+)?)/,Firefox:/Firefox\/(\d+(\.\d+)?)/,"Firefox iOS":/FxiOS\/(\d+(\.\d+)?)/,Konqueror:/Konqueror:(\d+(\.\d+)?)/,BlackBerry:/BlackBerry (\d+(\.\d+)?)/,"Android Mobile":/android\s(\d+(\.\d+)?)/,"Samsung Internet":/SamsungBrowser\/(\d+(\.\d+)?)/,"Internet Explorer":/(rv:|MSIE )(\d+(\.\d+)?)/,Mozilla:/rv:(\d+(\.\d+)?)/,"Whale Browser":/Whale\/(\d+(\.\d+)?)/},r=i[t];if(r===void 0)return null;var o=e.match(r);return o?parseFloat(o[o.length-2]):null},os:function(){var e=Ua;return/Windows/i.test(e)?/Phone/.test(e)||/WPDesktop/.test(e)?"Windows Phone":"Windows":/(iPhone|iPad|iPod)/.test(e)?"iOS":/Android/.test(e)?"Android":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":/Mac/i.test(e)?"Mac OS X":/Linux/.test(e)?"Linux":/CrOS/.test(e)?"Chrome OS":""},device:function(e){return/Windows Phone/i.test(e)||/WPDesktop/.test(e)?"Windows Phone":/iPad/.test(e)?"iPad":/iPod/.test(e)?"iPod Touch":/iPhone/.test(e)?"iPhone":/(BlackBerry|PlayBook|BB10)/i.test(e)?"BlackBerry":/Android/.test(e)?"Android":""},referringDomain:function(e){var a=e.split("/");return a.length>=3?a[2]:""},currentUrl:function(){return z.location.href},properties:function(e){return typeof e!="object"&&(e={}),k.extend(k.strip_empty_properties({$os:k.info.os(),$browser:k.info.browser(Ua,Cn.vendor,io),$referrer:be.referrer,$referring_domain:k.info.referringDomain(be.referrer),$device:k.info.device(Ua)}),{$current_url:k.info.currentUrl(),$browser_version:k.info.browserVersion(Ua,Cn.vendor,io),$screen_height:Rb.height,$screen_width:Rb.width,mp_lib:"web",$lib_version:ea.LIB_VERSION,$insert_id:ph(),time:k.timestamp()/1e3},k.strip_empty_properties(e))},people_properties:function(){return k.extend(k.strip_empty_properties({$os:k.info.os(),$browser:k.info.browser(Ua,Cn.vendor,io)}),{$browser_version:k.info.browserVersion(Ua,Cn.vendor,io)})},mpPageViewProperties:function(){return k.strip_empty_properties({current_page_title:be.title,current_domain:z.location.hostname,current_url_path:z.location.pathname,current_url_protocol:z.location.protocol,current_url_search:z.location.search})}};var Lue=function(e,a){var n=null,t=[];return function(i){var r=this;return t.push(i),n||(n=new we(function(o){setTimeout(function(){var s=e.apply(r,[t]);n=null,t=[],o(s)},a)})),n}},ph=function(e){var a=Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10);return e?a.substring(0,e):a},ZS=function(){var e=k.UUID().replace(/-/g,""),a=k.UUID().replace(/-/g,"").substring(0,16),n="01";return"00-"+e+"-"+a+"-"+n},jue=/[a-z0-9][a-z0-9-]*\.[a-z]+$/i,Oue=/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i,Lb=function(e){var a=Oue,n=e.split("."),t=n[n.length-1];(t.length>4||t==="com"||t==="org")&&(a=jue);var i=e.match(a);return i?i[0]:""},Bue=function(){var e=z.navigator.onLine;return k.isUndefined(e)||e},Qn=function(){},mc=function(e,a){for(var n=!1,t=0;t<a.length;t++)if(e.match(a[t])){n=!0;break}return n},Er=null,gc=null;typeof JSON<"u"&&(Er=JSON.stringify,gc=JSON.parse);Er=Er||k.JSONEncode;gc=gc||k.JSONDecode;var Uue=function(e,a,n){if(!z.CompressionStream)return!1;var t=k.info.browser(e,a,n),i=k.info.browserVersion(e,a,n);return!((t==="Safari"||t==="Mobile Safari")&&i>=16.4&&i<16.6)};k.info=k.info;k.info.browser=k.info.browser;k.info.browserVersion=k.info.browserVersion;k.info.device=k.info.device;k.info.properties=k.info.properties;k.isBlockedUA=k.isBlockedUA;k.isEmptyObject=k.isEmptyObject;k.isObject=k.isObject;k.JSONDecode=k.JSONDecode;k.JSONEncode=k.JSONEncode;k.toArray=k.toArray;k.NPO=ui;var que="mixpanelBrowserDb",JS="mixpanelRecordingEvents",mh="mixpanelRecordingRegistry",Vue=1,$ue=[JS,mh],Ma=function(e){this.dbPromise=null,this.storeName=e};Ma.prototype._openDb=function(){return new we(function(e,a){var n=z.indexedDB.open(que,Vue);n.onerror=function(){a(n.error)},n.onsuccess=function(){e(n.result)},n.onupgradeneeded=function(t){var i=t.target.result;$ue.forEach(function(r){i.createObjectStore(r)})}})};Ma.prototype.init=function(){return z.indexedDB?(this.dbPromise||(this.dbPromise=this._openDb()),this.dbPromise.then(function(e){return e instanceof z.IDBDatabase?we.resolve():we.reject(e)})):we.reject("indexedDB is not supported in this browser")};Ma.prototype.isInitialized=function(){return!!this.dbPromise};Ma.prototype.makeTransaction=function(e,a){var n=this.storeName,t=function(i){return new we(function(r,o){var s=i.transaction(n,e);s.oncomplete=function(){r(s)},s.onabort=s.onerror=function(){o(s.error)},a(s.objectStore(n))})};return this.dbPromise.then(t).catch((function(i){return i&&i.name==="InvalidStateError"?(this.dbPromise=this._openDb(),this.dbPromise.then(t)):we.reject(i)}).bind(this))};Ma.prototype.setItem=function(e,a){return this.makeTransaction("readwrite",function(n){n.put(a,e)})};Ma.prototype.getItem=function(e){var a;return this.makeTransaction("readonly",function(n){a=n.get(e)}).then(function(){return a.result})};Ma.prototype.removeItem=function(e){return this.makeTransaction("readwrite",function(a){a.delete(e)})};Ma.prototype.getAll=function(){var e;return this.makeTransaction("readonly",function(a){e=a.getAll()}).then(function(){return e.result})};var Wue="__mp_opt_in_out_";function Gue(e,a){eC(!0,e,a)}function Hue(e,a){eC(!1,e,a)}function Yue(e,a){return XS(e,a)==="1"}function QS(e,a){if(Zue(a))return ye.warn('This browser has "Do Not Track" enabled. This will prevent the Mixpanel SDK from sending any data. To ignore the "Do Not Track" browser setting, initialize the Mixpanel instance with the config "ignore_dnt: true"'),!0;var n=XS(e,a)==="0";return n&&ye.warn("You are opted out of Mixpanel tracking. This will prevent the Mixpanel SDK from sending any data."),n}function mi(e){return fh(e,function(a){return this.get_config(a)})}function gi(e){return fh(e,function(a){return this._get_config(a)})}function Fr(e){return fh(e,function(a){return this._get_config(a)})}function Kue(e,a){a=a||{},gh(a).remove(hh(e,a),!!a.crossSubdomainCookie,a.cookieDomain)}function gh(e){return e=e||{},e.persistenceType==="localStorage"?k.localStorage:k.cookie}function hh(e,a){return a=a||{},(a.persistencePrefix||Wue)+e}function XS(e,a){return gh(a).get(hh(e,a))}function Zue(e){if(e&&e.ignoreDnt)return!1;var a=e&&e.window||z,n=a.navigator||{},t=!1;return k.each([n.doNotTrack,n.msDoNotTrack,a.doNotTrack],function(i){k.includes([!0,1,"1","yes"],i)&&(t=!0)}),t}function eC(e,a,n){if(!k.isString(a)||!a.length){ye.error("gdpr."+(e?"optIn":"optOut")+" called with an invalid token");return}n=n||{},gh(n).set(hh(a,n),e?1:0,k.isNumber(n.cookieExpiration)?n.cookieExpiration:null,!!n.crossSubdomainCookie,!!n.secureCookie,!!n.crossSiteCookie,n.cookieDomain),n.track&&e&&n.track(n.trackEventName||"$opt_in",n.trackProperties,{send_immediately:!0})}function fh(e,a){return function(){var n=!1;try{var t=a.call(this,"token"),i=a.call(this,"ignore_dnt"),r=a.call(this,"opt_out_tracking_persistence_type"),o=a.call(this,"opt_out_tracking_cookie_prefix"),s=a.call(this,"window");t&&(n=QS(t,{ignoreDnt:i,persistenceType:r,persistencePrefix:o,window:s}))}catch(d){ye.error("Unexpected error when checking tracking opt-out status: "+d)}if(!n)return e.apply(this,arguments);var l=arguments[arguments.length-1];typeof l=="function"&&l(0)}}var Jue=pi("lock"),tC=function(e,a){a=a||{},this.storageKey=e,this.storage=a.storage||z.localStorage,this.pollIntervalMS=a.pollIntervalMS||100,this.timeoutMS=a.timeoutMS||2e3,this.promiseImpl=a.promiseImpl||we};tC.prototype.withLock=function(e,a){var n=this.promiseImpl;return new n(k.bind(function(t,i){var r=a||new Date().getTime()+"|"+Math.random(),o=new Date().getTime(),s=this.storageKey,l=this.pollIntervalMS,d=this.timeoutMS,p=this.storage,u=s+":X",g=s+":Y",b=s+":Z",v=function(T){if(new Date().getTime()-o>d){Jue.error("Timeout waiting for mutex on "+s+"; clearing lock. ["+r+"]"),p.removeItem(b),p.removeItem(g),S();return}setTimeout(function(){try{T()}catch(E){i(E)}},l*(Math.random()+.1))},A=function(T,E){T()?E():v(function(){A(T,E)})},f=function(){var T=p.getItem(g);return T&&T!==r?!1:(p.setItem(g,r),p.getItem(g)===r?!0:(Oo(p,!0)||i(new Error("localStorage support dropped while acquiring lock")),!1))},S=function(){p.setItem(u,r),A(f,function(){if(p.getItem(u)===r){C();return}v(function(){if(p.getItem(g)!==r){S();return}A(function(){return!p.getItem(b)},C)})})},C=function(){p.setItem(b,"1");var T=function(){p.removeItem(b),p.getItem(g)===r&&p.removeItem(g),p.getItem(u)===r&&p.removeItem(u)};e().then(function(E){T(),t(E)}).catch(function(E){T(),i(E)})};try{if(Oo(p,!0))S();else throw new Error("localStorage support check failed")}catch(T){i(T)}},this))};var Lr=function(e){this.storage=e||z.localStorage};Lr.prototype.init=function(){return we.resolve()};Lr.prototype.isInitialized=function(){return!0};Lr.prototype.setItem=function(e,a){return new we(k.bind(function(n,t){try{this.storage.setItem(e,Er(a))}catch(i){t(i)}n()},this))};Lr.prototype.getItem=function(e){return new we(k.bind(function(a,n){var t;try{t=gc(this.storage.getItem(e))}catch(i){n(i)}a(t)},this))};Lr.prototype.removeItem=function(e){return new we(k.bind(function(a,n){try{this.storage.removeItem(e)}catch(t){n(t)}a()},this))};var jb=pi("batch"),an=function(e,a){a=a||{},this.storageKey=e,this.usePersistence=a.usePersistence,this.usePersistence&&(this.queueStorage=a.queueStorage||new Lr,this.lock=new tC(e,{storage:a.sharedLockStorage||z.localStorage,timeoutMS:a.sharedLockTimeoutMS})),this.reportError=a.errorReporter||k.bind(jb.error,jb),this.pid=a.pid||null,this.memQueue=[],this.initialized=!1,a.enqueueThrottleMs?this.enqueuePersisted=Lue(k.bind(this._enqueuePersisted,this),a.enqueueThrottleMs):this.enqueuePersisted=k.bind(function(n){return this._enqueuePersisted([n])},this)};an.prototype.ensureInit=function(){return this.initialized||!this.usePersistence?we.resolve():this.queueStorage.init().then(k.bind(function(){this.initialized=!0},this)).catch(k.bind(function(e){this.reportError("Error initializing queue persistence. Disabling persistence",e),this.initialized=!0,this.usePersistence=!1},this))};an.prototype.enqueue=function(e,a){var n={id:ph(),flushAfter:new Date().getTime()+a*2,payload:e};return this.usePersistence?this.enqueuePersisted(n):(this.memQueue.push(n),we.resolve(!0))};an.prototype._enqueuePersisted=function(e){var a=k.bind(function(){return this.ensureInit().then(k.bind(function(){return this.readFromStorage()},this)).then(k.bind(function(n){return this.saveToStorage(n.concat(e))},this)).then(k.bind(function(n){return n&&(this.memQueue=this.memQueue.concat(e)),n},this)).catch(k.bind(function(n){return this.reportError("Error enqueueing items",n,e),!1},this))},this);return this.lock.withLock(a,this.pid).catch(k.bind(function(n){return this.reportError("Error acquiring storage lock",n),!1},this))};an.prototype.fillBatch=function(e){var a=this.memQueue.slice(0,e);return this.usePersistence&&a.length<e?this.ensureInit().then(k.bind(function(){return this.readFromStorage()},this)).then(k.bind(function(n){if(n.length){var t={};k.each(a,function(o){t[o.id]=!0});for(var i=0;i<n.length;i++){var r=n[i];if(new Date().getTime()>r.flushAfter&&!t[r.id]&&(r.orphaned=!0,a.push(r),a.length>=e))break}}return a},this)):we.resolve(a)};var Ob=function(e,a){var n=[];return k.each(e,function(t){t.id&&!a[t.id]&&n.push(t)}),n};an.prototype.removeItemsByID=function(e){var a={};if(k.each(e,function(t){a[t]=!0}),this.memQueue=Ob(this.memQueue,a),this.usePersistence){var n=k.bind(function(){return this.ensureInit().then(k.bind(function(){return this.readFromStorage()},this)).then(k.bind(function(t){return t=Ob(t,a),this.saveToStorage(t)},this)).then(k.bind(function(){return this.readFromStorage()},this)).then(k.bind(function(t){for(var i=0;i<t.length;i++){var r=t[i];if(r.id&&a[r.id])throw new Error("Item not removed from storage")}return!0},this)).catch(k.bind(function(t){return this.reportError("Error removing items",t,e),!1},this))},this);return this.lock.withLock(n,this.pid).catch(k.bind(function(t){return this.reportError("Error acquiring storage lock",t),Oo(this.lock.storage,!0)?!1:n().then(k.bind(function(i){return i||this.queueStorage.removeItem(this.storageKey).then(function(){return i})},this)).catch(k.bind(function(i){return this.reportError("Error clearing queue",i),!1},this))},this))}else return we.resolve(!0)};var Bb=function(e,a){var n=[];return k.each(e,function(t){var i=t.id;if(i in a){var r=a[i];r!==null&&(t.payload=r,n.push(t))}else n.push(t)}),n};an.prototype.updatePayloads=function(e){return this.memQueue=Bb(this.memQueue,e),this.usePersistence?this.lock.withLock(k.bind(function(){return this.ensureInit().then(k.bind(function(){return this.readFromStorage()},this)).then(k.bind(function(n){return n=Bb(n,e),this.saveToStorage(n)},this)).catch(k.bind(function(n){return this.reportError("Error updating items",e,n),!1},this))},this),this.pid).catch(k.bind(function(a){return this.reportError("Error acquiring storage lock",a),!1},this)):we.resolve(!0)};an.prototype.readFromStorage=function(){return this.ensureInit().then(k.bind(function(){return this.queueStorage.getItem(this.storageKey)},this)).then(k.bind(function(e){return e&&(k.isArray(e)||(this.reportError("Invalid storage entry:",e),e=null)),e||[]},this)).catch(k.bind(function(e){return this.reportError("Error retrieving queue",e),[]},this))};an.prototype.saveToStorage=function(e){return this.ensureInit().then(k.bind(function(){return this.queueStorage.setItem(this.storageKey,e)},this)).then(function(){return!0}).catch(k.bind(function(a){return this.reportError("Error saving queue",a),!1},this))};an.prototype.clear=function(){return this.memQueue=[],this.usePersistence?this.ensureInit().then(k.bind(function(){return this.queueStorage.removeItem(this.storageKey)},this)):we.resolve()};var Que=600*1e3,go=pi("batch"),fa=function(e,a){this.errorReporter=a.errorReporter,this.queue=new an(e,{errorReporter:k.bind(this.reportError,this),queueStorage:a.queueStorage,sharedLockStorage:a.sharedLockStorage,sharedLockTimeoutMS:a.sharedLockTimeoutMS,usePersistence:a.usePersistence,enqueueThrottleMs:a.enqueueThrottleMs}),this.libConfig=a.libConfig,this.sendRequest=a.sendRequestFunc,this.beforeSendHook=a.beforeSendHook,this.stopAllBatching=a.stopAllBatchingFunc,this.batchSize=this.libConfig.batch_size,this.flushInterval=this.libConfig.batch_flush_interval_ms,this.stopped=!this.libConfig.batch_autostart,this.consecutiveRemovalFailures=0,this.itemIdsSentSuccessfully={},this.flushOnlyOnInterval=a.flushOnlyOnInterval||!1,this._flushPromise=null};fa.prototype.enqueue=function(e){return this.queue.enqueue(e,this.flushInterval)};fa.prototype.start=function(){return this.stopped=!1,this.consecutiveRemovalFailures=0,this.flush()};fa.prototype.stop=function(){this.stopped=!0,this.timeoutID&&(clearTimeout(this.timeoutID),this.timeoutID=null)};fa.prototype.clear=function(){return this.queue.clear()};fa.prototype.resetBatchSize=function(){this.batchSize=this.libConfig.batch_size};fa.prototype.resetFlush=function(){this.scheduleFlush(this.libConfig.batch_flush_interval_ms)};fa.prototype.scheduleFlush=function(e){this.flushInterval=e,this.stopped||(this.timeoutID=setTimeout(k.bind(function(){this.stopped||(this._flushPromise=this.flush())},this),this.flushInterval))};fa.prototype.sendRequestPromise=function(e,a){return new we(k.bind(function(n){this.sendRequest(e,a,n)},this))};fa.prototype.flush=function(e){if(this.requestInProgress)return go.log("Flush: Request already in progress"),we.resolve();this.requestInProgress=!0,e=e||{};var a=this.libConfig.batch_request_timeout_ms,n=new Date().getTime(),t=this.batchSize;return this.queue.fillBatch(t).then(k.bind(function(i){var r=i.length===t,o=[],s={};if(k.each(i,function(u){var g=u.payload;if(this.beforeSendHook&&!u.orphaned&&(g=this.beforeSendHook(g)),g){g.event&&g.properties&&(g.properties=k.extend({},g.properties,{mp_sent_by_lib_version:ea.LIB_VERSION}));var b=!0,v=u.id;v?(this.itemIdsSentSuccessfully[v]||0)>5&&(this.reportError("[dupe] item ID sent too many times, not sending",{item:u,batchSize:i.length,timesSent:this.itemIdsSentSuccessfully[v]}),b=!1):this.reportError("[dupe] found item with no ID",{item:u}),b&&o.push(g)}s[u.id]=g},this),o.length<1)return this.requestInProgress=!1,this.resetFlush(),we.resolve();var l=k.bind(function(){return this.queue.removeItemsByID(k.map(i,function(u){return u.id})).then(k.bind(function(u){return k.each(i,k.bind(function(g){var b=g.id;b?(this.itemIdsSentSuccessfully[b]=this.itemIdsSentSuccessfully[b]||0,this.itemIdsSentSuccessfully[b]++,this.itemIdsSentSuccessfully[b]>5&&this.reportError("[dupe] item ID sent too many times",{item:g,batchSize:i.length,timesSent:this.itemIdsSentSuccessfully[b]})):this.reportError("[dupe] found item with no ID while removing",{item:g})},this)),u?(this.consecutiveRemovalFailures=0,this.flushOnlyOnInterval&&!r?(this.resetFlush(),we.resolve()):this.flush()):(++this.consecutiveRemovalFailures>5?(this.reportError("Too many queue failures; disabling batching system."),this.stopAllBatching()):this.resetFlush(),we.resolve())},this))},this),d=k.bind(function(u){this.requestInProgress=!1;try{if(e.unloading)return this.queue.updatePayloads(s);if(k.isObject(u)&&u.error==="timeout"&&new Date().getTime()-n>=a)return this.reportError("Network timeout; retrying"),this.flush();if(k.isObject(u)&&(u.httpStatusCode>=500||u.httpStatusCode===429||u.httpStatusCode<=0&&!Bue()||u.error==="timeout")){var g=this.flushInterval*2;return u.retryAfter&&(g=parseInt(u.retryAfter,10)*1e3||g),g=Math.min(Que,g),this.reportError("Error; retry in "+g+" ms"),this.scheduleFlush(g),we.resolve()}else if(k.isObject(u)&&u.httpStatusCode===413)if(i.length>1){var b=Math.max(1,Math.floor(t/2));return this.batchSize=Math.min(this.batchSize,b,i.length-1),this.reportError("413 response; reducing batch size to "+this.batchSize),this.resetFlush(),we.resolve()}else return this.reportError("Single-event request too large; dropping",i),this.resetBatchSize(),l();else return l()}catch(v){this.reportError("Error handling API response",v),this.resetFlush()}},this),p={method:"POST",verbose:!0,ignore_json_errors:!0,timeout_ms:a};return e.unloading&&(p.transport="sendBeacon"),go.log("MIXPANEL REQUEST:",o),this.sendRequestPromise(o,p).then(d)},this)).catch(k.bind(function(i){this.reportError("Error flushing request queue",i),this.resetFlush()},this))};fa.prototype.reportError=function(e,a){if(go.error.apply(go.error,arguments),this.errorReporter)try{a instanceof Error||(a=new Error(e)),this.errorReporter(e,a)}catch(n){go.error(n)}};var vh=function(e){var a=Date.now();return!e||a>e.maxExpires||a>e.idleExpires},Xue=250,Bo="change",zn="click",mm="hashchange",epe="input",Ub="load",Kn="mp_locationchange",qb="popstate",vd="scrollend",bh="scroll",tpe="select",hc="submit",ape="toggle",Vb="visibilitychange",npe=["clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","x","y"],$b=["mp-include"],gm=["mp-no-track"],Wb=gm.concat(["mp-sensitive"]),ipe=["aria-label","aria-labelledby","aria-describedby","href","name","role","title","type"],rpe={button:!0,checkbox:!0,combobox:!0,grid:!0,link:!0,listbox:!0,menu:!0,menubar:!0,menuitem:!0,menuitemcheckbox:!0,menuitemradio:!0,navigation:!0,option:!0,radio:!0,radiogroup:!0,searchbox:!0,slider:!0,spinbutton:!0,switch:!0,tab:!0,tablist:!0,textbox:!0,tree:!0,treegrid:!0,treeitem:!0},ope={base:!0,head:!0,html:!0,link:!0,meta:!0,script:!0,style:!0,title:!0,br:!0,hr:!0,wbr:!0,noscript:!0,picture:!0,source:!0,template:!0,track:!0},spe={article:!0,div:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,p:!0,section:!0,span:!0},Gb=["onclick","onmousedown","onmouseup","onpointerdown","onpointerup","ontouchend","ontouchstart"],lpe=5,Ze=pi("autocapture");function hm(e){for(var a={},n=aC(e).split(" "),t=0;t<n.length;t++){var i=n[t];i&&(a[i]=!0)}return a}function aC(e){switch(typeof e.className){case"string":return e.className;case"object":return e.className.baseVal||e.getAttribute("class")||"";default:return""}}function cpe(e){if(e.previousElementSibling)return e.previousElementSibling;do e=e.previousSibling;while(e&&!nC(e));return e}function Hb(e,a,n,t,i,r){var o={$classes:aC(e).split(" "),$tag_name:e.tagName.toLowerCase()},s=e.id;s&&(o.$id=s),yh(e,a,i,r)&&k.each(ipe.concat(t),function(u){if(e.hasAttribute(u)&&!n[u]){var g=e.getAttribute(u);fc(g)&&(o["$attr-"+u]=g)}});for(var l=1,d=1,p=e;p=cpe(p);)l++,p.tagName===e.tagName&&d++;return o.$nth_child=l,o.$nth_of_type=d,o}function dpe(e,a){var n=a.allowElementCallback,t=a.allowSelectors||[],i=a.blockAttrs||[],r=a.blockElementCallback,o=a.blockSelectors||[],s=a.captureTextContent||!1,l=a.captureExtraAttrs||[],d=a.capturedForHeatMap||!1,p={};k.each(i,function(P){p[P]=!0});var u=null,g=typeof e.target>"u"?e.srcElement:e.target;if(iC(g)&&(g=g.parentNode),gpe(g,e)&&fm(g,e,n,t)&&!Tu(g,e,r,o)){for(var b=[g],v=g;v.parentNode&&!Ya(v,"body");)b.push(v.parentNode),v=v.parentNode;var A=[],f,S=!1;if(k.each(b,function(P){var I=yh(P,e,n,t);!p.href&&P.tagName.toLowerCase()==="a"&&(f=P.getAttribute("href"),f=I&&fc(f)&&f),Tu(P,e,r,o)&&(S=!0),A.push(Hb(P,e,p,l,n,t))},this),!S){var C=be.documentElement;if(u={$event_type:e.type,$host:z.location.host,$pathname:z.location.pathname,$elements:A,$el_attr__href:f,$viewportHeight:Math.max(C.clientHeight,z.innerHeight||0),$viewportWidth:Math.max(C.clientWidth,z.innerWidth||0),$pageHeight:be.body.offsetHeight||0,$pageWidth:be.body.offsetWidth||0},k.each(l,function(P){if(!p[P]&&g.hasAttribute(P)){var I=g.getAttribute(P);fc(I)&&(u["$el_attr__"+P]=I)}}),s&&(T=Yb(g,e,n,t),T&&T.length&&(u.$el_text=T)),e.type===zn&&(k.each(npe,function(P){P in e&&(u["$"+P]=e[P])}),d&&(u.$captured_for_heatmap=!0),g=upe(e)),s){var T=Yb(g,e,n,t);T&&T.length&&(u.$el_text=T)}if(g){if(!fm(g,e,n,t)||Tu(g,e,r,o))return null;var E=Hb(g,e,p,l,n,t);u.$target=E,u.$el_classes=E.$classes,k.extend(u,k.strip_empty_properties({$el_id:E.$id,$el_tag_name:E.$tag_name}))}}}return u}function Yb(e,a,n,t){var i="";return yh(e,a,n,t)&&e.childNodes&&e.childNodes.length&&k.each(e.childNodes,function(r){iC(r)&&r.textContent&&(i+=k.trim(r.textContent).split(/(\s+)/).filter(fc).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255))}),k.trim(i)}function upe(e){for(var a=e.target,n=e.composedPath(),t=0;t<n.length;t++){var i=n[t];if(Ya(i,"a")||Ya(i,"button")||Ya(i,"input")||Ya(i,"select")||i.getAttribute&&i.getAttribute("role")==="button"){a=i;break}if(i===a)break}return a}function fm(e,a,n,t){if(n)try{if(!n(e,a))return!1}catch(o){return Ze.critical("Error while checking element in allowElementCallback",o),!1}if(!t.length)return!0;for(var i=0;i<t.length;i++){var r=t[i];try{if(e.matches(r))return!0}catch(o){Ze.critical("Error while checking selector: "+r,o)}}return!1}function Tu(e,a,n,t){var i;if(n)try{if(n(e,a))return!0}catch(s){return Ze.critical("Error while checking element in blockElementCallback",s),!0}if(t&&t.length)for(i=0;i<t.length;i++){var r=t[i];try{if(e.matches(r))return!0}catch(s){Ze.critical("Error while checking selector: "+r,s)}}var o=hm(e);for(i=0;i<gm.length;i++)if(o[gm[i]])return!0;return!1}function nC(e){return e&&e.nodeType===1}function Ya(e,a){return e&&e.tagName&&e.tagName.toLowerCase()===a.toLowerCase()}function iC(e){return e&&e.nodeType===3}function ppe(){try{var e=be.createElement("div");return!!e.matches}catch{return!1}}function mpe(){return typeof WeakSet<"u"}function gpe(e,a){if(!e||Ya(e,"html")||!nC(e))return!1;var n=e.tagName.toLowerCase();switch(n){case"form":return a.type===hc;case"input":return["button","submit"].indexOf(e.getAttribute("type"))===-1?a.type===Bo:a.type===zn;case"select":case"textarea":return a.type===Bo;default:return a.type===zn}}function rC(e){var a=(e.name||e.id||"").toString().toLowerCase();if(typeof a=="string"){var n=/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i;if(n.test(a.replace(/[^a-zA-Z0-9]/g,"")))return!0}return!1}function yh(e,a,n,t){var i;if(!fm(e,a,n,t))return!1;for(var r=e;r.parentNode&&!Ya(r,"body");r=r.parentNode){var o=hm(r);for(i=0;i<Wb.length;i++)if(o[Wb[i]])return!1}var s=hm(e);for(i=0;i<$b.length;i++)if(s[$b[i]])return!0;if(Ya(e,"input")||Ya(e,"select")||Ya(e,"textarea")||e.getAttribute("contenteditable")==="true")return!1;var l=e.type||"";if(typeof l=="string")switch(l.toLowerCase()){case"hidden":return!1;case"password":return!1}return!rC(e)}function fc(e){if(e===null||k.isUndefined(e))return!1;if(typeof e=="string"){e=k.trim(e);var a=/^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;if(a.test((e||"").replace(/[- ]/g,"")))return!1;var n=/(^\d{3}-?\d{2}-?\d{4}$)/;if(n.test(e))return!1}return!0}function oC(e){var a="onscrollend"in z,n=Tr(e),t=vd;if(!a){var i=null,r=100;n=Tr(function(){clearTimeout(i),i=setTimeout(e,r)}),t=bh}return{listener:n,eventType:t}}function hpe(e){for(var a=0;a<Gb.length;a++)if(e.hasAttribute(Gb[a]))return!0;return!1}function fpe(e){var a=e.getAttribute("role");if(!a)return!1;var n=a.trim().split(/\s+/)[0].toLowerCase();return rpe[n]}function Eu(e){var a=e.tagName.toLowerCase();return!!(a==="button"||a==="input"||a==="select"||a==="textarea"||a==="details"||a==="dialog"||e.isContentEditable||e.onclick||e.onmousedown||e.onmouseup||e.ontouchstart||e.ontouchend||hpe(e)||fpe(e)||a==="a"&&e.hasAttribute("href")||e.hasAttribute("tabindex"))}function sC(e){if(!e||!e.tagName)return!0;var a=e.tagName.toLowerCase();if(ope[a])return!0;if(Eu(e))return!1;for(var n=e.parentElement,t=0;n&&t<lpe;){if(Eu(n))return!1;if(n.getRootNode&&n.getRootNode()!==be){var i=n.getRootNode();if(i.host&&Eu(i.host))return!1}n=n.parentElement,t++}return!!spe[a]}function lC(e){return"composedPath"in e?e.composedPath():[]}function cC(e){var a=lC(e);return a&&a.length>0?a[0]:e.target||e.srcElement}var dC=".mp-mask, .fs-mask, .amp-mask, .rr-mask, .ph-mask",vpe="data-rr-is-password",bpe=["password","email","tel","hidden"];function sl(e){return e?Array.isArray(e)?e:[e]:[]}function ype(e){var a={input:{maskingSelector:"",unmaskingSelector:"",maskAll:!0},text:{maskingSelector:"",unmaskingSelector:"",maskAll:!0}},n=e.get_config("record_mask_input_selector"),t=e.get_config("record_unmask_input_selector"),i=e.get_config("record_mask_all_inputs");a.input.maskingSelector=sl(n).join(","),a.input.unmaskingSelector=sl(t).join(","),i!==void 0&&(a.input.maskAll=i);var r=e.get_config("record_mask_text_selector"),o=e.get_config("record_unmask_text_selector"),s=e.get_config("record_mask_all_text"),l=e.get_config("record_mask_text_class"),d=sl(r);if(l)if(l instanceof RegExp)a.text._legacyClassRegex=l;else{var p="."+l;d.indexOf(p)===-1&&d.push(p)}return a.text.maskingSelector=d.join(","),a.text.unmaskingSelector=sl(o).join(","),s===void 0&&r!==void 0?a.text.maskAll=!1:s!==void 0&&(a.text.maskAll=s),a}function ur(e,a){return a?!!e.closest(a):!1}function kpe(e,a){var n=(e.getAttribute("type")||"").toLowerCase();if(bpe.indexOf(n)!==-1)return!0;var t=(e.getAttribute("autocomplete")||"").toLowerCase();return t&&t!==""&&t!=="off"||e.hasAttribute(vpe)||rC(e)?!0:a.input.maskAll?!ur(e,a.input.unmaskingSelector):!!(ur(e,a.input.maskingSelector)||ur(e,dC))}function wpe(e,a){return e?a.text._legacyClassRegex&&Hp(e,a.text._legacyClassRegex)?!0:a.text.maskAll?!ur(e,a.text.unmaskingSelector):!!(ur(e,a.text.maskingSelector)||ur(e,dC)):!1}var Ei=pi("network-plugin");function vc(e){return Math.round(Date.now()-e.performance.now())}var Pu={initiatorTypes:["audio","beacon","body","css","early-hint","embed","fetch","frame","iframe","icon","image","img","input","link","navigation","object","ping","script","track","video","xmlhttprequest"],ignoreRequestFn:function(){return!1},recordHeaders:{request:[],response:[]},recordBodyUrls:{request:[],response:[]},recordInitialRequests:!1};function Ape(e){return e.entryType==="navigation"}function vm(e){return e.entryType==="resource"}function Spe(e,a){for(var n=e.length,t=n-1;t>=0;t-=1)if(a(e[t]))return e[t]}function uC(e,a,n){if(!(a in e)||typeof e[a]!="function")return function(){};var t=e[a],i=n(t);return e[a]=i,function(){e[a]=t}}var _u=1024*1024;function pC(e){return!e||typeof e!="string"?e:e.length>_u?(Ei.error("Body truncated from "+e.length+" to "+_u+" characters"),e.substring(0,_u)+"... [truncated]"):e}function Cpe(e,a,n){if(!a.PerformanceObserver)return Ei.error("PerformanceObserver not supported"),function(){};if(n.recordInitialRequests){var t=a.performance.getEntries().filter(function(r){return Ape(r)||vm(r)&&n.initiatorTypes.includes(r.initiatorType)});e({requests:t.map(function(r){return{url:r.name,initiatorType:r.initiatorType,status:"responseStatus"in r?r.responseStatus:void 0,startTime:Math.round(r.startTime),endTime:Math.round(r.responseEnd),timeOrigin:vc(a)}}),isInitial:!0})}var i=new a.PerformanceObserver(function(r){var o=r.getEntries().filter(function(s){return vm(s)&&n.initiatorTypes.includes(s.initiatorType)&&s.initiatorType!=="xmlhttprequest"&&s.initiatorType!=="fetch"});e({requests:o.map(function(s){return{url:s.name,initiatorType:s.initiatorType,status:"responseStatus"in s?s.responseStatus:void 0,startTime:Math.round(s.startTime),endTime:Math.round(s.responseEnd),timeOrigin:vc(a)}})})});return i.observe({entryTypes:["navigation","resource"]}),function(){i.disconnect()}}function bc(e,a,n){return!a[e]||a[e].length===0?!1:a[e].includes(n.toLowerCase())}function yc(e,a,n){return!a[e]||a[e].length===0?!1:mc(n,a[e])}function Kb(e){if(e==null)return null;var a;if(typeof e=="string")a=e;else if(e instanceof Document)a=e.textContent;else if(e instanceof FormData)a=k.HTTPBuildQuery(e);else if(k.isObject(e))try{a=JSON.stringify(e)}catch{return"Failed to stringify response object"}else return"Cannot read body of type "+typeof e;return pC(a)}function Zb(e){return new Promise(function(a){var n=setTimeout(function(){a("Timeout while trying to read body")},500);try{e.clone().text().then(function(t){clearTimeout(n),a(pC(t))},function(t){clearTimeout(n),a("Failed to read body: "+String(t))})}catch(t){clearTimeout(n),a("Failed to read body: "+String(t))}})}function kh(e,a,n,t,i,r){if(r===void 0&&(r=0),r>10)return Ei.error("Cannot find performance entry"),Promise.resolve(null);var o=e.performance.getEntriesByName(n),s=Spe(o,function(l){return vm(l)&&l.initiatorType===a&&(!t||l.startTime>=t)&&(!i||l.startTime<=i)});return s?Promise.resolve(s):new Promise(function(l){setTimeout(l,50*r)}).then(function(){return kh(e,a,n,t,i,r+1)})}function Dpe(e,a,n){if(!n.initiatorTypes.includes("xmlhttprequest"))return function(){};var t=uC(a.XMLHttpRequest.prototype,"open",function(i){return function(r,o,s,l,d){s===void 0&&(s=!0);var p=this,u=new Request(o,{method:r}),g={},b,v,A={},f=p.setRequestHeader.bind(p);p.setRequestHeader=function(C,T){return bc("request",n.recordHeaders,C)&&(A[C]=T),f(C,T)},g.requestHeaders=A;var S=p.send.bind(p);p.send=function(C){return yc("request",n.recordBodyUrls,u.url)&&(g.requestBody=Kb(C)),b=a.performance.now(),S(C)},p.addEventListener("readystatechange",function(){if(p.readyState===p.DONE){v=a.performance.now();var C={},T=p.getAllResponseHeaders();if(T){var E=T.trim().split(/[\r\n]+/);E.forEach(function(P){if(P){var I=P.indexOf(": ");if(I!==-1){var L=P.substring(0,I),N=P.substring(I+2);L&&bc("response",n.recordHeaders,L)&&(C[L]=N)}}})}g.responseHeaders=C,yc("response",n.recordBodyUrls,u.url)&&(g.responseBody=Kb(p.response)),kh(a,"xmlhttprequest",u.url,b,v).then(function(P){if(!P){Ei.error("Failed to get performance entry for XHR request to "+u.url);return}var I={url:P.name,method:u.method,initiatorType:P.initiatorType,status:p.status,startTime:Math.round(P.startTime),endTime:Math.round(P.responseEnd),timeOrigin:vc(a),requestHeaders:g.requestHeaders,requestBody:g.requestBody,responseHeaders:g.responseHeaders,responseBody:g.responseBody};e({requests:[I]})}).catch(function(P){Ei.error("Error recording XHR request to "+u.url+": "+String(P))})}}),i.call(p,r,o,s,l,d)}});return function(){t()}}function Tpe(e,a,n){if(!n.initiatorTypes.includes("fetch"))return function(){};var t=uC(a,"fetch",function(i){return function(){var r=new Request(arguments[0],arguments[1]),o,s={},l,d,p,u=Promise.resolve(void 0),g=Promise.resolve(void 0);try{var b={};r.headers.forEach(function(v,A){bc("request",n.recordHeaders,A)&&(b[A]=v)}),s.requestHeaders=b,yc("request",n.recordBodyUrls,r.url)&&(u=Zb(r).then(function(v){s.requestBody=v})),l=a.performance.now(),p=i.apply(a,arguments).then(function(v){o=v,d=a.performance.now();var A={};return o.headers.forEach(function(f,S){bc("response",n.recordHeaders,S)&&(A[S]=f)}),s.responseHeaders=A,yc("response",n.recordBodyUrls,r.url)&&(g=Zb(o).then(function(f){s.responseBody=f})),o})}catch(v){p=Promise.reject(v)}return Promise.all([u,g,p]).then(function(){return kh(a,"fetch",r.url,l,d)}).then(function(v){if(!v){Ei.error("Failed to get performance entry for fetch request to "+r.url);return}var A={url:v.name,method:r.method,initiatorType:v.initiatorType,status:o?o.status:void 0,startTime:Math.round(v.startTime),endTime:Math.round(v.responseEnd),timeOrigin:vc(a),requestHeaders:s.requestHeaders,requestBody:s.requestBody,responseHeaders:s.responseHeaders,responseBody:s.responseBody};e({requests:[A]})}).catch(function(v){Ei.error("Error recording fetch request to "+r.url+": "+String(v))}),p}});return function(){t()}}function Epe(e,a,n){if(!("performance"in a))return function(){};var t=Object.assign({},Pu.recordHeaders,n.recordHeaders||{}),i=Object.assign({},Pu.recordBodyUrls,n.recordBodyUrls||{});n=Object.assign({},n,{recordHeaders:t,recordBodyUrls:i});var r=Object.assign({},Pu,n),o=function(p){var u=p.requests.filter(function(g){var b=mc(g.url,r.ignoreRequestUrls||[]);return!b&&!r.ignoreRequestFn(g)});(u.length>0||p.isInitial)&&e(Object.assign({},p,{requests:u}))},s=Cpe(o,a,r),l=Dpe(o,a,r),d=Tpe(o,a,r);return function(){s(),l(),d()}}var Ppe="rrweb/network@1.mp",_pe=function(e){return{name:Ppe,observer:Epe,options:e}},pr=pi("recorder"),xpe=z.CompressionStream,Ipe={batch_size:1e3,batch_flush_interval_ms:10*1e3,batch_request_timeout_ms:90*1e3,batch_autostart:!0},Rpe=new Set([ve.MouseMove,ve.MouseInteraction,ve.Scroll,ve.ViewportResize,ve.Input,ve.TouchMove,ve.MediaInteraction,ve.Drag,ve.Selection]);function zpe(e){return e.type===Re.IncrementalSnapshot&&Rpe.has(e.data.source)}var vt=function(e){this._mixpanel=e.mixpanelInstance,this._onIdleTimeout=e.onIdleTimeout||Qn,this._onMaxLengthReached=e.onMaxLengthReached||Qn,this._onBatchSent=e.onBatchSent||Qn,this._rrwebRecord=e.rrwebRecord||null,this._stopRecording=null,this.replayId=e.replayId,this.batchStartUrl=e.batchStartUrl||null,this.replayStartUrl=e.replayStartUrl||null,this.idleExpires=e.idleExpires||null,this.maxExpires=e.maxExpires||null,this.replayStartTime=e.replayStartTime||null,this.lastEventTimestamp=e.lastEventTimestamp||null,this.seqNo=e.seqNo||0,this.idleTimeoutId=null,this.maxTimeoutId=null,this.recordMaxMs=mo,this.recordMinMs=0;var a=Oo(e.sharedLockStorage,!0)&&!this.getConfig("disable_persistence");this.batcherKey="__mprec_"+this.getConfig("name")+"_"+this.getConfig("token")+"_"+this.replayId,this.queueStorage=new Ma(JS),this.batcher=new fa(this.batcherKey,{errorReporter:this.reportError.bind(this),flushOnlyOnInterval:!0,libConfig:Ipe,sendRequestFunc:this.flushEventsWithOptOut.bind(this),queueStorage:this.queueStorage,sharedLockStorage:e.sharedLockStorage,usePersistence:a,stopAllBatchingFunc:this.stopRecording.bind(this),enqueueThrottleMs:Xue,sharedLockTimeoutMS:10*1e3})};vt.prototype.getUserIdInfo=function(){if(this.finalFlushUserIdInfo)return this.finalFlushUserIdInfo;var e={distinct_id:String(this._mixpanel.get_distinct_id())},a=this._mixpanel.get_property("$device_id");a&&(e.$device_id=a);var n=this._mixpanel.get_property("$user_id");return n&&(e.$user_id=n),e};vt.prototype.unloadPersistedData=function(){return this.batcher.stop(),this.queueStorage.init().catch((function(){this.reportError("Error initializing IndexedDB storage for unloading persisted data.")}).bind(this)).then((function(){return this.getDurationMs()<this._getRecordMinMs()?this.queueStorage.removeItem(this.batcherKey):this.batcher.flush().then((function(){return this.queueStorage.removeItem(this.batcherKey)}).bind(this))}).bind(this))};vt.prototype.getConfig=function(e){return this._mixpanel.get_config(e)};vt.prototype.get_config=function(e){return this.getConfig(e)};vt.prototype.startRecording=function(e){if(this._rrwebRecord===null){this.reportError("rrweb record function not provided. ");return}if(this._stopRecording!==null){pr.log("Recording already in progress, skipping startRecording.");return}this.recordMaxMs=this.getConfig("record_max_ms"),this.recordMaxMs>mo&&(this.recordMaxMs=mo,pr.critical("record_max_ms cannot be greater than "+mo+"ms. Capping value.")),this.maxExpires||(this.maxExpires=new Date().getTime()+this.recordMaxMs),this.recordMinMs=this._getRecordMinMs(),this.replayStartTime||(this.replayStartTime=new Date().getTime(),this.batchStartUrl=k.info.currentUrl(),this.replayStartUrl=k.info.currentUrl()),e||this.recordMinMs>0?this.batcher.stop():this.batcher.start();var a=(function(){clearTimeout(this.idleTimeoutId);var l=this.getConfig("record_idle_timeout_ms");this.idleTimeoutId=setTimeout(this._onIdleTimeout,l),this.idleExpires=new Date().getTime()+l}).bind(this);a();var n=this.getConfig("record_block_selector");(n===""||n===null)&&(n=void 0);var t=ype(this._mixpanel),i=[];if(this.getConfig("record_network")){var r=this.getConfig("record_network_options")||{},o=(r.ignoreRequestUrls||[]).slice();o.push(this._getApiRoute()),r.ignoreRequestUrls=o,i.push(_pe(r))}this.getConfig("record_console")&&i.push(Eue({stringifyOptions:{stringLengthLimit:1e3,numOfKeysLimit:50,depthOfLimit:2}}));try{this._stopRecording=this._rrwebRecord({emit:(function(l){if(this.idleExpires&&this.idleExpires<l.timestamp){this._onIdleTimeout();return}zpe(l)&&(this.batcher.stopped&&new Date().getTime()-this.replayStartTime>=this.recordMinMs&&this.batcher.start(),a()),this.__enqueuePromise=this.batcher.enqueue(l),(this.lastEventTimestamp===null||l.timestamp>this.lastEventTimestamp)&&(this.lastEventTimestamp=l.timestamp)}).bind(this),blockClass:this.getConfig("record_block_class"),blockSelector:n,collectFonts:this.getConfig("record_collect_fonts"),dataURLOptions:{type:"image/webp",quality:.6},maskAllInputs:!0,maskTextSelector:"*",maskInputFn:this._getMaskFn(kpe,t),maskTextFn:this._getMaskFn(wpe,t),recordCanvas:this.getConfig("record_canvas"),sampling:{canvas:15},plugins:i})}catch(l){this.reportError("Unexpected error when starting rrweb recording.",l)}if(typeof this._stopRecording!="function"){this.reportError("rrweb failed to start, skipping this recording."),this._stopRecording=null,this.stopRecording();return}var s=this.maxExpires-new Date().getTime();this.maxTimeoutId=setTimeout(this._onMaxLengthReached.bind(this),s)};vt.prototype.stopRecording=function(e){if(this.finalFlushUserIdInfo=this.getUserIdInfo(),!this.isRrwebStopped()){try{this._stopRecording()}catch(n){this.reportError("Error with rrweb stopRecording",n)}this._stopRecording=null}var a;return this.batcher.stopped?a=this.batcher.clear():e||(a=this.batcher.flush()),this.batcher.stop(),clearTimeout(this.idleTimeoutId),clearTimeout(this.maxTimeoutId),a};vt.prototype.isRrwebStopped=function(){return this._stopRecording===null};vt.prototype.flushEventsWithOptOut=function(e,a,n){var t=(function(i){i===0&&(this.stopRecording(),n({error:"Tracking has been opted out, stopping recording."}))}).bind(this);this._flushEvents(e,a,n,t)};vt.prototype.serialize=function(){var e;try{e=this._mixpanel.get_tab_id()}catch(a){this.reportError("Error getting tab ID for serialization ",a),e=null}return{replayId:this.replayId,seqNo:this.seqNo,replayStartTime:this.replayStartTime,batchStartUrl:this.batchStartUrl,replayStartUrl:this.replayStartUrl,lastEventTimestamp:this.lastEventTimestamp,idleExpires:this.idleExpires,maxExpires:this.maxExpires,tabId:e}};vt.deserialize=function(e,a){var n=new vt(k.extend({},a,{replayId:e.replayId,batchStartUrl:e.batchStartUrl,replayStartUrl:e.replayStartUrl,idleExpires:e.idleExpires,maxExpires:e.maxExpires,replayStartTime:e.replayStartTime,lastEventTimestamp:e.lastEventTimestamp,seqNo:e.seqNo,sharedLockStorage:a.sharedLockStorage}));return n};vt.prototype._getApiRoute=function(){return this.getConfig("api_routes").record};vt.prototype._sendRequest=function(e,a,n,t){var i=(function(o,s){o.status===200&&this.replayId===e&&(this.seqNo++,this.batchStartUrl=k.info.currentUrl()),this._onBatchSent(),t({status:0,httpStatusCode:o.status,responseBody:s,retryAfter:o.headers.get("Retry-After")})}).bind(this),r=this._mixpanel.get_api_host&&this._mixpanel.get_api_host("record")||this.getConfig("api_host");z.fetch(r+"/"+this._getApiRoute()+"?"+new URLSearchParams(a),{method:"POST",headers:{Authorization:"Basic "+btoa(this.getConfig("token")+":"),"Content-Type":"application/octet-stream"},body:n}).then(function(o){o.json().then(function(s){i(o,s)}).catch(function(s){t({error:s})})}).catch(function(o){t({error:o,httpStatusCode:0})})};vt.prototype._flushEvents=mi(function(e,a,n){var t=e.length;if(t>0){for(var i=this.replayId,r=1/0,o=-1/0,s=!1,l=0;l<t;l++)r=Math.min(r,e[l].timestamp),o=Math.max(o,e[l].timestamp),e[l].type===Re.FullSnapshot&&(s=!0);if(this.seqNo===0){if(!s){n({error:"First batch does not contain a full snapshot. Aborting recording."}),this.stopRecording(!0);return}this.replayStartTime=r}else this.replayStartTime||(this.reportError("Replay start time not set but seqNo is not 0. Using current batch start time as a fallback."),this.replayStartTime=r);var d=o-this.replayStartTime,p={$current_url:this.batchStartUrl,$lib_version:ea.LIB_VERSION,batch_start_time:r/1e3,mp_lib:"web",replay_id:i,replay_length_ms:d,replay_start_time:this.replayStartTime/1e3,replay_start_url:this.replayStartUrl,seq:this.seqNo},u=JSON.stringify(e);if(Object.assign(p,this.getUserIdInfo()),Uue(Ua,Cn.vendor,io)){var g=new Blob([u],{type:"application/json"}).stream(),b=g.pipeThrough(new xpe("gzip"));new Response(b).blob().then((function(v){p.format="gzip",this._sendRequest(i,p,v,n)}).bind(this))}else p.format="body",this._sendRequest(i,p,u,n)}});vt.prototype.reportError=function(e,a){pr.error.apply(pr.error,arguments);try{!a&&!(e instanceof Error)&&(e=new Error(e)),this.getConfig("error_reporter")(e,a)}catch(n){pr.error(n)}};vt.prototype.getDurationMs=function(){return this.replayStartTime===null?0:this.lastEventTimestamp===null?new Date().getTime()-this.replayStartTime:this.lastEventTimestamp-this.replayStartTime};vt.prototype._getRecordMinMs=function(){var e=this.getConfig("record_min_ms");return e>wu?(pr.critical("record_min_ms cannot be greater than "+wu+"ms. Capping value."),wu):e};vt.prototype._getMaskFn=function(e,a){return(function(n,t){if(!n.trim().length)return"";var i=!0;try{i=e(t,a)}catch(o){this.reportError("Error checking if text should be masked, defaulting to masked",o)}if(i){var r=Math.min(n.length,1e4);return"*".repeat(r)}else return n}).bind(this)};var Fn=function(e){this.idb=new Ma(mh),this.errorReporter=e.errorReporter,this.mixpanelInstance=e.mixpanelInstance,this.sharedLockStorage=e.sharedLockStorage};Fn.prototype.isPersistenceEnabled=function(){return!this.mixpanelInstance.get_config("disable_persistence")};Fn.prototype.handleError=function(e){this.errorReporter("IndexedDB error: ",e)};Fn.prototype.setActiveRecording=function(e){if(!this.isPersistenceEnabled())return we.resolve();var a=e.tabId;return a?this.idb.init().then((function(){return this.idb.setItem(a,e)}).bind(this)).catch(this.handleError.bind(this)):we.resolve()};Fn.prototype.getActiveRecording=function(){return this.isPersistenceEnabled()?this.idb.init().then((function(){return this.idb.getItem(this.mixpanelInstance.get_tab_id())}).bind(this)).then((function(e){return vh(e)?null:e}).bind(this)).catch(this.handleError.bind(this)):we.resolve(null)};Fn.prototype.clearActiveRecording=function(){return this.isPersistenceEnabled()?this.markActiveRecordingExpired():this.deleteActiveRecording()};Fn.prototype.markActiveRecordingExpired=function(){return this.getActiveRecording().then((function(e){if(e)return e.maxExpires=0,this.setActiveRecording(e)}).bind(this)).catch(this.handleError.bind(this))};Fn.prototype.deleteActiveRecording=function(){return this.idb.isInitialized()?this.idb.removeItem(this.mixpanelInstance.get_tab_id()).catch(this.handleError.bind(this)):we.resolve()};Fn.prototype.flushInactiveRecordings=function(){return this.isPersistenceEnabled()?this.idb.init().then((function(){return this.idb.getAll()}).bind(this)).then((function(e){var a=e.filter(function(n){return vh(n)}).map((function(n){var t=vt.deserialize(n,{mixpanelInstance:this.mixpanelInstance,sharedLockStorage:this.sharedLockStorage});return t.unloadPersistedData().then((function(){return this.idb.removeItem(n.tabId)}).bind(this)).catch(this.handleError.bind(this))}).bind(this));return we.all(a)}).bind(this)).catch(this.handleError.bind(this)):we.resolve([])};var ho=pi("recorder"),nn=function(e,a,n){this.mixpanelInstance=e,this.rrwebRecord=a||li,this.sharedLockStorage=n,this.recordingRegistry=new Fn({mixpanelInstance:this.mixpanelInstance,errorReporter:ho.error,sharedLockStorage:n}),this._flushInactivePromise=this.recordingRegistry.flushInactiveRecordings(),this.activeRecording=null,this.stopRecordingInProgress=!1};nn.prototype.startRecording=function(e){if(e=e||{},this.activeRecording&&!this.activeRecording.isRrwebStopped()){ho.log("Recording already in progress, skipping startRecording.");return}var a=(function(){ho.log("Idle timeout reached, restarting recording."),this.resetRecording()}).bind(this),n=(function(){ho.log("Max recording length reached, stopping recording."),this.resetRecording()}).bind(this),t=(function(){this.recordingRegistry.setActiveRecording(this.activeRecording.serialize()),this.__flushPromise=this.activeRecording.batcher._flushPromise}).bind(this),i={mixpanelInstance:this.mixpanelInstance,onBatchSent:t,onIdleTimeout:a,onMaxLengthReached:n,replayId:k.UUID(),rrwebRecord:this.rrwebRecord,sharedLockStorage:this.sharedLockStorage};return e.activeSerializedRecording?this.activeRecording=vt.deserialize(e.activeSerializedRecording,i):this.activeRecording=new vt(i),this.activeRecording.startRecording(e.shouldStopBatcher),this.recordingRegistry.setActiveRecording(this.activeRecording.serialize())};nn.prototype.stopRecording=function(){return this.stopRecordingInProgress=!0,this._stopCurrentRecording(!1,!0).then((function(){return this.recordingRegistry.clearActiveRecording()}).bind(this)).then((function(){this.stopRecordingInProgress=!1}).bind(this))};nn.prototype.pauseRecording=function(){return this._stopCurrentRecording(!1)};nn.prototype._stopCurrentRecording=function(e,a){if(this.activeRecording){var n=this.activeRecording.stopRecording(e);return a&&(this.activeRecording=null),n}return we.resolve()};nn.prototype.resumeRecording=function(e){return this.activeRecording&&this.activeRecording.isRrwebStopped()?(this.activeRecording.startRecording(!1),we.resolve(null)):this.recordingRegistry.getActiveRecording().then((function(a){return a&&!this.stopRecordingInProgress?this.startRecording({activeSerializedRecording:a}):e?this.startRecording({shouldStopBatcher:!1}):(ho.log("No resumable recording found."),null)}).bind(this))};nn.prototype.resetRecording=function(){this.stopRecording(),this.startRecording({shouldStopBatcher:!0})};nn.prototype.isRecording=function(){return this.activeRecording&&!this.activeRecording.isRrwebStopped()};nn.prototype.getActiveReplayId=function(){return this.isRecording()?this.activeRecording.replayId:null};Object.defineProperty(nn.prototype,"replayId",{get:function(){return this.getActiveReplayId()}});z[up]=nn;function Mpe(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Il={exports:{}},Npe=Il.exports,Jb;function Fpe(){return Jb||(Jb=1,(function(e,a){(function(n,t){e.exports=t()})(Npe,function(){Array.isArray||(Array.isArray=function(r){return Object.prototype.toString.call(r)==="[object Array]"});function n(r){for(var o=[],s=0,l=r.length;s<l;s++)o.indexOf(r[s])===-1&&o.push(r[s]);return o}var t={},i={"==":function(r,o){return r==o},"===":function(r,o){return r===o},"!=":function(r,o){return r!=o},"!==":function(r,o){return r!==o},">":function(r,o){return r>o},">=":function(r,o){return r>=o},"<":function(r,o,s){return s===void 0?r<o:r<o&&o<s},"<=":function(r,o,s){return s===void 0?r<=o:r<=o&&o<=s},"!!":function(r){return t.truthy(r)},"!":function(r){return!t.truthy(r)},"%":function(r,o){return r%o},log:function(r){return r},in:function(r,o){return!o||typeof o.indexOf>"u"?!1:o.indexOf(r)!==-1},cat:function(){return Array.prototype.join.call(arguments,"")},substr:function(r,o,s){if(s<0){var l=String(r).substr(o);return l.substr(0,l.length+s)}return String(r).substr(o,s)},"+":function(){return Array.prototype.reduce.call(arguments,function(r,o){return parseFloat(r,10)+parseFloat(o,10)},0)},"*":function(){return Array.prototype.reduce.call(arguments,function(r,o){return parseFloat(r,10)*parseFloat(o,10)})},"-":function(r,o){return o===void 0?-r:r-o},"/":function(r,o){return r/o},min:function(){return Math.min.apply(this,arguments)},max:function(){return Math.max.apply(this,arguments)},merge:function(){return Array.prototype.reduce.call(arguments,function(r,o){return r.concat(o)},[])},var:function(r,o){var s=o===void 0?null:o,l=this;if(typeof r>"u"||r===""||r===null)return l;for(var d=String(r).split("."),p=0;p<d.length;p++)if(l==null||(l=l[d[p]],l===void 0))return s;return l},missing:function(){for(var r=[],o=Array.isArray(arguments[0])?arguments[0]:arguments,s=0;s<o.length;s++){var l=o[s],d=t.apply({var:l},this);(d===null||d==="")&&r.push(l)}return r},missing_some:function(r,o){var s=t.apply({missing:o},this);return o.length-s.length>=r?[]:s}};return t.is_logic=function(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)&&Object.keys(r).length===1},t.truthy=function(r){return Array.isArray(r)&&r.length===0?!1:!!r},t.get_operator=function(r){return Object.keys(r)[0]},t.get_values=function(r){return r[t.get_operator(r)]},t.apply=function(r,o){if(Array.isArray(r))return r.map(function(f){return t.apply(f,o)});if(!t.is_logic(r))return r;var s=t.get_operator(r),l=r[s],d,p,u,g,b;if(Array.isArray(l)||(l=[l]),s==="if"||s=="?:"){for(d=0;d<l.length-1;d+=2)if(t.truthy(t.apply(l[d],o)))return t.apply(l[d+1],o);return l.length===d+1?t.apply(l[d],o):null}else if(s==="and"){for(d=0;d<l.length;d+=1)if(p=t.apply(l[d],o),!t.truthy(p))return p;return p}else if(s==="or"){for(d=0;d<l.length;d+=1)if(p=t.apply(l[d],o),t.truthy(p))return p;return p}else{if(s==="filter")return g=t.apply(l[0],o),u=l[1],Array.isArray(g)?g.filter(function(f){return t.truthy(t.apply(u,f))}):[];if(s==="map")return g=t.apply(l[0],o),u=l[1],Array.isArray(g)?g.map(function(f){return t.apply(u,f)}):[];if(s==="reduce")return g=t.apply(l[0],o),u=l[1],b=typeof l[2]<"u"?t.apply(l[2],o):null,Array.isArray(g)?g.reduce(function(f,S){return t.apply(u,{current:S,accumulator:f})},b):b;if(s==="all"){if(g=t.apply(l[0],o),u=l[1],!Array.isArray(g)||!g.length)return!1;for(d=0;d<g.length;d+=1)if(!t.truthy(t.apply(u,g[d])))return!1;return!0}else if(s==="none"){if(g=t.apply(l[0],o),u=l[1],!Array.isArray(g)||!g.length)return!0;for(d=0;d<g.length;d+=1)if(t.truthy(t.apply(u,g[d])))return!1;return!0}else if(s==="some"){if(g=t.apply(l[0],o),u=l[1],!Array.isArray(g)||!g.length)return!1;for(d=0;d<g.length;d+=1)if(t.truthy(t.apply(u,g[d])))return!0;return!1}}if(l=l.map(function(f){return t.apply(f,o)}),i.hasOwnProperty(s)&&typeof i[s]=="function")return i[s].apply(o,l);if(s.indexOf(".")>0){var v=String(s).split("."),A=i;for(d=0;d<v.length;d++){if(!A.hasOwnProperty(v[d]))throw new Error("Unrecognized operation "+s+" (failed at "+v.slice(0,d+1).join(".")+")");A=A[v[d]]}return A.apply(o,l)}throw new Error("Unrecognized operation "+s)},t.uses_data=function(r){var o=[];if(t.is_logic(r)){var s=t.get_operator(r),l=r[s];Array.isArray(l)||(l=[l]),s==="var"?o.push(l[0]):l.forEach(function(d){o.push.apply(o,t.uses_data(d))})}return n(o)},t.add_operation=function(r,o){i[r]=o},t.rm_operation=function(r){delete i[r]},t.rule_like=function(r,o){if(o===r||o==="@")return!0;if(o==="number")return typeof r=="number";if(o==="string")return typeof r=="string";if(o==="array")return Array.isArray(r)&&!t.is_logic(r);if(t.is_logic(o)){if(t.is_logic(r)){var s=t.get_operator(o),l=t.get_operator(r);if(s==="@"||s===l)return t.rule_like(t.get_values(r,!1),t.get_values(o,!1))}return!1}if(Array.isArray(o))if(Array.isArray(r)){if(o.length!==r.length)return!1;for(var d=0;d<o.length;d+=1)if(!t.rule_like(r[d],o[d]))return!1;return!0}else return!1;return!1},t})})(Il)),Il.exports}var Lpe=Fpe(),jpe=Mpe(Lpe),Ope=function(e,a,n){if(e!==n.event_name)return{matches:!1};var t=n.property_filters,i=!0;if(t&&!k.isEmptyObject(t))try{i=jpe.apply(t,a||{})}catch(r){return{matches:!1,error:r.toString()}}return{matches:i}},mC={};mC.eventMatchesCriteria=Ope;z[Ea]=Promise.resolve(mC);var Bpe=30,Upe=1e3,qpe=4,Vpe=!1;function gC(){this.clicks=[]}gC.prototype.isRageClick=function(e,a){a=a||{};var n=a.threshold_px||Bpe,t=a.timeout_ms||Upe,i=a.click_count||qpe,r=a.interactive_elements_only||Vpe;if(r){var o=cC(e);if(!o||sC(o))return!1}var s=Date.now(),l=e.pageX,d=e.pageY,p=this.clicks[this.clicks.length-1];if(p&&s-p.timestamp<t&&Math.sqrt(Math.pow(l-p.x,2)+Math.pow(d-p.y,2))<n){if(this.clicks.push({x:l,y:d,timestamp:s}),this.clicks.length>=i)return this.clicks=[],!0}else this.clicks=[{x:l,y:d,timestamp:s}];return!1};function jr(e,a){this.changeCallback=e||function(){},this.observerConfig=a,this.observedShadowRoots=null,this.shadowObservers=[]}jr.prototype.getEventTarget=function(e){if(this.observedShadowRoots)return cC(e)};jr.prototype.observeFromEvent=function(e){if(this.observedShadowRoots)for(var a=lC(e),n=0;n<a.length;n++){var t=a[n];t&&t.shadowRoot&&this.observeShadowRoot(t.shadowRoot)}};jr.prototype.observeShadowRoot=function(e){if(!(!this.observedShadowRoots||this.observedShadowRoots.has(e))){var a=this;try{this.observedShadowRoots.add(e);var n=new window.MutationObserver(function(){a.changeCallback()});n.observe(e,this.observerConfig),this.shadowObservers.push(n)}catch(t){Ze.critical("Error while observing shadow root",t)}}};jr.prototype.start=function(){if(!this.observedShadowRoots){if(!mpe()){Ze.critical("Shadow DOM observation unavailable: WeakSet not supported");return}this.observedShadowRoots=new WeakSet}};jr.prototype.stop=function(){if(this.observedShadowRoots){for(var e=0;e<this.shadowObservers.length;e++)try{this.shadowObservers[e].disconnect()}catch(a){Ze.critical("Error while disconnecting shadow DOM observer",a)}this.shadowObservers=[],this.observedShadowRoots=null}};var $pe=500,Wpe=[Bo,epe,hc,tpe,ape],Gpe=[vd],Hpe=[mm],Qb={characterData:!0,childList:!0,subtree:!0,attributes:!0,attributeFilter:["style","class","hidden","checked","selected","value","display","visibility"]};function rn(e){this.eventListeners=[],this.mutationObserver=null,this.shadowDOMObserver=null,this.isTracking=!1,this.lastChangeEventTimestamp=0,this.pendingClicks=[],this.onDeadClickCallback=e,this.processingActive=!1,this.processingTimeout=null}rn.prototype.addClick=function(e){var a=this.shadowDOMObserver&&this.shadowDOMObserver.getEventTarget(e);return a||(a=e.target||e.srcElement),!a||sC(a)?!1:(this.shadowDOMObserver&&this.shadowDOMObserver.observeFromEvent(e),this.pendingClicks.push({element:a,event:e,timestamp:Date.now()}),!0)};rn.prototype.trackClick=function(e,a){if(!this.isTracking)return!1;var n=this.addClick(e);return n&&this.triggerProcessing(a),n};rn.prototype.getDeadClicks=function(e){if(this.pendingClicks.length===0)return[];var a=e.timeout_ms,n=Date.now(),t=this.pendingClicks.slice();this.pendingClicks=[];for(var i=[],r=0;r<t.length;r++){var o=t[r];n-o.timestamp>=a?this.hasChangesAfter(o.timestamp)||i.push(o):this.pendingClicks.push(o)}return i};rn.prototype.hasChangesAfter=function(e){return this.lastChangeEventTimestamp>=e-100};rn.prototype.recordChangeEvent=function(){this.lastChangeEventTimestamp=Date.now()};rn.prototype.triggerProcessing=function(e){this.processingActive||(this.processingActive=!0,this.processRecursively(e))};rn.prototype.processRecursively=function(e){if(!this.isTracking||!this.onDeadClickCallback){this.processingActive=!1;return}var a=e.timeout_ms,n=this;this.processingTimeout=setTimeout(function(){if(n.processingActive){for(var t=n.getDeadClicks(e),i=0;i<t.length;i++)n.onDeadClickCallback(t[i].event);n.pendingClicks.length>0?n.processRecursively(e):n.processingActive=!1}},a)};rn.prototype.startTracking=function(){if(!this.isTracking){this.isTracking=!0;var e=this;Wpe.forEach(function(n){var t=function(){e.recordChangeEvent()};document.addEventListener(n,t,{capture:!0,passive:!0}),e.eventListeners.push({target:document,event:n,handler:t,options:{capture:!0,passive:!0}})}),Hpe.forEach(function(n){var t=function(){e.recordChangeEvent()};window.addEventListener(n,t),e.eventListeners.push({target:window,event:n,handler:t})}),Gpe.forEach(function(n){var t=function(){e.recordChangeEvent()};window.addEventListener(n,t,{passive:!0}),e.eventListeners.push({target:window,event:n,handler:t,options:{passive:!0}})});var a=function(){e.recordChangeEvent()};if(document.addEventListener("selectionchange",a),e.eventListeners.push({target:document,event:"selectionchange",handler:a}),window.MutationObserver)try{this.mutationObserver=new window.MutationObserver(function(){e.recordChangeEvent()}),this.mutationObserver.observe(document.body||document.documentElement,Qb)}catch(n){Ze.critical("Error while setting up mutation observer",n)}if(window.customElements)try{this.shadowDOMObserver=new jr(function(){e.recordChangeEvent()},Qb),this.shadowDOMObserver.start()}catch(n){Ze.critical("Error while setting up shadow DOM observer",n),this.shadowDOMObserver=null}}};rn.prototype.stopTracking=function(){if(this.isTracking){this.isTracking=!1,this.pendingClicks=[],this.lastChangeEventTimestamp=0,this.processingActive=!1,this.processingTimeout&&(clearTimeout(this.processingTimeout),this.processingTimeout=null);for(var e=0;e<this.eventListeners.length;e++){var a=this.eventListeners[e];try{a.target.removeEventListener(a.event,a.handler,a.options)}catch(n){Ze.critical("Error while removing event listener",n)}}if(this.eventListeners=[],this.mutationObserver){try{this.mutationObserver.disconnect()}catch(n){Ze.critical("Error while disconnecting mutation observer",n)}this.mutationObserver=null}if(this.shadowDOMObserver){try{this.shadowDOMObserver.stop()}catch(n){Ze.critical("Error while stopping shadow DOM observer",n)}this.shadowDOMObserver=null}}};var hC="autocapture",Ype="track_pageview",fC="full-url",Kpe="url-with-path-and-query-string",Zpe="url-with-path",Jpe="allow_element_callback",vC="allow_selectors",bC="allow_url_regexes",yC="block_attrs",kC="block_element_callback",wC="block_selectors",AC="block_url_regexes",SC="capture_extra_attrs",CC="capture_text_content",DC="scroll_capture_all",TC="scroll_depth_percent_checkpoints",kc="click",wc="dead_click",bm="input",EC="pageview",Ac="rage_click",ym="scroll",bd="page_leave",km="submit",Et={};Et[vC]=[];Et[bC]=[];Et[yC]=[];Et[kC]=null;Et[wC]=[];Et[AC]=[];Et[SC]=[];Et[CC]=!1;Et[DC]=!1;Et[TC]=[25,50,75,100];Et[kc]=!0;Et[wc]=!0;Et[bm]=!0;Et[EC]=fC;Et[Ac]=!0;Et[ym]=!0;Et[bd]=!1;Et[km]=!0;var Uo={$mp_autocapture:!0},PC="$mp_click",_C="$mp_dead_click",Qpe="$mp_input_change",xC="$mp_rage_click",Xpe="$mp_scroll",eme="$mp_submit",tme="$mp_page_leave",wt=function(e){this.mp=e,this.maxScrollViewDepth=0,this.hasTrackedScrollSession=!1,this.previousScrollHeight=0};wt.prototype.init=function(){if(!ppe()){Ze.critical("Autocapture unavailable: missing required DOM APIs");return}this.initPageListeners(),this.initPageviewTracking(),this.initClickTracking(),this.initDeadClickTracking(),this.initInputTracking(),this.initScrollTracking(),this.initSubmitTracking(),this.initRageClickTracking(),this.initPageLeaveTracking()};wt.prototype.getFullConfig=function(){var e=this.mp.get_config(hC);return e?k.isObject(e)?k.extend({},Et,e):Et:{}};wt.prototype.getConfig=function(e){return this.getFullConfig()[e]};wt.prototype.currentUrlBlocked=function(){var e=k.info.currentUrl(),a=this.getConfig(bC)||[];if(a.length)try{return!mc(e,a)}catch(t){return Ze.critical("Error while checking block URL regexes: ",t),!0}var n=this.getConfig(AC)||[];if(!n||!n.length)return!1;try{return mc(e,n)}catch(t){return Ze.critical("Error while checking block URL regexes: ",t),!0}};wt.prototype.pageviewTrackingConfig=function(){return this.mp.get_config(hC)?this.getConfig(EC):this.mp.get_config(Ype)};wt.prototype.trackDomEvent=function(e,a){if(!this.currentUrlBlocked()){var n=this.mp.is_recording_heatmap_data()&&(a===PC&&!this.getConfig(kc)||a===xC&&!this._getClickTrackingConfig(Ac)||a===_C&&!this._getClickTrackingConfig(wc)),t=dpe(e,{allowElementCallback:this.getConfig(Jpe),allowSelectors:this.getConfig(vC),blockAttrs:this.getConfig(yC),blockElementCallback:this.getConfig(kC),blockSelectors:this.getConfig(wC),captureExtraAttrs:this.getConfig(SC),captureTextContent:this.getConfig(CC),capturedForHeatMap:n});t&&(k.extend(t,Uo),this.mp.track(a,t))}};wt.prototype.initPageListeners=function(){if(z.removeEventListener(qb,this.listenerPopstate),z.removeEventListener(mm,this.listenerHashchange),!(!this.pageviewTrackingConfig()&&!this.getConfig(bd)&&!this.mp.get_config("record_heatmap_data"))){this.listenerPopstate=function(){z.dispatchEvent(new Event(Kn))},this.listenerHashchange=function(){z.dispatchEvent(new Event(Kn))},z.addEventListener(qb,this.listenerPopstate),z.addEventListener(mm,this.listenerHashchange);var e=z.history.pushState;typeof e=="function"&&(z.history.pushState=function(n,t,i){e.call(z.history,n,t,i),z.dispatchEvent(new Event(Kn))});var a=z.history.replaceState;typeof a=="function"&&(z.history.replaceState=function(n,t,i){a.call(z.history,n,t,i),z.dispatchEvent(new Event(Kn))})}};wt.prototype._getClickTrackingConfig=function(e){var a=this.getConfig(e);return a?a===!0?{}:typeof a=="object"?a:{}:null};wt.prototype._trackPageLeave=function(e,a,n){if(!this.hasTrackedScrollSession&&!(!this.getConfig(bd)&&!this.mp.is_recording_heatmap_data())){this.hasTrackedScrollSession=!0;var t=Math.max(be.documentElement.clientHeight,z.innerHeight||0),i=Math.round(Math.max(this.maxScrollViewDepth-t,0)/(n-t)*100),r=Math.round(t/n*100);n<=t&&(i=100,r=100);var o=k.extend({$max_scroll_view_depth:this.maxScrollViewDepth,$max_scroll_percentage:i,$fold_line_percentage:r,$scroll_height:n,$event_type:e.type,$current_url:a||k.info.currentUrl(),$viewportHeight:t,$viewportWidth:Math.max(be.documentElement.clientWidth,z.innerWidth||0),$captured_for_heatmap:this.mp.is_recording_heatmap_data()},Uo);this.mp.track(tme,o,{transport:"sendBeacon"})}};wt.prototype._initScrollDepthTracking=function(){if(z.removeEventListener(bh,this.listenerScrollDepth),z.removeEventListener(vd,this.listenerScrollDepth),!!this.mp.get_config("record_heatmap_data")){Ze.log("Initializing scroll depth tracking"),this.maxScrollViewDepth=Math.max(be.documentElement.clientHeight,z.innerHeight||0);var e=(function(){if(!this.currentUrlBlocked()){var n=Math.max(be.documentElement.clientHeight,z.innerHeight||0)+z.scrollY;n>this.maxScrollViewDepth&&(this.maxScrollViewDepth=n),this.previousScrollHeight=be.body.scrollHeight}}).bind(this),a=oC(e);this.listenerScrollDepth=a.listener,z.addEventListener(a.eventType,this.listenerScrollDepth)}};wt.prototype.initClickTracking=function(){z.removeEventListener(zn,this.listenerClick),!(!this.getConfig(kc)&&!this.mp.get_config("record_heatmap_data"))&&(Ze.log("Initializing click tracking"),this.listenerClick=(function(e){!this.getConfig(kc)&&!this.mp.is_recording_heatmap_data()||this.trackDomEvent(e,PC)}).bind(this),z.addEventListener(zn,this.listenerClick))};wt.prototype.initDeadClickTracking=function(){var e=this._getClickTrackingConfig(wc);if(!e&&!this.mp.get_config("record_heatmap_data")){this.stopDeadClickTracking();return}Ze.log("Initializing dead click tracking"),this._deadClickTracker||(this._deadClickTracker=new rn((function(a){this.trackDomEvent(a,_C)}).bind(this)),this._deadClickTracker.startTracking()),this.listenerDeadClick||(this.listenerDeadClick=(function(a){var n=this._getClickTrackingConfig(wc);if(!(!n&&!this.mp.is_recording_heatmap_data())&&!this.currentUrlBlocked()){var t=n||{};t.timeout_ms||(t.timeout_ms=$pe),this._deadClickTracker.trackClick(a,t)}}).bind(this),z.addEventListener(zn,this.listenerDeadClick))};wt.prototype.initInputTracking=function(){z.removeEventListener(Bo,this.listenerChange),this.getConfig(bm)&&(Ze.log("Initializing input tracking"),this.listenerChange=(function(e){this.getConfig(bm)&&this.trackDomEvent(e,Qpe)}).bind(this),z.addEventListener(Bo,this.listenerChange))};wt.prototype.initPageviewTracking=function(){if(z.removeEventListener(Kn,this.listenerLocationchange),!!this.pageviewTrackingConfig()){Ze.log("Initializing pageview tracking");var e="",a=!1;this.currentUrlBlocked()||(a=this.mp.track_pageview(Uo)),a&&(e=k.info.currentUrl()),this.listenerLocationchange=Tr((function(){if(!this.currentUrlBlocked()){var n=k.info.currentUrl(),t=!1,i=n.split("#")[0].split("?")[0]!==e.split("#")[0].split("?")[0],r=this.pageviewTrackingConfig();if(r===fC?t=n!==e:r===Kpe?t=n.split("#")[0]!==e.split("#")[0]:r===Zpe&&(t=i),t){var o=this.mp.track_pageview(Uo);o&&(e=n),i&&(this.lastScrollCheckpoint=0,Ze.log("Path change: re-initializing scroll depth checkpoints"))}}}).bind(this)),z.addEventListener(Kn,this.listenerLocationchange)}};wt.prototype.initRageClickTracking=function(){z.removeEventListener(zn,this.listenerRageClick);var e=this._getClickTrackingConfig(Ac);!e&&!this.mp.get_config("record_heatmap_data")||(Ze.log("Initializing rage click tracking"),this._rageClickTracker||(this._rageClickTracker=new gC),this.listenerRageClick=(function(a){var n=this._getClickTrackingConfig(Ac);!n&&!this.mp.is_recording_heatmap_data()||this.currentUrlBlocked()||this._rageClickTracker.isRageClick(a,n)&&this.trackDomEvent(a,xC)}).bind(this),z.addEventListener(zn,this.listenerRageClick))};wt.prototype.initScrollTracking=function(){if(z.removeEventListener(vd,this.listenerScroll),z.removeEventListener(bh,this.listenerScroll),!!this.getConfig(ym)){Ze.log("Initializing scroll tracking"),this.lastScrollCheckpoint=0;var e=(function(){if(this.getConfig(ym)&&!this.currentUrlBlocked()){var n=this.getConfig(DC),t=(this.getConfig(TC)||[]).slice().sort(function(p,u){return p-u}),i=z.scrollY,r=k.extend({$scroll_top:i},Uo);try{var o=be.body.scrollHeight,s=Math.round(i/(o-z.innerHeight)*100);if(r.$scroll_height=o,r.$scroll_percentage=s,s>this.lastScrollCheckpoint)for(var l=0;l<t.length;l++){var d=t[l];s>=d&&this.lastScrollCheckpoint<d&&(r.$scroll_checkpoint=d,this.lastScrollCheckpoint=d,n=!0)}}catch(p){Ze.critical("Error while calculating scroll percentage",p)}n&&this.mp.track(Xpe,r)}}).bind(this),a=oC(e);this.listenerScroll=a.listener,z.addEventListener(a.eventType,this.listenerScroll)}};wt.prototype.initSubmitTracking=function(){z.removeEventListener(hc,this.listenerSubmit),this.getConfig(km)&&(Ze.log("Initializing submit tracking"),this.listenerSubmit=(function(e){this.getConfig(km)&&this.trackDomEvent(e,eme)}).bind(this),z.addEventListener(hc,this.listenerSubmit))};wt.prototype.initPageLeaveTracking=function(){if(be.removeEventListener(Vb,this.listenerPageLeaveVisibilitychange),z.removeEventListener(Kn,this.listenerPageLeaveLocationchange),z.removeEventListener(Ub,this.listenerPageLoad),!(!this.getConfig(bd)&&!this.mp.get_config("record_heatmap_data"))){Ze.log("Initializing page visibility tracking."),this._initScrollDepthTracking();var e=k.info.currentUrl();this.listenerPageLoad=(function(){this.previousScrollHeight=be.body.scrollHeight}).bind(this),z.addEventListener(Ub,this.listenerPageLoad),this.listenerPageLeaveLocationchange=Tr((function(a){if(!this.currentUrlBlocked()){var n=k.info.currentUrl(),t=n!==e;t&&(this._trackPageLeave(a,e,this.previousScrollHeight),e=n,this.maxScrollViewDepth=Math.max(be.documentElement.clientHeight,z.innerHeight||0),this.previousScrollHeight=be.body.scrollHeight,this.hasTrackedScrollSession=!1)}}).bind(this)),z.addEventListener(Kn,this.listenerPageLeaveLocationchange),this.listenerPageLeaveVisibilitychange=(function(a){be.hidden&&this._trackPageLeave(a,e,this.previousScrollHeight)}).bind(this),be.addEventListener(Vb,this.listenerPageLeaveVisibilitychange)}};wt.prototype.stopDeadClickTracking=function(){this.listenerDeadClick&&(z.removeEventListener(zn,this.listenerDeadClick),this.listenerDeadClick=null),this._deadClickTracker&&(this._deadClickTracker.stopTracking(),this._deadClickTracker=null)};uh(wt);var IC=function(e,a){return z[Ea]&&typeof z[Ea].then=="function"||(z[Ea]=new Promise(function(n){e(a,n)}).then(function(){var n=z[Ea];if(n&&typeof n.then=="function")return n;throw new Error("targeting failed to load")}).catch(function(n){throw delete z[Ea],n})),z[Ea]},gt=pi("flags"),Sc="flags",Cc="context",wm={};wm[Cc]={};var ame=function(e,a){return e+":"+a},nme=function(e){return e.split(":")[0]},fe=function(e){this.fetch=z.fetch,this.getFullApiRoute=e.getFullApiRoute,this.getMpConfig=e.getConfigFunc,this.setMpConfig=e.setConfigFunc,this.getMpProperty=e.getPropertyFunc,this.track=e.trackingFunc,this.loadExtraBundle=e.loadExtraBundle||function(){},this.targetingSrc=e.targetingSrc||""};fe.prototype.init=function(){if(!this.minApisSupported()){gt.critical("Feature Flags unavailable: missing minimum required APIs");return}this.flags=null,this.fetchFlags(),this.trackedFeatures=new Set,this.pendingFirstTimeEvents={},this.activatedFirstTimeEvents={}};fe.prototype.getFullConfig=function(){var e=this.getMpConfig(Sc);return e?k.isObject(e)?k.extend({},wm,e):wm:{}};fe.prototype.getConfig=function(e){return this.getFullConfig()[e]};fe.prototype.isSystemEnabled=function(){return!!this.getMpConfig(Sc)};fe.prototype.updateContext=function(e,a){if(!this.isSystemEnabled())return gt.critical("Feature Flags not enabled, cannot update context"),Promise.resolve();var n=this.getMpConfig(Sc);k.isObject(n)||(n={});var t=a&&a.replace?{}:this.getConfig(Cc);return n[Cc]=k.extend({},t,e),this.setMpConfig(Sc,n),this.fetchFlags()};fe.prototype.areFlagsReady=function(){return this.isSystemEnabled()||gt.error("Feature Flags not enabled"),!!this.flags};fe.prototype.fetchFlags=function(){if(!this.isSystemEnabled())return Promise.resolve();var e=this.getMpProperty("distinct_id"),a=this.getMpProperty("$device_id"),n=ZS();gt.log("Fetching flags for distinct ID: "+e);var t=k.extend({distinct_id:e,device_id:a},this.getConfig(Cc)),i=new URLSearchParams;i.set("context",JSON.stringify(t)),i.set("token",this.getMpConfig("token")),i.set("mp_lib","web"),i.set("$lib_version",ea.LIB_VERSION);var r=this.getFullApiRoute()+"?"+i.toString();return this._fetchInProgressStartTime=Date.now(),this.fetchPromise=this.fetch.call(z,r,{method:"GET",headers:{Authorization:"Basic "+btoa(this.getMpConfig("token")+":"),traceparent:n}}).then((function(o){return this.markFetchComplete(),o.json().then((function(s){var l=s.flags;if(!l)throw new Error("No flags in API response");var d=new Map,p={};k.each(l,function(g,b){var v=!1,A=b+":";if(k.each(this.activatedFirstTimeEvents,function(S,C){C.startsWith(A)&&(v=!0)}),v){var f=this.flags&&this.flags.get(b);f&&d.set(b,f)}else d.set(b,{key:g.variant_key,value:g.variant_value,experiment_id:g.experiment_id,is_experiment_active:g.is_experiment_active,is_qa_tester:g.is_qa_tester})},this);var u=s.pending_first_time_events;u&&u.length>0&&k.each(u,function(g){var b=g.flag_key,v=ame(b,g.first_time_event_hash);this.activatedFirstTimeEvents[v]||(p[v]={flag_key:b,flag_id:g.flag_id,project_id:g.project_id,first_time_event_hash:g.first_time_event_hash,event_name:g.event_name,property_filters:g.property_filters,pending_variant:g.pending_variant})},this),this.activatedFirstTimeEvents&&k.each(this.activatedFirstTimeEvents,function(g,b){var v=nme(b);g&&!d.has(v)&&this.flags&&this.flags.has(v)&&d.set(v,this.flags.get(v))},this),this.flags=d,this.pendingFirstTimeEvents=p,this._traceparent=n,this._loadTargetingIfNeeded()}).bind(this)).catch((function(s){this.markFetchComplete(),gt.error(s)}).bind(this))}).bind(this)).catch((function(o){this.markFetchComplete(),gt.error(o)}).bind(this)),this.fetchPromise};fe.prototype.markFetchComplete=function(){if(!this._fetchInProgressStartTime){gt.error("Fetch in progress started time not set, cannot mark fetch complete");return}this._fetchStartTime=this._fetchInProgressStartTime,this._fetchCompleteTime=Date.now(),this._fetchLatency=this._fetchCompleteTime-this._fetchStartTime,this._fetchInProgressStartTime=null};fe.prototype._loadTargetingIfNeeded=function(){var e=!1;k.each(this.pendingFirstTimeEvents,function(a){a.property_filters&&!k.isEmptyObject(a.property_filters)&&(e=!0)}),e&&this.getTargeting().then(function(){gt.log("targeting loaded for property filter evaluation")})};fe.prototype.getTargeting=function(){return IC(this.loadExtraBundle.bind(this),this.targetingSrc).catch((function(e){gt.error("Failed to load targeting: "+e)}).bind(this))};fe.prototype.checkFirstTimeEvents=function(e,a){!this.pendingFirstTimeEvents||k.isEmptyObject(this.pendingFirstTimeEvents)||(z[Ea]&&k.isFunction(z[Ea].then)?z[Ea].then((function(n){this._processFirstTimeEventCheck(e,a,n)}).bind(this)).catch((function(){this._processFirstTimeEventCheck(e,a,null)}).bind(this)):this._processFirstTimeEventCheck(e,a,null))};fe.prototype._processFirstTimeEventCheck=function(e,a,n){k.each(this.pendingFirstTimeEvents,function(t,i){if(!this.activatedFirstTimeEvents[i]){var r=t.flag_key,o;if(!n&&t.property_filters&&!k.isEmptyObject(t.property_filters)){gt.warn('Skipping event check for "'+r+'" - property filters require targeting library');return}if(!n)o={matches:e===t.event_name,error:null};else{var s={event_name:t.event_name,property_filters:t.property_filters};o=n.eventMatchesCriteria(e,a,s)}if(o.error){gt.error('Error checking first-time event for flag "'+r+'": '+o.error);return}if(o.matches){gt.log('First-time event matched for flag "'+r+'": '+e);var l={key:t.pending_variant.variant_key,value:t.pending_variant.variant_value,experiment_id:t.pending_variant.experiment_id,is_experiment_active:t.pending_variant.is_experiment_active};this.flags.set(r,l),this.activatedFirstTimeEvents[i]=!0,this.recordFirstTimeEvent(t.flag_id,t.project_id,t.first_time_event_hash)}}},this)};fe.prototype.getFirstTimeEventApiRoute=function(e){return this.getFullApiRoute()+"/"+e+"/first-time-events"};fe.prototype.recordFirstTimeEvent=function(e,a,n){var t=this.getMpProperty("distinct_id"),i=ZS(),r=new URLSearchParams;r.set("mp_lib","web"),r.set("$lib_version",ea.LIB_VERSION);var o=this.getFirstTimeEventApiRoute(e)+"?"+r.toString(),s={distinct_id:t,project_id:a,first_time_event_hash:n};gt.log("Recording first-time event for flag: "+e),this.fetch.call(z,o,{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Basic "+btoa(this.getMpConfig("token")+":"),traceparent:i},body:JSON.stringify(s)}).catch(function(l){gt.error("Failed to record first-time event for flag "+e+": "+l)})};fe.prototype.getVariant=function(e,a){return this.fetchPromise?this.fetchPromise.then((function(){return this.getVariantSync(e,a)}).bind(this)).catch(function(n){return gt.error(n),a}):new Promise(function(n){gt.critical("Feature Flags not initialized"),n(a)})};fe.prototype.getVariantSync=function(e,a){if(!this.areFlagsReady())return gt.log("Flags not loaded yet"),a;var n=this.flags.get(e);return n?(this.trackFeatureCheck(e,n),n):(gt.log('No flag found: "'+e+'"'),a)};fe.prototype.getVariantValue=function(e,a){return this.getVariant(e,{value:a}).then(function(n){return n.value}).catch(function(n){return gt.error(n),a})};fe.prototype.getFeatureData=function(e,a){return gt.critical("mixpanel.flags.get_feature_data() is deprecated and will be removed in a future release. Use mixpanel.flags.get_variant_value() instead."),this.getVariantValue(e,a)};fe.prototype.getVariantValueSync=function(e,a){return this.getVariantSync(e,{value:a}).value};fe.prototype.isEnabled=function(e,a){return this.getVariantValue(e).then((function(){return this.isEnabledSync(e,a)}).bind(this)).catch(function(n){return gt.error(n),a})};fe.prototype.isEnabledSync=function(e,a){a=a||!1;var n=this.getVariantValueSync(e,a);return n!==!0&&n!==!1&&(gt.error('Feature flag "'+e+'" value: '+n+" is not a boolean; returning fallback value: "+a),n=a),n};fe.prototype.trackFeatureCheck=function(e,a){if(!this.trackedFeatures.has(e)){this.trackedFeatures.add(e);var n={"Experiment name":e,"Variant name":a.key,$experiment_type:"feature_flag","Variant fetch start time":new Date(this._fetchStartTime).toISOString(),"Variant fetch complete time":new Date(this._fetchCompleteTime).toISOString(),"Variant fetch latency (ms)":this._fetchLatency,"Variant fetch traceparent":this._traceparent};a.experiment_id!=="undefined"&&(n.$experiment_id=a.experiment_id),a.is_experiment_active!=="undefined"&&(n.$is_experiment_active=a.is_experiment_active),a.is_qa_tester!=="undefined"&&(n.$is_qa_tester=a.is_qa_tester),this.track("$experiment_started",n)}};fe.prototype.minApisSupported=function(){return!!this.fetch&&typeof Promise<"u"&&typeof Map<"u"&&typeof Set<"u"};uh(fe);fe.prototype.are_flags_ready=fe.prototype.areFlagsReady;fe.prototype.get_variant=fe.prototype.getVariant;fe.prototype.get_variant_sync=fe.prototype.getVariantSync;fe.prototype.get_variant_value=fe.prototype.getVariantValue;fe.prototype.get_variant_value_sync=fe.prototype.getVariantValueSync;fe.prototype.is_enabled=fe.prototype.isEnabled;fe.prototype.is_enabled_sync=fe.prototype.isEnabledSync;fe.prototype.update_context=fe.prototype.updateContext;fe.prototype.get_feature_data=fe.prototype.getFeatureData;fe.prototype.getTargeting=fe.prototype.getTargeting;var ta=function(e){this.mixpanelInstance=e.mixpanelInstance,this.getMpConfig=e.getConfigFunc,this.getTabId=e.getTabIdFunc,this.reportError=e.reportErrorFunc,this.getDistinctId=e.getDistinctIdFunc,this.loadExtraBundle=e.loadExtraBundle,this.recorderSrc=e.recorderSrc,this.targetingSrc=e.targetingSrc,this.libBasePath=e.libBasePath,this._recorder=null};ta.prototype.shouldLoadRecorder=function(){if(this.getMpConfig("disable_persistence"))return ye.log("Load recorder check skipped due to disable_persistence config"),we.resolve(!1);var e=new Ma(mh),a=this.getTabId();return e.init().then(function(){return e.getAll()}).then(function(n){for(var t=0;t<n.length;t++)if(vh(n[t])||n[t].tabId===a)return!0;return!1}).catch(k.bind(function(n){return this.reportError("Error checking recording registry",n),!1},this))};ta.prototype.checkAndStartSessionRecording=function(e,a){if(!z.MutationObserver)return ye.critical("Browser does not support MutationObserver; skipping session recording"),we.resolve();var n=k.bind(function(r){return new we(k.bind(function(o){var s=Tr(k.bind(function(){this._recorder=this._recorder||new z[up](this.mixpanelInstance),this._recorder.resumeRecording(r),o()},this));if(k.isUndefined(z[up])){var l=this.recorderSrc||this.libBasePath+$ne;this.loadExtraBundle(l,s)}else s()},this))},this),t=k.isUndefined(a)?this.getMpConfig("record_sessions_percent"):a,i=t>0&&Math.random()*100<=t;return e||i?n(!0):this.shouldLoadRecorder().then(k.bind(function(r){return r?n(!1):we.resolve()},this))};ta.prototype.isRecording=function(){if(!this._recorder||!k.isFunction(this._recorder.isRecording))return!1;try{return this._recorder.isRecording()}catch(e){return this.reportError("Error checking if recording is active",e),!1}};ta.prototype.startRecordingOnEvent=function(e,a){var n=this.isRecording(),t=this.getMpConfig("recording_event_triggers");if(!n&&t){var i=t[e];if(i&&typeof i.percentage=="number"){var r=i.percentage,o=i.property_filters;if(o&&!k.isEmptyObject(o)){var s=this.targetingSrc||this.libBasePath+fw;IC(this.loadExtraBundle,s).then((function(l){try{var d=l.eventMatchesCriteria(e,a,{event_name:e,property_filters:o});d.matches&&this.checkAndStartSessionRecording(!1,r)}catch(p){ye.critical("Could not parse recording event trigger properties logic:",p)}}).bind(this)).catch(function(l){ye.critical("Failed to load targeting library:",l)})}else this.checkAndStartSessionRecording(!1,r)}}};ta.prototype.stopSessionRecording=function(){return this._recorder?this._recorder.stopRecording():we.resolve()};ta.prototype.pauseSessionRecording=function(){return this._recorder?this._recorder.pauseRecording():we.resolve()};ta.prototype.resumeSessionRecording=function(){return this._recorder?this._recorder.resumeRecording():we.resolve()};ta.prototype.isRecordingHeatmapData=function(){return this.getSessionReplayId()&&this.getMpConfig("record_heatmap_data")};ta.prototype.getSessionRecordingProperties=function(){var e={},a=this.getSessionReplayId();return a&&(e.$mp_replay_id=a),e};ta.prototype.getSessionReplayUrl=function(){var e=null,a=this.getSessionReplayId();if(a){var n=k.HTTPBuildQuery({replay_id:a,distinct_id:this.getDistinctId(),token:this.getMpConfig("token")});e="https://mixpanel.com/projects/replay-redirect?"+n}return e};ta.prototype.getSessionReplayId=function(){var e=null;return this._recorder&&(e=this._recorder.replayId),e||null};ta.prototype.getRecorder=function(){return this._recorder};uh(ta);var Ln=function(){};Ln.prototype.create_properties=function(){};Ln.prototype.event_handler=function(){};Ln.prototype.after_track_handler=function(){};Ln.prototype.init=function(e){return this.mp=e,this};Ln.prototype.track=function(e,a,n,t){var i=this,r=k.dom_query(e);if(r.length===0){ye.error("The DOM query ("+e+") returned 0 elements");return}return k.each(r,function(o){k.register_event(o,this.override_event,function(s){var l={},d=i.create_properties(n,this),p=i.mp.get_config("track_links_timeout");i.event_handler(s,this,l),window.setTimeout(i.track_callback(t,d,l,!0),p),i.mp.track(a,d,i.track_callback(t,d,l))})},this),!0};Ln.prototype.track_callback=function(e,a,n,t){t=t||!1;var i=this;return function(){n.callback_fired||(n.callback_fired=!0,!(e&&e(t,a)===!1)&&i.after_track_handler(a,n,t))}};Ln.prototype.create_properties=function(e,a){var n;return typeof e=="function"?n=e(a):n=k.extend({},e),n};var Pr=function(){this.override_event="click"};k.inherit(Pr,Ln);Pr.prototype.create_properties=function(e,a){var n=Pr.superclass.create_properties.apply(this,arguments);return a.href&&(n.url=a.href),n};Pr.prototype.event_handler=function(e,a,n){n.new_tab=e.which===2||e.metaKey||e.ctrlKey||a.target==="_blank",n.href=a.href,n.new_tab||e.preventDefault()};Pr.prototype.after_track_handler=function(e,a){a.new_tab||setTimeout(function(){window.location=a.href},0)};var yd=function(){this.override_event="submit"};k.inherit(yd,Ln);yd.prototype.event_handler=function(e,a,n){n.element=a,e.preventDefault()};yd.prototype.after_track_handler=function(e,a){setTimeout(function(){a.element.submit()},0)};var ei="$set",_r="$set_once",Pa="$unset",Pi="$add",Ja="$append",_i="$union",En="$remove",ime="$delete",RC={set_action:function(e,a){var n={},t={};return k.isObject(e)?k.each(e,function(i,r){this._is_reserved_property(r)||(t[r]=i)},this):t[e]=a,n[ei]=t,n},unset_action:function(e){var a={},n=[];return k.isArray(e)||(e=[e]),k.each(e,function(t){this._is_reserved_property(t)||n.push(t)},this),a[Pa]=n,a},set_once_action:function(e,a){var n={},t={};return k.isObject(e)?k.each(e,function(i,r){this._is_reserved_property(r)||(t[r]=i)},this):t[e]=a,n[_r]=t,n},union_action:function(e,a){var n={},t={};return k.isObject(e)?k.each(e,function(i,r){this._is_reserved_property(r)||(t[r]=k.isArray(i)?i:[i])},this):t[e]=k.isArray(a)?a:[a],n[_i]=t,n},append_action:function(e,a){var n={},t={};return k.isObject(e)?k.each(e,function(i,r){this._is_reserved_property(r)||(t[r]=i)},this):t[e]=a,n[Ja]=t,n},remove_action:function(e,a){var n={},t={};return k.isObject(e)?k.each(e,function(i,r){this._is_reserved_property(r)||(t[r]=i)},this):t[e]=a,n[En]=t,n},delete_action:function(){var e={};return e[ime]="",e}},nt=function(){};k.extend(nt.prototype,RC);nt.prototype._init=function(e,a,n){this._mixpanel=e,this._group_key=a,this._group_id=n};nt.prototype.set=Fr(function(e,a,n){var t=this.set_action(e,a);return k.isObject(e)&&(n=a),this._send_request(t,n)});nt.prototype.set_once=Fr(function(e,a,n){var t=this.set_once_action(e,a);return k.isObject(e)&&(n=a),this._send_request(t,n)});nt.prototype.unset=Fr(function(e,a){var n=this.unset_action(e);return this._send_request(n,a)});nt.prototype.union=Fr(function(e,a,n){k.isObject(e)&&(n=a);var t=this.union_action(e,a);return this._send_request(t,n)});nt.prototype.delete=Fr(function(e){var a=this.delete_action();return this._send_request(a,e)});nt.prototype.remove=Fr(function(e,a,n){var t=this.remove_action(e,a);return this._send_request(t,n)});nt.prototype._send_request=function(e,a){e.$group_key=this._group_key,e.$group_id=this._group_id,e.$token=this._get_config("token");var n=k.encodeDates(e);return this._mixpanel._track_or_batch({type:"groups",data:n,endpoint:this._mixpanel.get_api_host("groups")+"/"+this._get_config("api_routes").groups,batcher:this._mixpanel.request_batchers.groups},a)};nt.prototype._is_reserved_property=function(e){return e==="$group_key"||e==="$group_id"};nt.prototype._get_config=function(e){return this._mixpanel.get_config(e)};nt.prototype.toString=function(){return this._mixpanel.toString()+".group."+this._group_key+"."+this._group_id};nt.prototype.remove=nt.prototype.remove;nt.prototype.set=nt.prototype.set;nt.prototype.set_once=nt.prototype.set_once;nt.prototype.union=nt.prototype.union;nt.prototype.unset=nt.prototype.unset;nt.prototype.toString=nt.prototype.toString;var ke=function(){};k.extend(ke.prototype,RC);ke.prototype._init=function(e){this._mixpanel=e};ke.prototype.set=gi(function(e,a,n){var t=this.set_action(e,a);return k.isObject(e)&&(n=a),this._get_config("save_referrer")&&this._mixpanel.persistence.update_referrer_info(document.referrer),t[ei]=k.extend({},k.info.people_properties(),t[ei]),this._send_request(t,n)});ke.prototype.set_once=gi(function(e,a,n){var t=this.set_once_action(e,a);return k.isObject(e)&&(n=a),this._send_request(t,n)});ke.prototype.unset=gi(function(e,a){var n=this.unset_action(e);return this._send_request(n,a)});ke.prototype.increment=gi(function(e,a,n){var t={},i={};return k.isObject(e)?(k.each(e,function(r,o){if(!this._is_reserved_property(o))if(isNaN(parseFloat(r))){ye.error("Invalid increment value passed to mixpanel.people.increment - must be a number");return}else i[o]=r},this),n=a):(k.isUndefined(a)&&(a=1),i[e]=a),t[Pi]=i,this._send_request(t,n)});ke.prototype.append=gi(function(e,a,n){k.isObject(e)&&(n=a);var t=this.append_action(e,a);return this._send_request(t,n)});ke.prototype.remove=gi(function(e,a,n){k.isObject(e)&&(n=a);var t=this.remove_action(e,a);return this._send_request(t,n)});ke.prototype.union=gi(function(e,a,n){k.isObject(e)&&(n=a);var t=this.union_action(e,a);return this._send_request(t,n)});ke.prototype.track_charge=gi(function(){ye.error("mixpanel.people.track_charge() is deprecated and no longer has any effect.")});ke.prototype.clear_charges=function(e){return this.set("$transactions",[],e)};ke.prototype.delete_user=function(){if(!this._identify_called()){ye.error("mixpanel.people.delete_user() requires you to call identify() first");return}var e={$delete:this._mixpanel.get_distinct_id()};return this._send_request(e)};ke.prototype.toString=function(){return this._mixpanel.toString()+".people"};ke.prototype._send_request=function(e,a){e.$token=this._get_config("token"),e.$distinct_id=this._mixpanel.get_distinct_id();var n=this._mixpanel.get_property("$device_id"),t=this._mixpanel.get_property("$user_id"),i=this._mixpanel.get_property("$had_persisted_distinct_id");n&&(e.$device_id=n),t&&(e.$user_id=t),i&&(e.$had_persisted_distinct_id=i);var r=k.encodeDates(e);return this._identify_called()?this._mixpanel._track_or_batch({type:"people",data:r,endpoint:this._mixpanel.get_api_host("people")+"/"+this._get_config("api_routes").engage,batcher:this._mixpanel.request_batchers.people},a):(this._enqueue(e),k.isUndefined(a)||(this._get_config("verbose")?a({status:-1,error:null}):a(-1)),k.truncate(r,255))};ke.prototype._get_config=function(e){return this._mixpanel.get_config(e)};ke.prototype._identify_called=function(){return this._mixpanel._flags.identify_called===!0};ke.prototype._enqueue=function(e){ei in e?this._mixpanel.persistence._add_to_people_queue(ei,e):_r in e?this._mixpanel.persistence._add_to_people_queue(_r,e):Pa in e?this._mixpanel.persistence._add_to_people_queue(Pa,e):Pi in e?this._mixpanel.persistence._add_to_people_queue(Pi,e):Ja in e?this._mixpanel.persistence._add_to_people_queue(Ja,e):En in e?this._mixpanel.persistence._add_to_people_queue(En,e):_i in e?this._mixpanel.persistence._add_to_people_queue(_i,e):ye.error("Invalid call to _enqueue():",e)};ke.prototype._flush_one_queue=function(e,a,n,t){var i=this,r=k.extend({},this._mixpanel.persistence.load_queue(e)),o=r;!k.isUndefined(r)&&k.isObject(r)&&!k.isEmptyObject(r)&&(i._mixpanel.persistence._pop_from_people_queue(e,r),i._mixpanel.persistence.save(),t&&(o=t(r)),a.call(i,o,function(s,l){s===0&&i._mixpanel.persistence._add_to_people_queue(e,r),k.isUndefined(n)||n(s,l)}))};ke.prototype._flush=function(e,a,n,t,i,r,o){var s=this;this._flush_one_queue(ei,this.set,e),this._flush_one_queue(_r,this.set_once,t),this._flush_one_queue(Pa,this.unset,r,function(f){return k.keys(f)}),this._flush_one_queue(Pi,this.increment,a),this._flush_one_queue(_i,this.union,i);var l=this._mixpanel.persistence.load_queue(Ja);if(!k.isUndefined(l)&&k.isArray(l)&&l.length)for(var d,p=function(f,S){f===0&&s._mixpanel.persistence._add_to_people_queue(Ja,d),k.isUndefined(n)||n(f,S)},u=l.length-1;u>=0;u--)l=this._mixpanel.persistence.load_queue(Ja),d=l.pop(),s._mixpanel.persistence.save(),k.isEmptyObject(d)||s.append(d,p);var g=this._mixpanel.persistence.load_queue(En);if(!k.isUndefined(g)&&k.isArray(g)&&g.length)for(var b,v=function(f,S){f===0&&s._mixpanel.persistence._add_to_people_queue(En,b),k.isUndefined(o)||o(f,S)},A=g.length-1;A>=0;A--)g=this._mixpanel.persistence.load_queue(En),b=g.pop(),s._mixpanel.persistence.save(),k.isEmptyObject(b)||s.remove(b,v)};ke.prototype._is_reserved_property=function(e){return e==="$distinct_id"||e==="$token"||e==="$device_id"||e==="$user_id"||e==="$had_persisted_distinct_id"};ke.prototype.set=ke.prototype.set;ke.prototype.set_once=ke.prototype.set_once;ke.prototype.unset=ke.prototype.unset;ke.prototype.increment=ke.prototype.increment;ke.prototype.append=ke.prototype.append;ke.prototype.remove=ke.prototype.remove;ke.prototype.union=ke.prototype.union;ke.prototype.track_charge=ke.prototype.track_charge;ke.prototype.clear_charges=ke.prototype.clear_charges;ke.prototype.delete_user=ke.prototype.delete_user;ke.prototype.toString=ke.prototype.toString;var wh="__mps",Ah="__mpso",Sh="__mpus",Ch="__mpa",Dh="__mpap",Th="__mpr",Eh="__mpu",zC="$people_distinct_id",Dc="__alias",qo="__timers",rme=[wh,Ah,Sh,Ch,Dh,Th,Eh,zC,Dc,qo],Te=function(e){this.props={},this.campaign_params_saved=!1,e.persistence_name?this.name="mp_"+e.persistence_name:this.name="mp_"+e.token+"_mixpanel";var a=e.persistence;a!=="cookie"&&a!=="localStorage"&&(ye.critical("Unknown persistence type "+a+"; falling back to cookie"),a=e.persistence="cookie"),a==="localStorage"&&k.localStorage.is_supported()?this.storage=k.localStorage:this.storage=k.cookie,this.load(),this.update_config(e),this.upgrade(),this.save()};Te.prototype.properties=function(){var e={};return this.load(),k.each(this.props,function(a,n){k.include(rme,n)||(e[n]=a)}),e};Te.prototype.load=function(){if(!this.disabled){var e=this.storage.parse(this.name);e&&(this.props=k.extend({},e))}};Te.prototype.upgrade=function(){var e,a;this.storage===k.localStorage?(e=k.cookie.parse(this.name),k.cookie.remove(this.name),k.cookie.remove(this.name,!0),e&&this.register_once(e)):this.storage===k.cookie&&(a=k.localStorage.parse(this.name),k.localStorage.remove(this.name),a&&this.register_once(a))};Te.prototype.save=function(){this.disabled||this.storage.set(this.name,Er(this.props),this.expire_days,this.cross_subdomain,this.secure,this.cross_site,this.cookie_domain)};Te.prototype.load_prop=function(e){return this.load(),this.props[e]};Te.prototype.remove=function(){this.storage.remove(this.name,!1,this.cookie_domain),this.storage.remove(this.name,!0,this.cookie_domain)};Te.prototype.clear=function(){this.remove(),this.props={}};Te.prototype.register_once=function(e,a,n){return k.isObject(e)?(typeof a>"u"&&(a="None"),this.expire_days=typeof n>"u"?this.default_expiry:n,this.load(),k.each(e,function(t,i){(!this.props.hasOwnProperty(i)||this.props[i]===a)&&(this.props[i]=t)},this),this.save(),!0):!1};Te.prototype.register=function(e,a){return k.isObject(e)?(this.expire_days=typeof a>"u"?this.default_expiry:a,this.load(),k.extend(this.props,e),this.save(),!0):!1};Te.prototype.unregister=function(e){this.load(),e in this.props&&(delete this.props[e],this.save())};Te.prototype.update_search_keyword=function(e){this.register(k.info.searchInfo(e))};Te.prototype.update_referrer_info=function(e){this.register_once({$initial_referrer:e||"$direct",$initial_referring_domain:k.info.referringDomain(e)||"$direct"},"")};Te.prototype.get_referrer_info=function(){return k.strip_empty_properties({$initial_referrer:this.props.$initial_referrer,$initial_referring_domain:this.props.$initial_referring_domain})};Te.prototype.update_config=function(e){this.default_expiry=this.expire_days=e.cookie_expiration,this.set_disabled(e.disable_persistence),this.set_cookie_domain(e.cookie_domain),this.set_cross_site(e.cross_site_cookie),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie)};Te.prototype.set_disabled=function(e){this.disabled=e,this.disabled?this.remove():this.save()};Te.prototype.set_cookie_domain=function(e){e!==this.cookie_domain&&(this.remove(),this.cookie_domain=e,this.save())};Te.prototype.set_cross_site=function(e){e!==this.cross_site&&(this.cross_site=e,this.remove(),this.save())};Te.prototype.set_cross_subdomain=function(e){e!==this.cross_subdomain&&(this.cross_subdomain=e,this.remove(),this.save())};Te.prototype.get_cross_subdomain=function(){return this.cross_subdomain};Te.prototype.set_secure=function(e){e!==this.secure&&(this.secure=!!e,this.remove(),this.save())};Te.prototype._add_to_people_queue=function(e,a){var n=this._get_queue_key(e),t=a[e],i=this._get_or_create_queue(ei),r=this._get_or_create_queue(_r),o=this._get_or_create_queue(Pa),s=this._get_or_create_queue(Pi),l=this._get_or_create_queue(_i),d=this._get_or_create_queue(En,[]),p=this._get_or_create_queue(Ja,[]);n===wh?(k.extend(i,t),this._pop_from_people_queue(Pi,t),this._pop_from_people_queue(_i,t),this._pop_from_people_queue(Pa,t)):n===Ah?(k.each(t,function(u,g){g in r||(r[g]=u)}),this._pop_from_people_queue(Pa,t)):n===Sh?k.each(t,function(u){k.each([i,r,s,l],function(g){u in g&&delete g[u]}),k.each(p,function(g){u in g&&delete g[u]}),o[u]=!0}):n===Ch?(k.each(t,function(u,g){g in i?i[g]+=u:(g in s||(s[g]=0),s[g]+=u)},this),this._pop_from_people_queue(Pa,t)):n===Eh?(k.each(t,function(u,g){k.isArray(u)&&(g in l||(l[g]=[]),k.each(u,function(b){k.include(l[g],b)||l[g].push(b)}))}),this._pop_from_people_queue(Pa,t)):n===Th?(d.push(t),this._pop_from_people_queue(Ja,t)):n===Dh&&(p.push(t),this._pop_from_people_queue(Pa,t)),ye.log("MIXPANEL PEOPLE REQUEST (QUEUED, PENDING IDENTIFY):"),ye.log(a),this.save()};Te.prototype._pop_from_people_queue=function(e,a){var n=this.props[this._get_queue_key(e)];k.isUndefined(n)||k.each(a,function(t,i){e===Ja||e===En?k.each(n,function(r){r[i]===t&&delete r[i]}):delete n[i]},this)};Te.prototype.load_queue=function(e){return this.load_prop(this._get_queue_key(e))};Te.prototype._get_queue_key=function(e){if(e===ei)return wh;if(e===_r)return Ah;if(e===Pa)return Sh;if(e===Pi)return Ch;if(e===Ja)return Dh;if(e===En)return Th;if(e===_i)return Eh;ye.error("Invalid queue:",e)};Te.prototype._get_or_create_queue=function(e,a){var n=this._get_queue_key(e);return a=k.isUndefined(a)?{}:a,this.props[n]||(this.props[n]=a)};Te.prototype.set_event_timer=function(e,a){var n=this.load_prop(qo)||{};n[e]=a,this.props[qo]=n,this.save()};Te.prototype.remove_event_timer=function(e){var a=this.load_prop(qo)||{},n=a[e];return k.isUndefined(n)||(delete this.props[qo][e],this.save()),n};var Tc,Am=function(e,a){throw new Error(e+" not available in this build.")},Ut,Sm=0,ome=1,ma="mixpanel",MC="base64",sme="json",Ph="$device:",lme="strict",cme="fallback",dme="disabled",mr=z.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest,NC=!mr&&Ua.indexOf("MSIE")===-1&&Ua.indexOf("Mozilla")===-1,Ec=null;Cn.sendBeacon&&(Ec=function(){return Cn.sendBeacon.apply(Cn,arguments)});var FC={track:"track/",engage:"engage/",groups:"groups/",record:"record/",flags:"flags/",settings:"settings/"},Cm={api_host:"https://api-js.mixpanel.com",api_hosts:{},api_routes:FC,api_extra_query_params:{},api_method:"POST",api_transport:"XHR",api_payload_format:MC,app_host:"https://mixpanel.com",autocapture:!1,cdn:"https://cdn.mxpnl.com",cross_site_cookie:!1,cross_subdomain_cookie:!0,error_reporter:Qn,flags:!1,persistence:"cookie",persistence_name:"",cookie_domain:"",cookie_name:"",loaded:Qn,mp_loader:null,track_marketing:!0,track_pageview:!1,skip_first_touch_marketing:!1,store_google:!0,stop_utm_persistence:!1,save_referrer:!0,test:!1,verbose:!1,img:!1,debug:!1,track_links_timeout:300,cookie_expiration:365,upgrade:!1,disable_persistence:!1,disable_cookie:!1,secure_cookie:!1,ip:!0,opt_out_tracking_by_default:!1,opt_out_persistence_by_default:!1,opt_out_tracking_persistence_type:"localStorage",opt_out_tracking_cookie_prefix:null,property_blacklist:[],xhr_headers:{},ignore_dnt:!1,batch_requests:!0,batch_size:50,batch_flush_interval_ms:5e3,batch_request_timeout_ms:9e4,batch_autostart:!0,hooks:{},record_block_class:new RegExp("^(mp-block|fs-exclude|amp-block|rr-block|ph-no-capture)$"),record_block_selector:"img, video, audio",record_canvas:!1,record_collect_fonts:!1,record_console:!0,record_heatmap_data:!1,recording_event_triggers:{},record_idle_timeout_ms:1800*1e3,record_mask_inputs:!0,record_max_ms:mo,record_min_ms:0,record_network:!1,record_network_options:{},record_sessions_percent:0,recorder_src:null,targeting_src:null,lib_base_path:"https://cdn.mxpnl.com/libs/",remote_settings_mode:dme},LC=!1,_=function(){},Dm=function(e,a,n){var t,i=n===ma?Ut:Ut[n];if(i&&Tc===Sm)t=i;else{if(i&&!k.isArray(i)){ye.error("You have already initialized "+n);return}t=new _}if(t._cached_groups={},t._init(e,a,n),t.people=new ke,t.people._init(t),!t.get_config("skip_first_touch_marketing")){var r=k.info.campaignParams(null),o={},s=!1;k.each(r,function(d,p){o["initial_"+p]=d,d&&(s=!0)}),s&&t.people.set_once(o)}ea.DEBUG=ea.DEBUG||t.get_config("debug");var l=Tc===Sm?"module":"snippet";return z.dispatchEvent(new z.CustomEvent("$mp_sdk_to_extension_event",{detail:{instance:t,source:l,token:e,name:n,info:k.info}})),!k.isUndefined(i)&&k.isArray(i)&&(t._execute_array.call(t.people,i.people),t._execute_array(i)),t};_.prototype.init=function(e,a,n){if(k.isUndefined(n)){this.report_error("You must name your new library: init(token, config, name)");return}if(n===ma){this.report_error("You must initialize the main mixpanel object right after you include the Mixpanel js snippet");return}var t=Dm(e,a,n);return Ut[n]=t,t._loaded(),t};_.prototype._init=function(e,a,n){a=a||{},this.__loaded=!0,this.config={};var t={};if(!("api_payload_format"in a)){var i=a.api_host||Cm.api_host;i.match(/\.mixpanel\.com/)&&(t.api_payload_format=sme)}if(this.hooks={},this.set_config(k.extend({},Cm,t,a,{name:n,token:e,callback_fn:(n===ma?n:ma+"."+n)+"._jsc"})),this.recorderManager=new ta({mixpanelInstance:this,getConfigFunc:k.bind(this.get_config,this),setConfigFunc:k.bind(this.set_config,this),getTabIdFunc:k.bind(this.get_tab_id,this),reportErrorFunc:k.bind(this.report_error,this),getDistinctIdFunc:k.bind(this.get_distinct_id,this),recorderSrc:this.get_config("recorder_src"),targetingSrc:this.get_config("targeting_src"),libBasePath:this.get_config("lib_base_path"),loadExtraBundle:Am}),this._jsc=Qn,this.__dom_loaded_queue=[],this.__request_queue=[],this.__disabled_events=[],this._flags={disable_all_events:!1,identify_called:!1},this.request_batchers={},this._batch_requests=this.get_config("batch_requests"),this._batch_requests){if(!k.localStorage.is_supported(!0)||!mr)this._batch_requests=!1,ye.log("Turning off Mixpanel request-queueing; needs XHR and localStorage support"),k.each(this.get_batcher_configs(),function(l){ye.log("Clearing batch queue "+l.queue_key),k.localStorage.remove(l.queue_key)});else if(this.init_batchers(),Ec&&z.addEventListener){var r=k.bind(function(){this.request_batchers.events.stopped||this.request_batchers.events.flush({unloading:!0})},this);z.addEventListener("pagehide",function(l){l.persisted&&r()}),z.addEventListener("visibilitychange",function(){be.visibilityState==="hidden"&&r()})}}this.persistence=this.cookie=new Te(this.config),this.unpersisted_superprops={},this._gdpr_init();var o=k.UUID();this.get_distinct_id()||this.register_once({distinct_id:Ph+o,$device_id:o},""),this.flags=new fe({getFullApiRoute:k.bind(function(){return this.get_api_host("flags")+"/"+this.get_config("api_routes").flags},this),getConfigFunc:k.bind(this.get_config,this),setConfigFunc:k.bind(this.set_config,this),getPropertyFunc:k.bind(this.get_property,this),trackingFunc:k.bind(this.track,this),loadExtraBundle:Am,targetingSrc:this.get_config("targeting_src")||this.get_config("lib_base_path")+fw}),this.flags.init(),this.flags=this.flags,this.autocapture=new wt(this),this.autocapture.init(),this._init_tab_id();var s=this.get_config("remote_settings_mode");s===lme||s===cme?this.__session_recording_init_promise=this._fetch_remote_settings(s).then(k.bind(function(){return this._check_and_start_session_recording()},this)):this.__session_recording_init_promise=this._check_and_start_session_recording()};_.prototype._init_tab_id=function(){if(this.get_config("disable_persistence"))ye.log("Tab ID initialization skipped due to disable_persistence config");else if(k.sessionStorage.is_supported())try{var e=this.get_config("name")+"_"+this.get_config("token"),a="mp_tab_id_"+e,n="mp_gen_new_tab_id_"+e;(k.sessionStorage.get(n)||!k.sessionStorage.get(a))&&k.sessionStorage.set(a,"$tab-"+k.UUID()),k.sessionStorage.set(n,"1"),this.tab_id=k.sessionStorage.get(a),z.addEventListener("beforeunload",function(){k.sessionStorage.remove(n)})}catch(t){this.report_error("Error initializing tab id",t)}else this.report_error("Session storage is not supported, cannot keep track of unique tab ID.")};_.prototype.get_tab_id=function(){return this.tab_id||null};_.prototype._check_and_start_session_recording=mi(function(e){return this.recorderManager.checkAndStartSessionRecording(e)});_.prototype._start_recording_on_event=function(e,a){return this.recorderManager.startRecordingOnEvent(e,a)};_.prototype.start_session_recording=function(){return this._check_and_start_session_recording(!0)};_.prototype.stop_session_recording=function(){return this.recorderManager.stopSessionRecording()};_.prototype.pause_session_recording=function(){return this.recorderManager.pauseSessionRecording()};_.prototype.resume_session_recording=function(){return this.recorderManager.resumeSessionRecording()};_.prototype.is_recording_heatmap_data=function(){return this.recorderManager.isRecordingHeatmapData()};_.prototype.get_session_recording_properties=function(){return this.recorderManager.getSessionRecordingProperties()};_.prototype.get_session_replay_url=function(){return this.recorderManager.getSessionReplayUrl()};_.prototype.__get_recorder=function(){return this.recorderManager.getRecorder()};_.prototype.__get_recording_init_promise=function(){return this.__session_recording_init_promise};_.prototype._loaded=function(){if(this.get_config("loaded")(this),this._set_default_superprops(),this.people.set_once(this.persistence.get_referrer_info()),this.get_config("store_google")&&this.get_config("stop_utm_persistence")){var e=k.info.campaignParams(null);k.each(e,(function(a,n){this.unregister(n)}).bind(this))}};_.prototype._set_default_superprops=function(){this.persistence.update_search_keyword(be.referrer),this.get_config("store_google")&&!this.get_config("stop_utm_persistence")&&this.register(k.info.campaignParams()),this.get_config("save_referrer")&&this.persistence.update_referrer_info(be.referrer)};_.prototype._dom_loaded=function(){k.each(this.__dom_loaded_queue,function(e){this._track_dom.apply(this,e)},this),this.has_opted_out_tracking()||k.each(this.__request_queue,function(e){this._send_request.apply(this,e)},this),delete this.__dom_loaded_queue,delete this.__request_queue};_.prototype._track_dom=function(e,a){if(this.get_config("img"))return this.report_error("You can't use DOM tracking functions with img = true."),!1;if(!LC)return this.__dom_loaded_queue.push([e,a]),!1;var n=new e().init(this);return n.track.apply(n,a)};_.prototype._prepare_callback=function(e,a){if(k.isUndefined(e))return null;if(mr){var n=function(o){e(o,a)};return n}else{var t=this._jsc,i=""+Math.floor(Math.random()*1e8),r=this.get_config("callback_fn")+"["+i+"]";return t[i]=function(o){delete t[i],e(o,a)},r}};_.prototype._send_request=function(e,a,n,t){var i=!0;if(NC)return this.__request_queue.push(arguments),i;var r={method:this.get_config("api_method"),transport:this.get_config("api_transport"),verbose:this.get_config("verbose")},o=null;!t&&(k.isFunction(n)||typeof n=="string")&&(t=n,n=null),n=k.extend(r,n||{}),mr||(n.method="GET");var s=n.method==="POST",l=Ec&&s&&n.transport.toLowerCase()==="sendbeacon",d=n.verbose;a.verbose&&(d=!0),this.get_config("test")&&(a.test=1),d&&(a.verbose=1),this.get_config("img")&&(a.img=1),mr||(t?a.callback=t:(d||this.get_config("test"))&&(a.callback="(function(){})")),a.ip=this.get_config("ip")?1:0,a._=new Date().getTime().toString(),s&&(o="data="+encodeURIComponent(a.data),delete a.data),k.extend(a,this.get_config("api_extra_query_params")),e+="?"+k.HTTPBuildQuery(a);var p=this;if("img"in a){var u=be.createElement("img");u.src=e,be.body.appendChild(u)}else if(l){try{i=Ec(e,o)}catch(S){p.report_error(S),i=!1}try{t&&t(i?1:0)}catch(S){p.report_error(S)}}else if(mr)try{var g=new XMLHttpRequest;g.open(n.method,e,!0);var b=this.get_config("xhr_headers");if(s&&(b["Content-Type"]="application/x-www-form-urlencoded"),k.each(b,function(S,C){g.setRequestHeader(C,S)}),n.timeout_ms&&typeof g.timeout<"u"){g.timeout=n.timeout_ms;var v=new Date().getTime()}g.withCredentials=!0,g.onreadystatechange=function(){if(g.readyState===4)if(g.status===200){if(t)if(d){var S;try{S=k.JSONDecode(g.responseText)}catch(E){if(p.report_error(E),n.ignore_json_errors)S=g.responseText;else return}t(S)}else t(Number(g.responseText))}else{var C;if(g.timeout&&!g.status&&new Date().getTime()-v>=g.timeout?C="timeout":C="Bad HTTP status: "+g.status+" "+g.statusText,p.report_error(C),t)if(d){var T=g.responseHeaders||{};t({status:0,httpStatusCode:g.status,error:C,retryAfter:T["Retry-After"]})}else t(0)}},g.send(o)}catch(S){p.report_error(S),i=!1}else{var A=be.createElement("script");A.type="text/javascript",A.async=!0,A.defer=!0,A.src=e;var f=be.getElementsByTagName("script")[0];f.parentNode.insertBefore(A,f)}return i};_.prototype._fetch_remote_settings=function(e){var a=this,n=function(){e==="strict"&&a.set_config({record_sessions_percent:0})};if(!z.AbortController)return ye.critical("Remote settings unavailable: missing minimum required APIs"),n(),Promise.resolve();var t=this.get_api_host("settings")+"/"+this.get_config("api_routes").settings,i={$lib_version:ea.LIB_VERSION,mp_lib:"web",sdk_config:"1"},r=k.HTTPBuildQuery(i),o=t+"?"+r,s=new AbortController,l=setTimeout(function(){s.abort()},500),d={method:"GET",headers:{Authorization:"Basic "+btoa(a.get_config("token")+":")},signal:s.signal};return z.fetch(o,d).then(function(p){if(clearTimeout(l),!p.ok){ye.critical("Network response was not ok"),n();return}return p.json()}).then(function(p){if(p&&p.sdk_config&&p.sdk_config.config){var u=p.sdk_config.config,g={};k.each(u,function(b,v){Cm.hasOwnProperty(v)&&(g[v]=b)}),k.isEmptyObject(g)?(ye.critical("No valid config keys found in remote settings."),n()):a.set_config(g)}else n()}).catch(function(p){clearTimeout(l),ye.critical("Failed to fetch remote settings",p),n()})};_.prototype._execute_array=function(e){var a,n=[],t=[],i=[];k.each(e,function(o){o&&(a=o[0],k.isArray(a)?i.push(o):typeof o=="function"?o.call(this):k.isArray(o)&&a==="alias"?n.push(o):k.isArray(o)&&a.indexOf("track")!==-1&&typeof this[a]=="function"?i.push(o):t.push(o))},this);var r=function(o,s){k.each(o,function(l){if(k.isArray(l[0])){var d=s;k.each(l,function(p){d=d[p[0]].apply(d,p.slice(1))})}else this[l[0]].apply(this,l.slice(1))},s)};r(n,this),r(t,this),r(i,this)};_.prototype.are_batchers_initialized=function(){return!!this.request_batchers.events};_.prototype.get_batcher_configs=function(){var e="__mpq_"+this.get_config("token");return this._batcher_configs=this._batcher_configs||{events:{type:"events",api_name:"track",queue_key:e+"_ev"},people:{type:"people",api_name:"engage",queue_key:e+"_pp"},groups:{type:"groups",api_name:"groups",queue_key:e+"_gr"}},this._batcher_configs};_.prototype.init_batchers=function(){if(!this.are_batchers_initialized()){var e=k.bind(function(n){return new fa(n.queue_key,{libConfig:this.config,errorReporter:this.get_config("error_reporter"),sendRequestFunc:k.bind(function(t,i,r){var o=this.get_config("api_routes");this._send_request(this.get_api_host(n.api_name)+"/"+o[n.api_name],this._encode_data_for_request(t),i,this._prepare_callback(r,t))},this),beforeSendHook:k.bind(function(t){var i=this._run_hook("before_send_"+n.type,t);return i?i[0]:null},this),stopAllBatchingFunc:k.bind(this.stop_batch_senders,this),usePersistence:!0})},this),a=this.get_batcher_configs();this.request_batchers={events:e(a.events),people:e(a.people),groups:e(a.groups)}}this.get_config("batch_autostart")&&this.start_batch_senders()};_.prototype.start_batch_senders=function(){this._batchers_were_started=!0,this.are_batchers_initialized()&&(this._batch_requests=!0,k.each(this.request_batchers,function(e){e.start()}))};_.prototype.stop_batch_senders=function(){this._batch_requests=!1,k.each(this.request_batchers,function(e){e.stop(),e.clear()})};_.prototype.push=function(e){this._execute_array([e])};_.prototype.enable=function(e){var a,n,t,i;if(typeof e>"u")this._flags.disable_all_events=!1;else{for(a={},n=[],t=0;t<e.length;t++)a[e[t]]=!0;for(i=0;i<this.__disabled_events.length;i++)a[this.__disabled_events[i]]||n.push(this.__disabled_events[i]);this.__disabled_events=n}};_.prototype.disable=function(e){typeof e>"u"?this._flags.disable_all_events=!0:this.__disabled_events=this.__disabled_events.concat(e)};_.prototype._encode_data_for_request=function(e){var a=Er(e);return this.get_config("api_payload_format")===MC&&(a=k.base64Encode(a)),{data:a}};_.prototype._track_or_batch=function(e,a){var n=k.truncate(e.data,255),t=e.endpoint,i=e.batcher,r=e.should_send_immediately,o=e.send_request_options||{};a=a||Qn;var s=!0,l=k.bind(function(){return o.skip_hooks||(n=this._run_hook("before_send_"+e.type,n),n&&(n=n[0])),n?(ye.log("MIXPANEL REQUEST:"),ye.log(n),this._send_request(t,this._encode_data_for_request(n),o,this._prepare_callback(a,n))):null},this);return this._batch_requests&&!r?i.enqueue(n).then(function(d){d?a(1,n):l()}):s=l(),s&&n};_.prototype.track=mi(function(e,a,n,t){var i;if(!(n&&n.skip_hooks)){if(i=this._run_hook("before_track",e,a),i===null)return;e=i[0],a=i[1]}!t&&typeof n=="function"&&(t=n,n=null),n=n||{};var r=n.transport;r&&(n.transport=r);var o=n.send_immediately;if(typeof t!="function"&&(t=Qn),k.isUndefined(e)){this.report_error("No event name provided to mixpanel.track");return}if(this._event_is_disabled(e)){t(0);return}a=k.extend({},a),a.token=this.get_config("token");var s=this.persistence.remove_event_timer(e);if(!k.isUndefined(s)){var l=new Date().getTime()-s;a.$duration=parseFloat((l/1e3).toFixed(3))}this._set_default_superprops();var d=this.get_config("track_marketing")?k.info.marketingParams():{};a=k.extend({},k.info.properties({mp_loader:this.get_config("mp_loader")}),d,this.persistence.properties(),this.unpersisted_superprops,this.get_session_recording_properties(),a);var p=this.get_config("property_blacklist");k.isArray(p)?k.each(p,function(g){delete a[g]}):this.report_error("Invalid value for property_blacklist config: "+p),this._start_recording_on_event(e,a);var u={event:e,properties:a};return i=this._track_or_batch({type:"events",data:u,endpoint:this.get_api_host("events")+"/"+this.get_config("api_routes").track,batcher:this.request_batchers.events,should_send_immediately:o,send_request_options:n},t),this.flags&&this.flags.checkFirstTimeEvents&&this.flags.checkFirstTimeEvents(e,a),i});_.prototype.set_group=mi(function(e,a,n){k.isArray(a)||(a=[a]);var t={};return t[e]=a,this.register(t),this.people.set(e,a,n)});_.prototype.add_group=mi(function(e,a,n){var t=this.get_property(e),i={};return t===void 0?(i[e]=[a],this.register(i)):t.indexOf(a)===-1&&(t.push(a),i[e]=t,this.register(i)),this.people.union(e,a,n)});_.prototype.remove_group=mi(function(e,a,n){var t=this.get_property(e);if(t!==void 0){var i=t.indexOf(a);i>-1&&(t.splice(i,1),this.register({group_key:t})),t.length===0&&this.unregister(e)}return this.people.remove(e,a,n)});_.prototype.track_with_groups=mi(function(e,a,n,t){var i=k.extend({},a||{});return k.each(n,function(r,o){r!=null&&(i[o]=r)}),this.track(e,i,t)});_.prototype._create_map_key=function(e,a){return e+"_"+JSON.stringify(a)};_.prototype._remove_group_from_cache=function(e,a){delete this._cached_groups[this._create_map_key(e,a)]};_.prototype.get_group=function(e,a){var n=this._create_map_key(e,a),t=this._cached_groups[n];return(t===void 0||t._group_key!==e||t._group_id!==a)&&(t=new nt,t._init(this,e,a),this._cached_groups[n]=t),t};_.prototype.track_pageview=mi(function(e,a){typeof e!="object"&&(e={}),a=a||{};var n=a.event_name||"$mp_web_page_view",t=k.extend(k.info.mpPageViewProperties(),k.info.campaignParams(),k.info.clickParams()),i=k.extend({},t,e);return this.track(n,i)});_.prototype.track_links=function(){return this._track_dom.call(this,Pr,arguments)};_.prototype.track_forms=function(){return this._track_dom.call(this,yd,arguments)};_.prototype.time_event=function(e){if(k.isUndefined(e)){this.report_error("No event name provided to mixpanel.time_event");return}this._event_is_disabled(e)||this.persistence.set_event_timer(e,new Date().getTime())};var ume={persistent:!0},_h=function(e){var a;return k.isObject(e)?a=e:k.isUndefined(e)?a={}:a={days:e},k.extend({},ume,a)};_.prototype.register=function(e,a){var n=this._run_hook("before_register",e,a);if(n!==null){e=n[0],a=n[1];var t=_h(a);t.persistent?this.persistence.register(e,t.days):k.extend(this.unpersisted_superprops,e)}};_.prototype.register_once=function(e,a,n){var t=this._run_hook("before_register_once",e,a,n);if(t!==null){e=t[0],a=t[1],n=t[2];var i=_h(n);i.persistent?this.persistence.register_once(e,a,i.days):(typeof a>"u"&&(a="None"),k.each(e,function(r,o){(!this.unpersisted_superprops.hasOwnProperty(o)||this.unpersisted_superprops[o]===a)&&(this.unpersisted_superprops[o]=r)},this))}};_.prototype.unregister=function(e,a){var n=this._run_hook("before_unregister",e,a);n!==null&&(e=n[0],a=n[1],a=_h(a),a.persistent?this.persistence.unregister(e):delete this.unpersisted_superprops[e])};_.prototype._register_single=function(e,a){var n={};n[e]=a,this.register(n)};_.prototype.identify=function(e,a,n,t,i,r,o,s){var l=this._run_hook("before_identify",e);if(l===null)return-1;e=l[0];var d=this.get_distinct_id();if(e&&d!==e){if(typeof e=="string"&&e.indexOf(Ph)===0)return this.report_error("distinct_id cannot have $device: prefix"),-1;this.register({$user_id:e})}if(!this.get_property("$device_id")){var p=d;this.register_once({$had_persisted_distinct_id:!0,$device_id:p},"")}e!==d&&e!==this.get_property(Dc)&&(this.unregister(Dc),this.register({distinct_id:e})),this._flags.identify_called=!0,this.people._flush(a,n,t,i,r,o,s),e!==d&&this.track("$identify",{distinct_id:e,$anon_distinct_id:d},{skip_hooks:!0}),e!==d&&this.flags.fetchFlags()};_.prototype.reset=function(){this.stop_session_recording(),this.persistence.clear(),this._flags.identify_called=!1;var e=k.UUID();this.register_once({distinct_id:Ph+e,$device_id:e},""),this._check_and_start_session_recording()};_.prototype.get_distinct_id=function(){return this.get_property("distinct_id")};_.prototype.alias=function(e,a){if(e===this.get_property(zC))return this.report_error("Attempting to create alias for existing People user - aborting."),-2;var n=this;return k.isUndefined(a)&&(a=this.get_distinct_id()),e!==a?(this._register_single(Dc,e),this.track("$create_alias",{alias:e,distinct_id:a},{skip_hooks:!0},function(){n.identify(e)})):(this.report_error("alias matches current distinct_id - skipping api call."),this.identify(e),-1)};_.prototype.name_tag=function(e){this._register_single("mp_name_tag",e)};_.prototype.set_config=function(e){if(k.isObject(e)){k.extend(this.config,e);var a=e.batch_size;a&&k.each(this.request_batchers,function(n){n.resetBatchSize()}),this.get_config("persistence_name")||(this.config.persistence_name=this.config.cookie_name),this.get_config("disable_persistence")||(this.config.disable_persistence=this.config.disable_cookie),this.persistence&&this.persistence.update_config(this.config),ea.DEBUG=ea.DEBUG||this.get_config("debug"),("autocapture"in e||"record_heatmap_data"in e)&&this.autocapture&&this.autocapture.init(),k.isObject(e.hooks)&&(this.hooks={},k.each(e.hooks,function(n,t){if(k.isFunction(n))this.hooks[t]=[n];else if(k.isArray(n)){this.hooks[t]=[];for(var i=0;i<n.length;i++)k.isFunction(n[i])||ye.critical("Invalid hook added. Hook is not a function"),this.hooks[t].push(n[i])}else ye.critical("Invalid hooks added. Ensure that the hook values passed into config.hooks are functions or arrays of functions.")},this))}};_.prototype.get_config=function(e){return this.config[e]};_.prototype._run_hook=function(e){var a=Yn.call(arguments,1);return k.each(this.hooks[e],function(n){if(a===null)return null;var t=n.apply(this,a);typeof t>"u"?(this.report_error(e+" hook did not return a valid value"),a=null):(k.isArray(t)||(t=[t]),a.splice.apply(a,[0,t.length].concat(t)))},this),a};_.prototype.get_property=function(e){return this.persistence.load_prop([e])};_.prototype.get_api_host=function(e){return this.get_config("api_hosts")[e]||this.get_config("api_host")};_.prototype.toString=function(){var e=this.get_config("name");return e!==ma&&(e=ma+"."+e),e};_.prototype._event_is_disabled=function(e){return k.isBlockedUA(Ua)||this._flags.disable_all_events||k.include(this.__disabled_events,e)};_.prototype._gdpr_init=function(){var e=this.get_config("opt_out_tracking_persistence_type")==="localStorage";e&&k.localStorage.is_supported()&&(!this.has_opted_in_tracking()&&this.has_opted_in_tracking({persistence_type:"cookie"})&&this.opt_in_tracking({enable_persistence:!1}),!this.has_opted_out_tracking()&&this.has_opted_out_tracking({persistence_type:"cookie"})&&this.opt_out_tracking({clear_persistence:!1}),this.clear_opt_in_out_tracking({persistence_type:"cookie",enable_persistence:!1})),this.has_opted_out_tracking()?this._gdpr_update_persistence({clear_persistence:!0}):!this.has_opted_in_tracking()&&(this.get_config("opt_out_tracking_by_default")||k.cookie.get("mp_optout"))&&(k.cookie.remove("mp_optout"),this.opt_out_tracking({clear_persistence:this.get_config("opt_out_persistence_by_default")}))};_.prototype._gdpr_update_persistence=function(e){var a;if(e&&e.clear_persistence)a=!0;else if(e&&e.enable_persistence)a=!1;else return;!this.get_config("disable_persistence")&&this.persistence.disabled!==a&&this.persistence.set_disabled(a),a?(this.stop_batch_senders(),this.stop_session_recording()):this._batchers_were_started&&this.start_batch_senders()};_.prototype._gdpr_call_func=function(e,a){return a=k.extend({track:k.bind(this.track,this),persistence_type:this.get_config("opt_out_tracking_persistence_type"),cookie_prefix:this.get_config("opt_out_tracking_cookie_prefix"),cookie_expiration:this.get_config("cookie_expiration"),cross_site_cookie:this.get_config("cross_site_cookie"),cross_subdomain_cookie:this.get_config("cross_subdomain_cookie"),cookie_domain:this.get_config("cookie_domain"),secure_cookie:this.get_config("secure_cookie"),ignore_dnt:this.get_config("ignore_dnt")},a),k.localStorage.is_supported()||(a.persistence_type="cookie"),e(this.get_config("token"),{track:a.track,trackEventName:a.track_event_name,trackProperties:a.track_properties,persistenceType:a.persistence_type,persistencePrefix:a.cookie_prefix,cookieDomain:a.cookie_domain,cookieExpiration:a.cookie_expiration,crossSiteCookie:a.cross_site_cookie,crossSubdomainCookie:a.cross_subdomain_cookie,secureCookie:a.secure_cookie,ignoreDnt:a.ignore_dnt})};_.prototype.opt_in_tracking=function(e){e=k.extend({enable_persistence:!0},e),this._gdpr_call_func(Gue,e),this._gdpr_update_persistence(e)};_.prototype.opt_out_tracking=function(e){e=k.extend({clear_persistence:!0,delete_user:!0},e),e.delete_user&&this.people&&this.people._identify_called()&&(this.people.delete_user(),this.people.clear_charges()),this._gdpr_call_func(Hue,e),this._gdpr_update_persistence(e)};_.prototype.has_opted_in_tracking=function(e){return this._gdpr_call_func(Yue,e)};_.prototype.has_opted_out_tracking=function(e){return this._gdpr_call_func(QS,e)};_.prototype.clear_opt_in_out_tracking=function(e){e=k.extend({enable_persistence:!0},e),this._gdpr_call_func(Kue,e),this._gdpr_update_persistence(e)};_.prototype.report_error=function(e,a){ye.error.apply(ye.error,arguments);try{!a&&!(e instanceof Error)&&(e=new Error(e)),this.get_config("error_reporter")(e,a)}catch(n){ye.error(n)}};_.prototype.add_hook=function(e,a){this.hooks[e]||(this.hooks[e]=[]),this.hooks[e].push(a)};_.prototype.remove_hook=function(e,a){var n;this.hooks[e]&&(n=this.hooks[e].indexOf(a),n!==-1?this.hooks[e].splice(n,1):ye.log("remove_hook failed. Matching hook was not found"))};_.prototype.init=_.prototype.init;_.prototype.reset=_.prototype.reset;_.prototype.enable=_.prototype.enable;_.prototype.disable=_.prototype.disable;_.prototype.time_event=_.prototype.time_event;_.prototype.track=_.prototype.track;_.prototype.track_links=_.prototype.track_links;_.prototype.track_forms=_.prototype.track_forms;_.prototype.track_pageview=_.prototype.track_pageview;_.prototype.register=_.prototype.register;_.prototype.register_once=_.prototype.register_once;_.prototype.unregister=_.prototype.unregister;_.prototype.identify=_.prototype.identify;_.prototype.alias=_.prototype.alias;_.prototype.name_tag=_.prototype.name_tag;_.prototype.set_config=_.prototype.set_config;_.prototype.get_config=_.prototype.get_config;_.prototype.get_api_host=_.prototype.get_api_host;_.prototype.get_property=_.prototype.get_property;_.prototype.get_distinct_id=_.prototype.get_distinct_id;_.prototype.toString=_.prototype.toString;_.prototype.opt_out_tracking=_.prototype.opt_out_tracking;_.prototype.opt_in_tracking=_.prototype.opt_in_tracking;_.prototype.has_opted_out_tracking=_.prototype.has_opted_out_tracking;_.prototype.has_opted_in_tracking=_.prototype.has_opted_in_tracking;_.prototype.clear_opt_in_out_tracking=_.prototype.clear_opt_in_out_tracking;_.prototype.get_group=_.prototype.get_group;_.prototype.set_group=_.prototype.set_group;_.prototype.add_group=_.prototype.add_group;_.prototype.remove_group=_.prototype.remove_group;_.prototype.add_hook=_.prototype.add_hook;_.prototype.remove_hook=_.prototype.remove_hook;_.prototype.track_with_groups=_.prototype.track_with_groups;_.prototype.start_batch_senders=_.prototype.start_batch_senders;_.prototype.stop_batch_senders=_.prototype.stop_batch_senders;_.prototype.start_session_recording=_.prototype.start_session_recording;_.prototype.stop_session_recording=_.prototype.stop_session_recording;_.prototype.pause_session_recording=_.prototype.pause_session_recording;_.prototype.resume_session_recording=_.prototype.resume_session_recording;_.prototype.get_session_recording_properties=_.prototype.get_session_recording_properties;_.prototype.get_session_replay_url=_.prototype.get_session_replay_url;_.prototype.get_tab_id=_.prototype.get_tab_id;_.prototype.DEFAULT_API_ROUTES=FC;_.prototype.__get_recorder=_.prototype.__get_recorder;_.prototype.__get_recording_init_promise=_.prototype.__get_recording_init_promise;Te.prototype.properties=Te.prototype.properties;Te.prototype.update_search_keyword=Te.prototype.update_search_keyword;Te.prototype.update_referrer_info=Te.prototype.update_referrer_info;Te.prototype.get_cross_subdomain=Te.prototype.get_cross_subdomain;Te.prototype.clear=Te.prototype.clear;var rr={},pme=function(){k.each(rr,function(e,a){a!==ma&&(Ut[a]=e)}),Ut._=k},mme=function(){Ut.init=function(e,a,n){if(n)return Ut[n]||(Ut[n]=rr[n]=Dm(e,a,n),Ut[n]._loaded()),Ut[n];var t=Ut;rr[ma]?t=rr[ma]:e&&(t=Dm(e,a,ma),t._loaded(),rr[ma]=t),Ut=t,Tc===ome&&(z[ma]=Ut),pme()}},gme=function(){function e(){e.done||(e.done=!0,LC=!0,NC=!1,k.each(rr,function(t){t._dom_loaded()}))}function a(){try{be.documentElement.doScroll("left")}catch{setTimeout(a,1);return}e()}if(be.addEventListener)be.readyState==="complete"?e():be.addEventListener("DOMContentLoaded",e,!1);else if(be.attachEvent){be.attachEvent("onreadystatechange",e);var n=!1;try{n=z.frameElement===null}catch{}be.documentElement.doScroll&&n&&a()}k.register_event(z,"load",e,!0)};function hme(e){return Am=e,Tc=Sm,Ut=new _,mme(),Ut.init(),gme(),Ut}function fme(e,a){a()}var Ct=hme(fme);function vme(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var xu,Xb;function bme(){if(Xb)return xu;Xb=1;const e=2147483647,a=36,n=1,t=26,i=38,r=700,o=72,s=128,l="-",d=/^xn--/,p=/[^\0-\x7F]/,u=/[\x2E\u3002\uFF0E\uFF61]/g,g={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},b=a-n,v=Math.floor,A=String.fromCharCode;function f(R){throw new RangeError(g[R])}function S(R,Y){const $=[];let F=R.length;for(;F--;)$[F]=Y(R[F]);return $}function C(R,Y){const $=R.split("@");let F="";$.length>1&&(F=$[0]+"@",R=$[1]),R=R.replace(u,".");const j=R.split("."),H=S(j,Y).join(".");return F+H}function T(R){const Y=[];let $=0;const F=R.length;for(;$<F;){const j=R.charCodeAt($++);if(j>=55296&&j<=56319&&$<F){const H=R.charCodeAt($++);(H&64512)==56320?Y.push(((j&1023)<<10)+(H&1023)+65536):(Y.push(j),$--)}else Y.push(j)}return Y}const E=R=>String.fromCodePoint(...R),P=function(R){return R>=48&&R<58?26+(R-48):R>=65&&R<91?R-65:R>=97&&R<123?R-97:a},I=function(R,Y){return R+22+75*(R<26)-((Y!=0)<<5)},L=function(R,Y,$){let F=0;for(R=$?v(R/r):R>>1,R+=v(R/Y);R>b*t>>1;F+=a)R=v(R/b);return v(F+(b+1)*R/(R+i))},N=function(R){const Y=[],$=R.length;let F=0,j=s,H=o,X=R.lastIndexOf(l);X<0&&(X=0);for(let ie=0;ie<X;++ie)R.charCodeAt(ie)>=128&&f("not-basic"),Y.push(R.charCodeAt(ie));for(let ie=X>0?X+1:0;ie<$;){const te=F;for(let ae=1,Me=a;;Me+=a){ie>=$&&f("invalid-input");const Ne=P(R.charCodeAt(ie++));Ne>=a&&f("invalid-input"),Ne>v((e-F)/ae)&&f("overflow"),F+=Ne*ae;const re=Me<=H?n:Me>=H+t?t:Me-H;if(Ne<re)break;const de=a-re;ae>v(e/de)&&f("overflow"),ae*=de}const oe=Y.length+1;H=L(F-te,oe,te==0),v(F/oe)>e-j&&f("overflow"),j+=v(F/oe),F%=oe,Y.splice(F++,0,j)}return String.fromCodePoint(...Y)},Z=function(R){const Y=[];R=T(R);const $=R.length;let F=s,j=0,H=o;for(const te of R)te<128&&Y.push(A(te));const X=Y.length;let ie=X;for(X&&Y.push(l);ie<$;){let te=e;for(const ae of R)ae>=F&&ae<te&&(te=ae);const oe=ie+1;te-F>v((e-j)/oe)&&f("overflow"),j+=(te-F)*oe,F=te;for(const ae of R)if(ae<F&&++j>e&&f("overflow"),ae===F){let Me=j;for(let Ne=a;;Ne+=a){const re=Ne<=H?n:Ne>=H+t?t:Ne-H;if(Me<re)break;const de=Me-re,q=a-re;Y.push(A(I(re+de%q,0))),Me=v(de/q)}Y.push(A(I(Me,0))),H=L(j,oe,ie===X),j=0,++ie}++j,++F}return Y.join("")};return xu={version:"2.3.1",ucs2:{decode:T,encode:E},decode:N,encode:Z,toASCII:function(R){return C(R,function(Y){return p.test(Y)?"xn--"+Z(Y):Y})},toUnicode:function(R){return C(R,function(Y){return d.test(Y)?N(Y.slice(4).toLowerCase()):Y})}},xu}var yme=bme();const Vo=vme(yme),kme=["ac","com.ac","edu.ac","gov.ac","mil.ac","net.ac","org.ac","ad","ae","ac.ae","co.ae","gov.ae","mil.ae","net.ae","org.ae","sch.ae","aero","airline.aero","airport.aero","accident-investigation.aero","accident-prevention.aero","aerobatic.aero","aeroclub.aero","aerodrome.aero","agents.aero","air-surveillance.aero","air-traffic-control.aero","aircraft.aero","airtraffic.aero","ambulance.aero","association.aero","author.aero","ballooning.aero","broker.aero","caa.aero","cargo.aero","catering.aero","certification.aero","championship.aero","charter.aero","civilaviation.aero","club.aero","conference.aero","consultant.aero","consulting.aero","control.aero","council.aero","crew.aero","design.aero","dgca.aero","educator.aero","emergency.aero","engine.aero","engineer.aero","entertainment.aero","equipment.aero","exchange.aero","express.aero","federation.aero","flight.aero","freight.aero","fuel.aero","gliding.aero","government.aero","groundhandling.aero","group.aero","hanggliding.aero","homebuilt.aero","insurance.aero","journal.aero","journalist.aero","leasing.aero","logistics.aero","magazine.aero","maintenance.aero","marketplace.aero","media.aero","microlight.aero","modelling.aero","navigation.aero","parachuting.aero","paragliding.aero","passenger-association.aero","pilot.aero","press.aero","production.aero","recreation.aero","repbody.aero","res.aero","research.aero","rotorcraft.aero","safety.aero","scientist.aero","services.aero","show.aero","skydiving.aero","software.aero","student.aero","taxi.aero","trader.aero","trading.aero","trainer.aero","union.aero","workinggroup.aero","works.aero","af","com.af","edu.af","gov.af","net.af","org.af","ag","co.ag","com.ag","net.ag","nom.ag","org.ag","ai","com.ai","net.ai","off.ai","org.ai","al","com.al","edu.al","gov.al","mil.al","net.al","org.al","am","co.am","com.am","commune.am","net.am","org.am","ao","co.ao","ed.ao","edu.ao","gov.ao","gv.ao","it.ao","og.ao","org.ao","pb.ao","aq","ar","bet.ar","com.ar","coop.ar","edu.ar","gob.ar","gov.ar","int.ar","mil.ar","musica.ar","mutual.ar","net.ar","org.ar","senasa.ar","tur.ar","arpa","e164.arpa","home.arpa","in-addr.arpa","ip6.arpa","iris.arpa","uri.arpa","urn.arpa","as","gov.as","asia","at","ac.at","sth.ac.at","co.at","gv.at","or.at","au","asn.au","com.au","edu.au","gov.au","id.au","net.au","org.au","conf.au","oz.au","act.au","nsw.au","nt.au","qld.au","sa.au","tas.au","vic.au","wa.au","act.edu.au","catholic.edu.au","nsw.edu.au","nt.edu.au","qld.edu.au","sa.edu.au","tas.edu.au","vic.edu.au","wa.edu.au","qld.gov.au","sa.gov.au","tas.gov.au","vic.gov.au","wa.gov.au","schools.nsw.edu.au","aw","com.aw","ax","az","biz.az","com.az","edu.az","gov.az","info.az","int.az","mil.az","name.az","net.az","org.az","pp.az","pro.az","ba","com.ba","edu.ba","gov.ba","mil.ba","net.ba","org.ba","bb","biz.bb","co.bb","com.bb","edu.bb","gov.bb","info.bb","net.bb","org.bb","store.bb","tv.bb","*.bd","be","ac.be","bf","gov.bf","bg","0.bg","1.bg","2.bg","3.bg","4.bg","5.bg","6.bg","7.bg","8.bg","9.bg","a.bg","b.bg","c.bg","d.bg","e.bg","f.bg","g.bg","h.bg","i.bg","j.bg","k.bg","l.bg","m.bg","n.bg","o.bg","p.bg","q.bg","r.bg","s.bg","t.bg","u.bg","v.bg","w.bg","x.bg","y.bg","z.bg","bh","com.bh","edu.bh","gov.bh","net.bh","org.bh","bi","co.bi","com.bi","edu.bi","or.bi","org.bi","biz","bj","africa.bj","agro.bj","architectes.bj","assur.bj","avocats.bj","co.bj","com.bj","eco.bj","econo.bj","edu.bj","info.bj","loisirs.bj","money.bj","net.bj","org.bj","ote.bj","restaurant.bj","resto.bj","tourism.bj","univ.bj","bm","com.bm","edu.bm","gov.bm","net.bm","org.bm","bn","com.bn","edu.bn","gov.bn","net.bn","org.bn","bo","com.bo","edu.bo","gob.bo","int.bo","mil.bo","net.bo","org.bo","tv.bo","web.bo","academia.bo","agro.bo","arte.bo","blog.bo","bolivia.bo","ciencia.bo","cooperativa.bo","democracia.bo","deporte.bo","ecologia.bo","economia.bo","empresa.bo","indigena.bo","industria.bo","info.bo","medicina.bo","movimiento.bo","musica.bo","natural.bo","nombre.bo","noticias.bo","patria.bo","plurinacional.bo","politica.bo","profesional.bo","pueblo.bo","revista.bo","salud.bo","tecnologia.bo","tksat.bo","transporte.bo","wiki.bo","br","9guacu.br","abc.br","adm.br","adv.br","agr.br","aju.br","am.br","anani.br","aparecida.br","app.br","arq.br","art.br","ato.br","b.br","barueri.br","belem.br","bet.br","bhz.br","bib.br","bio.br","blog.br","bmd.br","boavista.br","bsb.br","campinagrande.br","campinas.br","caxias.br","cim.br","cng.br","cnt.br","com.br","contagem.br","coop.br","coz.br","cri.br","cuiaba.br","curitiba.br","def.br","des.br","det.br","dev.br","ecn.br","eco.br","edu.br","emp.br","enf.br","eng.br","esp.br","etc.br","eti.br","far.br","feira.br","flog.br","floripa.br","fm.br","fnd.br","fortal.br","fot.br","foz.br","fst.br","g12.br","geo.br","ggf.br","goiania.br","gov.br","ac.gov.br","al.gov.br","am.gov.br","ap.gov.br","ba.gov.br","ce.gov.br","df.gov.br","es.gov.br","go.gov.br","ma.gov.br","mg.gov.br","ms.gov.br","mt.gov.br","pa.gov.br","pb.gov.br","pe.gov.br","pi.gov.br","pr.gov.br","rj.gov.br","rn.gov.br","ro.gov.br","rr.gov.br","rs.gov.br","sc.gov.br","se.gov.br","sp.gov.br","to.gov.br","gru.br","imb.br","ind.br","inf.br","jab.br","jampa.br","jdf.br","joinville.br","jor.br","jus.br","leg.br","leilao.br","lel.br","log.br","londrina.br","macapa.br","maceio.br","manaus.br","maringa.br","mat.br","med.br","mil.br","morena.br","mp.br","mus.br","natal.br","net.br","niteroi.br","*.nom.br","not.br","ntr.br","odo.br","ong.br","org.br","osasco.br","palmas.br","poa.br","ppg.br","pro.br","psc.br","psi.br","pvh.br","qsl.br","radio.br","rec.br","recife.br","rep.br","ribeirao.br","rio.br","riobranco.br","riopreto.br","salvador.br","sampa.br","santamaria.br","santoandre.br","saobernardo.br","saogonca.br","seg.br","sjc.br","slg.br","slz.br","sorocaba.br","srv.br","taxi.br","tc.br","tec.br","teo.br","the.br","tmp.br","trd.br","tur.br","tv.br","udi.br","vet.br","vix.br","vlog.br","wiki.br","zlg.br","bs","com.bs","edu.bs","gov.bs","net.bs","org.bs","bt","com.bt","edu.bt","gov.bt","net.bt","org.bt","bv","bw","co.bw","org.bw","by","gov.by","mil.by","com.by","of.by","bz","co.bz","com.bz","edu.bz","gov.bz","net.bz","org.bz","ca","ab.ca","bc.ca","mb.ca","nb.ca","nf.ca","nl.ca","ns.ca","nt.ca","nu.ca","on.ca","pe.ca","qc.ca","sk.ca","yk.ca","gc.ca","cat","cc","cd","gov.cd","cf","cg","ch","ci","ac.ci","aéroport.ci","asso.ci","co.ci","com.ci","ed.ci","edu.ci","go.ci","gouv.ci","int.ci","net.ci","or.ci","org.ci","*.ck","!www.ck","cl","co.cl","gob.cl","gov.cl","mil.cl","cm","co.cm","com.cm","gov.cm","net.cm","cn","ac.cn","com.cn","edu.cn","gov.cn","mil.cn","net.cn","org.cn","公司.cn","網絡.cn","网络.cn","ah.cn","bj.cn","cq.cn","fj.cn","gd.cn","gs.cn","gx.cn","gz.cn","ha.cn","hb.cn","he.cn","hi.cn","hk.cn","hl.cn","hn.cn","jl.cn","js.cn","jx.cn","ln.cn","mo.cn","nm.cn","nx.cn","qh.cn","sc.cn","sd.cn","sh.cn","sn.cn","sx.cn","tj.cn","tw.cn","xj.cn","xz.cn","yn.cn","zj.cn","co","com.co","edu.co","gov.co","mil.co","net.co","nom.co","org.co","com","coop","cr","ac.cr","co.cr","ed.cr","fi.cr","go.cr","or.cr","sa.cr","cu","com.cu","edu.cu","gob.cu","inf.cu","nat.cu","net.cu","org.cu","cv","com.cv","edu.cv","id.cv","int.cv","net.cv","nome.cv","org.cv","publ.cv","cw","com.cw","edu.cw","net.cw","org.cw","cx","gov.cx","cy","ac.cy","biz.cy","com.cy","ekloges.cy","gov.cy","ltd.cy","mil.cy","net.cy","org.cy","press.cy","pro.cy","tm.cy","cz","de","dj","dk","dm","co.dm","com.dm","edu.dm","gov.dm","net.dm","org.dm","do","art.do","com.do","edu.do","gob.do","gov.do","mil.do","net.do","org.do","sld.do","web.do","dz","art.dz","asso.dz","com.dz","edu.dz","gov.dz","net.dz","org.dz","pol.dz","soc.dz","tm.dz","ec","com.ec","edu.ec","fin.ec","gob.ec","gov.ec","info.ec","k12.ec","med.ec","mil.ec","net.ec","org.ec","pro.ec","edu","ee","aip.ee","com.ee","edu.ee","fie.ee","gov.ee","lib.ee","med.ee","org.ee","pri.ee","riik.ee","eg","ac.eg","com.eg","edu.eg","eun.eg","gov.eg","info.eg","me.eg","mil.eg","name.eg","net.eg","org.eg","sci.eg","sport.eg","tv.eg","*.er","es","com.es","edu.es","gob.es","nom.es","org.es","et","biz.et","com.et","edu.et","gov.et","info.et","name.et","net.et","org.et","eu","fi","aland.fi","fj","ac.fj","biz.fj","com.fj","gov.fj","info.fj","mil.fj","name.fj","net.fj","org.fj","pro.fj","*.fk","fm","com.fm","edu.fm","net.fm","org.fm","fo","fr","asso.fr","com.fr","gouv.fr","nom.fr","prd.fr","tm.fr","avoues.fr","cci.fr","greta.fr","huissier-justice.fr","ga","gb","gd","edu.gd","gov.gd","ge","com.ge","edu.ge","gov.ge","net.ge","org.ge","pvt.ge","school.ge","gf","gg","co.gg","net.gg","org.gg","gh","com.gh","edu.gh","gov.gh","mil.gh","org.gh","gi","com.gi","edu.gi","gov.gi","ltd.gi","mod.gi","org.gi","gl","co.gl","com.gl","edu.gl","net.gl","org.gl","gm","gn","ac.gn","com.gn","edu.gn","gov.gn","net.gn","org.gn","gov","gp","asso.gp","com.gp","edu.gp","mobi.gp","net.gp","org.gp","gq","gr","com.gr","edu.gr","gov.gr","net.gr","org.gr","gs","gt","com.gt","edu.gt","gob.gt","ind.gt","mil.gt","net.gt","org.gt","gu","com.gu","edu.gu","gov.gu","guam.gu","info.gu","net.gu","org.gu","web.gu","gw","gy","co.gy","com.gy","edu.gy","gov.gy","net.gy","org.gy","hk","com.hk","edu.hk","gov.hk","idv.hk","net.hk","org.hk","个人.hk","個人.hk","公司.hk","政府.hk","敎育.hk","教育.hk","箇人.hk","組織.hk","組织.hk","網絡.hk","網络.hk","组織.hk","组织.hk","网絡.hk","网络.hk","hm","hn","com.hn","edu.hn","gob.hn","mil.hn","net.hn","org.hn","hr","com.hr","from.hr","iz.hr","name.hr","ht","adult.ht","art.ht","asso.ht","com.ht","coop.ht","edu.ht","firm.ht","gouv.ht","info.ht","med.ht","net.ht","org.ht","perso.ht","pol.ht","pro.ht","rel.ht","shop.ht","hu","2000.hu","agrar.hu","bolt.hu","casino.hu","city.hu","co.hu","erotica.hu","erotika.hu","film.hu","forum.hu","games.hu","hotel.hu","info.hu","ingatlan.hu","jogasz.hu","konyvelo.hu","lakas.hu","media.hu","news.hu","org.hu","priv.hu","reklam.hu","sex.hu","shop.hu","sport.hu","suli.hu","szex.hu","tm.hu","tozsde.hu","utazas.hu","video.hu","id","ac.id","biz.id","co.id","desa.id","go.id","mil.id","my.id","net.id","or.id","ponpes.id","sch.id","web.id","ie","gov.ie","il","ac.il","co.il","gov.il","idf.il","k12.il","muni.il","net.il","org.il","ישראל","אקדמיה.ישראל","ישוב.ישראל","צהל.ישראל","ממשל.ישראל","im","ac.im","co.im","ltd.co.im","plc.co.im","com.im","net.im","org.im","tt.im","tv.im","in","5g.in","6g.in","ac.in","ai.in","am.in","bihar.in","biz.in","business.in","ca.in","cn.in","co.in","com.in","coop.in","cs.in","delhi.in","dr.in","edu.in","er.in","firm.in","gen.in","gov.in","gujarat.in","ind.in","info.in","int.in","internet.in","io.in","me.in","mil.in","net.in","nic.in","org.in","pg.in","post.in","pro.in","res.in","travel.in","tv.in","uk.in","up.in","us.in","info","int","eu.int","io","co.io","com.io","edu.io","gov.io","mil.io","net.io","nom.io","org.io","iq","com.iq","edu.iq","gov.iq","mil.iq","net.iq","org.iq","ir","ac.ir","co.ir","gov.ir","id.ir","net.ir","org.ir","sch.ir","ایران.ir","ايران.ir","is","it","edu.it","gov.it","abr.it","abruzzo.it","aosta-valley.it","aostavalley.it","bas.it","basilicata.it","cal.it","calabria.it","cam.it","campania.it","emilia-romagna.it","emiliaromagna.it","emr.it","friuli-v-giulia.it","friuli-ve-giulia.it","friuli-vegiulia.it","friuli-venezia-giulia.it","friuli-veneziagiulia.it","friuli-vgiulia.it","friuliv-giulia.it","friulive-giulia.it","friulivegiulia.it","friulivenezia-giulia.it","friuliveneziagiulia.it","friulivgiulia.it","fvg.it","laz.it","lazio.it","lig.it","liguria.it","lom.it","lombardia.it","lombardy.it","lucania.it","mar.it","marche.it","mol.it","molise.it","piedmont.it","piemonte.it","pmn.it","pug.it","puglia.it","sar.it","sardegna.it","sardinia.it","sic.it","sicilia.it","sicily.it","taa.it","tos.it","toscana.it","trentin-sud-tirol.it","trentin-süd-tirol.it","trentin-sudtirol.it","trentin-südtirol.it","trentin-sued-tirol.it","trentin-suedtirol.it","trentino.it","trentino-a-adige.it","trentino-aadige.it","trentino-alto-adige.it","trentino-altoadige.it","trentino-s-tirol.it","trentino-stirol.it","trentino-sud-tirol.it","trentino-süd-tirol.it","trentino-sudtirol.it","trentino-südtirol.it","trentino-sued-tirol.it","trentino-suedtirol.it","trentinoa-adige.it","trentinoaadige.it","trentinoalto-adige.it","trentinoaltoadige.it","trentinos-tirol.it","trentinostirol.it","trentinosud-tirol.it","trentinosüd-tirol.it","trentinosudtirol.it","trentinosüdtirol.it","trentinosued-tirol.it","trentinosuedtirol.it","trentinsud-tirol.it","trentinsüd-tirol.it","trentinsudtirol.it","trentinsüdtirol.it","trentinsued-tirol.it","trentinsuedtirol.it","tuscany.it","umb.it","umbria.it","val-d-aosta.it","val-daosta.it","vald-aosta.it","valdaosta.it","valle-aosta.it","valle-d-aosta.it","valle-daosta.it","valleaosta.it","valled-aosta.it","valledaosta.it","vallee-aoste.it","vallée-aoste.it","vallee-d-aoste.it","vallée-d-aoste.it","valleeaoste.it","valléeaoste.it","valleedaoste.it","valléedaoste.it","vao.it","vda.it","ven.it","veneto.it","ag.it","agrigento.it","al.it","alessandria.it","alto-adige.it","altoadige.it","an.it","ancona.it","andria-barletta-trani.it","andria-trani-barletta.it","andriabarlettatrani.it","andriatranibarletta.it","ao.it","aosta.it","aoste.it","ap.it","aq.it","aquila.it","ar.it","arezzo.it","ascoli-piceno.it","ascolipiceno.it","asti.it","at.it","av.it","avellino.it","ba.it","balsan.it","balsan-sudtirol.it","balsan-südtirol.it","balsan-suedtirol.it","bari.it","barletta-trani-andria.it","barlettatraniandria.it","belluno.it","benevento.it","bergamo.it","bg.it","bi.it","biella.it","bl.it","bn.it","bo.it","bologna.it","bolzano.it","bolzano-altoadige.it","bozen.it","bozen-sudtirol.it","bozen-südtirol.it","bozen-suedtirol.it","br.it","brescia.it","brindisi.it","bs.it","bt.it","bulsan.it","bulsan-sudtirol.it","bulsan-südtirol.it","bulsan-suedtirol.it","bz.it","ca.it","cagliari.it","caltanissetta.it","campidano-medio.it","campidanomedio.it","campobasso.it","carbonia-iglesias.it","carboniaiglesias.it","carrara-massa.it","carraramassa.it","caserta.it","catania.it","catanzaro.it","cb.it","ce.it","cesena-forli.it","cesena-forlì.it","cesenaforli.it","cesenaforlì.it","ch.it","chieti.it","ci.it","cl.it","cn.it","co.it","como.it","cosenza.it","cr.it","cremona.it","crotone.it","cs.it","ct.it","cuneo.it","cz.it","dell-ogliastra.it","dellogliastra.it","en.it","enna.it","fc.it","fe.it","fermo.it","ferrara.it","fg.it","fi.it","firenze.it","florence.it","fm.it","foggia.it","forli-cesena.it","forlì-cesena.it","forlicesena.it","forlìcesena.it","fr.it","frosinone.it","ge.it","genoa.it","genova.it","go.it","gorizia.it","gr.it","grosseto.it","iglesias-carbonia.it","iglesiascarbonia.it","im.it","imperia.it","is.it","isernia.it","kr.it","la-spezia.it","laquila.it","laspezia.it","latina.it","lc.it","le.it","lecce.it","lecco.it","li.it","livorno.it","lo.it","lodi.it","lt.it","lu.it","lucca.it","macerata.it","mantova.it","massa-carrara.it","massacarrara.it","matera.it","mb.it","mc.it","me.it","medio-campidano.it","mediocampidano.it","messina.it","mi.it","milan.it","milano.it","mn.it","mo.it","modena.it","monza.it","monza-brianza.it","monza-e-della-brianza.it","monzabrianza.it","monzaebrianza.it","monzaedellabrianza.it","ms.it","mt.it","na.it","naples.it","napoli.it","no.it","novara.it","nu.it","nuoro.it","og.it","ogliastra.it","olbia-tempio.it","olbiatempio.it","or.it","oristano.it","ot.it","pa.it","padova.it","padua.it","palermo.it","parma.it","pavia.it","pc.it","pd.it","pe.it","perugia.it","pesaro-urbino.it","pesarourbino.it","pescara.it","pg.it","pi.it","piacenza.it","pisa.it","pistoia.it","pn.it","po.it","pordenone.it","potenza.it","pr.it","prato.it","pt.it","pu.it","pv.it","pz.it","ra.it","ragusa.it","ravenna.it","rc.it","re.it","reggio-calabria.it","reggio-emilia.it","reggiocalabria.it","reggioemilia.it","rg.it","ri.it","rieti.it","rimini.it","rm.it","rn.it","ro.it","roma.it","rome.it","rovigo.it","sa.it","salerno.it","sassari.it","savona.it","si.it","siena.it","siracusa.it","so.it","sondrio.it","sp.it","sr.it","ss.it","südtirol.it","suedtirol.it","sv.it","ta.it","taranto.it","te.it","tempio-olbia.it","tempioolbia.it","teramo.it","terni.it","tn.it","to.it","torino.it","tp.it","tr.it","trani-andria-barletta.it","trani-barletta-andria.it","traniandriabarletta.it","tranibarlettaandria.it","trapani.it","trento.it","treviso.it","trieste.it","ts.it","turin.it","tv.it","ud.it","udine.it","urbino-pesaro.it","urbinopesaro.it","va.it","varese.it","vb.it","vc.it","ve.it","venezia.it","venice.it","verbania.it","vercelli.it","verona.it","vi.it","vibo-valentia.it","vibovalentia.it","vicenza.it","viterbo.it","vr.it","vs.it","vt.it","vv.it","je","co.je","net.je","org.je","*.jm","jo","agri.jo","ai.jo","com.jo","edu.jo","eng.jo","fm.jo","gov.jo","mil.jo","net.jo","org.jo","per.jo","phd.jo","sch.jo","tv.jo","jobs","jp","ac.jp","ad.jp","co.jp","ed.jp","go.jp","gr.jp","lg.jp","ne.jp","or.jp","aichi.jp","akita.jp","aomori.jp","chiba.jp","ehime.jp","fukui.jp","fukuoka.jp","fukushima.jp","gifu.jp","gunma.jp","hiroshima.jp","hokkaido.jp","hyogo.jp","ibaraki.jp","ishikawa.jp","iwate.jp","kagawa.jp","kagoshima.jp","kanagawa.jp","kochi.jp","kumamoto.jp","kyoto.jp","mie.jp","miyagi.jp","miyazaki.jp","nagano.jp","nagasaki.jp","nara.jp","niigata.jp","oita.jp","okayama.jp","okinawa.jp","osaka.jp","saga.jp","saitama.jp","shiga.jp","shimane.jp","shizuoka.jp","tochigi.jp","tokushima.jp","tokyo.jp","tottori.jp","toyama.jp","wakayama.jp","yamagata.jp","yamaguchi.jp","yamanashi.jp","三重.jp","京都.jp","佐賀.jp","兵庫.jp","北海道.jp","千葉.jp","和歌山.jp","埼玉.jp","大分.jp","大阪.jp","奈良.jp","宮城.jp","宮崎.jp","富山.jp","山口.jp","山形.jp","山梨.jp","岐阜.jp","岡山.jp","岩手.jp","島根.jp","広島.jp","徳島.jp","愛媛.jp","愛知.jp","新潟.jp","東京.jp","栃木.jp","沖縄.jp","滋賀.jp","熊本.jp","石川.jp","神奈川.jp","福井.jp","福岡.jp","福島.jp","秋田.jp","群馬.jp","茨城.jp","長崎.jp","長野.jp","青森.jp","静岡.jp","香川.jp","高知.jp","鳥取.jp","鹿児島.jp","*.kawasaki.jp","!city.kawasaki.jp","*.kitakyushu.jp","!city.kitakyushu.jp","*.kobe.jp","!city.kobe.jp","*.nagoya.jp","!city.nagoya.jp","*.sapporo.jp","!city.sapporo.jp","*.sendai.jp","!city.sendai.jp","*.yokohama.jp","!city.yokohama.jp","aisai.aichi.jp","ama.aichi.jp","anjo.aichi.jp","asuke.aichi.jp","chiryu.aichi.jp","chita.aichi.jp","fuso.aichi.jp","gamagori.aichi.jp","handa.aichi.jp","hazu.aichi.jp","hekinan.aichi.jp","higashiura.aichi.jp","ichinomiya.aichi.jp","inazawa.aichi.jp","inuyama.aichi.jp","isshiki.aichi.jp","iwakura.aichi.jp","kanie.aichi.jp","kariya.aichi.jp","kasugai.aichi.jp","kira.aichi.jp","kiyosu.aichi.jp","komaki.aichi.jp","konan.aichi.jp","kota.aichi.jp","mihama.aichi.jp","miyoshi.aichi.jp","nishio.aichi.jp","nisshin.aichi.jp","obu.aichi.jp","oguchi.aichi.jp","oharu.aichi.jp","okazaki.aichi.jp","owariasahi.aichi.jp","seto.aichi.jp","shikatsu.aichi.jp","shinshiro.aichi.jp","shitara.aichi.jp","tahara.aichi.jp","takahama.aichi.jp","tobishima.aichi.jp","toei.aichi.jp","togo.aichi.jp","tokai.aichi.jp","tokoname.aichi.jp","toyoake.aichi.jp","toyohashi.aichi.jp","toyokawa.aichi.jp","toyone.aichi.jp","toyota.aichi.jp","tsushima.aichi.jp","yatomi.aichi.jp","akita.akita.jp","daisen.akita.jp","fujisato.akita.jp","gojome.akita.jp","hachirogata.akita.jp","happou.akita.jp","higashinaruse.akita.jp","honjo.akita.jp","honjyo.akita.jp","ikawa.akita.jp","kamikoani.akita.jp","kamioka.akita.jp","katagami.akita.jp","kazuno.akita.jp","kitaakita.akita.jp","kosaka.akita.jp","kyowa.akita.jp","misato.akita.jp","mitane.akita.jp","moriyoshi.akita.jp","nikaho.akita.jp","noshiro.akita.jp","odate.akita.jp","oga.akita.jp","ogata.akita.jp","semboku.akita.jp","yokote.akita.jp","yurihonjo.akita.jp","aomori.aomori.jp","gonohe.aomori.jp","hachinohe.aomori.jp","hashikami.aomori.jp","hiranai.aomori.jp","hirosaki.aomori.jp","itayanagi.aomori.jp","kuroishi.aomori.jp","misawa.aomori.jp","mutsu.aomori.jp","nakadomari.aomori.jp","noheji.aomori.jp","oirase.aomori.jp","owani.aomori.jp","rokunohe.aomori.jp","sannohe.aomori.jp","shichinohe.aomori.jp","shingo.aomori.jp","takko.aomori.jp","towada.aomori.jp","tsugaru.aomori.jp","tsuruta.aomori.jp","abiko.chiba.jp","asahi.chiba.jp","chonan.chiba.jp","chosei.chiba.jp","choshi.chiba.jp","chuo.chiba.jp","funabashi.chiba.jp","futtsu.chiba.jp","hanamigawa.chiba.jp","ichihara.chiba.jp","ichikawa.chiba.jp","ichinomiya.chiba.jp","inzai.chiba.jp","isumi.chiba.jp","kamagaya.chiba.jp","kamogawa.chiba.jp","kashiwa.chiba.jp","katori.chiba.jp","katsuura.chiba.jp","kimitsu.chiba.jp","kisarazu.chiba.jp","kozaki.chiba.jp","kujukuri.chiba.jp","kyonan.chiba.jp","matsudo.chiba.jp","midori.chiba.jp","mihama.chiba.jp","minamiboso.chiba.jp","mobara.chiba.jp","mutsuzawa.chiba.jp","nagara.chiba.jp","nagareyama.chiba.jp","narashino.chiba.jp","narita.chiba.jp","noda.chiba.jp","oamishirasato.chiba.jp","omigawa.chiba.jp","onjuku.chiba.jp","otaki.chiba.jp","sakae.chiba.jp","sakura.chiba.jp","shimofusa.chiba.jp","shirako.chiba.jp","shiroi.chiba.jp","shisui.chiba.jp","sodegaura.chiba.jp","sosa.chiba.jp","tako.chiba.jp","tateyama.chiba.jp","togane.chiba.jp","tohnosho.chiba.jp","tomisato.chiba.jp","urayasu.chiba.jp","yachimata.chiba.jp","yachiyo.chiba.jp","yokaichiba.chiba.jp","yokoshibahikari.chiba.jp","yotsukaido.chiba.jp","ainan.ehime.jp","honai.ehime.jp","ikata.ehime.jp","imabari.ehime.jp","iyo.ehime.jp","kamijima.ehime.jp","kihoku.ehime.jp","kumakogen.ehime.jp","masaki.ehime.jp","matsuno.ehime.jp","matsuyama.ehime.jp","namikata.ehime.jp","niihama.ehime.jp","ozu.ehime.jp","saijo.ehime.jp","seiyo.ehime.jp","shikokuchuo.ehime.jp","tobe.ehime.jp","toon.ehime.jp","uchiko.ehime.jp","uwajima.ehime.jp","yawatahama.ehime.jp","echizen.fukui.jp","eiheiji.fukui.jp","fukui.fukui.jp","ikeda.fukui.jp","katsuyama.fukui.jp","mihama.fukui.jp","minamiechizen.fukui.jp","obama.fukui.jp","ohi.fukui.jp","ono.fukui.jp","sabae.fukui.jp","sakai.fukui.jp","takahama.fukui.jp","tsuruga.fukui.jp","wakasa.fukui.jp","ashiya.fukuoka.jp","buzen.fukuoka.jp","chikugo.fukuoka.jp","chikuho.fukuoka.jp","chikujo.fukuoka.jp","chikushino.fukuoka.jp","chikuzen.fukuoka.jp","chuo.fukuoka.jp","dazaifu.fukuoka.jp","fukuchi.fukuoka.jp","hakata.fukuoka.jp","higashi.fukuoka.jp","hirokawa.fukuoka.jp","hisayama.fukuoka.jp","iizuka.fukuoka.jp","inatsuki.fukuoka.jp","kaho.fukuoka.jp","kasuga.fukuoka.jp","kasuya.fukuoka.jp","kawara.fukuoka.jp","keisen.fukuoka.jp","koga.fukuoka.jp","kurate.fukuoka.jp","kurogi.fukuoka.jp","kurume.fukuoka.jp","minami.fukuoka.jp","miyako.fukuoka.jp","miyama.fukuoka.jp","miyawaka.fukuoka.jp","mizumaki.fukuoka.jp","munakata.fukuoka.jp","nakagawa.fukuoka.jp","nakama.fukuoka.jp","nishi.fukuoka.jp","nogata.fukuoka.jp","ogori.fukuoka.jp","okagaki.fukuoka.jp","okawa.fukuoka.jp","oki.fukuoka.jp","omuta.fukuoka.jp","onga.fukuoka.jp","onojo.fukuoka.jp","oto.fukuoka.jp","saigawa.fukuoka.jp","sasaguri.fukuoka.jp","shingu.fukuoka.jp","shinyoshitomi.fukuoka.jp","shonai.fukuoka.jp","soeda.fukuoka.jp","sue.fukuoka.jp","tachiarai.fukuoka.jp","tagawa.fukuoka.jp","takata.fukuoka.jp","toho.fukuoka.jp","toyotsu.fukuoka.jp","tsuiki.fukuoka.jp","ukiha.fukuoka.jp","umi.fukuoka.jp","usui.fukuoka.jp","yamada.fukuoka.jp","yame.fukuoka.jp","yanagawa.fukuoka.jp","yukuhashi.fukuoka.jp","aizubange.fukushima.jp","aizumisato.fukushima.jp","aizuwakamatsu.fukushima.jp","asakawa.fukushima.jp","bandai.fukushima.jp","date.fukushima.jp","fukushima.fukushima.jp","furudono.fukushima.jp","futaba.fukushima.jp","hanawa.fukushima.jp","higashi.fukushima.jp","hirata.fukushima.jp","hirono.fukushima.jp","iitate.fukushima.jp","inawashiro.fukushima.jp","ishikawa.fukushima.jp","iwaki.fukushima.jp","izumizaki.fukushima.jp","kagamiishi.fukushima.jp","kaneyama.fukushima.jp","kawamata.fukushima.jp","kitakata.fukushima.jp","kitashiobara.fukushima.jp","koori.fukushima.jp","koriyama.fukushima.jp","kunimi.fukushima.jp","miharu.fukushima.jp","mishima.fukushima.jp","namie.fukushima.jp","nango.fukushima.jp","nishiaizu.fukushima.jp","nishigo.fukushima.jp","okuma.fukushima.jp","omotego.fukushima.jp","ono.fukushima.jp","otama.fukushima.jp","samegawa.fukushima.jp","shimogo.fukushima.jp","shirakawa.fukushima.jp","showa.fukushima.jp","soma.fukushima.jp","sukagawa.fukushima.jp","taishin.fukushima.jp","tamakawa.fukushima.jp","tanagura.fukushima.jp","tenei.fukushima.jp","yabuki.fukushima.jp","yamato.fukushima.jp","yamatsuri.fukushima.jp","yanaizu.fukushima.jp","yugawa.fukushima.jp","anpachi.gifu.jp","ena.gifu.jp","gifu.gifu.jp","ginan.gifu.jp","godo.gifu.jp","gujo.gifu.jp","hashima.gifu.jp","hichiso.gifu.jp","hida.gifu.jp","higashishirakawa.gifu.jp","ibigawa.gifu.jp","ikeda.gifu.jp","kakamigahara.gifu.jp","kani.gifu.jp","kasahara.gifu.jp","kasamatsu.gifu.jp","kawaue.gifu.jp","kitagata.gifu.jp","mino.gifu.jp","minokamo.gifu.jp","mitake.gifu.jp","mizunami.gifu.jp","motosu.gifu.jp","nakatsugawa.gifu.jp","ogaki.gifu.jp","sakahogi.gifu.jp","seki.gifu.jp","sekigahara.gifu.jp","shirakawa.gifu.jp","tajimi.gifu.jp","takayama.gifu.jp","tarui.gifu.jp","toki.gifu.jp","tomika.gifu.jp","wanouchi.gifu.jp","yamagata.gifu.jp","yaotsu.gifu.jp","yoro.gifu.jp","annaka.gunma.jp","chiyoda.gunma.jp","fujioka.gunma.jp","higashiagatsuma.gunma.jp","isesaki.gunma.jp","itakura.gunma.jp","kanna.gunma.jp","kanra.gunma.jp","katashina.gunma.jp","kawaba.gunma.jp","kiryu.gunma.jp","kusatsu.gunma.jp","maebashi.gunma.jp","meiwa.gunma.jp","midori.gunma.jp","minakami.gunma.jp","naganohara.gunma.jp","nakanojo.gunma.jp","nanmoku.gunma.jp","numata.gunma.jp","oizumi.gunma.jp","ora.gunma.jp","ota.gunma.jp","shibukawa.gunma.jp","shimonita.gunma.jp","shinto.gunma.jp","showa.gunma.jp","takasaki.gunma.jp","takayama.gunma.jp","tamamura.gunma.jp","tatebayashi.gunma.jp","tomioka.gunma.jp","tsukiyono.gunma.jp","tsumagoi.gunma.jp","ueno.gunma.jp","yoshioka.gunma.jp","asaminami.hiroshima.jp","daiwa.hiroshima.jp","etajima.hiroshima.jp","fuchu.hiroshima.jp","fukuyama.hiroshima.jp","hatsukaichi.hiroshima.jp","higashihiroshima.hiroshima.jp","hongo.hiroshima.jp","jinsekikogen.hiroshima.jp","kaita.hiroshima.jp","kui.hiroshima.jp","kumano.hiroshima.jp","kure.hiroshima.jp","mihara.hiroshima.jp","miyoshi.hiroshima.jp","naka.hiroshima.jp","onomichi.hiroshima.jp","osakikamijima.hiroshima.jp","otake.hiroshima.jp","saka.hiroshima.jp","sera.hiroshima.jp","seranishi.hiroshima.jp","shinichi.hiroshima.jp","shobara.hiroshima.jp","takehara.hiroshima.jp","abashiri.hokkaido.jp","abira.hokkaido.jp","aibetsu.hokkaido.jp","akabira.hokkaido.jp","akkeshi.hokkaido.jp","asahikawa.hokkaido.jp","ashibetsu.hokkaido.jp","ashoro.hokkaido.jp","assabu.hokkaido.jp","atsuma.hokkaido.jp","bibai.hokkaido.jp","biei.hokkaido.jp","bifuka.hokkaido.jp","bihoro.hokkaido.jp","biratori.hokkaido.jp","chippubetsu.hokkaido.jp","chitose.hokkaido.jp","date.hokkaido.jp","ebetsu.hokkaido.jp","embetsu.hokkaido.jp","eniwa.hokkaido.jp","erimo.hokkaido.jp","esan.hokkaido.jp","esashi.hokkaido.jp","fukagawa.hokkaido.jp","fukushima.hokkaido.jp","furano.hokkaido.jp","furubira.hokkaido.jp","haboro.hokkaido.jp","hakodate.hokkaido.jp","hamatonbetsu.hokkaido.jp","hidaka.hokkaido.jp","higashikagura.hokkaido.jp","higashikawa.hokkaido.jp","hiroo.hokkaido.jp","hokuryu.hokkaido.jp","hokuto.hokkaido.jp","honbetsu.hokkaido.jp","horokanai.hokkaido.jp","horonobe.hokkaido.jp","ikeda.hokkaido.jp","imakane.hokkaido.jp","ishikari.hokkaido.jp","iwamizawa.hokkaido.jp","iwanai.hokkaido.jp","kamifurano.hokkaido.jp","kamikawa.hokkaido.jp","kamishihoro.hokkaido.jp","kamisunagawa.hokkaido.jp","kamoenai.hokkaido.jp","kayabe.hokkaido.jp","kembuchi.hokkaido.jp","kikonai.hokkaido.jp","kimobetsu.hokkaido.jp","kitahiroshima.hokkaido.jp","kitami.hokkaido.jp","kiyosato.hokkaido.jp","koshimizu.hokkaido.jp","kunneppu.hokkaido.jp","kuriyama.hokkaido.jp","kuromatsunai.hokkaido.jp","kushiro.hokkaido.jp","kutchan.hokkaido.jp","kyowa.hokkaido.jp","mashike.hokkaido.jp","matsumae.hokkaido.jp","mikasa.hokkaido.jp","minamifurano.hokkaido.jp","mombetsu.hokkaido.jp","moseushi.hokkaido.jp","mukawa.hokkaido.jp","muroran.hokkaido.jp","naie.hokkaido.jp","nakagawa.hokkaido.jp","nakasatsunai.hokkaido.jp","nakatombetsu.hokkaido.jp","nanae.hokkaido.jp","nanporo.hokkaido.jp","nayoro.hokkaido.jp","nemuro.hokkaido.jp","niikappu.hokkaido.jp","niki.hokkaido.jp","nishiokoppe.hokkaido.jp","noboribetsu.hokkaido.jp","numata.hokkaido.jp","obihiro.hokkaido.jp","obira.hokkaido.jp","oketo.hokkaido.jp","okoppe.hokkaido.jp","otaru.hokkaido.jp","otobe.hokkaido.jp","otofuke.hokkaido.jp","otoineppu.hokkaido.jp","oumu.hokkaido.jp","ozora.hokkaido.jp","pippu.hokkaido.jp","rankoshi.hokkaido.jp","rebun.hokkaido.jp","rikubetsu.hokkaido.jp","rishiri.hokkaido.jp","rishirifuji.hokkaido.jp","saroma.hokkaido.jp","sarufutsu.hokkaido.jp","shakotan.hokkaido.jp","shari.hokkaido.jp","shibecha.hokkaido.jp","shibetsu.hokkaido.jp","shikabe.hokkaido.jp","shikaoi.hokkaido.jp","shimamaki.hokkaido.jp","shimizu.hokkaido.jp","shimokawa.hokkaido.jp","shinshinotsu.hokkaido.jp","shintoku.hokkaido.jp","shiranuka.hokkaido.jp","shiraoi.hokkaido.jp","shiriuchi.hokkaido.jp","sobetsu.hokkaido.jp","sunagawa.hokkaido.jp","taiki.hokkaido.jp","takasu.hokkaido.jp","takikawa.hokkaido.jp","takinoue.hokkaido.jp","teshikaga.hokkaido.jp","tobetsu.hokkaido.jp","tohma.hokkaido.jp","tomakomai.hokkaido.jp","tomari.hokkaido.jp","toya.hokkaido.jp","toyako.hokkaido.jp","toyotomi.hokkaido.jp","toyoura.hokkaido.jp","tsubetsu.hokkaido.jp","tsukigata.hokkaido.jp","urakawa.hokkaido.jp","urausu.hokkaido.jp","uryu.hokkaido.jp","utashinai.hokkaido.jp","wakkanai.hokkaido.jp","wassamu.hokkaido.jp","yakumo.hokkaido.jp","yoichi.hokkaido.jp","aioi.hyogo.jp","akashi.hyogo.jp","ako.hyogo.jp","amagasaki.hyogo.jp","aogaki.hyogo.jp","asago.hyogo.jp","ashiya.hyogo.jp","awaji.hyogo.jp","fukusaki.hyogo.jp","goshiki.hyogo.jp","harima.hyogo.jp","himeji.hyogo.jp","ichikawa.hyogo.jp","inagawa.hyogo.jp","itami.hyogo.jp","kakogawa.hyogo.jp","kamigori.hyogo.jp","kamikawa.hyogo.jp","kasai.hyogo.jp","kasuga.hyogo.jp","kawanishi.hyogo.jp","miki.hyogo.jp","minamiawaji.hyogo.jp","nishinomiya.hyogo.jp","nishiwaki.hyogo.jp","ono.hyogo.jp","sanda.hyogo.jp","sannan.hyogo.jp","sasayama.hyogo.jp","sayo.hyogo.jp","shingu.hyogo.jp","shinonsen.hyogo.jp","shiso.hyogo.jp","sumoto.hyogo.jp","taishi.hyogo.jp","taka.hyogo.jp","takarazuka.hyogo.jp","takasago.hyogo.jp","takino.hyogo.jp","tamba.hyogo.jp","tatsuno.hyogo.jp","toyooka.hyogo.jp","yabu.hyogo.jp","yashiro.hyogo.jp","yoka.hyogo.jp","yokawa.hyogo.jp","ami.ibaraki.jp","asahi.ibaraki.jp","bando.ibaraki.jp","chikusei.ibaraki.jp","daigo.ibaraki.jp","fujishiro.ibaraki.jp","hitachi.ibaraki.jp","hitachinaka.ibaraki.jp","hitachiomiya.ibaraki.jp","hitachiota.ibaraki.jp","ibaraki.ibaraki.jp","ina.ibaraki.jp","inashiki.ibaraki.jp","itako.ibaraki.jp","iwama.ibaraki.jp","joso.ibaraki.jp","kamisu.ibaraki.jp","kasama.ibaraki.jp","kashima.ibaraki.jp","kasumigaura.ibaraki.jp","koga.ibaraki.jp","miho.ibaraki.jp","mito.ibaraki.jp","moriya.ibaraki.jp","naka.ibaraki.jp","namegata.ibaraki.jp","oarai.ibaraki.jp","ogawa.ibaraki.jp","omitama.ibaraki.jp","ryugasaki.ibaraki.jp","sakai.ibaraki.jp","sakuragawa.ibaraki.jp","shimodate.ibaraki.jp","shimotsuma.ibaraki.jp","shirosato.ibaraki.jp","sowa.ibaraki.jp","suifu.ibaraki.jp","takahagi.ibaraki.jp","tamatsukuri.ibaraki.jp","tokai.ibaraki.jp","tomobe.ibaraki.jp","tone.ibaraki.jp","toride.ibaraki.jp","tsuchiura.ibaraki.jp","tsukuba.ibaraki.jp","uchihara.ibaraki.jp","ushiku.ibaraki.jp","yachiyo.ibaraki.jp","yamagata.ibaraki.jp","yawara.ibaraki.jp","yuki.ibaraki.jp","anamizu.ishikawa.jp","hakui.ishikawa.jp","hakusan.ishikawa.jp","kaga.ishikawa.jp","kahoku.ishikawa.jp","kanazawa.ishikawa.jp","kawakita.ishikawa.jp","komatsu.ishikawa.jp","nakanoto.ishikawa.jp","nanao.ishikawa.jp","nomi.ishikawa.jp","nonoichi.ishikawa.jp","noto.ishikawa.jp","shika.ishikawa.jp","suzu.ishikawa.jp","tsubata.ishikawa.jp","tsurugi.ishikawa.jp","uchinada.ishikawa.jp","wajima.ishikawa.jp","fudai.iwate.jp","fujisawa.iwate.jp","hanamaki.iwate.jp","hiraizumi.iwate.jp","hirono.iwate.jp","ichinohe.iwate.jp","ichinoseki.iwate.jp","iwaizumi.iwate.jp","iwate.iwate.jp","joboji.iwate.jp","kamaishi.iwate.jp","kanegasaki.iwate.jp","karumai.iwate.jp","kawai.iwate.jp","kitakami.iwate.jp","kuji.iwate.jp","kunohe.iwate.jp","kuzumaki.iwate.jp","miyako.iwate.jp","mizusawa.iwate.jp","morioka.iwate.jp","ninohe.iwate.jp","noda.iwate.jp","ofunato.iwate.jp","oshu.iwate.jp","otsuchi.iwate.jp","rikuzentakata.iwate.jp","shiwa.iwate.jp","shizukuishi.iwate.jp","sumita.iwate.jp","tanohata.iwate.jp","tono.iwate.jp","yahaba.iwate.jp","yamada.iwate.jp","ayagawa.kagawa.jp","higashikagawa.kagawa.jp","kanonji.kagawa.jp","kotohira.kagawa.jp","manno.kagawa.jp","marugame.kagawa.jp","mitoyo.kagawa.jp","naoshima.kagawa.jp","sanuki.kagawa.jp","tadotsu.kagawa.jp","takamatsu.kagawa.jp","tonosho.kagawa.jp","uchinomi.kagawa.jp","utazu.kagawa.jp","zentsuji.kagawa.jp","akune.kagoshima.jp","amami.kagoshima.jp","hioki.kagoshima.jp","isa.kagoshima.jp","isen.kagoshima.jp","izumi.kagoshima.jp","kagoshima.kagoshima.jp","kanoya.kagoshima.jp","kawanabe.kagoshima.jp","kinko.kagoshima.jp","kouyama.kagoshima.jp","makurazaki.kagoshima.jp","matsumoto.kagoshima.jp","minamitane.kagoshima.jp","nakatane.kagoshima.jp","nishinoomote.kagoshima.jp","satsumasendai.kagoshima.jp","soo.kagoshima.jp","tarumizu.kagoshima.jp","yusui.kagoshima.jp","aikawa.kanagawa.jp","atsugi.kanagawa.jp","ayase.kanagawa.jp","chigasaki.kanagawa.jp","ebina.kanagawa.jp","fujisawa.kanagawa.jp","hadano.kanagawa.jp","hakone.kanagawa.jp","hiratsuka.kanagawa.jp","isehara.kanagawa.jp","kaisei.kanagawa.jp","kamakura.kanagawa.jp","kiyokawa.kanagawa.jp","matsuda.kanagawa.jp","minamiashigara.kanagawa.jp","miura.kanagawa.jp","nakai.kanagawa.jp","ninomiya.kanagawa.jp","odawara.kanagawa.jp","oi.kanagawa.jp","oiso.kanagawa.jp","sagamihara.kanagawa.jp","samukawa.kanagawa.jp","tsukui.kanagawa.jp","yamakita.kanagawa.jp","yamato.kanagawa.jp","yokosuka.kanagawa.jp","yugawara.kanagawa.jp","zama.kanagawa.jp","zushi.kanagawa.jp","aki.kochi.jp","geisei.kochi.jp","hidaka.kochi.jp","higashitsuno.kochi.jp","ino.kochi.jp","kagami.kochi.jp","kami.kochi.jp","kitagawa.kochi.jp","kochi.kochi.jp","mihara.kochi.jp","motoyama.kochi.jp","muroto.kochi.jp","nahari.kochi.jp","nakamura.kochi.jp","nankoku.kochi.jp","nishitosa.kochi.jp","niyodogawa.kochi.jp","ochi.kochi.jp","okawa.kochi.jp","otoyo.kochi.jp","otsuki.kochi.jp","sakawa.kochi.jp","sukumo.kochi.jp","susaki.kochi.jp","tosa.kochi.jp","tosashimizu.kochi.jp","toyo.kochi.jp","tsuno.kochi.jp","umaji.kochi.jp","yasuda.kochi.jp","yusuhara.kochi.jp","amakusa.kumamoto.jp","arao.kumamoto.jp","aso.kumamoto.jp","choyo.kumamoto.jp","gyokuto.kumamoto.jp","kamiamakusa.kumamoto.jp","kikuchi.kumamoto.jp","kumamoto.kumamoto.jp","mashiki.kumamoto.jp","mifune.kumamoto.jp","minamata.kumamoto.jp","minamioguni.kumamoto.jp","nagasu.kumamoto.jp","nishihara.kumamoto.jp","oguni.kumamoto.jp","ozu.kumamoto.jp","sumoto.kumamoto.jp","takamori.kumamoto.jp","uki.kumamoto.jp","uto.kumamoto.jp","yamaga.kumamoto.jp","yamato.kumamoto.jp","yatsushiro.kumamoto.jp","ayabe.kyoto.jp","fukuchiyama.kyoto.jp","higashiyama.kyoto.jp","ide.kyoto.jp","ine.kyoto.jp","joyo.kyoto.jp","kameoka.kyoto.jp","kamo.kyoto.jp","kita.kyoto.jp","kizu.kyoto.jp","kumiyama.kyoto.jp","kyotamba.kyoto.jp","kyotanabe.kyoto.jp","kyotango.kyoto.jp","maizuru.kyoto.jp","minami.kyoto.jp","minamiyamashiro.kyoto.jp","miyazu.kyoto.jp","muko.kyoto.jp","nagaokakyo.kyoto.jp","nakagyo.kyoto.jp","nantan.kyoto.jp","oyamazaki.kyoto.jp","sakyo.kyoto.jp","seika.kyoto.jp","tanabe.kyoto.jp","uji.kyoto.jp","ujitawara.kyoto.jp","wazuka.kyoto.jp","yamashina.kyoto.jp","yawata.kyoto.jp","asahi.mie.jp","inabe.mie.jp","ise.mie.jp","kameyama.mie.jp","kawagoe.mie.jp","kiho.mie.jp","kisosaki.mie.jp","kiwa.mie.jp","komono.mie.jp","kumano.mie.jp","kuwana.mie.jp","matsusaka.mie.jp","meiwa.mie.jp","mihama.mie.jp","minamiise.mie.jp","misugi.mie.jp","miyama.mie.jp","nabari.mie.jp","shima.mie.jp","suzuka.mie.jp","tado.mie.jp","taiki.mie.jp","taki.mie.jp","tamaki.mie.jp","toba.mie.jp","tsu.mie.jp","udono.mie.jp","ureshino.mie.jp","watarai.mie.jp","yokkaichi.mie.jp","furukawa.miyagi.jp","higashimatsushima.miyagi.jp","ishinomaki.miyagi.jp","iwanuma.miyagi.jp","kakuda.miyagi.jp","kami.miyagi.jp","kawasaki.miyagi.jp","marumori.miyagi.jp","matsushima.miyagi.jp","minamisanriku.miyagi.jp","misato.miyagi.jp","murata.miyagi.jp","natori.miyagi.jp","ogawara.miyagi.jp","ohira.miyagi.jp","onagawa.miyagi.jp","osaki.miyagi.jp","rifu.miyagi.jp","semine.miyagi.jp","shibata.miyagi.jp","shichikashuku.miyagi.jp","shikama.miyagi.jp","shiogama.miyagi.jp","shiroishi.miyagi.jp","tagajo.miyagi.jp","taiwa.miyagi.jp","tome.miyagi.jp","tomiya.miyagi.jp","wakuya.miyagi.jp","watari.miyagi.jp","yamamoto.miyagi.jp","zao.miyagi.jp","aya.miyazaki.jp","ebino.miyazaki.jp","gokase.miyazaki.jp","hyuga.miyazaki.jp","kadogawa.miyazaki.jp","kawaminami.miyazaki.jp","kijo.miyazaki.jp","kitagawa.miyazaki.jp","kitakata.miyazaki.jp","kitaura.miyazaki.jp","kobayashi.miyazaki.jp","kunitomi.miyazaki.jp","kushima.miyazaki.jp","mimata.miyazaki.jp","miyakonojo.miyazaki.jp","miyazaki.miyazaki.jp","morotsuka.miyazaki.jp","nichinan.miyazaki.jp","nishimera.miyazaki.jp","nobeoka.miyazaki.jp","saito.miyazaki.jp","shiiba.miyazaki.jp","shintomi.miyazaki.jp","takaharu.miyazaki.jp","takanabe.miyazaki.jp","takazaki.miyazaki.jp","tsuno.miyazaki.jp","achi.nagano.jp","agematsu.nagano.jp","anan.nagano.jp","aoki.nagano.jp","asahi.nagano.jp","azumino.nagano.jp","chikuhoku.nagano.jp","chikuma.nagano.jp","chino.nagano.jp","fujimi.nagano.jp","hakuba.nagano.jp","hara.nagano.jp","hiraya.nagano.jp","iida.nagano.jp","iijima.nagano.jp","iiyama.nagano.jp","iizuna.nagano.jp","ikeda.nagano.jp","ikusaka.nagano.jp","ina.nagano.jp","karuizawa.nagano.jp","kawakami.nagano.jp","kiso.nagano.jp","kisofukushima.nagano.jp","kitaaiki.nagano.jp","komagane.nagano.jp","komoro.nagano.jp","matsukawa.nagano.jp","matsumoto.nagano.jp","miasa.nagano.jp","minamiaiki.nagano.jp","minamimaki.nagano.jp","minamiminowa.nagano.jp","minowa.nagano.jp","miyada.nagano.jp","miyota.nagano.jp","mochizuki.nagano.jp","nagano.nagano.jp","nagawa.nagano.jp","nagiso.nagano.jp","nakagawa.nagano.jp","nakano.nagano.jp","nozawaonsen.nagano.jp","obuse.nagano.jp","ogawa.nagano.jp","okaya.nagano.jp","omachi.nagano.jp","omi.nagano.jp","ookuwa.nagano.jp","ooshika.nagano.jp","otaki.nagano.jp","otari.nagano.jp","sakae.nagano.jp","sakaki.nagano.jp","saku.nagano.jp","sakuho.nagano.jp","shimosuwa.nagano.jp","shinanomachi.nagano.jp","shiojiri.nagano.jp","suwa.nagano.jp","suzaka.nagano.jp","takagi.nagano.jp","takamori.nagano.jp","takayama.nagano.jp","tateshina.nagano.jp","tatsuno.nagano.jp","togakushi.nagano.jp","togura.nagano.jp","tomi.nagano.jp","ueda.nagano.jp","wada.nagano.jp","yamagata.nagano.jp","yamanouchi.nagano.jp","yasaka.nagano.jp","yasuoka.nagano.jp","chijiwa.nagasaki.jp","futsu.nagasaki.jp","goto.nagasaki.jp","hasami.nagasaki.jp","hirado.nagasaki.jp","iki.nagasaki.jp","isahaya.nagasaki.jp","kawatana.nagasaki.jp","kuchinotsu.nagasaki.jp","matsuura.nagasaki.jp","nagasaki.nagasaki.jp","obama.nagasaki.jp","omura.nagasaki.jp","oseto.nagasaki.jp","saikai.nagasaki.jp","sasebo.nagasaki.jp","seihi.nagasaki.jp","shimabara.nagasaki.jp","shinkamigoto.nagasaki.jp","togitsu.nagasaki.jp","tsushima.nagasaki.jp","unzen.nagasaki.jp","ando.nara.jp","gose.nara.jp","heguri.nara.jp","higashiyoshino.nara.jp","ikaruga.nara.jp","ikoma.nara.jp","kamikitayama.nara.jp","kanmaki.nara.jp","kashiba.nara.jp","kashihara.nara.jp","katsuragi.nara.jp","kawai.nara.jp","kawakami.nara.jp","kawanishi.nara.jp","koryo.nara.jp","kurotaki.nara.jp","mitsue.nara.jp","miyake.nara.jp","nara.nara.jp","nosegawa.nara.jp","oji.nara.jp","ouda.nara.jp","oyodo.nara.jp","sakurai.nara.jp","sango.nara.jp","shimoichi.nara.jp","shimokitayama.nara.jp","shinjo.nara.jp","soni.nara.jp","takatori.nara.jp","tawaramoto.nara.jp","tenkawa.nara.jp","tenri.nara.jp","uda.nara.jp","yamatokoriyama.nara.jp","yamatotakada.nara.jp","yamazoe.nara.jp","yoshino.nara.jp","aga.niigata.jp","agano.niigata.jp","gosen.niigata.jp","itoigawa.niigata.jp","izumozaki.niigata.jp","joetsu.niigata.jp","kamo.niigata.jp","kariwa.niigata.jp","kashiwazaki.niigata.jp","minamiuonuma.niigata.jp","mitsuke.niigata.jp","muika.niigata.jp","murakami.niigata.jp","myoko.niigata.jp","nagaoka.niigata.jp","niigata.niigata.jp","ojiya.niigata.jp","omi.niigata.jp","sado.niigata.jp","sanjo.niigata.jp","seiro.niigata.jp","seirou.niigata.jp","sekikawa.niigata.jp","shibata.niigata.jp","tagami.niigata.jp","tainai.niigata.jp","tochio.niigata.jp","tokamachi.niigata.jp","tsubame.niigata.jp","tsunan.niigata.jp","uonuma.niigata.jp","yahiko.niigata.jp","yoita.niigata.jp","yuzawa.niigata.jp","beppu.oita.jp","bungoono.oita.jp","bungotakada.oita.jp","hasama.oita.jp","hiji.oita.jp","himeshima.oita.jp","hita.oita.jp","kamitsue.oita.jp","kokonoe.oita.jp","kuju.oita.jp","kunisaki.oita.jp","kusu.oita.jp","oita.oita.jp","saiki.oita.jp","taketa.oita.jp","tsukumi.oita.jp","usa.oita.jp","usuki.oita.jp","yufu.oita.jp","akaiwa.okayama.jp","asakuchi.okayama.jp","bizen.okayama.jp","hayashima.okayama.jp","ibara.okayama.jp","kagamino.okayama.jp","kasaoka.okayama.jp","kibichuo.okayama.jp","kumenan.okayama.jp","kurashiki.okayama.jp","maniwa.okayama.jp","misaki.okayama.jp","nagi.okayama.jp","niimi.okayama.jp","nishiawakura.okayama.jp","okayama.okayama.jp","satosho.okayama.jp","setouchi.okayama.jp","shinjo.okayama.jp","shoo.okayama.jp","soja.okayama.jp","takahashi.okayama.jp","tamano.okayama.jp","tsuyama.okayama.jp","wake.okayama.jp","yakage.okayama.jp","aguni.okinawa.jp","ginowan.okinawa.jp","ginoza.okinawa.jp","gushikami.okinawa.jp","haebaru.okinawa.jp","higashi.okinawa.jp","hirara.okinawa.jp","iheya.okinawa.jp","ishigaki.okinawa.jp","ishikawa.okinawa.jp","itoman.okinawa.jp","izena.okinawa.jp","kadena.okinawa.jp","kin.okinawa.jp","kitadaito.okinawa.jp","kitanakagusuku.okinawa.jp","kumejima.okinawa.jp","kunigami.okinawa.jp","minamidaito.okinawa.jp","motobu.okinawa.jp","nago.okinawa.jp","naha.okinawa.jp","nakagusuku.okinawa.jp","nakijin.okinawa.jp","nanjo.okinawa.jp","nishihara.okinawa.jp","ogimi.okinawa.jp","okinawa.okinawa.jp","onna.okinawa.jp","shimoji.okinawa.jp","taketomi.okinawa.jp","tarama.okinawa.jp","tokashiki.okinawa.jp","tomigusuku.okinawa.jp","tonaki.okinawa.jp","urasoe.okinawa.jp","uruma.okinawa.jp","yaese.okinawa.jp","yomitan.okinawa.jp","yonabaru.okinawa.jp","yonaguni.okinawa.jp","zamami.okinawa.jp","abeno.osaka.jp","chihayaakasaka.osaka.jp","chuo.osaka.jp","daito.osaka.jp","fujiidera.osaka.jp","habikino.osaka.jp","hannan.osaka.jp","higashiosaka.osaka.jp","higashisumiyoshi.osaka.jp","higashiyodogawa.osaka.jp","hirakata.osaka.jp","ibaraki.osaka.jp","ikeda.osaka.jp","izumi.osaka.jp","izumiotsu.osaka.jp","izumisano.osaka.jp","kadoma.osaka.jp","kaizuka.osaka.jp","kanan.osaka.jp","kashiwara.osaka.jp","katano.osaka.jp","kawachinagano.osaka.jp","kishiwada.osaka.jp","kita.osaka.jp","kumatori.osaka.jp","matsubara.osaka.jp","minato.osaka.jp","minoh.osaka.jp","misaki.osaka.jp","moriguchi.osaka.jp","neyagawa.osaka.jp","nishi.osaka.jp","nose.osaka.jp","osakasayama.osaka.jp","sakai.osaka.jp","sayama.osaka.jp","sennan.osaka.jp","settsu.osaka.jp","shijonawate.osaka.jp","shimamoto.osaka.jp","suita.osaka.jp","tadaoka.osaka.jp","taishi.osaka.jp","tajiri.osaka.jp","takaishi.osaka.jp","takatsuki.osaka.jp","tondabayashi.osaka.jp","toyonaka.osaka.jp","toyono.osaka.jp","yao.osaka.jp","ariake.saga.jp","arita.saga.jp","fukudomi.saga.jp","genkai.saga.jp","hamatama.saga.jp","hizen.saga.jp","imari.saga.jp","kamimine.saga.jp","kanzaki.saga.jp","karatsu.saga.jp","kashima.saga.jp","kitagata.saga.jp","kitahata.saga.jp","kiyama.saga.jp","kouhoku.saga.jp","kyuragi.saga.jp","nishiarita.saga.jp","ogi.saga.jp","omachi.saga.jp","ouchi.saga.jp","saga.saga.jp","shiroishi.saga.jp","taku.saga.jp","tara.saga.jp","tosu.saga.jp","yoshinogari.saga.jp","arakawa.saitama.jp","asaka.saitama.jp","chichibu.saitama.jp","fujimi.saitama.jp","fujimino.saitama.jp","fukaya.saitama.jp","hanno.saitama.jp","hanyu.saitama.jp","hasuda.saitama.jp","hatogaya.saitama.jp","hatoyama.saitama.jp","hidaka.saitama.jp","higashichichibu.saitama.jp","higashimatsuyama.saitama.jp","honjo.saitama.jp","ina.saitama.jp","iruma.saitama.jp","iwatsuki.saitama.jp","kamiizumi.saitama.jp","kamikawa.saitama.jp","kamisato.saitama.jp","kasukabe.saitama.jp","kawagoe.saitama.jp","kawaguchi.saitama.jp","kawajima.saitama.jp","kazo.saitama.jp","kitamoto.saitama.jp","koshigaya.saitama.jp","kounosu.saitama.jp","kuki.saitama.jp","kumagaya.saitama.jp","matsubushi.saitama.jp","minano.saitama.jp","misato.saitama.jp","miyashiro.saitama.jp","miyoshi.saitama.jp","moroyama.saitama.jp","nagatoro.saitama.jp","namegawa.saitama.jp","niiza.saitama.jp","ogano.saitama.jp","ogawa.saitama.jp","ogose.saitama.jp","okegawa.saitama.jp","omiya.saitama.jp","otaki.saitama.jp","ranzan.saitama.jp","ryokami.saitama.jp","saitama.saitama.jp","sakado.saitama.jp","satte.saitama.jp","sayama.saitama.jp","shiki.saitama.jp","shiraoka.saitama.jp","soka.saitama.jp","sugito.saitama.jp","toda.saitama.jp","tokigawa.saitama.jp","tokorozawa.saitama.jp","tsurugashima.saitama.jp","urawa.saitama.jp","warabi.saitama.jp","yashio.saitama.jp","yokoze.saitama.jp","yono.saitama.jp","yorii.saitama.jp","yoshida.saitama.jp","yoshikawa.saitama.jp","yoshimi.saitama.jp","aisho.shiga.jp","gamo.shiga.jp","higashiomi.shiga.jp","hikone.shiga.jp","koka.shiga.jp","konan.shiga.jp","kosei.shiga.jp","koto.shiga.jp","kusatsu.shiga.jp","maibara.shiga.jp","moriyama.shiga.jp","nagahama.shiga.jp","nishiazai.shiga.jp","notogawa.shiga.jp","omihachiman.shiga.jp","otsu.shiga.jp","ritto.shiga.jp","ryuoh.shiga.jp","takashima.shiga.jp","takatsuki.shiga.jp","torahime.shiga.jp","toyosato.shiga.jp","yasu.shiga.jp","akagi.shimane.jp","ama.shimane.jp","gotsu.shimane.jp","hamada.shimane.jp","higashiizumo.shimane.jp","hikawa.shimane.jp","hikimi.shimane.jp","izumo.shimane.jp","kakinoki.shimane.jp","masuda.shimane.jp","matsue.shimane.jp","misato.shimane.jp","nishinoshima.shimane.jp","ohda.shimane.jp","okinoshima.shimane.jp","okuizumo.shimane.jp","shimane.shimane.jp","tamayu.shimane.jp","tsuwano.shimane.jp","unnan.shimane.jp","yakumo.shimane.jp","yasugi.shimane.jp","yatsuka.shimane.jp","arai.shizuoka.jp","atami.shizuoka.jp","fuji.shizuoka.jp","fujieda.shizuoka.jp","fujikawa.shizuoka.jp","fujinomiya.shizuoka.jp","fukuroi.shizuoka.jp","gotemba.shizuoka.jp","haibara.shizuoka.jp","hamamatsu.shizuoka.jp","higashiizu.shizuoka.jp","ito.shizuoka.jp","iwata.shizuoka.jp","izu.shizuoka.jp","izunokuni.shizuoka.jp","kakegawa.shizuoka.jp","kannami.shizuoka.jp","kawanehon.shizuoka.jp","kawazu.shizuoka.jp","kikugawa.shizuoka.jp","kosai.shizuoka.jp","makinohara.shizuoka.jp","matsuzaki.shizuoka.jp","minamiizu.shizuoka.jp","mishima.shizuoka.jp","morimachi.shizuoka.jp","nishiizu.shizuoka.jp","numazu.shizuoka.jp","omaezaki.shizuoka.jp","shimada.shizuoka.jp","shimizu.shizuoka.jp","shimoda.shizuoka.jp","shizuoka.shizuoka.jp","susono.shizuoka.jp","yaizu.shizuoka.jp","yoshida.shizuoka.jp","ashikaga.tochigi.jp","bato.tochigi.jp","haga.tochigi.jp","ichikai.tochigi.jp","iwafune.tochigi.jp","kaminokawa.tochigi.jp","kanuma.tochigi.jp","karasuyama.tochigi.jp","kuroiso.tochigi.jp","mashiko.tochigi.jp","mibu.tochigi.jp","moka.tochigi.jp","motegi.tochigi.jp","nasu.tochigi.jp","nasushiobara.tochigi.jp","nikko.tochigi.jp","nishikata.tochigi.jp","nogi.tochigi.jp","ohira.tochigi.jp","ohtawara.tochigi.jp","oyama.tochigi.jp","sakura.tochigi.jp","sano.tochigi.jp","shimotsuke.tochigi.jp","shioya.tochigi.jp","takanezawa.tochigi.jp","tochigi.tochigi.jp","tsuga.tochigi.jp","ujiie.tochigi.jp","utsunomiya.tochigi.jp","yaita.tochigi.jp","aizumi.tokushima.jp","anan.tokushima.jp","ichiba.tokushima.jp","itano.tokushima.jp","kainan.tokushima.jp","komatsushima.tokushima.jp","matsushige.tokushima.jp","mima.tokushima.jp","minami.tokushima.jp","miyoshi.tokushima.jp","mugi.tokushima.jp","nakagawa.tokushima.jp","naruto.tokushima.jp","sanagochi.tokushima.jp","shishikui.tokushima.jp","tokushima.tokushima.jp","wajiki.tokushima.jp","adachi.tokyo.jp","akiruno.tokyo.jp","akishima.tokyo.jp","aogashima.tokyo.jp","arakawa.tokyo.jp","bunkyo.tokyo.jp","chiyoda.tokyo.jp","chofu.tokyo.jp","chuo.tokyo.jp","edogawa.tokyo.jp","fuchu.tokyo.jp","fussa.tokyo.jp","hachijo.tokyo.jp","hachioji.tokyo.jp","hamura.tokyo.jp","higashikurume.tokyo.jp","higashimurayama.tokyo.jp","higashiyamato.tokyo.jp","hino.tokyo.jp","hinode.tokyo.jp","hinohara.tokyo.jp","inagi.tokyo.jp","itabashi.tokyo.jp","katsushika.tokyo.jp","kita.tokyo.jp","kiyose.tokyo.jp","kodaira.tokyo.jp","koganei.tokyo.jp","kokubunji.tokyo.jp","komae.tokyo.jp","koto.tokyo.jp","kouzushima.tokyo.jp","kunitachi.tokyo.jp","machida.tokyo.jp","meguro.tokyo.jp","minato.tokyo.jp","mitaka.tokyo.jp","mizuho.tokyo.jp","musashimurayama.tokyo.jp","musashino.tokyo.jp","nakano.tokyo.jp","nerima.tokyo.jp","ogasawara.tokyo.jp","okutama.tokyo.jp","ome.tokyo.jp","oshima.tokyo.jp","ota.tokyo.jp","setagaya.tokyo.jp","shibuya.tokyo.jp","shinagawa.tokyo.jp","shinjuku.tokyo.jp","suginami.tokyo.jp","sumida.tokyo.jp","tachikawa.tokyo.jp","taito.tokyo.jp","tama.tokyo.jp","toshima.tokyo.jp","chizu.tottori.jp","hino.tottori.jp","kawahara.tottori.jp","koge.tottori.jp","kotoura.tottori.jp","misasa.tottori.jp","nanbu.tottori.jp","nichinan.tottori.jp","sakaiminato.tottori.jp","tottori.tottori.jp","wakasa.tottori.jp","yazu.tottori.jp","yonago.tottori.jp","asahi.toyama.jp","fuchu.toyama.jp","fukumitsu.toyama.jp","funahashi.toyama.jp","himi.toyama.jp","imizu.toyama.jp","inami.toyama.jp","johana.toyama.jp","kamiichi.toyama.jp","kurobe.toyama.jp","nakaniikawa.toyama.jp","namerikawa.toyama.jp","nanto.toyama.jp","nyuzen.toyama.jp","oyabe.toyama.jp","taira.toyama.jp","takaoka.toyama.jp","tateyama.toyama.jp","toga.toyama.jp","tonami.toyama.jp","toyama.toyama.jp","unazuki.toyama.jp","uozu.toyama.jp","yamada.toyama.jp","arida.wakayama.jp","aridagawa.wakayama.jp","gobo.wakayama.jp","hashimoto.wakayama.jp","hidaka.wakayama.jp","hirogawa.wakayama.jp","inami.wakayama.jp","iwade.wakayama.jp","kainan.wakayama.jp","kamitonda.wakayama.jp","katsuragi.wakayama.jp","kimino.wakayama.jp","kinokawa.wakayama.jp","kitayama.wakayama.jp","koya.wakayama.jp","koza.wakayama.jp","kozagawa.wakayama.jp","kudoyama.wakayama.jp","kushimoto.wakayama.jp","mihama.wakayama.jp","misato.wakayama.jp","nachikatsuura.wakayama.jp","shingu.wakayama.jp","shirahama.wakayama.jp","taiji.wakayama.jp","tanabe.wakayama.jp","wakayama.wakayama.jp","yuasa.wakayama.jp","yura.wakayama.jp","asahi.yamagata.jp","funagata.yamagata.jp","higashine.yamagata.jp","iide.yamagata.jp","kahoku.yamagata.jp","kaminoyama.yamagata.jp","kaneyama.yamagata.jp","kawanishi.yamagata.jp","mamurogawa.yamagata.jp","mikawa.yamagata.jp","murayama.yamagata.jp","nagai.yamagata.jp","nakayama.yamagata.jp","nanyo.yamagata.jp","nishikawa.yamagata.jp","obanazawa.yamagata.jp","oe.yamagata.jp","oguni.yamagata.jp","ohkura.yamagata.jp","oishida.yamagata.jp","sagae.yamagata.jp","sakata.yamagata.jp","sakegawa.yamagata.jp","shinjo.yamagata.jp","shirataka.yamagata.jp","shonai.yamagata.jp","takahata.yamagata.jp","tendo.yamagata.jp","tozawa.yamagata.jp","tsuruoka.yamagata.jp","yamagata.yamagata.jp","yamanobe.yamagata.jp","yonezawa.yamagata.jp","yuza.yamagata.jp","abu.yamaguchi.jp","hagi.yamaguchi.jp","hikari.yamaguchi.jp","hofu.yamaguchi.jp","iwakuni.yamaguchi.jp","kudamatsu.yamaguchi.jp","mitou.yamaguchi.jp","nagato.yamaguchi.jp","oshima.yamaguchi.jp","shimonoseki.yamaguchi.jp","shunan.yamaguchi.jp","tabuse.yamaguchi.jp","tokuyama.yamaguchi.jp","toyota.yamaguchi.jp","ube.yamaguchi.jp","yuu.yamaguchi.jp","chuo.yamanashi.jp","doshi.yamanashi.jp","fuefuki.yamanashi.jp","fujikawa.yamanashi.jp","fujikawaguchiko.yamanashi.jp","fujiyoshida.yamanashi.jp","hayakawa.yamanashi.jp","hokuto.yamanashi.jp","ichikawamisato.yamanashi.jp","kai.yamanashi.jp","kofu.yamanashi.jp","koshu.yamanashi.jp","kosuge.yamanashi.jp","minami-alps.yamanashi.jp","minobu.yamanashi.jp","nakamichi.yamanashi.jp","nanbu.yamanashi.jp","narusawa.yamanashi.jp","nirasaki.yamanashi.jp","nishikatsura.yamanashi.jp","oshino.yamanashi.jp","otsuki.yamanashi.jp","showa.yamanashi.jp","tabayama.yamanashi.jp","tsuru.yamanashi.jp","uenohara.yamanashi.jp","yamanakako.yamanashi.jp","yamanashi.yamanashi.jp","ke","ac.ke","co.ke","go.ke","info.ke","me.ke","mobi.ke","ne.ke","or.ke","sc.ke","kg","com.kg","edu.kg","gov.kg","mil.kg","net.kg","org.kg","*.kh","ki","biz.ki","com.ki","edu.ki","gov.ki","info.ki","net.ki","org.ki","km","ass.km","com.km","edu.km","gov.km","mil.km","nom.km","org.km","prd.km","tm.km","asso.km","coop.km","gouv.km","medecin.km","notaires.km","pharmaciens.km","presse.km","veterinaire.km","kn","edu.kn","gov.kn","net.kn","org.kn","kp","com.kp","edu.kp","gov.kp","org.kp","rep.kp","tra.kp","kr","ac.kr","co.kr","es.kr","go.kr","hs.kr","kg.kr","mil.kr","ms.kr","ne.kr","or.kr","pe.kr","re.kr","sc.kr","busan.kr","chungbuk.kr","chungnam.kr","daegu.kr","daejeon.kr","gangwon.kr","gwangju.kr","gyeongbuk.kr","gyeonggi.kr","gyeongnam.kr","incheon.kr","jeju.kr","jeonbuk.kr","jeonnam.kr","seoul.kr","ulsan.kr","kw","com.kw","edu.kw","emb.kw","gov.kw","ind.kw","net.kw","org.kw","ky","com.ky","edu.ky","net.ky","org.ky","kz","com.kz","edu.kz","gov.kz","mil.kz","net.kz","org.kz","la","com.la","edu.la","gov.la","info.la","int.la","net.la","org.la","per.la","lb","com.lb","edu.lb","gov.lb","net.lb","org.lb","lc","co.lc","com.lc","edu.lc","gov.lc","net.lc","org.lc","li","lk","ac.lk","assn.lk","com.lk","edu.lk","gov.lk","grp.lk","hotel.lk","int.lk","ltd.lk","net.lk","ngo.lk","org.lk","sch.lk","soc.lk","web.lk","lr","com.lr","edu.lr","gov.lr","net.lr","org.lr","ls","ac.ls","biz.ls","co.ls","edu.ls","gov.ls","info.ls","net.ls","org.ls","sc.ls","lt","gov.lt","lu","lv","asn.lv","com.lv","conf.lv","edu.lv","gov.lv","id.lv","mil.lv","net.lv","org.lv","ly","com.ly","edu.ly","gov.ly","id.ly","med.ly","net.ly","org.ly","plc.ly","sch.ly","ma","ac.ma","co.ma","gov.ma","net.ma","org.ma","press.ma","mc","asso.mc","tm.mc","md","me","ac.me","co.me","edu.me","gov.me","its.me","net.me","org.me","priv.me","mg","co.mg","com.mg","edu.mg","gov.mg","mil.mg","nom.mg","org.mg","prd.mg","mh","mil","mk","com.mk","edu.mk","gov.mk","inf.mk","name.mk","net.mk","org.mk","ml","com.ml","edu.ml","gouv.ml","gov.ml","net.ml","org.ml","presse.ml","*.mm","mn","edu.mn","gov.mn","org.mn","mo","com.mo","edu.mo","gov.mo","net.mo","org.mo","mobi","mp","mq","mr","gov.mr","ms","com.ms","edu.ms","gov.ms","net.ms","org.ms","mt","com.mt","edu.mt","net.mt","org.mt","mu","ac.mu","co.mu","com.mu","gov.mu","net.mu","or.mu","org.mu","museum","mv","aero.mv","biz.mv","com.mv","coop.mv","edu.mv","gov.mv","info.mv","int.mv","mil.mv","museum.mv","name.mv","net.mv","org.mv","pro.mv","mw","ac.mw","biz.mw","co.mw","com.mw","coop.mw","edu.mw","gov.mw","int.mw","net.mw","org.mw","mx","com.mx","edu.mx","gob.mx","net.mx","org.mx","my","biz.my","com.my","edu.my","gov.my","mil.my","name.my","net.my","org.my","mz","ac.mz","adv.mz","co.mz","edu.mz","gov.mz","mil.mz","net.mz","org.mz","na","alt.na","co.na","com.na","gov.na","net.na","org.na","name","nc","asso.nc","nom.nc","ne","net","nf","arts.nf","com.nf","firm.nf","info.nf","net.nf","other.nf","per.nf","rec.nf","store.nf","web.nf","ng","com.ng","edu.ng","gov.ng","i.ng","mil.ng","mobi.ng","name.ng","net.ng","org.ng","sch.ng","ni","ac.ni","biz.ni","co.ni","com.ni","edu.ni","gob.ni","in.ni","info.ni","int.ni","mil.ni","net.ni","nom.ni","org.ni","web.ni","nl","no","fhs.no","folkebibl.no","fylkesbibl.no","idrett.no","museum.no","priv.no","vgs.no","dep.no","herad.no","kommune.no","mil.no","stat.no","aa.no","ah.no","bu.no","fm.no","hl.no","hm.no","jan-mayen.no","mr.no","nl.no","nt.no","of.no","ol.no","oslo.no","rl.no","sf.no","st.no","svalbard.no","tm.no","tr.no","va.no","vf.no","gs.aa.no","gs.ah.no","gs.bu.no","gs.fm.no","gs.hl.no","gs.hm.no","gs.jan-mayen.no","gs.mr.no","gs.nl.no","gs.nt.no","gs.of.no","gs.ol.no","gs.oslo.no","gs.rl.no","gs.sf.no","gs.st.no","gs.svalbard.no","gs.tm.no","gs.tr.no","gs.va.no","gs.vf.no","akrehamn.no","åkrehamn.no","algard.no","ålgård.no","arna.no","bronnoysund.no","brønnøysund.no","brumunddal.no","bryne.no","drobak.no","drøbak.no","egersund.no","fetsund.no","floro.no","florø.no","fredrikstad.no","hokksund.no","honefoss.no","hønefoss.no","jessheim.no","jorpeland.no","jørpeland.no","kirkenes.no","kopervik.no","krokstadelva.no","langevag.no","langevåg.no","leirvik.no","mjondalen.no","mjøndalen.no","mo-i-rana.no","mosjoen.no","mosjøen.no","nesoddtangen.no","orkanger.no","osoyro.no","osøyro.no","raholt.no","råholt.no","sandnessjoen.no","sandnessjøen.no","skedsmokorset.no","slattum.no","spjelkavik.no","stathelle.no","stavern.no","stjordalshalsen.no","stjørdalshalsen.no","tananger.no","tranby.no","vossevangen.no","aarborte.no","aejrie.no","afjord.no","åfjord.no","agdenes.no","nes.akershus.no","aknoluokta.no","ákŋoluokta.no","al.no","ål.no","alaheadju.no","álaheadju.no","alesund.no","ålesund.no","alstahaug.no","alta.no","áltá.no","alvdal.no","amli.no","åmli.no","amot.no","åmot.no","andasuolo.no","andebu.no","andoy.no","andøy.no","ardal.no","årdal.no","aremark.no","arendal.no","ås.no","aseral.no","åseral.no","asker.no","askim.no","askoy.no","askøy.no","askvoll.no","asnes.no","åsnes.no","audnedaln.no","aukra.no","aure.no","aurland.no","aurskog-holand.no","aurskog-høland.no","austevoll.no","austrheim.no","averoy.no","averøy.no","badaddja.no","bådåddjå.no","bærum.no","bahcavuotna.no","báhcavuotna.no","bahccavuotna.no","báhccavuotna.no","baidar.no","báidár.no","bajddar.no","bájddar.no","balat.no","bálát.no","balestrand.no","ballangen.no","balsfjord.no","bamble.no","bardu.no","barum.no","batsfjord.no","båtsfjord.no","bearalvahki.no","bearalváhki.no","beardu.no","beiarn.no","berg.no","bergen.no","berlevag.no","berlevåg.no","bievat.no","bievát.no","bindal.no","birkenes.no","bjarkoy.no","bjarkøy.no","bjerkreim.no","bjugn.no","bodo.no","bodø.no","bokn.no","bomlo.no","bømlo.no","bremanger.no","bronnoy.no","brønnøy.no","budejju.no","nes.buskerud.no","bygland.no","bykle.no","cahcesuolo.no","čáhcesuolo.no","davvenjarga.no","davvenjárga.no","davvesiida.no","deatnu.no","dielddanuorri.no","divtasvuodna.no","divttasvuotna.no","donna.no","dønna.no","dovre.no","drammen.no","drangedal.no","dyroy.no","dyrøy.no","eid.no","eidfjord.no","eidsberg.no","eidskog.no","eidsvoll.no","eigersund.no","elverum.no","enebakk.no","engerdal.no","etne.no","etnedal.no","evenassi.no","evenášši.no","evenes.no","evje-og-hornnes.no","farsund.no","fauske.no","fedje.no","fet.no","finnoy.no","finnøy.no","fitjar.no","fjaler.no","fjell.no","fla.no","flå.no","flakstad.no","flatanger.no","flekkefjord.no","flesberg.no","flora.no","folldal.no","forde.no","førde.no","forsand.no","fosnes.no","fræna.no","frana.no","frei.no","frogn.no","froland.no","frosta.no","froya.no","frøya.no","fuoisku.no","fuossko.no","fusa.no","fyresdal.no","gaivuotna.no","gáivuotna.no","galsa.no","gálsá.no","gamvik.no","gangaviika.no","gáŋgaviika.no","gaular.no","gausdal.no","giehtavuoatna.no","gildeskal.no","gildeskål.no","giske.no","gjemnes.no","gjerdrum.no","gjerstad.no","gjesdal.no","gjovik.no","gjøvik.no","gloppen.no","gol.no","gran.no","grane.no","granvin.no","gratangen.no","grimstad.no","grong.no","grue.no","gulen.no","guovdageaidnu.no","ha.no","hå.no","habmer.no","hábmer.no","hadsel.no","hægebostad.no","hagebostad.no","halden.no","halsa.no","hamar.no","hamaroy.no","hammarfeasta.no","hámmárfeasta.no","hammerfest.no","hapmir.no","hápmir.no","haram.no","hareid.no","harstad.no","hasvik.no","hattfjelldal.no","haugesund.no","os.hedmark.no","valer.hedmark.no","våler.hedmark.no","hemne.no","hemnes.no","hemsedal.no","hitra.no","hjartdal.no","hjelmeland.no","hobol.no","hobøl.no","hof.no","hol.no","hole.no","holmestrand.no","holtalen.no","holtålen.no","os.hordaland.no","hornindal.no","horten.no","hoyanger.no","høyanger.no","hoylandet.no","høylandet.no","hurdal.no","hurum.no","hvaler.no","hyllestad.no","ibestad.no","inderoy.no","inderøy.no","iveland.no","ivgu.no","jevnaker.no","jolster.no","jølster.no","jondal.no","kafjord.no","kåfjord.no","karasjohka.no","kárášjohka.no","karasjok.no","karlsoy.no","karmoy.no","karmøy.no","kautokeino.no","klabu.no","klæbu.no","klepp.no","kongsberg.no","kongsvinger.no","kraanghke.no","kråanghke.no","kragero.no","kragerø.no","kristiansand.no","kristiansund.no","krodsherad.no","krødsherad.no","kvæfjord.no","kvænangen.no","kvafjord.no","kvalsund.no","kvam.no","kvanangen.no","kvinesdal.no","kvinnherad.no","kviteseid.no","kvitsoy.no","kvitsøy.no","laakesvuemie.no","lærdal.no","lahppi.no","láhppi.no","lardal.no","larvik.no","lavagis.no","lavangen.no","leangaviika.no","leaŋgaviika.no","lebesby.no","leikanger.no","leirfjord.no","leka.no","leksvik.no","lenvik.no","lerdal.no","lesja.no","levanger.no","lier.no","lierne.no","lillehammer.no","lillesand.no","lindas.no","lindås.no","lindesnes.no","loabat.no","loabát.no","lodingen.no","lødingen.no","lom.no","loppa.no","lorenskog.no","lørenskog.no","loten.no","løten.no","lund.no","lunner.no","luroy.no","lurøy.no","luster.no","lyngdal.no","lyngen.no","malatvuopmi.no","málatvuopmi.no","malselv.no","målselv.no","malvik.no","mandal.no","marker.no","marnardal.no","masfjorden.no","masoy.no","måsøy.no","matta-varjjat.no","mátta-várjjat.no","meland.no","meldal.no","melhus.no","meloy.no","meløy.no","meraker.no","meråker.no","midsund.no","midtre-gauldal.no","moareke.no","moåreke.no","modalen.no","modum.no","molde.no","heroy.more-og-romsdal.no","sande.more-og-romsdal.no","herøy.møre-og-romsdal.no","sande.møre-og-romsdal.no","moskenes.no","moss.no","mosvik.no","muosat.no","muosát.no","naamesjevuemie.no","nååmesjevuemie.no","nærøy.no","namdalseid.no","namsos.no","namsskogan.no","nannestad.no","naroy.no","narviika.no","narvik.no","naustdal.no","navuotna.no","návuotna.no","nedre-eiker.no","nesna.no","nesodden.no","nesseby.no","nesset.no","nissedal.no","nittedal.no","nord-aurdal.no","nord-fron.no","nord-odal.no","norddal.no","nordkapp.no","bo.nordland.no","bø.nordland.no","heroy.nordland.no","herøy.nordland.no","nordre-land.no","nordreisa.no","nore-og-uvdal.no","notodden.no","notteroy.no","nøtterøy.no","odda.no","oksnes.no","øksnes.no","omasvuotna.no","oppdal.no","oppegard.no","oppegård.no","orkdal.no","orland.no","ørland.no","orskog.no","ørskog.no","orsta.no","ørsta.no","osen.no","osteroy.no","osterøy.no","valer.ostfold.no","våler.østfold.no","ostre-toten.no","østre-toten.no","overhalla.no","ovre-eiker.no","øvre-eiker.no","oyer.no","øyer.no","oygarden.no","øygarden.no","oystre-slidre.no","øystre-slidre.no","porsanger.no","porsangu.no","porsáŋgu.no","porsgrunn.no","rade.no","råde.no","radoy.no","radøy.no","rælingen.no","rahkkeravju.no","ráhkkerávju.no","raisa.no","ráisa.no","rakkestad.no","ralingen.no","rana.no","randaberg.no","rauma.no","rendalen.no","rennebu.no","rennesoy.no","rennesøy.no","rindal.no","ringebu.no","ringerike.no","ringsaker.no","risor.no","risør.no","rissa.no","roan.no","rodoy.no","rødøy.no","rollag.no","romsa.no","romskog.no","rømskog.no","roros.no","røros.no","rost.no","røst.no","royken.no","røyken.no","royrvik.no","røyrvik.no","ruovat.no","rygge.no","salangen.no","salat.no","sálat.no","sálát.no","saltdal.no","samnanger.no","sandefjord.no","sandnes.no","sandoy.no","sandøy.no","sarpsborg.no","sauda.no","sauherad.no","sel.no","selbu.no","selje.no","seljord.no","siellak.no","sigdal.no","siljan.no","sirdal.no","skanit.no","skánit.no","skanland.no","skånland.no","skaun.no","skedsmo.no","ski.no","skien.no","skierva.no","skiervá.no","skiptvet.no","skjak.no","skjåk.no","skjervoy.no","skjervøy.no","skodje.no","smola.no","smøla.no","snaase.no","snåase.no","snasa.no","snåsa.no","snillfjord.no","snoasa.no","sogndal.no","sogne.no","søgne.no","sokndal.no","sola.no","solund.no","somna.no","sømna.no","sondre-land.no","søndre-land.no","songdalen.no","sor-aurdal.no","sør-aurdal.no","sor-fron.no","sør-fron.no","sor-odal.no","sør-odal.no","sor-varanger.no","sør-varanger.no","sorfold.no","sørfold.no","sorreisa.no","sørreisa.no","sortland.no","sorum.no","sørum.no","spydeberg.no","stange.no","stavanger.no","steigen.no","steinkjer.no","stjordal.no","stjørdal.no","stokke.no","stor-elvdal.no","stord.no","stordal.no","storfjord.no","strand.no","stranda.no","stryn.no","sula.no","suldal.no","sund.no","sunndal.no","surnadal.no","sveio.no","svelvik.no","sykkylven.no","tana.no","bo.telemark.no","bø.telemark.no","time.no","tingvoll.no","tinn.no","tjeldsund.no","tjome.no","tjøme.no","tokke.no","tolga.no","tonsberg.no","tønsberg.no","torsken.no","træna.no","trana.no","tranoy.no","tranøy.no","troandin.no","trogstad.no","trøgstad.no","tromsa.no","tromso.no","tromsø.no","trondheim.no","trysil.no","tvedestrand.no","tydal.no","tynset.no","tysfjord.no","tysnes.no","tysvær.no","tysvar.no","ullensaker.no","ullensvang.no","ulvik.no","unjarga.no","unjárga.no","utsira.no","vaapste.no","vadso.no","vadsø.no","værøy.no","vaga.no","vågå.no","vagan.no","vågan.no","vagsoy.no","vågsøy.no","vaksdal.no","valle.no","vang.no","vanylven.no","vardo.no","vardø.no","varggat.no","várggát.no","varoy.no","vefsn.no","vega.no","vegarshei.no","vegårshei.no","vennesla.no","verdal.no","verran.no","vestby.no","sande.vestfold.no","vestnes.no","vestre-slidre.no","vestre-toten.no","vestvagoy.no","vestvågøy.no","vevelstad.no","vik.no","vikna.no","vindafjord.no","voagat.no","volda.no","voss.no","*.np","nr","biz.nr","com.nr","edu.nr","gov.nr","info.nr","net.nr","org.nr","nu","nz","ac.nz","co.nz","cri.nz","geek.nz","gen.nz","govt.nz","health.nz","iwi.nz","kiwi.nz","maori.nz","māori.nz","mil.nz","net.nz","org.nz","parliament.nz","school.nz","om","co.om","com.om","edu.om","gov.om","med.om","museum.om","net.om","org.om","pro.om","onion","org","pa","abo.pa","ac.pa","com.pa","edu.pa","gob.pa","ing.pa","med.pa","net.pa","nom.pa","org.pa","sld.pa","pe","com.pe","edu.pe","gob.pe","mil.pe","net.pe","nom.pe","org.pe","pf","com.pf","edu.pf","org.pf","*.pg","ph","com.ph","edu.ph","gov.ph","i.ph","mil.ph","net.ph","ngo.ph","org.ph","pk","ac.pk","biz.pk","com.pk","edu.pk","fam.pk","gkp.pk","gob.pk","gog.pk","gok.pk","gon.pk","gop.pk","gos.pk","gov.pk","net.pk","org.pk","web.pk","pl","com.pl","net.pl","org.pl","agro.pl","aid.pl","atm.pl","auto.pl","biz.pl","edu.pl","gmina.pl","gsm.pl","info.pl","mail.pl","media.pl","miasta.pl","mil.pl","nieruchomosci.pl","nom.pl","pc.pl","powiat.pl","priv.pl","realestate.pl","rel.pl","sex.pl","shop.pl","sklep.pl","sos.pl","szkola.pl","targi.pl","tm.pl","tourism.pl","travel.pl","turystyka.pl","gov.pl","ap.gov.pl","griw.gov.pl","ic.gov.pl","is.gov.pl","kmpsp.gov.pl","konsulat.gov.pl","kppsp.gov.pl","kwp.gov.pl","kwpsp.gov.pl","mup.gov.pl","mw.gov.pl","oia.gov.pl","oirm.gov.pl","oke.gov.pl","oow.gov.pl","oschr.gov.pl","oum.gov.pl","pa.gov.pl","pinb.gov.pl","piw.gov.pl","po.gov.pl","pr.gov.pl","psp.gov.pl","psse.gov.pl","pup.gov.pl","rzgw.gov.pl","sa.gov.pl","sdn.gov.pl","sko.gov.pl","so.gov.pl","sr.gov.pl","starostwo.gov.pl","ug.gov.pl","ugim.gov.pl","um.gov.pl","umig.gov.pl","upow.gov.pl","uppo.gov.pl","us.gov.pl","uw.gov.pl","uzs.gov.pl","wif.gov.pl","wiih.gov.pl","winb.gov.pl","wios.gov.pl","witd.gov.pl","wiw.gov.pl","wkz.gov.pl","wsa.gov.pl","wskr.gov.pl","wsse.gov.pl","wuoz.gov.pl","wzmiuw.gov.pl","zp.gov.pl","zpisdn.gov.pl","augustow.pl","babia-gora.pl","bedzin.pl","beskidy.pl","bialowieza.pl","bialystok.pl","bielawa.pl","bieszczady.pl","boleslawiec.pl","bydgoszcz.pl","bytom.pl","cieszyn.pl","czeladz.pl","czest.pl","dlugoleka.pl","elblag.pl","elk.pl","glogow.pl","gniezno.pl","gorlice.pl","grajewo.pl","ilawa.pl","jaworzno.pl","jelenia-gora.pl","jgora.pl","kalisz.pl","karpacz.pl","kartuzy.pl","kaszuby.pl","katowice.pl","kazimierz-dolny.pl","kepno.pl","ketrzyn.pl","klodzko.pl","kobierzyce.pl","kolobrzeg.pl","konin.pl","konskowola.pl","kutno.pl","lapy.pl","lebork.pl","legnica.pl","lezajsk.pl","limanowa.pl","lomza.pl","lowicz.pl","lubin.pl","lukow.pl","malbork.pl","malopolska.pl","mazowsze.pl","mazury.pl","mielec.pl","mielno.pl","mragowo.pl","naklo.pl","nowaruda.pl","nysa.pl","olawa.pl","olecko.pl","olkusz.pl","olsztyn.pl","opoczno.pl","opole.pl","ostroda.pl","ostroleka.pl","ostrowiec.pl","ostrowwlkp.pl","pila.pl","pisz.pl","podhale.pl","podlasie.pl","polkowice.pl","pomorskie.pl","pomorze.pl","prochowice.pl","pruszkow.pl","przeworsk.pl","pulawy.pl","radom.pl","rawa-maz.pl","rybnik.pl","rzeszow.pl","sanok.pl","sejny.pl","skoczow.pl","slask.pl","slupsk.pl","sosnowiec.pl","stalowa-wola.pl","starachowice.pl","stargard.pl","suwalki.pl","swidnica.pl","swiebodzin.pl","swinoujscie.pl","szczecin.pl","szczytno.pl","tarnobrzeg.pl","tgory.pl","turek.pl","tychy.pl","ustka.pl","walbrzych.pl","warmia.pl","warszawa.pl","waw.pl","wegrow.pl","wielun.pl","wlocl.pl","wloclawek.pl","wodzislaw.pl","wolomin.pl","wroclaw.pl","zachpomor.pl","zagan.pl","zarow.pl","zgora.pl","zgorzelec.pl","pm","pn","co.pn","edu.pn","gov.pn","net.pn","org.pn","post","pr","biz.pr","com.pr","edu.pr","gov.pr","info.pr","isla.pr","name.pr","net.pr","org.pr","pro.pr","ac.pr","est.pr","prof.pr","pro","aaa.pro","aca.pro","acct.pro","avocat.pro","bar.pro","cpa.pro","eng.pro","jur.pro","law.pro","med.pro","recht.pro","ps","com.ps","edu.ps","gov.ps","net.ps","org.ps","plo.ps","sec.ps","pt","com.pt","edu.pt","gov.pt","int.pt","net.pt","nome.pt","org.pt","publ.pt","pw","belau.pw","co.pw","ed.pw","go.pw","or.pw","py","com.py","coop.py","edu.py","gov.py","mil.py","net.py","org.py","qa","com.qa","edu.qa","gov.qa","mil.qa","name.qa","net.qa","org.qa","sch.qa","re","asso.re","com.re","ro","arts.ro","com.ro","firm.ro","info.ro","nom.ro","nt.ro","org.ro","rec.ro","store.ro","tm.ro","www.ro","rs","ac.rs","co.rs","edu.rs","gov.rs","in.rs","org.rs","ru","rw","ac.rw","co.rw","coop.rw","gov.rw","mil.rw","net.rw","org.rw","sa","com.sa","edu.sa","gov.sa","med.sa","net.sa","org.sa","pub.sa","sch.sa","sb","com.sb","edu.sb","gov.sb","net.sb","org.sb","sc","com.sc","edu.sc","gov.sc","net.sc","org.sc","sd","com.sd","edu.sd","gov.sd","info.sd","med.sd","net.sd","org.sd","tv.sd","se","a.se","ac.se","b.se","bd.se","brand.se","c.se","d.se","e.se","f.se","fh.se","fhsk.se","fhv.se","g.se","h.se","i.se","k.se","komforb.se","kommunalforbund.se","komvux.se","l.se","lanbib.se","m.se","n.se","naturbruksgymn.se","o.se","org.se","p.se","parti.se","pp.se","press.se","r.se","s.se","t.se","tm.se","u.se","w.se","x.se","y.se","z.se","sg","com.sg","edu.sg","gov.sg","net.sg","org.sg","sh","com.sh","gov.sh","mil.sh","net.sh","org.sh","si","sj","sk","sl","com.sl","edu.sl","gov.sl","net.sl","org.sl","sm","sn","art.sn","com.sn","edu.sn","gouv.sn","org.sn","perso.sn","univ.sn","so","com.so","edu.so","gov.so","me.so","net.so","org.so","sr","ss","biz.ss","co.ss","com.ss","edu.ss","gov.ss","me.ss","net.ss","org.ss","sch.ss","st","co.st","com.st","consulado.st","edu.st","embaixada.st","mil.st","net.st","org.st","principe.st","saotome.st","store.st","su","sv","com.sv","edu.sv","gob.sv","org.sv","red.sv","sx","gov.sx","sy","com.sy","edu.sy","gov.sy","mil.sy","net.sy","org.sy","sz","ac.sz","co.sz","org.sz","tc","td","tel","tf","tg","th","ac.th","co.th","go.th","in.th","mi.th","net.th","or.th","tj","ac.tj","biz.tj","co.tj","com.tj","edu.tj","go.tj","gov.tj","int.tj","mil.tj","name.tj","net.tj","nic.tj","org.tj","test.tj","web.tj","tk","tl","gov.tl","tm","co.tm","com.tm","edu.tm","gov.tm","mil.tm","net.tm","nom.tm","org.tm","tn","com.tn","ens.tn","fin.tn","gov.tn","ind.tn","info.tn","intl.tn","mincom.tn","nat.tn","net.tn","org.tn","perso.tn","tourism.tn","to","com.to","edu.to","gov.to","mil.to","net.to","org.to","tr","av.tr","bbs.tr","bel.tr","biz.tr","com.tr","dr.tr","edu.tr","gen.tr","gov.tr","info.tr","k12.tr","kep.tr","mil.tr","name.tr","net.tr","org.tr","pol.tr","tel.tr","tsk.tr","tv.tr","web.tr","nc.tr","gov.nc.tr","tt","biz.tt","co.tt","com.tt","edu.tt","gov.tt","info.tt","mil.tt","name.tt","net.tt","org.tt","pro.tt","tv","tw","club.tw","com.tw","ebiz.tw","edu.tw","game.tw","gov.tw","idv.tw","mil.tw","net.tw","org.tw","tz","ac.tz","co.tz","go.tz","hotel.tz","info.tz","me.tz","mil.tz","mobi.tz","ne.tz","or.tz","sc.tz","tv.tz","ua","com.ua","edu.ua","gov.ua","in.ua","net.ua","org.ua","cherkassy.ua","cherkasy.ua","chernigov.ua","chernihiv.ua","chernivtsi.ua","chernovtsy.ua","ck.ua","cn.ua","cr.ua","crimea.ua","cv.ua","dn.ua","dnepropetrovsk.ua","dnipropetrovsk.ua","donetsk.ua","dp.ua","if.ua","ivano-frankivsk.ua","kh.ua","kharkiv.ua","kharkov.ua","kherson.ua","khmelnitskiy.ua","khmelnytskyi.ua","kiev.ua","kirovograd.ua","km.ua","kr.ua","kropyvnytskyi.ua","krym.ua","ks.ua","kv.ua","kyiv.ua","lg.ua","lt.ua","lugansk.ua","luhansk.ua","lutsk.ua","lv.ua","lviv.ua","mk.ua","mykolaiv.ua","nikolaev.ua","od.ua","odesa.ua","odessa.ua","pl.ua","poltava.ua","rivne.ua","rovno.ua","rv.ua","sb.ua","sebastopol.ua","sevastopol.ua","sm.ua","sumy.ua","te.ua","ternopil.ua","uz.ua","uzhgorod.ua","uzhhorod.ua","vinnica.ua","vinnytsia.ua","vn.ua","volyn.ua","yalta.ua","zakarpattia.ua","zaporizhzhe.ua","zaporizhzhia.ua","zhitomir.ua","zhytomyr.ua","zp.ua","zt.ua","ug","ac.ug","co.ug","com.ug","go.ug","ne.ug","or.ug","org.ug","sc.ug","uk","ac.uk","co.uk","gov.uk","ltd.uk","me.uk","net.uk","nhs.uk","org.uk","plc.uk","police.uk","*.sch.uk","us","dni.us","fed.us","isa.us","kids.us","nsn.us","ak.us","al.us","ar.us","as.us","az.us","ca.us","co.us","ct.us","dc.us","de.us","fl.us","ga.us","gu.us","hi.us","ia.us","id.us","il.us","in.us","ks.us","ky.us","la.us","ma.us","md.us","me.us","mi.us","mn.us","mo.us","ms.us","mt.us","nc.us","nd.us","ne.us","nh.us","nj.us","nm.us","nv.us","ny.us","oh.us","ok.us","or.us","pa.us","pr.us","ri.us","sc.us","sd.us","tn.us","tx.us","ut.us","va.us","vi.us","vt.us","wa.us","wi.us","wv.us","wy.us","k12.ak.us","k12.al.us","k12.ar.us","k12.as.us","k12.az.us","k12.ca.us","k12.co.us","k12.ct.us","k12.dc.us","k12.fl.us","k12.ga.us","k12.gu.us","k12.ia.us","k12.id.us","k12.il.us","k12.in.us","k12.ks.us","k12.ky.us","k12.la.us","k12.ma.us","k12.md.us","k12.me.us","k12.mi.us","k12.mn.us","k12.mo.us","k12.ms.us","k12.mt.us","k12.nc.us","k12.ne.us","k12.nh.us","k12.nj.us","k12.nm.us","k12.nv.us","k12.ny.us","k12.oh.us","k12.ok.us","k12.or.us","k12.pa.us","k12.pr.us","k12.sc.us","k12.tn.us","k12.tx.us","k12.ut.us","k12.va.us","k12.vi.us","k12.vt.us","k12.wa.us","k12.wi.us","cc.ak.us","lib.ak.us","cc.al.us","lib.al.us","cc.ar.us","lib.ar.us","cc.as.us","lib.as.us","cc.az.us","lib.az.us","cc.ca.us","lib.ca.us","cc.co.us","lib.co.us","cc.ct.us","lib.ct.us","cc.dc.us","lib.dc.us","cc.de.us","cc.fl.us","cc.ga.us","cc.gu.us","cc.hi.us","cc.ia.us","cc.id.us","cc.il.us","cc.in.us","cc.ks.us","cc.ky.us","cc.la.us","cc.ma.us","cc.md.us","cc.me.us","cc.mi.us","cc.mn.us","cc.mo.us","cc.ms.us","cc.mt.us","cc.nc.us","cc.nd.us","cc.ne.us","cc.nh.us","cc.nj.us","cc.nm.us","cc.nv.us","cc.ny.us","cc.oh.us","cc.ok.us","cc.or.us","cc.pa.us","cc.pr.us","cc.ri.us","cc.sc.us","cc.sd.us","cc.tn.us","cc.tx.us","cc.ut.us","cc.va.us","cc.vi.us","cc.vt.us","cc.wa.us","cc.wi.us","cc.wv.us","cc.wy.us","k12.wy.us","lib.fl.us","lib.ga.us","lib.gu.us","lib.hi.us","lib.ia.us","lib.id.us","lib.il.us","lib.in.us","lib.ks.us","lib.ky.us","lib.la.us","lib.ma.us","lib.md.us","lib.me.us","lib.mi.us","lib.mn.us","lib.mo.us","lib.ms.us","lib.mt.us","lib.nc.us","lib.nd.us","lib.ne.us","lib.nh.us","lib.nj.us","lib.nm.us","lib.nv.us","lib.ny.us","lib.oh.us","lib.ok.us","lib.or.us","lib.pa.us","lib.pr.us","lib.ri.us","lib.sc.us","lib.sd.us","lib.tn.us","lib.tx.us","lib.ut.us","lib.va.us","lib.vi.us","lib.vt.us","lib.wa.us","lib.wi.us","lib.wy.us","chtr.k12.ma.us","paroch.k12.ma.us","pvt.k12.ma.us","ann-arbor.mi.us","cog.mi.us","dst.mi.us","eaton.mi.us","gen.mi.us","mus.mi.us","tec.mi.us","washtenaw.mi.us","uy","com.uy","edu.uy","gub.uy","mil.uy","net.uy","org.uy","uz","co.uz","com.uz","net.uz","org.uz","va","vc","com.vc","edu.vc","gov.vc","mil.vc","net.vc","org.vc","ve","arts.ve","bib.ve","co.ve","com.ve","e12.ve","edu.ve","firm.ve","gob.ve","gov.ve","info.ve","int.ve","mil.ve","net.ve","nom.ve","org.ve","rar.ve","rec.ve","store.ve","tec.ve","web.ve","vg","vi","co.vi","com.vi","k12.vi","net.vi","org.vi","vn","ac.vn","ai.vn","biz.vn","com.vn","edu.vn","gov.vn","health.vn","id.vn","info.vn","int.vn","io.vn","name.vn","net.vn","org.vn","pro.vn","angiang.vn","bacgiang.vn","backan.vn","baclieu.vn","bacninh.vn","baria-vungtau.vn","bentre.vn","binhdinh.vn","binhduong.vn","binhphuoc.vn","binhthuan.vn","camau.vn","cantho.vn","caobang.vn","daklak.vn","daknong.vn","danang.vn","dienbien.vn","dongnai.vn","dongthap.vn","gialai.vn","hagiang.vn","haiduong.vn","haiphong.vn","hanam.vn","hanoi.vn","hatinh.vn","haugiang.vn","hoabinh.vn","hungyen.vn","khanhhoa.vn","kiengiang.vn","kontum.vn","laichau.vn","lamdong.vn","langson.vn","laocai.vn","longan.vn","namdinh.vn","nghean.vn","ninhbinh.vn","ninhthuan.vn","phutho.vn","phuyen.vn","quangbinh.vn","quangnam.vn","quangngai.vn","quangninh.vn","quangtri.vn","soctrang.vn","sonla.vn","tayninh.vn","thaibinh.vn","thainguyen.vn","thanhhoa.vn","thanhphohochiminh.vn","thuathienhue.vn","tiengiang.vn","travinh.vn","tuyenquang.vn","vinhlong.vn","vinhphuc.vn","yenbai.vn","vu","com.vu","edu.vu","net.vu","org.vu","wf","ws","com.ws","edu.ws","gov.ws","net.ws","org.ws","yt","امارات","հայ","বাংলা","бг","البحرين","бел","中国","中國","الجزائر","مصر","ею","ευ","موريتانيا","გე","ελ","香港","個人.香港","公司.香港","政府.香港","教育.香港","組織.香港","網絡.香港","ಭಾರತ","ଭାରତ","ভাৰত","भारतम्","भारोत","ڀارت","ഭാരതം","भारत","بارت","بھارت","భారత్","ભારત","ਭਾਰਤ","ভারত","இந்தியா","ایران","ايران","عراق","الاردن","한국","қаз","ລາວ","ලංකා","இலங்கை","المغرب","мкд","мон","澳門","澳门","مليسيا","عمان","پاکستان","پاكستان","فلسطين","срб","ак.срб","обр.срб","од.срб","орг.срб","пр.срб","упр.срб","рф","قطر","السعودية","السعودیة","السعودیۃ","السعوديه","سودان","新加坡","சிங்கப்பூர்","سورية","سوريا","ไทย","ทหาร.ไทย","ธุรกิจ.ไทย","เน็ต.ไทย","รัฐบาล.ไทย","ศึกษา.ไทย","องค์กร.ไทย","تونس","台灣","台湾","臺灣","укр","اليمن","xxx","ye","com.ye","edu.ye","gov.ye","mil.ye","net.ye","org.ye","ac.za","agric.za","alt.za","co.za","edu.za","gov.za","grondar.za","law.za","mil.za","net.za","ngo.za","nic.za","nis.za","nom.za","org.za","school.za","tm.za","web.za","zm","ac.zm","biz.zm","co.zm","com.zm","edu.zm","gov.zm","info.zm","mil.zm","net.zm","org.zm","sch.zm","zw","ac.zw","co.zw","gov.zw","mil.zw","org.zw","aaa","aarp","abb","abbott","abbvie","abc","able","abogado","abudhabi","academy","accenture","accountant","accountants","aco","actor","ads","adult","aeg","aetna","afl","africa","agakhan","agency","aig","airbus","airforce","airtel","akdn","alibaba","alipay","allfinanz","allstate","ally","alsace","alstom","amazon","americanexpress","americanfamily","amex","amfam","amica","amsterdam","analytics","android","anquan","anz","aol","apartments","app","apple","aquarelle","arab","aramco","archi","army","art","arte","asda","associates","athleta","attorney","auction","audi","audible","audio","auspost","author","auto","autos","aws","axa","azure","baby","baidu","banamex","band","bank","bar","barcelona","barclaycard","barclays","barefoot","bargains","baseball","basketball","bauhaus","bayern","bbc","bbt","bbva","bcg","bcn","beats","beauty","beer","bentley","berlin","best","bestbuy","bet","bharti","bible","bid","bike","bing","bingo","bio","black","blackfriday","blockbuster","blog","bloomberg","blue","bms","bmw","bnpparibas","boats","boehringer","bofa","bom","bond","boo","book","booking","bosch","bostik","boston","bot","boutique","box","bradesco","bridgestone","broadway","broker","brother","brussels","build","builders","business","buy","buzz","bzh","cab","cafe","cal","call","calvinklein","cam","camera","camp","canon","capetown","capital","capitalone","car","caravan","cards","care","career","careers","cars","casa","case","cash","casino","catering","catholic","cba","cbn","cbre","center","ceo","cern","cfa","cfd","chanel","channel","charity","chase","chat","cheap","chintai","christmas","chrome","church","cipriani","circle","cisco","citadel","citi","citic","city","claims","cleaning","click","clinic","clinique","clothing","cloud","club","clubmed","coach","codes","coffee","college","cologne","commbank","community","company","compare","computer","comsec","condos","construction","consulting","contact","contractors","cooking","cool","corsica","country","coupon","coupons","courses","cpa","credit","creditcard","creditunion","cricket","crown","crs","cruise","cruises","cuisinella","cymru","cyou","dad","dance","data","date","dating","datsun","day","dclk","dds","deal","dealer","deals","degree","delivery","dell","deloitte","delta","democrat","dental","dentist","desi","design","dev","dhl","diamonds","diet","digital","direct","directory","discount","discover","dish","diy","dnp","docs","doctor","dog","domains","dot","download","drive","dtv","dubai","dunlop","dupont","durban","dvag","dvr","earth","eat","eco","edeka","education","email","emerck","energy","engineer","engineering","enterprises","epson","equipment","ericsson","erni","esq","estate","eurovision","eus","events","exchange","expert","exposed","express","extraspace","fage","fail","fairwinds","faith","family","fan","fans","farm","farmers","fashion","fast","fedex","feedback","ferrari","ferrero","fidelity","fido","film","final","finance","financial","fire","firestone","firmdale","fish","fishing","fit","fitness","flickr","flights","flir","florist","flowers","fly","foo","food","football","ford","forex","forsale","forum","foundation","fox","free","fresenius","frl","frogans","frontier","ftr","fujitsu","fun","fund","furniture","futbol","fyi","gal","gallery","gallo","gallup","game","games","gap","garden","gay","gbiz","gdn","gea","gent","genting","george","ggee","gift","gifts","gives","giving","glass","gle","global","globo","gmail","gmbh","gmo","gmx","godaddy","gold","goldpoint","golf","goo","goodyear","goog","google","gop","got","grainger","graphics","gratis","green","gripe","grocery","group","gucci","guge","guide","guitars","guru","hair","hamburg","hangout","haus","hbo","hdfc","hdfcbank","health","healthcare","help","helsinki","here","hermes","hiphop","hisamitsu","hitachi","hiv","hkt","hockey","holdings","holiday","homedepot","homegoods","homes","homesense","honda","horse","hospital","host","hosting","hot","hotels","hotmail","house","how","hsbc","hughes","hyatt","hyundai","ibm","icbc","ice","icu","ieee","ifm","ikano","imamat","imdb","immo","immobilien","inc","industries","infiniti","ing","ink","institute","insurance","insure","international","intuit","investments","ipiranga","irish","ismaili","ist","istanbul","itau","itv","jaguar","java","jcb","jeep","jetzt","jewelry","jio","jll","jmp","jnj","joburg","jot","joy","jpmorgan","jprs","juegos","juniper","kaufen","kddi","kerryhotels","kerrylogistics","kerryproperties","kfh","kia","kids","kim","kindle","kitchen","kiwi","koeln","komatsu","kosher","kpmg","kpn","krd","kred","kuokgroup","kyoto","lacaixa","lamborghini","lamer","lancaster","land","landrover","lanxess","lasalle","lat","latino","latrobe","law","lawyer","lds","lease","leclerc","lefrak","legal","lego","lexus","lgbt","lidl","life","lifeinsurance","lifestyle","lighting","like","lilly","limited","limo","lincoln","link","lipsy","live","living","llc","llp","loan","loans","locker","locus","lol","london","lotte","lotto","love","lpl","lplfinancial","ltd","ltda","lundbeck","luxe","luxury","madrid","maif","maison","makeup","man","management","mango","map","market","marketing","markets","marriott","marshalls","mattel","mba","mckinsey","med","media","meet","melbourne","meme","memorial","men","menu","merck","merckmsd","miami","microsoft","mini","mint","mit","mitsubishi","mlb","mls","mma","mobile","moda","moe","moi","mom","monash","money","monster","mormon","mortgage","moscow","moto","motorcycles","mov","movie","msd","mtn","mtr","music","nab","nagoya","navy","nba","nec","netbank","netflix","network","neustar","new","news","next","nextdirect","nexus","nfl","ngo","nhk","nico","nike","nikon","ninja","nissan","nissay","nokia","norton","now","nowruz","nowtv","nra","nrw","ntt","nyc","obi","observer","office","okinawa","olayan","olayangroup","ollo","omega","one","ong","onl","online","ooo","open","oracle","orange","organic","origins","osaka","otsuka","ott","ovh","page","panasonic","paris","pars","partners","parts","party","pay","pccw","pet","pfizer","pharmacy","phd","philips","phone","photo","photography","photos","physio","pics","pictet","pictures","pid","pin","ping","pink","pioneer","pizza","place","play","playstation","plumbing","plus","pnc","pohl","poker","politie","porn","pramerica","praxi","press","prime","prod","productions","prof","progressive","promo","properties","property","protection","pru","prudential","pub","pwc","qpon","quebec","quest","racing","radio","read","realestate","realtor","realty","recipes","red","redstone","redumbrella","rehab","reise","reisen","reit","reliance","ren","rent","rentals","repair","report","republican","rest","restaurant","review","reviews","rexroth","rich","richardli","ricoh","ril","rio","rip","rocks","rodeo","rogers","room","rsvp","rugby","ruhr","run","rwe","ryukyu","saarland","safe","safety","sakura","sale","salon","samsclub","samsung","sandvik","sandvikcoromant","sanofi","sap","sarl","sas","save","saxo","sbi","sbs","scb","schaeffler","schmidt","scholarships","school","schule","schwarz","science","scot","search","seat","secure","security","seek","select","sener","services","seven","sew","sex","sexy","sfr","shangrila","sharp","shell","shia","shiksha","shoes","shop","shopping","shouji","show","silk","sina","singles","site","ski","skin","sky","skype","sling","smart","smile","sncf","soccer","social","softbank","software","sohu","solar","solutions","song","sony","soy","spa","space","sport","spot","srl","stada","staples","star","statebank","statefarm","stc","stcgroup","stockholm","storage","store","stream","studio","study","style","sucks","supplies","supply","support","surf","surgery","suzuki","swatch","swiss","sydney","systems","tab","taipei","talk","taobao","target","tatamotors","tatar","tattoo","tax","taxi","tci","tdk","team","tech","technology","temasek","tennis","teva","thd","theater","theatre","tiaa","tickets","tienda","tips","tires","tirol","tjmaxx","tjx","tkmaxx","tmall","today","tokyo","tools","top","toray","toshiba","total","tours","town","toyota","toys","trade","trading","training","travel","travelers","travelersinsurance","trust","trv","tube","tui","tunes","tushu","tvs","ubank","ubs","unicom","university","uno","uol","ups","vacations","vana","vanguard","vegas","ventures","verisign","versicherung","vet","viajes","video","vig","viking","villas","vin","vip","virgin","visa","vision","viva","vivo","vlaanderen","vodka","volvo","vote","voting","voto","voyage","wales","walmart","walter","wang","wanggou","watch","watches","weather","weatherchannel","webcam","weber","website","wed","wedding","weibo","weir","whoswho","wien","wiki","williamhill","win","windows","wine","winners","wme","wolterskluwer","woodside","work","works","world","wow","wtc","wtf","xbox","xerox","xihuan","xin","कॉम","セール","佛山","慈善","集团","在线","点看","คอม","八卦","موقع","公益","公司","香格里拉","网站","移动","我爱你","москва","католик","онлайн","сайт","联通","קום","时尚","微博","淡马锡","ファッション","орг","नेट","ストア","アマゾン","삼성","商标","商店","商城","дети","ポイント","新闻","家電","كوم","中文网","中信","娱乐","谷歌","電訊盈科","购物","クラウド","通販","网店","संगठन","餐厅","网络","ком","亚马逊","食品","飞利浦","手机","ارامكو","العليان","بازار","ابوظبي","كاثوليك","همراه","닷컴","政府","شبكة","بيتك","عرب","机构","组织机构","健康","招聘","рус","大拿","みんな","グーグル","世界","書籍","网址","닷넷","コム","天主教","游戏","vermögensberater","vermögensberatung","企业","信息","嘉里大酒店","嘉里","广东","政务","xyz","yachts","yahoo","yamaxun","yandex","yodobashi","yoga","yokohama","you","youtube","yun","zappos","zara","zero","zip","zone","zuerich","co.krd","edu.krd","art.pl","gliwice.pl","krakow.pl","poznan.pl","wroc.pl","zakopane.pl","lib.de.us","12chars.dev","12chars.it","12chars.pro","cc.ua","inf.ua","ltd.ua","611.to","a2hosted.com","cpserver.com","aaa.vodka","*.on-acorn.io","activetrail.biz","adaptable.app","adobeaemcloud.com","*.dev.adobeaemcloud.com","aem.live","hlx.live","adobeaemcloud.net","aem.page","hlx.page","hlx3.page","adobeio-static.net","adobeioruntime.net","africa.com","beep.pl","airkitapps.com","airkitapps-au.com","airkitapps.eu","aivencloud.com","akadns.net","akamai.net","akamai-staging.net","akamaiedge.net","akamaiedge-staging.net","akamaihd.net","akamaihd-staging.net","akamaiorigin.net","akamaiorigin-staging.net","akamaized.net","akamaized-staging.net","edgekey.net","edgekey-staging.net","edgesuite.net","edgesuite-staging.net","barsy.ca","*.compute.estate","*.alces.network","kasserver.com","altervista.org","alwaysdata.net","myamaze.net","execute-api.cn-north-1.amazonaws.com.cn","execute-api.cn-northwest-1.amazonaws.com.cn","execute-api.af-south-1.amazonaws.com","execute-api.ap-east-1.amazonaws.com","execute-api.ap-northeast-1.amazonaws.com","execute-api.ap-northeast-2.amazonaws.com","execute-api.ap-northeast-3.amazonaws.com","execute-api.ap-south-1.amazonaws.com","execute-api.ap-south-2.amazonaws.com","execute-api.ap-southeast-1.amazonaws.com","execute-api.ap-southeast-2.amazonaws.com","execute-api.ap-southeast-3.amazonaws.com","execute-api.ap-southeast-4.amazonaws.com","execute-api.ap-southeast-5.amazonaws.com","execute-api.ca-central-1.amazonaws.com","execute-api.ca-west-1.amazonaws.com","execute-api.eu-central-1.amazonaws.com","execute-api.eu-central-2.amazonaws.com","execute-api.eu-north-1.amazonaws.com","execute-api.eu-south-1.amazonaws.com","execute-api.eu-south-2.amazonaws.com","execute-api.eu-west-1.amazonaws.com","execute-api.eu-west-2.amazonaws.com","execute-api.eu-west-3.amazonaws.com","execute-api.il-central-1.amazonaws.com","execute-api.me-central-1.amazonaws.com","execute-api.me-south-1.amazonaws.com","execute-api.sa-east-1.amazonaws.com","execute-api.us-east-1.amazonaws.com","execute-api.us-east-2.amazonaws.com","execute-api.us-gov-east-1.amazonaws.com","execute-api.us-gov-west-1.amazonaws.com","execute-api.us-west-1.amazonaws.com","execute-api.us-west-2.amazonaws.com","cloudfront.net","auth.af-south-1.amazoncognito.com","auth.ap-east-1.amazoncognito.com","auth.ap-northeast-1.amazoncognito.com","auth.ap-northeast-2.amazoncognito.com","auth.ap-northeast-3.amazoncognito.com","auth.ap-south-1.amazoncognito.com","auth.ap-south-2.amazoncognito.com","auth.ap-southeast-1.amazoncognito.com","auth.ap-southeast-2.amazoncognito.com","auth.ap-southeast-3.amazoncognito.com","auth.ap-southeast-4.amazoncognito.com","auth.ca-central-1.amazoncognito.com","auth.ca-west-1.amazoncognito.com","auth.eu-central-1.amazoncognito.com","auth.eu-central-2.amazoncognito.com","auth.eu-north-1.amazoncognito.com","auth.eu-south-1.amazoncognito.com","auth.eu-south-2.amazoncognito.com","auth.eu-west-1.amazoncognito.com","auth.eu-west-2.amazoncognito.com","auth.eu-west-3.amazoncognito.com","auth.il-central-1.amazoncognito.com","auth.me-central-1.amazoncognito.com","auth.me-south-1.amazoncognito.com","auth.sa-east-1.amazoncognito.com","auth.us-east-1.amazoncognito.com","auth-fips.us-east-1.amazoncognito.com","auth.us-east-2.amazoncognito.com","auth-fips.us-east-2.amazoncognito.com","auth-fips.us-gov-west-1.amazoncognito.com","auth.us-west-1.amazoncognito.com","auth-fips.us-west-1.amazoncognito.com","auth.us-west-2.amazoncognito.com","auth-fips.us-west-2.amazoncognito.com","*.compute.amazonaws.com.cn","*.compute.amazonaws.com","*.compute-1.amazonaws.com","us-east-1.amazonaws.com","emrappui-prod.cn-north-1.amazonaws.com.cn","emrnotebooks-prod.cn-north-1.amazonaws.com.cn","emrstudio-prod.cn-north-1.amazonaws.com.cn","emrappui-prod.cn-northwest-1.amazonaws.com.cn","emrnotebooks-prod.cn-northwest-1.amazonaws.com.cn","emrstudio-prod.cn-northwest-1.amazonaws.com.cn","emrappui-prod.af-south-1.amazonaws.com","emrnotebooks-prod.af-south-1.amazonaws.com","emrstudio-prod.af-south-1.amazonaws.com","emrappui-prod.ap-east-1.amazonaws.com","emrnotebooks-prod.ap-east-1.amazonaws.com","emrstudio-prod.ap-east-1.amazonaws.com","emrappui-prod.ap-northeast-1.amazonaws.com","emrnotebooks-prod.ap-northeast-1.amazonaws.com","emrstudio-prod.ap-northeast-1.amazonaws.com","emrappui-prod.ap-northeast-2.amazonaws.com","emrnotebooks-prod.ap-northeast-2.amazonaws.com","emrstudio-prod.ap-northeast-2.amazonaws.com","emrappui-prod.ap-northeast-3.amazonaws.com","emrnotebooks-prod.ap-northeast-3.amazonaws.com","emrstudio-prod.ap-northeast-3.amazonaws.com","emrappui-prod.ap-south-1.amazonaws.com","emrnotebooks-prod.ap-south-1.amazonaws.com","emrstudio-prod.ap-south-1.amazonaws.com","emrappui-prod.ap-south-2.amazonaws.com","emrnotebooks-prod.ap-south-2.amazonaws.com","emrstudio-prod.ap-south-2.amazonaws.com","emrappui-prod.ap-southeast-1.amazonaws.com","emrnotebooks-prod.ap-southeast-1.amazonaws.com","emrstudio-prod.ap-southeast-1.amazonaws.com","emrappui-prod.ap-southeast-2.amazonaws.com","emrnotebooks-prod.ap-southeast-2.amazonaws.com","emrstudio-prod.ap-southeast-2.amazonaws.com","emrappui-prod.ap-southeast-3.amazonaws.com","emrnotebooks-prod.ap-southeast-3.amazonaws.com","emrstudio-prod.ap-southeast-3.amazonaws.com","emrappui-prod.ap-southeast-4.amazonaws.com","emrnotebooks-prod.ap-southeast-4.amazonaws.com","emrstudio-prod.ap-southeast-4.amazonaws.com","emrappui-prod.ca-central-1.amazonaws.com","emrnotebooks-prod.ca-central-1.amazonaws.com","emrstudio-prod.ca-central-1.amazonaws.com","emrappui-prod.ca-west-1.amazonaws.com","emrnotebooks-prod.ca-west-1.amazonaws.com","emrstudio-prod.ca-west-1.amazonaws.com","emrappui-prod.eu-central-1.amazonaws.com","emrnotebooks-prod.eu-central-1.amazonaws.com","emrstudio-prod.eu-central-1.amazonaws.com","emrappui-prod.eu-central-2.amazonaws.com","emrnotebooks-prod.eu-central-2.amazonaws.com","emrstudio-prod.eu-central-2.amazonaws.com","emrappui-prod.eu-north-1.amazonaws.com","emrnotebooks-prod.eu-north-1.amazonaws.com","emrstudio-prod.eu-north-1.amazonaws.com","emrappui-prod.eu-south-1.amazonaws.com","emrnotebooks-prod.eu-south-1.amazonaws.com","emrstudio-prod.eu-south-1.amazonaws.com","emrappui-prod.eu-south-2.amazonaws.com","emrnotebooks-prod.eu-south-2.amazonaws.com","emrstudio-prod.eu-south-2.amazonaws.com","emrappui-prod.eu-west-1.amazonaws.com","emrnotebooks-prod.eu-west-1.amazonaws.com","emrstudio-prod.eu-west-1.amazonaws.com","emrappui-prod.eu-west-2.amazonaws.com","emrnotebooks-prod.eu-west-2.amazonaws.com","emrstudio-prod.eu-west-2.amazonaws.com","emrappui-prod.eu-west-3.amazonaws.com","emrnotebooks-prod.eu-west-3.amazonaws.com","emrstudio-prod.eu-west-3.amazonaws.com","emrappui-prod.il-central-1.amazonaws.com","emrnotebooks-prod.il-central-1.amazonaws.com","emrstudio-prod.il-central-1.amazonaws.com","emrappui-prod.me-central-1.amazonaws.com","emrnotebooks-prod.me-central-1.amazonaws.com","emrstudio-prod.me-central-1.amazonaws.com","emrappui-prod.me-south-1.amazonaws.com","emrnotebooks-prod.me-south-1.amazonaws.com","emrstudio-prod.me-south-1.amazonaws.com","emrappui-prod.sa-east-1.amazonaws.com","emrnotebooks-prod.sa-east-1.amazonaws.com","emrstudio-prod.sa-east-1.amazonaws.com","emrappui-prod.us-east-1.amazonaws.com","emrnotebooks-prod.us-east-1.amazonaws.com","emrstudio-prod.us-east-1.amazonaws.com","emrappui-prod.us-east-2.amazonaws.com","emrnotebooks-prod.us-east-2.amazonaws.com","emrstudio-prod.us-east-2.amazonaws.com","emrappui-prod.us-gov-east-1.amazonaws.com","emrnotebooks-prod.us-gov-east-1.amazonaws.com","emrstudio-prod.us-gov-east-1.amazonaws.com","emrappui-prod.us-gov-west-1.amazonaws.com","emrnotebooks-prod.us-gov-west-1.amazonaws.com","emrstudio-prod.us-gov-west-1.amazonaws.com","emrappui-prod.us-west-1.amazonaws.com","emrnotebooks-prod.us-west-1.amazonaws.com","emrstudio-prod.us-west-1.amazonaws.com","emrappui-prod.us-west-2.amazonaws.com","emrnotebooks-prod.us-west-2.amazonaws.com","emrstudio-prod.us-west-2.amazonaws.com","*.cn-north-1.airflow.amazonaws.com.cn","*.cn-northwest-1.airflow.amazonaws.com.cn","*.af-south-1.airflow.amazonaws.com","*.ap-east-1.airflow.amazonaws.com","*.ap-northeast-1.airflow.amazonaws.com","*.ap-northeast-2.airflow.amazonaws.com","*.ap-northeast-3.airflow.amazonaws.com","*.ap-south-1.airflow.amazonaws.com","*.ap-south-2.airflow.amazonaws.com","*.ap-southeast-1.airflow.amazonaws.com","*.ap-southeast-2.airflow.amazonaws.com","*.ap-southeast-3.airflow.amazonaws.com","*.ap-southeast-4.airflow.amazonaws.com","*.ca-central-1.airflow.amazonaws.com","*.ca-west-1.airflow.amazonaws.com","*.eu-central-1.airflow.amazonaws.com","*.eu-central-2.airflow.amazonaws.com","*.eu-north-1.airflow.amazonaws.com","*.eu-south-1.airflow.amazonaws.com","*.eu-south-2.airflow.amazonaws.com","*.eu-west-1.airflow.amazonaws.com","*.eu-west-2.airflow.amazonaws.com","*.eu-west-3.airflow.amazonaws.com","*.il-central-1.airflow.amazonaws.com","*.me-central-1.airflow.amazonaws.com","*.me-south-1.airflow.amazonaws.com","*.sa-east-1.airflow.amazonaws.com","*.us-east-1.airflow.amazonaws.com","*.us-east-2.airflow.amazonaws.com","*.us-west-1.airflow.amazonaws.com","*.us-west-2.airflow.amazonaws.com","s3.dualstack.cn-north-1.amazonaws.com.cn","s3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn","s3-website.dualstack.cn-north-1.amazonaws.com.cn","s3.cn-north-1.amazonaws.com.cn","s3-accesspoint.cn-north-1.amazonaws.com.cn","s3-deprecated.cn-north-1.amazonaws.com.cn","s3-object-lambda.cn-north-1.amazonaws.com.cn","s3-website.cn-north-1.amazonaws.com.cn","s3.dualstack.cn-northwest-1.amazonaws.com.cn","s3-accesspoint.dualstack.cn-northwest-1.amazonaws.com.cn","s3.cn-northwest-1.amazonaws.com.cn","s3-accesspoint.cn-northwest-1.amazonaws.com.cn","s3-object-lambda.cn-northwest-1.amazonaws.com.cn","s3-website.cn-northwest-1.amazonaws.com.cn","s3.dualstack.af-south-1.amazonaws.com","s3-accesspoint.dualstack.af-south-1.amazonaws.com","s3-website.dualstack.af-south-1.amazonaws.com","s3.af-south-1.amazonaws.com","s3-accesspoint.af-south-1.amazonaws.com","s3-object-lambda.af-south-1.amazonaws.com","s3-website.af-south-1.amazonaws.com","s3.dualstack.ap-east-1.amazonaws.com","s3-accesspoint.dualstack.ap-east-1.amazonaws.com","s3.ap-east-1.amazonaws.com","s3-accesspoint.ap-east-1.amazonaws.com","s3-object-lambda.ap-east-1.amazonaws.com","s3-website.ap-east-1.amazonaws.com","s3.dualstack.ap-northeast-1.amazonaws.com","s3-accesspoint.dualstack.ap-northeast-1.amazonaws.com","s3-website.dualstack.ap-northeast-1.amazonaws.com","s3.ap-northeast-1.amazonaws.com","s3-accesspoint.ap-northeast-1.amazonaws.com","s3-object-lambda.ap-northeast-1.amazonaws.com","s3-website.ap-northeast-1.amazonaws.com","s3.dualstack.ap-northeast-2.amazonaws.com","s3-accesspoint.dualstack.ap-northeast-2.amazonaws.com","s3-website.dualstack.ap-northeast-2.amazonaws.com","s3.ap-northeast-2.amazonaws.com","s3-accesspoint.ap-northeast-2.amazonaws.com","s3-object-lambda.ap-northeast-2.amazonaws.com","s3-website.ap-northeast-2.amazonaws.com","s3.dualstack.ap-northeast-3.amazonaws.com","s3-accesspoint.dualstack.ap-northeast-3.amazonaws.com","s3-website.dualstack.ap-northeast-3.amazonaws.com","s3.ap-northeast-3.amazonaws.com","s3-accesspoint.ap-northeast-3.amazonaws.com","s3-object-lambda.ap-northeast-3.amazonaws.com","s3-website.ap-northeast-3.amazonaws.com","s3.dualstack.ap-south-1.amazonaws.com","s3-accesspoint.dualstack.ap-south-1.amazonaws.com","s3-website.dualstack.ap-south-1.amazonaws.com","s3.ap-south-1.amazonaws.com","s3-accesspoint.ap-south-1.amazonaws.com","s3-object-lambda.ap-south-1.amazonaws.com","s3-website.ap-south-1.amazonaws.com","s3.dualstack.ap-south-2.amazonaws.com","s3-accesspoint.dualstack.ap-south-2.amazonaws.com","s3-website.dualstack.ap-south-2.amazonaws.com","s3.ap-south-2.amazonaws.com","s3-accesspoint.ap-south-2.amazonaws.com","s3-object-lambda.ap-south-2.amazonaws.com","s3-website.ap-south-2.amazonaws.com","s3.dualstack.ap-southeast-1.amazonaws.com","s3-accesspoint.dualstack.ap-southeast-1.amazonaws.com","s3-website.dualstack.ap-southeast-1.amazonaws.com","s3.ap-southeast-1.amazonaws.com","s3-accesspoint.ap-southeast-1.amazonaws.com","s3-object-lambda.ap-southeast-1.amazonaws.com","s3-website.ap-southeast-1.amazonaws.com","s3.dualstack.ap-southeast-2.amazonaws.com","s3-accesspoint.dualstack.ap-southeast-2.amazonaws.com","s3-website.dualstack.ap-southeast-2.amazonaws.com","s3.ap-southeast-2.amazonaws.com","s3-accesspoint.ap-southeast-2.amazonaws.com","s3-object-lambda.ap-southeast-2.amazonaws.com","s3-website.ap-southeast-2.amazonaws.com","s3.dualstack.ap-southeast-3.amazonaws.com","s3-accesspoint.dualstack.ap-southeast-3.amazonaws.com","s3-website.dualstack.ap-southeast-3.amazonaws.com","s3.ap-southeast-3.amazonaws.com","s3-accesspoint.ap-southeast-3.amazonaws.com","s3-object-lambda.ap-southeast-3.amazonaws.com","s3-website.ap-southeast-3.amazonaws.com","s3.dualstack.ap-southeast-4.amazonaws.com","s3-accesspoint.dualstack.ap-southeast-4.amazonaws.com","s3-website.dualstack.ap-southeast-4.amazonaws.com","s3.ap-southeast-4.amazonaws.com","s3-accesspoint.ap-southeast-4.amazonaws.com","s3-object-lambda.ap-southeast-4.amazonaws.com","s3-website.ap-southeast-4.amazonaws.com","s3.dualstack.ap-southeast-5.amazonaws.com","s3-accesspoint.dualstack.ap-southeast-5.amazonaws.com","s3-website.dualstack.ap-southeast-5.amazonaws.com","s3.ap-southeast-5.amazonaws.com","s3-accesspoint.ap-southeast-5.amazonaws.com","s3-deprecated.ap-southeast-5.amazonaws.com","s3-object-lambda.ap-southeast-5.amazonaws.com","s3-website.ap-southeast-5.amazonaws.com","s3.dualstack.ca-central-1.amazonaws.com","s3-accesspoint.dualstack.ca-central-1.amazonaws.com","s3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com","s3-fips.dualstack.ca-central-1.amazonaws.com","s3-website.dualstack.ca-central-1.amazonaws.com","s3.ca-central-1.amazonaws.com","s3-accesspoint.ca-central-1.amazonaws.com","s3-accesspoint-fips.ca-central-1.amazonaws.com","s3-fips.ca-central-1.amazonaws.com","s3-object-lambda.ca-central-1.amazonaws.com","s3-website.ca-central-1.amazonaws.com","s3.dualstack.ca-west-1.amazonaws.com","s3-accesspoint.dualstack.ca-west-1.amazonaws.com","s3-accesspoint-fips.dualstack.ca-west-1.amazonaws.com","s3-fips.dualstack.ca-west-1.amazonaws.com","s3-website.dualstack.ca-west-1.amazonaws.com","s3.ca-west-1.amazonaws.com","s3-accesspoint.ca-west-1.amazonaws.com","s3-accesspoint-fips.ca-west-1.amazonaws.com","s3-fips.ca-west-1.amazonaws.com","s3-object-lambda.ca-west-1.amazonaws.com","s3-website.ca-west-1.amazonaws.com","s3.dualstack.eu-central-1.amazonaws.com","s3-accesspoint.dualstack.eu-central-1.amazonaws.com","s3-website.dualstack.eu-central-1.amazonaws.com","s3.eu-central-1.amazonaws.com","s3-accesspoint.eu-central-1.amazonaws.com","s3-object-lambda.eu-central-1.amazonaws.com","s3-website.eu-central-1.amazonaws.com","s3.dualstack.eu-central-2.amazonaws.com","s3-accesspoint.dualstack.eu-central-2.amazonaws.com","s3-website.dualstack.eu-central-2.amazonaws.com","s3.eu-central-2.amazonaws.com","s3-accesspoint.eu-central-2.amazonaws.com","s3-object-lambda.eu-central-2.amazonaws.com","s3-website.eu-central-2.amazonaws.com","s3.dualstack.eu-north-1.amazonaws.com","s3-accesspoint.dualstack.eu-north-1.amazonaws.com","s3.eu-north-1.amazonaws.com","s3-accesspoint.eu-north-1.amazonaws.com","s3-object-lambda.eu-north-1.amazonaws.com","s3-website.eu-north-1.amazonaws.com","s3.dualstack.eu-south-1.amazonaws.com","s3-accesspoint.dualstack.eu-south-1.amazonaws.com","s3-website.dualstack.eu-south-1.amazonaws.com","s3.eu-south-1.amazonaws.com","s3-accesspoint.eu-south-1.amazonaws.com","s3-object-lambda.eu-south-1.amazonaws.com","s3-website.eu-south-1.amazonaws.com","s3.dualstack.eu-south-2.amazonaws.com","s3-accesspoint.dualstack.eu-south-2.amazonaws.com","s3-website.dualstack.eu-south-2.amazonaws.com","s3.eu-south-2.amazonaws.com","s3-accesspoint.eu-south-2.amazonaws.com","s3-object-lambda.eu-south-2.amazonaws.com","s3-website.eu-south-2.amazonaws.com","s3.dualstack.eu-west-1.amazonaws.com","s3-accesspoint.dualstack.eu-west-1.amazonaws.com","s3-website.dualstack.eu-west-1.amazonaws.com","s3.eu-west-1.amazonaws.com","s3-accesspoint.eu-west-1.amazonaws.com","s3-deprecated.eu-west-1.amazonaws.com","s3-object-lambda.eu-west-1.amazonaws.com","s3-website.eu-west-1.amazonaws.com","s3.dualstack.eu-west-2.amazonaws.com","s3-accesspoint.dualstack.eu-west-2.amazonaws.com","s3.eu-west-2.amazonaws.com","s3-accesspoint.eu-west-2.amazonaws.com","s3-object-lambda.eu-west-2.amazonaws.com","s3-website.eu-west-2.amazonaws.com","s3.dualstack.eu-west-3.amazonaws.com","s3-accesspoint.dualstack.eu-west-3.amazonaws.com","s3-website.dualstack.eu-west-3.amazonaws.com","s3.eu-west-3.amazonaws.com","s3-accesspoint.eu-west-3.amazonaws.com","s3-object-lambda.eu-west-3.amazonaws.com","s3-website.eu-west-3.amazonaws.com","s3.dualstack.il-central-1.amazonaws.com","s3-accesspoint.dualstack.il-central-1.amazonaws.com","s3-website.dualstack.il-central-1.amazonaws.com","s3.il-central-1.amazonaws.com","s3-accesspoint.il-central-1.amazonaws.com","s3-object-lambda.il-central-1.amazonaws.com","s3-website.il-central-1.amazonaws.com","s3.dualstack.me-central-1.amazonaws.com","s3-accesspoint.dualstack.me-central-1.amazonaws.com","s3-website.dualstack.me-central-1.amazonaws.com","s3.me-central-1.amazonaws.com","s3-accesspoint.me-central-1.amazonaws.com","s3-object-lambda.me-central-1.amazonaws.com","s3-website.me-central-1.amazonaws.com","s3.dualstack.me-south-1.amazonaws.com","s3-accesspoint.dualstack.me-south-1.amazonaws.com","s3.me-south-1.amazonaws.com","s3-accesspoint.me-south-1.amazonaws.com","s3-object-lambda.me-south-1.amazonaws.com","s3-website.me-south-1.amazonaws.com","s3.amazonaws.com","s3-1.amazonaws.com","s3-ap-east-1.amazonaws.com","s3-ap-northeast-1.amazonaws.com","s3-ap-northeast-2.amazonaws.com","s3-ap-northeast-3.amazonaws.com","s3-ap-south-1.amazonaws.com","s3-ap-southeast-1.amazonaws.com","s3-ap-southeast-2.amazonaws.com","s3-ca-central-1.amazonaws.com","s3-eu-central-1.amazonaws.com","s3-eu-north-1.amazonaws.com","s3-eu-west-1.amazonaws.com","s3-eu-west-2.amazonaws.com","s3-eu-west-3.amazonaws.com","s3-external-1.amazonaws.com","s3-fips-us-gov-east-1.amazonaws.com","s3-fips-us-gov-west-1.amazonaws.com","mrap.accesspoint.s3-global.amazonaws.com","s3-me-south-1.amazonaws.com","s3-sa-east-1.amazonaws.com","s3-us-east-2.amazonaws.com","s3-us-gov-east-1.amazonaws.com","s3-us-gov-west-1.amazonaws.com","s3-us-west-1.amazonaws.com","s3-us-west-2.amazonaws.com","s3-website-ap-northeast-1.amazonaws.com","s3-website-ap-southeast-1.amazonaws.com","s3-website-ap-southeast-2.amazonaws.com","s3-website-eu-west-1.amazonaws.com","s3-website-sa-east-1.amazonaws.com","s3-website-us-east-1.amazonaws.com","s3-website-us-gov-west-1.amazonaws.com","s3-website-us-west-1.amazonaws.com","s3-website-us-west-2.amazonaws.com","s3.dualstack.sa-east-1.amazonaws.com","s3-accesspoint.dualstack.sa-east-1.amazonaws.com","s3-website.dualstack.sa-east-1.amazonaws.com","s3.sa-east-1.amazonaws.com","s3-accesspoint.sa-east-1.amazonaws.com","s3-object-lambda.sa-east-1.amazonaws.com","s3-website.sa-east-1.amazonaws.com","s3.dualstack.us-east-1.amazonaws.com","s3-accesspoint.dualstack.us-east-1.amazonaws.com","s3-accesspoint-fips.dualstack.us-east-1.amazonaws.com","s3-fips.dualstack.us-east-1.amazonaws.com","s3-website.dualstack.us-east-1.amazonaws.com","s3.us-east-1.amazonaws.com","s3-accesspoint.us-east-1.amazonaws.com","s3-accesspoint-fips.us-east-1.amazonaws.com","s3-deprecated.us-east-1.amazonaws.com","s3-fips.us-east-1.amazonaws.com","s3-object-lambda.us-east-1.amazonaws.com","s3-website.us-east-1.amazonaws.com","s3.dualstack.us-east-2.amazonaws.com","s3-accesspoint.dualstack.us-east-2.amazonaws.com","s3-accesspoint-fips.dualstack.us-east-2.amazonaws.com","s3-fips.dualstack.us-east-2.amazonaws.com","s3-website.dualstack.us-east-2.amazonaws.com","s3.us-east-2.amazonaws.com","s3-accesspoint.us-east-2.amazonaws.com","s3-accesspoint-fips.us-east-2.amazonaws.com","s3-deprecated.us-east-2.amazonaws.com","s3-fips.us-east-2.amazonaws.com","s3-object-lambda.us-east-2.amazonaws.com","s3-website.us-east-2.amazonaws.com","s3.dualstack.us-gov-east-1.amazonaws.com","s3-accesspoint.dualstack.us-gov-east-1.amazonaws.com","s3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com","s3-fips.dualstack.us-gov-east-1.amazonaws.com","s3.us-gov-east-1.amazonaws.com","s3-accesspoint.us-gov-east-1.amazonaws.com","s3-accesspoint-fips.us-gov-east-1.amazonaws.com","s3-fips.us-gov-east-1.amazonaws.com","s3-object-lambda.us-gov-east-1.amazonaws.com","s3-website.us-gov-east-1.amazonaws.com","s3.dualstack.us-gov-west-1.amazonaws.com","s3-accesspoint.dualstack.us-gov-west-1.amazonaws.com","s3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com","s3-fips.dualstack.us-gov-west-1.amazonaws.com","s3.us-gov-west-1.amazonaws.com","s3-accesspoint.us-gov-west-1.amazonaws.com","s3-accesspoint-fips.us-gov-west-1.amazonaws.com","s3-fips.us-gov-west-1.amazonaws.com","s3-object-lambda.us-gov-west-1.amazonaws.com","s3-website.us-gov-west-1.amazonaws.com","s3.dualstack.us-west-1.amazonaws.com","s3-accesspoint.dualstack.us-west-1.amazonaws.com","s3-accesspoint-fips.dualstack.us-west-1.amazonaws.com","s3-fips.dualstack.us-west-1.amazonaws.com","s3-website.dualstack.us-west-1.amazonaws.com","s3.us-west-1.amazonaws.com","s3-accesspoint.us-west-1.amazonaws.com","s3-accesspoint-fips.us-west-1.amazonaws.com","s3-fips.us-west-1.amazonaws.com","s3-object-lambda.us-west-1.amazonaws.com","s3-website.us-west-1.amazonaws.com","s3.dualstack.us-west-2.amazonaws.com","s3-accesspoint.dualstack.us-west-2.amazonaws.com","s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com","s3-fips.dualstack.us-west-2.amazonaws.com","s3-website.dualstack.us-west-2.amazonaws.com","s3.us-west-2.amazonaws.com","s3-accesspoint.us-west-2.amazonaws.com","s3-accesspoint-fips.us-west-2.amazonaws.com","s3-deprecated.us-west-2.amazonaws.com","s3-fips.us-west-2.amazonaws.com","s3-object-lambda.us-west-2.amazonaws.com","s3-website.us-west-2.amazonaws.com","labeling.ap-northeast-1.sagemaker.aws","labeling.ap-northeast-2.sagemaker.aws","labeling.ap-south-1.sagemaker.aws","labeling.ap-southeast-1.sagemaker.aws","labeling.ap-southeast-2.sagemaker.aws","labeling.ca-central-1.sagemaker.aws","labeling.eu-central-1.sagemaker.aws","labeling.eu-west-1.sagemaker.aws","labeling.eu-west-2.sagemaker.aws","labeling.us-east-1.sagemaker.aws","labeling.us-east-2.sagemaker.aws","labeling.us-west-2.sagemaker.aws","notebook.af-south-1.sagemaker.aws","notebook.ap-east-1.sagemaker.aws","notebook.ap-northeast-1.sagemaker.aws","notebook.ap-northeast-2.sagemaker.aws","notebook.ap-northeast-3.sagemaker.aws","notebook.ap-south-1.sagemaker.aws","notebook.ap-south-2.sagemaker.aws","notebook.ap-southeast-1.sagemaker.aws","notebook.ap-southeast-2.sagemaker.aws","notebook.ap-southeast-3.sagemaker.aws","notebook.ap-southeast-4.sagemaker.aws","notebook.ca-central-1.sagemaker.aws","notebook-fips.ca-central-1.sagemaker.aws","notebook.ca-west-1.sagemaker.aws","notebook-fips.ca-west-1.sagemaker.aws","notebook.eu-central-1.sagemaker.aws","notebook.eu-central-2.sagemaker.aws","notebook.eu-north-1.sagemaker.aws","notebook.eu-south-1.sagemaker.aws","notebook.eu-south-2.sagemaker.aws","notebook.eu-west-1.sagemaker.aws","notebook.eu-west-2.sagemaker.aws","notebook.eu-west-3.sagemaker.aws","notebook.il-central-1.sagemaker.aws","notebook.me-central-1.sagemaker.aws","notebook.me-south-1.sagemaker.aws","notebook.sa-east-1.sagemaker.aws","notebook.us-east-1.sagemaker.aws","notebook-fips.us-east-1.sagemaker.aws","notebook.us-east-2.sagemaker.aws","notebook-fips.us-east-2.sagemaker.aws","notebook.us-gov-east-1.sagemaker.aws","notebook-fips.us-gov-east-1.sagemaker.aws","notebook.us-gov-west-1.sagemaker.aws","notebook-fips.us-gov-west-1.sagemaker.aws","notebook.us-west-1.sagemaker.aws","notebook-fips.us-west-1.sagemaker.aws","notebook.us-west-2.sagemaker.aws","notebook-fips.us-west-2.sagemaker.aws","notebook.cn-north-1.sagemaker.com.cn","notebook.cn-northwest-1.sagemaker.com.cn","studio.af-south-1.sagemaker.aws","studio.ap-east-1.sagemaker.aws","studio.ap-northeast-1.sagemaker.aws","studio.ap-northeast-2.sagemaker.aws","studio.ap-northeast-3.sagemaker.aws","studio.ap-south-1.sagemaker.aws","studio.ap-southeast-1.sagemaker.aws","studio.ap-southeast-2.sagemaker.aws","studio.ap-southeast-3.sagemaker.aws","studio.ca-central-1.sagemaker.aws","studio.eu-central-1.sagemaker.aws","studio.eu-north-1.sagemaker.aws","studio.eu-south-1.sagemaker.aws","studio.eu-south-2.sagemaker.aws","studio.eu-west-1.sagemaker.aws","studio.eu-west-2.sagemaker.aws","studio.eu-west-3.sagemaker.aws","studio.il-central-1.sagemaker.aws","studio.me-central-1.sagemaker.aws","studio.me-south-1.sagemaker.aws","studio.sa-east-1.sagemaker.aws","studio.us-east-1.sagemaker.aws","studio.us-east-2.sagemaker.aws","studio.us-gov-east-1.sagemaker.aws","studio-fips.us-gov-east-1.sagemaker.aws","studio.us-gov-west-1.sagemaker.aws","studio-fips.us-gov-west-1.sagemaker.aws","studio.us-west-1.sagemaker.aws","studio.us-west-2.sagemaker.aws","studio.cn-north-1.sagemaker.com.cn","studio.cn-northwest-1.sagemaker.com.cn","*.experiments.sagemaker.aws","analytics-gateway.ap-northeast-1.amazonaws.com","analytics-gateway.ap-northeast-2.amazonaws.com","analytics-gateway.ap-south-1.amazonaws.com","analytics-gateway.ap-southeast-1.amazonaws.com","analytics-gateway.ap-southeast-2.amazonaws.com","analytics-gateway.eu-central-1.amazonaws.com","analytics-gateway.eu-west-1.amazonaws.com","analytics-gateway.us-east-1.amazonaws.com","analytics-gateway.us-east-2.amazonaws.com","analytics-gateway.us-west-2.amazonaws.com","amplifyapp.com","*.awsapprunner.com","webview-assets.aws-cloud9.af-south-1.amazonaws.com","vfs.cloud9.af-south-1.amazonaws.com","webview-assets.cloud9.af-south-1.amazonaws.com","webview-assets.aws-cloud9.ap-east-1.amazonaws.com","vfs.cloud9.ap-east-1.amazonaws.com","webview-assets.cloud9.ap-east-1.amazonaws.com","webview-assets.aws-cloud9.ap-northeast-1.amazonaws.com","vfs.cloud9.ap-northeast-1.amazonaws.com","webview-assets.cloud9.ap-northeast-1.amazonaws.com","webview-assets.aws-cloud9.ap-northeast-2.amazonaws.com","vfs.cloud9.ap-northeast-2.amazonaws.com","webview-assets.cloud9.ap-northeast-2.amazonaws.com","webview-assets.aws-cloud9.ap-northeast-3.amazonaws.com","vfs.cloud9.ap-northeast-3.amazonaws.com","webview-assets.cloud9.ap-northeast-3.amazonaws.com","webview-assets.aws-cloud9.ap-south-1.amazonaws.com","vfs.cloud9.ap-south-1.amazonaws.com","webview-assets.cloud9.ap-south-1.amazonaws.com","webview-assets.aws-cloud9.ap-southeast-1.amazonaws.com","vfs.cloud9.ap-southeast-1.amazonaws.com","webview-assets.cloud9.ap-southeast-1.amazonaws.com","webview-assets.aws-cloud9.ap-southeast-2.amazonaws.com","vfs.cloud9.ap-southeast-2.amazonaws.com","webview-assets.cloud9.ap-southeast-2.amazonaws.com","webview-assets.aws-cloud9.ca-central-1.amazonaws.com","vfs.cloud9.ca-central-1.amazonaws.com","webview-assets.cloud9.ca-central-1.amazonaws.com","webview-assets.aws-cloud9.eu-central-1.amazonaws.com","vfs.cloud9.eu-central-1.amazonaws.com","webview-assets.cloud9.eu-central-1.amazonaws.com","webview-assets.aws-cloud9.eu-north-1.amazonaws.com","vfs.cloud9.eu-north-1.amazonaws.com","webview-assets.cloud9.eu-north-1.amazonaws.com","webview-assets.aws-cloud9.eu-south-1.amazonaws.com","vfs.cloud9.eu-south-1.amazonaws.com","webview-assets.cloud9.eu-south-1.amazonaws.com","webview-assets.aws-cloud9.eu-west-1.amazonaws.com","vfs.cloud9.eu-west-1.amazonaws.com","webview-assets.cloud9.eu-west-1.amazonaws.com","webview-assets.aws-cloud9.eu-west-2.amazonaws.com","vfs.cloud9.eu-west-2.amazonaws.com","webview-assets.cloud9.eu-west-2.amazonaws.com","webview-assets.aws-cloud9.eu-west-3.amazonaws.com","vfs.cloud9.eu-west-3.amazonaws.com","webview-assets.cloud9.eu-west-3.amazonaws.com","webview-assets.aws-cloud9.il-central-1.amazonaws.com","vfs.cloud9.il-central-1.amazonaws.com","webview-assets.aws-cloud9.me-south-1.amazonaws.com","vfs.cloud9.me-south-1.amazonaws.com","webview-assets.cloud9.me-south-1.amazonaws.com","webview-assets.aws-cloud9.sa-east-1.amazonaws.com","vfs.cloud9.sa-east-1.amazonaws.com","webview-assets.cloud9.sa-east-1.amazonaws.com","webview-assets.aws-cloud9.us-east-1.amazonaws.com","vfs.cloud9.us-east-1.amazonaws.com","webview-assets.cloud9.us-east-1.amazonaws.com","webview-assets.aws-cloud9.us-east-2.amazonaws.com","vfs.cloud9.us-east-2.amazonaws.com","webview-assets.cloud9.us-east-2.amazonaws.com","webview-assets.aws-cloud9.us-west-1.amazonaws.com","vfs.cloud9.us-west-1.amazonaws.com","webview-assets.cloud9.us-west-1.amazonaws.com","webview-assets.aws-cloud9.us-west-2.amazonaws.com","vfs.cloud9.us-west-2.amazonaws.com","webview-assets.cloud9.us-west-2.amazonaws.com","awsapps.com","cn-north-1.eb.amazonaws.com.cn","cn-northwest-1.eb.amazonaws.com.cn","elasticbeanstalk.com","af-south-1.elasticbeanstalk.com","ap-east-1.elasticbeanstalk.com","ap-northeast-1.elasticbeanstalk.com","ap-northeast-2.elasticbeanstalk.com","ap-northeast-3.elasticbeanstalk.com","ap-south-1.elasticbeanstalk.com","ap-southeast-1.elasticbeanstalk.com","ap-southeast-2.elasticbeanstalk.com","ap-southeast-3.elasticbeanstalk.com","ca-central-1.elasticbeanstalk.com","eu-central-1.elasticbeanstalk.com","eu-north-1.elasticbeanstalk.com","eu-south-1.elasticbeanstalk.com","eu-west-1.elasticbeanstalk.com","eu-west-2.elasticbeanstalk.com","eu-west-3.elasticbeanstalk.com","il-central-1.elasticbeanstalk.com","me-south-1.elasticbeanstalk.com","sa-east-1.elasticbeanstalk.com","us-east-1.elasticbeanstalk.com","us-east-2.elasticbeanstalk.com","us-gov-east-1.elasticbeanstalk.com","us-gov-west-1.elasticbeanstalk.com","us-west-1.elasticbeanstalk.com","us-west-2.elasticbeanstalk.com","*.elb.amazonaws.com.cn","*.elb.amazonaws.com","awsglobalaccelerator.com","*.private.repost.aws","eero.online","eero-stage.online","apigee.io","panel.dev","siiites.com","appspacehosted.com","appspaceusercontent.com","appudo.net","on-aptible.com","f5.si","arvanedge.ir","user.aseinet.ne.jp","gv.vc","d.gv.vc","user.party.eus","pimienta.org","poivron.org","potager.org","sweetpepper.org","myasustor.com","cdn.prod.atlassian-dev.net","translated.page","myfritz.link","myfritz.net","onavstack.net","*.awdev.ca","*.advisor.ws","ecommerce-shop.pl","b-data.io","balena-devices.com","base.ec","official.ec","buyshop.jp","fashionstore.jp","handcrafted.jp","kawaiishop.jp","supersale.jp","theshop.jp","shopselect.net","base.shop","beagleboard.io","*.beget.app","pages.gay","bnr.la","bitbucket.io","blackbaudcdn.net","of.je","bluebite.io","boomla.net","boutir.com","boxfuse.io","square7.ch","bplaced.com","bplaced.de","square7.de","bplaced.net","square7.net","*.s.brave.io","shop.brendly.hr","shop.brendly.rs","browsersafetymark.io","radio.am","radio.fm","uk0.bigv.io","dh.bytemark.co.uk","vm.bytemark.co.uk","cafjs.com","canva-apps.cn","*.my.canvasite.cn","canva-apps.com","*.my.canva.site","drr.ac","uwu.ai","carrd.co","crd.co","ju.mp","api.gov.uk","cdn77-storage.com","rsc.contentproxy9.cz","r.cdn77.net","cdn77-ssl.net","c.cdn77.org","rsc.cdn77.org","ssl.origin.cdn77-secure.org","za.bz","br.com","cn.com","de.com","eu.com","jpn.com","mex.com","ru.com","sa.com","uk.com","us.com","za.com","com.de","gb.net","hu.net","jp.net","se.net","uk.net","ae.org","com.se","cx.ua","discourse.group","discourse.team","clerk.app","clerkstage.app","*.lcl.dev","*.lclstage.dev","*.stg.dev","*.stgstage.dev","cleverapps.cc","*.services.clever-cloud.com","cleverapps.io","cleverapps.tech","clickrising.net","cloudns.asia","cloudns.be","cloud-ip.biz","cloudns.biz","cloudns.cc","cloudns.ch","cloudns.cl","cloudns.club","dnsabr.com","ip-ddns.com","cloudns.cx","cloudns.eu","cloudns.in","cloudns.info","ddns-ip.net","dns-cloud.net","dns-dynamic.net","cloudns.nz","cloudns.org","ip-dynamic.org","cloudns.ph","cloudns.pro","cloudns.pw","cloudns.us","c66.me","cloud66.ws","cloud66.zone","jdevcloud.com","wpdevcloud.com","cloudaccess.host","freesite.host","cloudaccess.net","*.cloudera.site","cf-ipfs.com","cloudflare-ipfs.com","trycloudflare.com","pages.dev","r2.dev","workers.dev","cloudflare.net","cdn.cloudflare.net","cdn.cloudflareanycast.net","cdn.cloudflarecn.net","cdn.cloudflareglobal.net","cust.cloudscale.ch","objects.lpg.cloudscale.ch","objects.rma.cloudscale.ch","wnext.app","cnpy.gdn","*.otap.co","co.ca","co.com","codeberg.page","csb.app","preview.csb.app","co.nl","co.no","webhosting.be","hosting-cluster.nl","ctfcloud.net","convex.site","ac.ru","edu.ru","gov.ru","int.ru","mil.ru","test.ru","dyn.cosidns.de","dnsupdater.de","dynamisches-dns.de","internet-dns.de","l-o-g-i-n.de","dynamic-dns.info","feste-ip.net","knx-server.net","static-access.net","craft.me","realm.cz","on.crisp.email","*.cryptonomic.net","curv.dev","cfolks.pl","cyon.link","cyon.site","platform0.app","fnwk.site","folionetwork.site","biz.dk","co.dk","firm.dk","reg.dk","store.dk","dyndns.dappnode.io","builtwithdark.com","darklang.io","demo.datadetect.com","instance.datadetect.com","edgestack.me","dattolocal.com","dattorelay.com","dattoweb.com","mydatto.com","dattolocal.net","mydatto.net","ddnss.de","dyn.ddnss.de","dyndns.ddnss.de","dyn-ip24.de","dyndns1.de","home-webserver.de","dyn.home-webserver.de","myhome-server.de","ddnss.org","debian.net","definima.io","definima.net","deno.dev","deno-staging.dev","dedyn.io","deta.app","deta.dev","dfirma.pl","dkonto.pl","you2.pl","ondigitalocean.app","*.digitaloceanspaces.com","us.kg","rss.my.id","diher.solutions","discordsays.com","discordsez.com","jozi.biz","dnshome.de","online.th","shop.th","drayddns.com","shoparena.pl","dreamhosters.com","durumis.com","mydrobo.com","drud.io","drud.us","duckdns.org","dy.fi","tunk.org","dyndns.biz","for-better.biz","for-more.biz","for-some.biz","for-the.biz","selfip.biz","webhop.biz","ftpaccess.cc","game-server.cc","myphotos.cc","scrapping.cc","blogdns.com","cechire.com","dnsalias.com","dnsdojo.com","doesntexist.com","dontexist.com","doomdns.com","dyn-o-saur.com","dynalias.com","dyndns-at-home.com","dyndns-at-work.com","dyndns-blog.com","dyndns-free.com","dyndns-home.com","dyndns-ip.com","dyndns-mail.com","dyndns-office.com","dyndns-pics.com","dyndns-remote.com","dyndns-server.com","dyndns-web.com","dyndns-wiki.com","dyndns-work.com","est-a-la-maison.com","est-a-la-masion.com","est-le-patron.com","est-mon-blogueur.com","from-ak.com","from-al.com","from-ar.com","from-ca.com","from-ct.com","from-dc.com","from-de.com","from-fl.com","from-ga.com","from-hi.com","from-ia.com","from-id.com","from-il.com","from-in.com","from-ks.com","from-ky.com","from-ma.com","from-md.com","from-mi.com","from-mn.com","from-mo.com","from-ms.com","from-mt.com","from-nc.com","from-nd.com","from-ne.com","from-nh.com","from-nj.com","from-nm.com","from-nv.com","from-oh.com","from-ok.com","from-or.com","from-pa.com","from-pr.com","from-ri.com","from-sc.com","from-sd.com","from-tn.com","from-tx.com","from-ut.com","from-va.com","from-vt.com","from-wa.com","from-wi.com","from-wv.com","from-wy.com","getmyip.com","gotdns.com","hobby-site.com","homelinux.com","homeunix.com","iamallama.com","is-a-anarchist.com","is-a-blogger.com","is-a-bookkeeper.com","is-a-bulls-fan.com","is-a-caterer.com","is-a-chef.com","is-a-conservative.com","is-a-cpa.com","is-a-cubicle-slave.com","is-a-democrat.com","is-a-designer.com","is-a-doctor.com","is-a-financialadvisor.com","is-a-geek.com","is-a-green.com","is-a-guru.com","is-a-hard-worker.com","is-a-hunter.com","is-a-landscaper.com","is-a-lawyer.com","is-a-liberal.com","is-a-libertarian.com","is-a-llama.com","is-a-musician.com","is-a-nascarfan.com","is-a-nurse.com","is-a-painter.com","is-a-personaltrainer.com","is-a-photographer.com","is-a-player.com","is-a-republican.com","is-a-rockstar.com","is-a-socialist.com","is-a-student.com","is-a-teacher.com","is-a-techie.com","is-a-therapist.com","is-an-accountant.com","is-an-actor.com","is-an-actress.com","is-an-anarchist.com","is-an-artist.com","is-an-engineer.com","is-an-entertainer.com","is-certified.com","is-gone.com","is-into-anime.com","is-into-cars.com","is-into-cartoons.com","is-into-games.com","is-leet.com","is-not-certified.com","is-slick.com","is-uberleet.com","is-with-theband.com","isa-geek.com","isa-hockeynut.com","issmarterthanyou.com","likes-pie.com","likescandy.com","neat-url.com","saves-the-whales.com","selfip.com","sells-for-less.com","sells-for-u.com","servebbs.com","simple-url.com","space-to-rent.com","teaches-yoga.com","writesthisblog.com","ath.cx","fuettertdasnetz.de","isteingeek.de","istmein.de","lebtimnetz.de","leitungsen.de","traeumtgerade.de","barrel-of-knowledge.info","barrell-of-knowledge.info","dyndns.info","for-our.info","groks-the.info","groks-this.info","here-for-more.info","knowsitall.info","selfip.info","webhop.info","forgot.her.name","forgot.his.name","at-band-camp.net","blogdns.net","broke-it.net","buyshouses.net","dnsalias.net","dnsdojo.net","does-it.net","dontexist.net","dynalias.net","dynathome.net","endofinternet.net","from-az.net","from-co.net","from-la.net","from-ny.net","gets-it.net","ham-radio-op.net","homeftp.net","homeip.net","homelinux.net","homeunix.net","in-the-band.net","is-a-chef.net","is-a-geek.net","isa-geek.net","kicks-ass.net","office-on-the.net","podzone.net","scrapper-site.net","selfip.net","sells-it.net","servebbs.net","serveftp.net","thruhere.net","webhop.net","merseine.nu","mine.nu","shacknet.nu","blogdns.org","blogsite.org","boldlygoingnowhere.org","dnsalias.org","dnsdojo.org","doesntexist.org","dontexist.org","doomdns.org","dvrdns.org","dynalias.org","dyndns.org","go.dyndns.org","home.dyndns.org","endofinternet.org","endoftheinternet.org","from-me.org","game-host.org","gotdns.org","hobby-site.org","homedns.org","homeftp.org","homelinux.org","homeunix.org","is-a-bruinsfan.org","is-a-candidate.org","is-a-celticsfan.org","is-a-chef.org","is-a-geek.org","is-a-knight.org","is-a-linux-user.org","is-a-patsfan.org","is-a-soxfan.org","is-found.org","is-lost.org","is-saved.org","is-very-bad.org","is-very-evil.org","is-very-good.org","is-very-nice.org","is-very-sweet.org","isa-geek.org","kicks-ass.org","misconfused.org","podzone.org","readmyblog.org","selfip.org","sellsyourhome.org","servebbs.org","serveftp.org","servegame.org","stuff-4-sale.org","webhop.org","better-than.tv","dyndns.tv","on-the-web.tv","worse-than.tv","is-by.us","land-4-sale.us","stuff-4-sale.us","dyndns.ws","mypets.ws","ddnsfree.com","ddnsgeek.com","giize.com","gleeze.com","kozow.com","loseyourip.com","ooguy.com","theworkpc.com","casacam.net","dynu.net","accesscam.org","camdvr.org","freeddns.org","mywire.org","webredirect.org","myddns.rocks","dynv6.net","e4.cz","easypanel.app","easypanel.host","*.ewp.live","twmail.cc","twmail.net","twmail.org","mymailer.com.tw","url.tw","at.emf.camp","rt.ht","elementor.cloud","elementor.cool","en-root.fr","mytuleap.com","tuleap-partners.com","encr.app","encoreapi.com","eu.encoway.cloud","eu.org","al.eu.org","asso.eu.org","at.eu.org","au.eu.org","be.eu.org","bg.eu.org","ca.eu.org","cd.eu.org","ch.eu.org","cn.eu.org","cy.eu.org","cz.eu.org","de.eu.org","dk.eu.org","edu.eu.org","ee.eu.org","es.eu.org","fi.eu.org","fr.eu.org","gr.eu.org","hr.eu.org","hu.eu.org","ie.eu.org","il.eu.org","in.eu.org","int.eu.org","is.eu.org","it.eu.org","jp.eu.org","kr.eu.org","lt.eu.org","lu.eu.org","lv.eu.org","me.eu.org","mk.eu.org","mt.eu.org","my.eu.org","net.eu.org","ng.eu.org","nl.eu.org","no.eu.org","nz.eu.org","pl.eu.org","pt.eu.org","ro.eu.org","ru.eu.org","se.eu.org","si.eu.org","sk.eu.org","tr.eu.org","uk.eu.org","us.eu.org","eurodir.ru","eu-1.evennode.com","eu-2.evennode.com","eu-3.evennode.com","eu-4.evennode.com","us-1.evennode.com","us-2.evennode.com","us-3.evennode.com","us-4.evennode.com","relay.evervault.app","relay.evervault.dev","expo.app","staging.expo.app","onfabrica.com","ru.net","adygeya.ru","bashkiria.ru","bir.ru","cbg.ru","com.ru","dagestan.ru","grozny.ru","kalmykia.ru","kustanai.ru","marine.ru","mordovia.ru","msk.ru","mytis.ru","nalchik.ru","nov.ru","pyatigorsk.ru","spb.ru","vladikavkaz.ru","vladimir.ru","abkhazia.su","adygeya.su","aktyubinsk.su","arkhangelsk.su","armenia.su","ashgabad.su","azerbaijan.su","balashov.su","bashkiria.su","bryansk.su","bukhara.su","chimkent.su","dagestan.su","east-kazakhstan.su","exnet.su","georgia.su","grozny.su","ivanovo.su","jambyl.su","kalmykia.su","kaluga.su","karacol.su","karaganda.su","karelia.su","khakassia.su","krasnodar.su","kurgan.su","kustanai.su","lenug.su","mangyshlak.su","mordovia.su","msk.su","murmansk.su","nalchik.su","navoi.su","north-kazakhstan.su","nov.su","obninsk.su","penza.su","pokrovsk.su","sochi.su","spb.su","tashkent.su","termez.su","togliatti.su","troitsk.su","tselinograd.su","tula.su","tuva.su","vladikavkaz.su","vladimir.su","vologda.su","channelsdvr.net","u.channelsdvr.net","edgecompute.app","fastly-edge.com","fastly-terrarium.com","freetls.fastly.net","map.fastly.net","a.prod.fastly.net","global.prod.fastly.net","a.ssl.fastly.net","b.ssl.fastly.net","global.ssl.fastly.net","fastlylb.net","map.fastlylb.net","*.user.fm","fastvps-server.com","fastvps.host","myfast.host","fastvps.site","myfast.space","conn.uk","copro.uk","hosp.uk","fedorainfracloud.org","fedorapeople.org","cloud.fedoraproject.org","app.os.fedoraproject.org","app.os.stg.fedoraproject.org","mydobiss.com","fh-muenster.io","filegear.me","firebaseapp.com","fldrv.com","flutterflow.app","fly.dev","shw.io","edgeapp.net","forgeblocks.com","id.forgerock.io","framer.ai","framer.app","framercanvas.com","framer.media","framer.photos","framer.website","framer.wiki","0e.vc","freebox-os.com","freeboxos.com","fbx-os.fr","fbxos.fr","freebox-os.fr","freeboxos.fr","freedesktop.org","freemyip.com","*.frusky.de","wien.funkfeuer.at","daemon.asia","dix.asia","mydns.bz","0am.jp","0g0.jp","0j0.jp","0t0.jp","mydns.jp","pgw.jp","wjg.jp","keyword-on.net","live-on.net","server-on.net","mydns.tw","mydns.vc","*.futurecms.at","*.ex.futurecms.at","*.in.futurecms.at","futurehosting.at","futuremailing.at","*.ex.ortsinfo.at","*.kunden.ortsinfo.at","*.statics.cloud","aliases121.com","campaign.gov.uk","service.gov.uk","independent-commission.uk","independent-inquest.uk","independent-inquiry.uk","independent-panel.uk","independent-review.uk","public-inquiry.uk","royal-commission.uk","gehirn.ne.jp","usercontent.jp","gentapps.com","gentlentapis.com","lab.ms","cdn-edges.net","localcert.net","localhostcert.net","gsj.bz","githubusercontent.com","githubpreview.dev","github.io","gitlab.io","gitapp.si","gitpage.si","glitch.me","nog.community","co.ro","shop.ro","lolipop.io","angry.jp","babyblue.jp","babymilk.jp","backdrop.jp","bambina.jp","bitter.jp","blush.jp","boo.jp","boy.jp","boyfriend.jp","but.jp","candypop.jp","capoo.jp","catfood.jp","cheap.jp","chicappa.jp","chillout.jp","chips.jp","chowder.jp","chu.jp","ciao.jp","cocotte.jp","coolblog.jp","cranky.jp","cutegirl.jp","daa.jp","deca.jp","deci.jp","digick.jp","egoism.jp","fakefur.jp","fem.jp","flier.jp","floppy.jp","fool.jp","frenchkiss.jp","girlfriend.jp","girly.jp","gloomy.jp","gonna.jp","greater.jp","hacca.jp","heavy.jp","her.jp","hiho.jp","hippy.jp","holy.jp","hungry.jp","icurus.jp","itigo.jp","jellybean.jp","kikirara.jp","kill.jp","kilo.jp","kuron.jp","littlestar.jp","lolipopmc.jp","lolitapunk.jp","lomo.jp","lovepop.jp","lovesick.jp","main.jp","mods.jp","mond.jp","mongolian.jp","moo.jp","namaste.jp","nikita.jp","nobushi.jp","noor.jp","oops.jp","parallel.jp","parasite.jp","pecori.jp","peewee.jp","penne.jp","pepper.jp","perma.jp","pigboat.jp","pinoko.jp","punyu.jp","pupu.jp","pussycat.jp","pya.jp","raindrop.jp","readymade.jp","sadist.jp","schoolbus.jp","secret.jp","staba.jp","stripper.jp","sub.jp","sunnyday.jp","thick.jp","tonkotsu.jp","under.jp","upper.jp","velvet.jp","verse.jp","versus.jp","vivian.jp","watson.jp","weblike.jp","whitesnow.jp","zombie.jp","heteml.net","graphic.design","goip.de","blogspot.ae","blogspot.al","blogspot.am","*.hosted.app","*.run.app","web.app","blogspot.com.ar","blogspot.co.at","blogspot.com.au","blogspot.ba","blogspot.be","blogspot.bg","blogspot.bj","blogspot.com.br","blogspot.com.by","blogspot.ca","blogspot.cf","blogspot.ch","blogspot.cl","blogspot.com.co","*.0emm.com","appspot.com","*.r.appspot.com","blogspot.com","codespot.com","googleapis.com","googlecode.com","pagespeedmobilizer.com","withgoogle.com","withyoutube.com","blogspot.cv","blogspot.com.cy","blogspot.cz","blogspot.de","*.gateway.dev","blogspot.dk","blogspot.com.ee","blogspot.com.eg","blogspot.com.es","blogspot.fi","blogspot.fr","cloud.goog","translate.goog","*.usercontent.goog","blogspot.gr","blogspot.hk","blogspot.hr","blogspot.hu","blogspot.co.id","blogspot.ie","blogspot.co.il","blogspot.in","blogspot.is","blogspot.it","blogspot.jp","blogspot.co.ke","blogspot.kr","blogspot.li","blogspot.lt","blogspot.lu","blogspot.md","blogspot.mk","blogspot.com.mt","blogspot.mx","blogspot.my","cloudfunctions.net","blogspot.com.ng","blogspot.nl","blogspot.no","blogspot.co.nz","blogspot.pe","blogspot.pt","blogspot.qa","blogspot.re","blogspot.ro","blogspot.rs","blogspot.ru","blogspot.se","blogspot.sg","blogspot.si","blogspot.sk","blogspot.sn","blogspot.td","blogspot.com.tr","blogspot.tw","blogspot.ug","blogspot.co.uk","blogspot.com.uy","blogspot.vn","blogspot.co.za","goupile.fr","pymnt.uk","cloudapps.digital","london.cloudapps.digital","gov.nl","grafana-dev.net","grayjayleagues.com","günstigbestellen.de","günstigliefern.de","fin.ci","free.hr","caa.li","ua.rs","conf.se","häkkinen.fi","hrsn.dev","hashbang.sh","hasura.app","hasura-app.io","hatenablog.com","hatenadiary.com","hateblo.jp","hatenablog.jp","hatenadiary.jp","hatenadiary.org","pages.it.hs-heilbronn.de","pages-research.it.hs-heilbronn.de","heiyu.space","helioho.st","heliohost.us","hepforge.org","herokuapp.com","herokussl.com","heyflow.page","heyflow.site","ravendb.cloud","ravendb.community","development.run","ravendb.run","homesklep.pl","*.kin.one","*.id.pub","*.kin.pub","secaas.hk","hoplix.shop","orx.biz","biz.gl","biz.ng","co.biz.ng","dl.biz.ng","go.biz.ng","lg.biz.ng","on.biz.ng","col.ng","firm.ng","gen.ng","ltd.ng","ngo.ng","plc.ng","ie.ua","hostyhosting.io","hf.space","static.hf.space","hypernode.io","iobb.net","co.cz","*.moonscale.io","moonscale.net","gr.com","iki.fi","ibxos.it","iliadboxos.it","smushcdn.com","wphostedmail.com","wpmucdn.com","tempurl.host","wpmudev.host","dyn-berlin.de","in-berlin.de","in-brb.de","in-butter.de","in-dsl.de","in-vpn.de","in-dsl.net","in-vpn.net","in-dsl.org","in-vpn.org","biz.at","info.at","info.cx","ac.leg.br","al.leg.br","am.leg.br","ap.leg.br","ba.leg.br","ce.leg.br","df.leg.br","es.leg.br","go.leg.br","ma.leg.br","mg.leg.br","ms.leg.br","mt.leg.br","pa.leg.br","pb.leg.br","pe.leg.br","pi.leg.br","pr.leg.br","rj.leg.br","rn.leg.br","ro.leg.br","rr.leg.br","rs.leg.br","sc.leg.br","se.leg.br","sp.leg.br","to.leg.br","pixolino.com","na4u.ru","apps-1and1.com","live-website.com","apps-1and1.net","websitebuilder.online","app-ionos.space","iopsys.se","*.dweb.link","ipifony.net","ir.md","is-a-good.dev","is-a.dev","iservschule.de","mein-iserv.de","schulplattform.de","schulserver.de","test-iserv.de","iserv.dev","mel.cloudlets.com.au","cloud.interhostsolutions.be","alp1.ae.flow.ch","appengine.flow.ch","es-1.axarnet.cloud","diadem.cloud","vip.jelastic.cloud","jele.cloud","it1.eur.aruba.jenv-aruba.cloud","it1.jenv-aruba.cloud","keliweb.cloud","cs.keliweb.cloud","oxa.cloud","tn.oxa.cloud","uk.oxa.cloud","primetel.cloud","uk.primetel.cloud","ca.reclaim.cloud","uk.reclaim.cloud","us.reclaim.cloud","ch.trendhosting.cloud","de.trendhosting.cloud","jele.club","dopaas.com","paas.hosted-by-previder.com","rag-cloud.hosteur.com","rag-cloud-ch.hosteur.com","jcloud.ik-server.com","jcloud-ver-jpc.ik-server.com","demo.jelastic.com","paas.massivegrid.com","jed.wafaicloud.com","ryd.wafaicloud.com","j.scaleforce.com.cy","jelastic.dogado.eu","fi.cloudplatform.fi","demo.datacenter.fi","paas.datacenter.fi","jele.host","mircloud.host","paas.beebyte.io","sekd1.beebyteapp.io","jele.io","jc.neen.it","jcloud.kz","cloudjiffy.net","fra1-de.cloudjiffy.net","west1-us.cloudjiffy.net","jls-sto1.elastx.net","jls-sto2.elastx.net","jls-sto3.elastx.net","fr-1.paas.massivegrid.net","lon-1.paas.massivegrid.net","lon-2.paas.massivegrid.net","ny-1.paas.massivegrid.net","ny-2.paas.massivegrid.net","sg-1.paas.massivegrid.net","jelastic.saveincloud.net","nordeste-idc.saveincloud.net","j.scaleforce.net","sdscloud.pl","unicloud.pl","mircloud.ru","enscaled.sg","jele.site","jelastic.team","orangecloud.tn","j.layershift.co.uk","phx.enscaled.us","mircloud.us","myjino.ru","*.hosting.myjino.ru","*.landing.myjino.ru","*.spectrum.myjino.ru","*.vps.myjino.ru","jotelulu.cloud","webadorsite.com","jouwweb.site","*.cns.joyent.com","*.triton.zone","js.org","kaas.gg","khplay.nl","kapsi.fi","ezproxy.kuleuven.be","kuleuven.cloud","keymachine.de","kinghost.net","uni5.net","knightpoint.systems","koobin.events","webthings.io","krellian.net","oya.to","git-repos.de","lcube-server.de","svn-repos.de","leadpages.co","lpages.co","lpusercontent.com","lelux.site","libp2p.direct","runcontainers.dev","co.business","co.education","co.events","co.financial","co.network","co.place","co.technology","linkyard-cloud.ch","linkyard.cloud","members.linode.com","*.nodebalancer.linode.com","*.linodeobjects.com","ip.linodeusercontent.com","we.bs","filegear-sg.me","ggff.net","*.user.localcert.dev","lodz.pl","pabianice.pl","plock.pl","sieradz.pl","skierniewice.pl","zgierz.pl","loginline.app","loginline.dev","loginline.io","loginline.services","loginline.site","lohmus.me","servers.run","krasnik.pl","leczna.pl","lubartow.pl","lublin.pl","poniatowa.pl","swidnik.pl","glug.org.uk","lug.org.uk","lugs.org.uk","barsy.bg","barsy.club","barsycenter.com","barsyonline.com","barsy.de","barsy.dev","barsy.eu","barsy.gr","barsy.in","barsy.info","barsy.io","barsy.me","barsy.menu","barsyonline.menu","barsy.mobi","barsy.net","barsy.online","barsy.org","barsy.pro","barsy.pub","barsy.ro","barsy.rs","barsy.shop","barsyonline.shop","barsy.site","barsy.store","barsy.support","barsy.uk","barsy.co.uk","barsyonline.co.uk","*.magentosite.cloud","hb.cldmail.ru","matlab.cloud","modelscape.com","mwcloudnonprod.com","polyspace.com","mayfirst.info","mayfirst.org","mazeplay.com","mcdir.me","mcdir.ru","vps.mcdir.ru","mcpre.ru","mediatech.by","mediatech.dev","hra.health","medusajs.app","miniserver.com","memset.net","messerli.app","atmeta.com","apps.fbsbx.com","*.cloud.metacentrum.cz","custom.metacentrum.cz","flt.cloud.muni.cz","usr.cloud.muni.cz","meteorapp.com","eu.meteorapp.com","co.pl","*.azurecontainer.io","azure-api.net","azure-mobile.net","azureedge.net","azurefd.net","azurestaticapps.net","1.azurestaticapps.net","2.azurestaticapps.net","3.azurestaticapps.net","4.azurestaticapps.net","5.azurestaticapps.net","6.azurestaticapps.net","7.azurestaticapps.net","centralus.azurestaticapps.net","eastasia.azurestaticapps.net","eastus2.azurestaticapps.net","westeurope.azurestaticapps.net","westus2.azurestaticapps.net","azurewebsites.net","cloudapp.net","trafficmanager.net","blob.core.windows.net","servicebus.windows.net","routingthecloud.com","sn.mynetname.net","routingthecloud.net","routingthecloud.org","csx.cc","mydbserver.com","webspaceconfig.de","mittwald.info","mittwaldserver.info","typo3server.info","project.space","modx.dev","bmoattachments.org","net.ru","org.ru","pp.ru","hostedpi.com","caracal.mythic-beasts.com","customer.mythic-beasts.com","fentiger.mythic-beasts.com","lynx.mythic-beasts.com","ocelot.mythic-beasts.com","oncilla.mythic-beasts.com","onza.mythic-beasts.com","sphinx.mythic-beasts.com","vs.mythic-beasts.com","x.mythic-beasts.com","yali.mythic-beasts.com","cust.retrosnub.co.uk","ui.nabu.casa","cloud.nospamproxy.com","netfy.app","netlify.app","4u.com","nfshost.com","ipfs.nftstorage.link","ngo.us","ngrok.app","ngrok-free.app","ngrok.dev","ngrok-free.dev","ngrok.io","ap.ngrok.io","au.ngrok.io","eu.ngrok.io","in.ngrok.io","jp.ngrok.io","sa.ngrok.io","us.ngrok.io","ngrok.pizza","ngrok.pro","torun.pl","nh-serv.co.uk","nimsite.uk","mmafan.biz","myftp.biz","no-ip.biz","no-ip.ca","fantasyleague.cc","gotdns.ch","3utilities.com","blogsyte.com","ciscofreak.com","damnserver.com","ddnsking.com","ditchyourip.com","dnsiskinky.com","dynns.com","geekgalaxy.com","health-carereform.com","homesecuritymac.com","homesecuritypc.com","myactivedirectory.com","mysecuritycamera.com","myvnc.com","net-freaks.com","onthewifi.com","point2this.com","quicksytes.com","securitytactics.com","servebeer.com","servecounterstrike.com","serveexchange.com","serveftp.com","servegame.com","servehalflife.com","servehttp.com","servehumour.com","serveirc.com","servemp3.com","servep2p.com","servepics.com","servequake.com","servesarcasm.com","stufftoread.com","unusualperson.com","workisboring.com","dvrcam.info","ilovecollege.info","no-ip.info","brasilia.me","ddns.me","dnsfor.me","hopto.me","loginto.me","noip.me","webhop.me","bounceme.net","ddns.net","eating-organic.net","mydissent.net","myeffect.net","mymediapc.net","mypsx.net","mysecuritycamera.net","nhlfan.net","no-ip.net","pgafan.net","privatizehealthinsurance.net","redirectme.net","serveblog.net","serveminecraft.net","sytes.net","cable-modem.org","collegefan.org","couchpotatofries.org","hopto.org","mlbfan.org","myftp.org","mysecuritycamera.org","nflfan.org","no-ip.org","read-books.org","ufcfan.org","zapto.org","no-ip.co.uk","golffan.us","noip.us","pointto.us","stage.nodeart.io","*.developer.app","noop.app","*.northflank.app","*.build.run","*.code.run","*.database.run","*.migration.run","noticeable.news","notion.site","dnsking.ch","mypi.co","n4t.co","001www.com","myiphost.com","forumz.info","soundcast.me","tcp4.me","dnsup.net","hicam.net","now-dns.net","ownip.net","vpndns.net","dynserv.org","now-dns.org","x443.pw","now-dns.top","ntdll.top","freeddns.us","nsupdate.info","nerdpol.ovh","nyc.mn","prvcy.page","obl.ong","observablehq.cloud","static.observableusercontent.com","omg.lol","cloudycluster.net","omniwe.site","123webseite.at","123website.be","simplesite.com.br","123website.ch","simplesite.com","123webseite.de","123hjemmeside.dk","123miweb.es","123kotisivu.fi","123siteweb.fr","simplesite.gr","123homepage.it","123website.lu","123website.nl","123hjemmeside.no","service.one","simplesite.pl","123paginaweb.pt","123minsida.se","is-a-fullstack.dev","is-cool.dev","is-not-a.dev","localplayer.dev","is-local.org","opensocial.site","opencraft.hosting","16-b.it","32-b.it","64-b.it","orsites.com","operaunite.com","*.customer-oci.com","*.oci.customer-oci.com","*.ocp.customer-oci.com","*.ocs.customer-oci.com","*.oraclecloudapps.com","*.oraclegovcloudapps.com","*.oraclegovcloudapps.uk","tech.orange","can.re","authgear-staging.com","authgearapps.com","skygearapp.com","outsystemscloud.com","*.hosting.ovh.net","*.webpaas.ovh.net","ownprovider.com","own.pm","*.owo.codes","ox.rs","oy.lc","pgfog.com","pagexl.com","gotpantheon.com","pantheonsite.io","*.paywhirl.com","*.xmit.co","xmit.dev","madethis.site","srv.us","gh.srv.us","gl.srv.us","lk3.ru","mypep.link","perspecta.cloud","on-web.fr","*.upsun.app","upsunapp.com","ent.platform.sh","eu.platform.sh","us.platform.sh","*.platformsh.site","*.tst.site","platter-app.com","platter-app.dev","platterp.us","pley.games","onporter.run","co.bn","postman-echo.com","pstmn.io","mock.pstmn.io","httpbin.org","prequalifyme.today","xen.prgmr.com","priv.at","protonet.io","chirurgiens-dentistes-en-france.fr","byen.site","pubtls.org","pythonanywhere.com","eu.pythonanywhere.com","qa2.com","qcx.io","*.sys.qcx.io","myqnapcloud.cn","alpha-myqnapcloud.com","dev-myqnapcloud.com","mycloudnas.com","mynascloud.com","myqnapcloud.com","qoto.io","qualifioapp.com","ladesk.com","qbuser.com","*.quipelements.com","vapor.cloud","vaporcloud.io","rackmaze.com","rackmaze.net","cloudsite.builders","myradweb.net","servername.us","web.in","in.net","myrdbx.io","site.rb-hosting.io","*.on-rancher.cloud","*.on-k3s.io","*.on-rio.io","ravpage.co.il","readthedocs-hosted.com","readthedocs.io","rhcloud.com","instances.spawn.cc","onrender.com","app.render.com","replit.app","id.replit.app","firewalledreplit.co","id.firewalledreplit.co","repl.co","id.repl.co","replit.dev","archer.replit.dev","bones.replit.dev","canary.replit.dev","global.replit.dev","hacker.replit.dev","id.replit.dev","janeway.replit.dev","kim.replit.dev","kira.replit.dev","kirk.replit.dev","odo.replit.dev","paris.replit.dev","picard.replit.dev","pike.replit.dev","prerelease.replit.dev","reed.replit.dev","riker.replit.dev","sisko.replit.dev","spock.replit.dev","staging.replit.dev","sulu.replit.dev","tarpit.replit.dev","teams.replit.dev","tucker.replit.dev","wesley.replit.dev","worf.replit.dev","repl.run","resindevice.io","devices.resinstaging.io","hzc.io","adimo.co.uk","itcouldbewor.se","aus.basketball","nz.basketball","git-pages.rit.edu","rocky.page","rub.de","ruhr-uni-bochum.de","io.noc.ruhr-uni-bochum.de","биз.рус","ком.рус","крым.рус","мир.рус","мск.рус","орг.рус","самара.рус","сочи.рус","спб.рус","я.рус","ras.ru","nyat.app","180r.com","dojin.com","sakuratan.com","sakuraweb.com","x0.com","2-d.jp","bona.jp","crap.jp","daynight.jp","eek.jp","flop.jp","halfmoon.jp","jeez.jp","matrix.jp","mimoza.jp","ivory.ne.jp","mail-box.ne.jp","mints.ne.jp","mokuren.ne.jp","opal.ne.jp","sakura.ne.jp","sumomo.ne.jp","topaz.ne.jp","netgamers.jp","nyanta.jp","o0o0.jp","rdy.jp","rgr.jp","rulez.jp","s3.isk01.sakurastorage.jp","s3.isk02.sakurastorage.jp","saloon.jp","sblo.jp","skr.jp","tank.jp","uh-oh.jp","undo.jp","rs.webaccel.jp","user.webaccel.jp","websozai.jp","xii.jp","squares.net","jpn.org","kirara.st","x0.to","from.tv","sakura.tv","*.builder.code.com","*.dev-builder.code.com","*.stg-builder.code.com","*.001.test.code-builder-stg.platform.salesforce.com","*.d.crm.dev","*.w.crm.dev","*.wa.crm.dev","*.wb.crm.dev","*.wc.crm.dev","*.wd.crm.dev","*.we.crm.dev","*.wf.crm.dev","sandcats.io","logoip.com","logoip.de","fr-par-1.baremetal.scw.cloud","fr-par-2.baremetal.scw.cloud","nl-ams-1.baremetal.scw.cloud","cockpit.fr-par.scw.cloud","fnc.fr-par.scw.cloud","functions.fnc.fr-par.scw.cloud","k8s.fr-par.scw.cloud","nodes.k8s.fr-par.scw.cloud","s3.fr-par.scw.cloud","s3-website.fr-par.scw.cloud","whm.fr-par.scw.cloud","priv.instances.scw.cloud","pub.instances.scw.cloud","k8s.scw.cloud","cockpit.nl-ams.scw.cloud","k8s.nl-ams.scw.cloud","nodes.k8s.nl-ams.scw.cloud","s3.nl-ams.scw.cloud","s3-website.nl-ams.scw.cloud","whm.nl-ams.scw.cloud","cockpit.pl-waw.scw.cloud","k8s.pl-waw.scw.cloud","nodes.k8s.pl-waw.scw.cloud","s3.pl-waw.scw.cloud","s3-website.pl-waw.scw.cloud","scalebook.scw.cloud","smartlabeling.scw.cloud","dedibox.fr","schokokeks.net","gov.scot","service.gov.scot","scrysec.com","client.scrypted.io","firewall-gateway.com","firewall-gateway.de","my-gateway.de","my-router.de","spdns.de","spdns.eu","firewall-gateway.net","my-firewall.org","myfirewall.org","spdns.org","seidat.net","sellfy.store","minisite.ms","senseering.net","servebolt.cloud","biz.ua","co.ua","pp.ua","as.sh.cn","sheezy.games","shiftedit.io","myshopblocks.com","myshopify.com","shopitsite.com","shopware.shop","shopware.store","mo-siemens.io","1kapp.com","appchizi.com","applinzi.com","sinaapp.com","vipsinaapp.com","siteleaf.net","small-web.org","aeroport.fr","avocat.fr","chambagri.fr","chirurgiens-dentistes.fr","experts-comptables.fr","medecin.fr","notaires.fr","pharmacien.fr","port.fr","veterinaire.fr","vp4.me","*.snowflake.app","*.privatelink.snowflake.app","streamlit.app","streamlitapp.com","try-snowplow.com","mafelo.net","playstation-cloud.com","srht.site","apps.lair.io","*.stolos.io","spacekit.io","ind.mom","customer.speedpartner.de","myspreadshop.at","myspreadshop.com.au","myspreadshop.be","myspreadshop.ca","myspreadshop.ch","myspreadshop.com","myspreadshop.de","myspreadshop.dk","myspreadshop.es","myspreadshop.fi","myspreadshop.fr","myspreadshop.ie","myspreadshop.it","myspreadshop.net","myspreadshop.nl","myspreadshop.no","myspreadshop.pl","myspreadshop.se","myspreadshop.co.uk","w-corp-staticblitz.com","w-credentialless-staticblitz.com","w-staticblitz.com","stackhero-network.com","runs.onstackit.cloud","stackit.gg","stackit.rocks","stackit.run","stackit.zone","musician.io","novecore.site","api.stdlib.com","feedback.ac","forms.ac","assessments.cx","calculators.cx","funnels.cx","paynow.cx","quizzes.cx","researched.cx","tests.cx","surveys.so","storebase.store","storipress.app","storj.farm","strapiapp.com","media.strapiapp.com","vps-host.net","atl.jelastic.vps-host.net","njs.jelastic.vps-host.net","ric.jelastic.vps-host.net","streak-link.com","streaklinks.com","streakusercontent.com","soc.srcf.net","user.srcf.net","utwente.io","temp-dns.com","supabase.co","supabase.in","supabase.net","syncloud.it","dscloud.biz","direct.quickconnect.cn","dsmynas.com","familyds.com","diskstation.me","dscloud.me","i234.me","myds.me","synology.me","dscloud.mobi","dsmynas.net","familyds.net","dsmynas.org","familyds.org","direct.quickconnect.to","vpnplus.to","mytabit.com","mytabit.co.il","tabitorder.co.il","taifun-dns.de","ts.net","*.c.ts.net","gda.pl","gdansk.pl","gdynia.pl","med.pl","sopot.pl","taveusercontent.com","p.tawk.email","p.tawkto.email","site.tb-hosting.com","edugit.io","s3.teckids.org","telebit.app","telebit.io","*.telebit.xyz","*.firenet.ch","*.svc.firenet.ch","reservd.com","thingdustdata.com","cust.dev.thingdust.io","reservd.dev.thingdust.io","cust.disrec.thingdust.io","reservd.disrec.thingdust.io","cust.prod.thingdust.io","cust.testing.thingdust.io","reservd.testing.thingdust.io","tickets.io","arvo.network","azimuth.network","tlon.network","torproject.net","pages.torproject.net","townnews-staging.com","12hp.at","2ix.at","4lima.at","lima-city.at","12hp.ch","2ix.ch","4lima.ch","lima-city.ch","trafficplex.cloud","de.cool","12hp.de","2ix.de","4lima.de","lima-city.de","1337.pictures","clan.rip","lima-city.rocks","webspace.rocks","lima.zone","*.transurl.be","*.transurl.eu","site.transip.me","*.transurl.nl","tuxfamily.org","dd-dns.de","dray-dns.de","draydns.de","dyn-vpn.de","dynvpn.de","mein-vigor.de","my-vigor.de","my-wan.de","syno-ds.de","synology-diskstation.de","synology-ds.de","diskstation.eu","diskstation.org","typedream.app","pro.typeform.com","*.uberspace.de","uber.space","hk.com","inc.hk","ltd.hk","hk.org","it.com","unison-services.cloud","virtual-user.de","virtualuser.de","name.pm","sch.tf","biz.wf","sch.wf","org.yt","rs.ba","bielsko.pl","upli.io","urown.cloud","dnsupdate.info","us.org","v.ua","express.val.run","web.val.run","vercel.app","v0.build","vercel.dev","vusercontent.net","now.sh","2038.io","router.management","v-info.info","voorloper.cloud","*.vultrobjects.com","wafflecell.com","webflow.io","webflowtest.io","*.webhare.dev","bookonline.app","hotelwithflight.com","reserve-online.com","reserve-online.net","cprapid.com","pleskns.com","wp2.host","pdns.page","plesk.page","wpsquared.site","*.wadl.top","remotewd.com","box.ca","pages.wiardweb.com","toolforge.org","wmcloud.org","wmflabs.org","wdh.app","panel.gg","daemon.panel.gg","wixsite.com","wixstudio.com","editorx.io","wixstudio.io","wix.run","messwithdns.com","woltlab-demo.com","myforum.community","community-pro.de","diskussionsbereich.de","community-pro.net","meinforum.net","affinitylottery.org.uk","raffleentry.org.uk","weeklylottery.org.uk","wpenginepowered.com","js.wpenginepowered.com","half.host","xnbay.com","u2.xnbay.com","u2-local.xnbay.com","cistron.nl","demon.nl","xs4all.space","yandexcloud.net","storage.yandexcloud.net","website.yandexcloud.net","official.academy","yolasite.com","yombo.me","ynh.fr","nohost.me","noho.st","za.net","za.org","zap.cloud","zeabur.app","bss.design","basicserver.io","virtualserver.io","enterprisecloud.nu"],wme=kme.reduce((e,a)=>{const n=a.replace(/^(\*\.|\!)/,""),t=Vo.toASCII(n),i=a.charAt(0);if(e.has(t))throw new Error(`Multiple rules found for ${a} (${t})`);return e.set(t,{rule:a,suffix:n,punySuffix:t,wildcard:i==="*",exception:i==="!"}),e},new Map),Ame=e=>{const a=Vo.toASCII(e).split(".");for(let n=0;n<a.length;n++){const t=a.slice(n).join("."),i=wme.get(t);if(i)return i}return null},Sme={DOMAIN_TOO_SHORT:"Domain name too short.",DOMAIN_TOO_LONG:"Domain name too long. It should be no more than 255 chars.",LABEL_STARTS_WITH_DASH:"Domain name label can not start with a dash.",LABEL_ENDS_WITH_DASH:"Domain name label can not end with a dash.",LABEL_TOO_LONG:"Domain name label should be at most 63 chars long.",LABEL_TOO_SHORT:"Domain name label should be at least 1 character long.",LABEL_INVALID_CHARS:"Domain name label can only contain alphanumeric characters or dashes."},Cme=e=>{const a=Vo.toASCII(e);if(a.length<1)return"DOMAIN_TOO_SHORT";if(a.length>255)return"DOMAIN_TOO_LONG";const n=a.split(".");let t;for(let i=0;i<n.length;++i){if(t=n[i],!t.length)return"LABEL_TOO_SHORT";if(t.length>63)return"LABEL_TOO_LONG";if(t.charAt(0)==="-")return"LABEL_STARTS_WITH_DASH";if(t.charAt(t.length-1)==="-")return"LABEL_ENDS_WITH_DASH";if(!/^[a-z0-9\-_]+$/.test(t))return"LABEL_INVALID_CHARS"}},jC=e=>{if(typeof e!="string")throw new TypeError("Domain name must be a string.");let a=e.slice(0).toLowerCase();a.charAt(a.length-1)==="."&&(a=a.slice(0,a.length-1));const n=Cme(a);if(n)return{input:e,error:{message:Sme[n],code:n}};const t={input:e,tld:null,sld:null,domain:null,subdomain:null,listed:!1},i=a.split(".");if(i[i.length-1]==="local")return t;const r=()=>(/xn--/.test(a)&&(t.domain&&(t.domain=Vo.toASCII(t.domain)),t.subdomain&&(t.subdomain=Vo.toASCII(t.subdomain))),t),o=Ame(a);if(!o)return i.length<2?t:(t.tld=i.pop(),t.sld=i.pop(),t.domain=[t.sld,t.tld].join("."),i.length&&(t.subdomain=i.pop()),r());t.listed=!0;const s=o.suffix.split("."),l=i.slice(0,i.length-s.length);return o.exception&&l.push(s.shift()),t.tld=s.join("."),!l.length||(o.wildcard&&(s.unshift(l.pop()),t.tld=s.join(".")),!l.length)||(t.sld=l.pop(),t.domain=[t.sld,t.tld].join("."),l.length&&(t.subdomain=l.join("."))),r()},Dme=e=>{const a=jC(e);return!!(a.domain&&a.listed)},gr=2147483647,Ka=36,xh=1,$o=26,Tme=38,Eme=700,OC=72,BC=128,UC="-",Pme=/^xn--/,_me=/[^\0-\x7F]/,xme=/[\x2E\u3002\uFF0E\uFF61]/g,Ime={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},Iu=Ka-xh,Za=Math.floor,Ru=String.fromCharCode;function $n(e){throw new RangeError(Ime[e])}function Rme(e,a){const n=[];let t=e.length;for(;t--;)n[t]=a(e[t]);return n}function qC(e,a){const n=e.split("@");let t="";n.length>1&&(t=n[0]+"@",e=n[1]),e=e.replace(xme,".");const i=e.split("."),r=Rme(i,a).join(".");return t+r}function zme(e){const a=[];let n=0;const t=e.length;for(;n<t;){const i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<t){const r=e.charCodeAt(n++);(r&64512)==56320?a.push(((i&1023)<<10)+(r&1023)+65536):(a.push(i),n--)}else a.push(i)}return a}const Mme=function(e){return e>=48&&e<58?26+(e-48):e>=65&&e<91?e-65:e>=97&&e<123?e-97:Ka},ey=function(e,a){return e+22+75*(e<26)-((a!=0)<<5)},VC=function(e,a,n){let t=0;for(e=n?Za(e/Eme):e>>1,e+=Za(e/a);e>Iu*$o>>1;t+=Ka)e=Za(e/Iu);return Za(t+(Iu+1)*e/(e+Tme))},Nme=function(e){const a=[],n=e.length;let t=0,i=BC,r=OC,o=e.lastIndexOf(UC);o<0&&(o=0);for(let s=0;s<o;++s)e.charCodeAt(s)>=128&&$n("not-basic"),a.push(e.charCodeAt(s));for(let s=o>0?o+1:0;s<n;){const l=t;for(let p=1,u=Ka;;u+=Ka){s>=n&&$n("invalid-input");const g=Mme(e.charCodeAt(s++));g>=Ka&&$n("invalid-input"),g>Za((gr-t)/p)&&$n("overflow"),t+=g*p;const b=u<=r?xh:u>=r+$o?$o:u-r;if(g<b)break;const v=Ka-b;p>Za(gr/v)&&$n("overflow"),p*=v}const d=a.length+1;r=VC(t-l,d,l==0),Za(t/d)>gr-i&&$n("overflow"),i+=Za(t/d),t%=d,a.splice(t++,0,i)}return String.fromCodePoint(...a)},Fme=function(e){const a=[];e=zme(e);const n=e.length;let t=BC,i=0,r=OC;for(const l of e)l<128&&a.push(Ru(l));const o=a.length;let s=o;for(o&&a.push(UC);s<n;){let l=gr;for(const p of e)p>=t&&p<l&&(l=p);const d=s+1;l-t>Za((gr-i)/d)&&$n("overflow"),i+=(l-t)*d,t=l;for(const p of e)if(p<t&&++i>gr&&$n("overflow"),p===t){let u=i;for(let g=Ka;;g+=Ka){const b=g<=r?xh:g>=r+$o?$o:g-r;if(u<b)break;const v=u-b,A=Ka-b;a.push(Ru(ey(b+v%A,0))),u=Za(v/A)}a.push(Ru(ey(u,0))),r=VC(i,d,s===o),i=0,++s}++i,++t}return a.join("")},$C=function(e){return qC(e,function(a){return Pme.test(a)?Nme(a.slice(4).toLowerCase()):a})},ty=function(e){return qC(e,function(a){return _me.test(a)?"xn--"+Fme(a):a})};var zu,ay;function Lme(){return ay||(ay=1,zu={aa:{name:"Afar",nativeName:"Afaraf"},ab:{name:"Abkhaz",nativeName:"аҧсуа бызшәа"},ae:{name:"Avestan",nativeName:"avesta"},af:{name:"Afrikaans",nativeName:"Afrikaans"},ak:{name:"Akan",nativeName:"Akan"},am:{name:"Amharic",nativeName:"አማርኛ"},an:{name:"Aragonese",nativeName:"aragonés"},ar:{name:"Arabic",nativeName:"العربية"},as:{name:"Assamese",nativeName:"অসমীয়া"},av:{name:"Avaric",nativeName:"авар мацӀ"},ay:{name:"Aymara",nativeName:"aymar aru"},az:{name:"Azerbaijani",nativeName:"azərbaycan dili"},ba:{name:"Bashkir",nativeName:"башҡорт теле"},be:{name:"Belarusian",nativeName:"беларуская мова"},bg:{name:"Bulgarian",nativeName:"български език"},bi:{name:"Bislama",nativeName:"Bislama"},bm:{name:"Bambara",nativeName:"bamanankan"},bn:{name:"Bengali",nativeName:"বাংলা"},bo:{name:"Tibetan",nativeName:"བོད་ཡིག"},br:{name:"Breton",nativeName:"brezhoneg"},bs:{name:"Bosnian",nativeName:"bosanski jezik"},ca:{name:"Catalan",nativeName:"Català"},ce:{name:"Chechen",nativeName:"нохчийн мотт"},ch:{name:"Chamorro",nativeName:"Chamoru"},co:{name:"Corsican",nativeName:"corsu"},cr:{name:"Cree",nativeName:"ᓀᐦᐃᔭᐍᐏᐣ"},cs:{name:"Czech",nativeName:"Čeština"},cu:{name:"Old Church Slavonic",nativeName:"ѩзыкъ словѣньскъ"},cv:{name:"Chuvash",nativeName:"чӑваш чӗлхи"},cy:{name:"Welsh",nativeName:"Cymraeg"},da:{name:"Danish",nativeName:"Dansk"},de:{name:"German",nativeName:"Deutsch"},dv:{name:"Divehi",nativeName:"ދިވެހި"},dz:{name:"Dzongkha",nativeName:"རྫོང་ཁ"},ee:{name:"Ewe",nativeName:"Eʋegbe"},el:{name:"Greek",nativeName:"Ελληνικά"},en:{name:"English",nativeName:"English"},eo:{name:"Esperanto",nativeName:"Esperanto"},es:{name:"Spanish",nativeName:"Español"},et:{name:"Estonian",nativeName:"eesti"},eu:{name:"Basque",nativeName:"euskara"},fa:{name:"Persian",nativeName:"فارسی"},ff:{name:"Fula",nativeName:"Fulfulde"},fi:{name:"Finnish",nativeName:"suomi"},fj:{name:"Fijian",nativeName:"vosa Vakaviti"},fo:{name:"Faroese",nativeName:"Føroyskt"},fr:{name:"French",nativeName:"Français"},fy:{name:"Western Frisian",nativeName:"Frysk"},ga:{name:"Irish",nativeName:"Gaeilge"},gd:{name:"Scottish Gaelic",nativeName:"Gàidhlig"},gl:{name:"Galician",nativeName:"galego"},gn:{name:"Guaraní",nativeName:"Avañe'ẽ"},gu:{name:"Gujarati",nativeName:"ગુજરાતી"},gv:{name:"Manx",nativeName:"Gaelg"},ha:{name:"Hausa",nativeName:"هَوُسَ"},he:{name:"Hebrew",nativeName:"עברית"},hi:{name:"Hindi",nativeName:"हिन्दी"},ho:{name:"Hiri Motu",nativeName:"Hiri Motu"},hr:{name:"Croatian",nativeName:"Hrvatski"},ht:{name:"Haitian",nativeName:"Kreyòl ayisyen"},hu:{name:"Hungarian",nativeName:"magyar"},hy:{name:"Armenian",nativeName:"Հայերեն"},hz:{name:"Herero",nativeName:"Otjiherero"},ia:{name:"Interlingua",nativeName:"Interlingua"},id:{name:"Indonesian",nativeName:"Bahasa Indonesia"},ie:{name:"Interlingue",nativeName:"Interlingue"},ig:{name:"Igbo",nativeName:"Asụsụ Igbo"},ii:{name:"Nuosu",nativeName:"ꆈꌠ꒿ Nuosuhxop"},ik:{name:"Inupiaq",nativeName:"Iñupiaq"},io:{name:"Ido",nativeName:"Ido"},is:{name:"Icelandic",nativeName:"Íslenska"},it:{name:"Italian",nativeName:"Italiano"},iu:{name:"Inuktitut",nativeName:"ᐃᓄᒃᑎᑐᑦ"},ja:{name:"Japanese",nativeName:"日本語"},jv:{name:"Javanese",nativeName:"basa Jawa"},ka:{name:"Georgian",nativeName:"ქართული"},kg:{name:"Kongo",nativeName:"Kikongo"},ki:{name:"Kikuyu",nativeName:"Gĩkũyũ"},kj:{name:"Kwanyama",nativeName:"Kuanyama"},kk:{name:"Kazakh",nativeName:"қазақ тілі"},kl:{name:"Kalaallisut",nativeName:"kalaallisut"},km:{name:"Khmer",nativeName:"ខេមរភាសា"},kn:{name:"Kannada",nativeName:"ಕನ್ನಡ"},ko:{name:"Korean",nativeName:"한국어"},kr:{name:"Kanuri",nativeName:"Kanuri"},ks:{name:"Kashmiri",nativeName:"कश्मीरी"},ku:{name:"Kurdish",nativeName:"Kurdî"},kv:{name:"Komi",nativeName:"коми кыв"},kw:{name:"Cornish",nativeName:"Kernewek"},ky:{name:"Kyrgyz",nativeName:"Кыргызча"},la:{name:"Latin",nativeName:"latine"},lb:{name:"Luxembourgish",nativeName:"Lëtzebuergesch"},lg:{name:"Ganda",nativeName:"Luganda"},li:{name:"Limburgish",nativeName:"Limburgs"},ln:{name:"Lingala",nativeName:"Lingála"},lo:{name:"Lao",nativeName:"ພາສາລາວ"},lt:{name:"Lithuanian",nativeName:"lietuvių kalba"},lu:{name:"Luba-Katanga",nativeName:"Kiluba"},lv:{name:"Latvian",nativeName:"latviešu valoda"},mg:{name:"Malagasy",nativeName:"fiteny malagasy"},mh:{name:"Marshallese",nativeName:"Kajin M̧ajeļ"},mi:{name:"Māori",nativeName:"te reo Māori"},mk:{name:"Macedonian",nativeName:"македонски јазик"},ml:{name:"Malayalam",nativeName:"മലയാളം"},mn:{name:"Mongolian",nativeName:"Монгол хэл"},mr:{name:"Marathi",nativeName:"मराठी"},ms:{name:"Malay",nativeName:"Bahasa Melayu"},mt:{name:"Maltese",nativeName:"Malti"},my:{name:"Burmese",nativeName:"ဗမာစာ"},na:{name:"Nauru",nativeName:"Dorerin Naoero"},nb:{name:"Norwegian Bokmål",nativeName:"Norsk bokmål"},nd:{name:"Northern Ndebele",nativeName:"isiNdebele"},ne:{name:"Nepali",nativeName:"नेपाली"},ng:{name:"Ndonga",nativeName:"Owambo"},nl:{name:"Dutch",nativeName:"Nederlands"},nn:{name:"Norwegian Nynorsk",nativeName:"Norsk nynorsk"},no:{name:"Norwegian",nativeName:"Norsk"},nr:{name:"Southern Ndebele",nativeName:"isiNdebele"},nv:{name:"Navajo",nativeName:"Diné bizaad"},ny:{name:"Chichewa",nativeName:"chiCheŵa"},oc:{name:"Occitan",nativeName:"occitan"},oj:{name:"Ojibwe",nativeName:"ᐊᓂᔑᓈᐯᒧᐎᓐ"},om:{name:"Oromo",nativeName:"Afaan Oromoo"},or:{name:"Oriya",nativeName:"ଓଡ଼ିଆ"},os:{name:"Ossetian",nativeName:"ирон æвзаг"},pa:{name:"Panjabi",nativeName:"ਪੰਜਾਬੀ"},pi:{name:"Pāli",nativeName:"पाऴि"},pl:{name:"Polish",nativeName:"Polski"},ps:{name:"Pashto",nativeName:"پښتو"},pt:{name:"Portuguese",nativeName:"Português"},qu:{name:"Quechua",nativeName:"Runa Simi"},rm:{name:"Romansh",nativeName:"rumantsch grischun"},rn:{name:"Kirundi",nativeName:"Ikirundi"},ro:{name:"Romanian",nativeName:"Română"},ru:{name:"Russian",nativeName:"Русский"},rw:{name:"Kinyarwanda",nativeName:"Ikinyarwanda"},sa:{name:"Sanskrit",nativeName:"संस्कृतम्"},sc:{name:"Sardinian",nativeName:"sardu"},sd:{name:"Sindhi",nativeName:"सिन्धी"},se:{name:"Northern Sami",nativeName:"Davvisámegiella"},sg:{name:"Sango",nativeName:"yângâ tî sängö"},si:{name:"Sinhala",nativeName:"සිංහල"},sk:{name:"Slovak",nativeName:"Slovenčina"},sl:{name:"Slovenian",nativeName:"slovenščina"},sm:{name:"Samoan",nativeName:"gagana fa'a Samoa"},sn:{name:"Shona",nativeName:"chiShona"},so:{name:"Somali",nativeName:"Soomaaliga"},sq:{name:"Albanian",nativeName:"Shqip"},sr:{name:"Serbian",nativeName:"српски језик"},ss:{name:"Swati",nativeName:"SiSwati"},st:{name:"Southern Sotho",nativeName:"Sesotho"},su:{name:"Sundanese",nativeName:"Basa Sunda"},sv:{name:"Swedish",nativeName:"Svenska"},sw:{name:"Swahili",nativeName:"Kiswahili"},ta:{name:"Tamil",nativeName:"தமிழ்"},te:{name:"Telugu",nativeName:"తెలుగు"},tg:{name:"Tajik",nativeName:"тоҷикӣ"},th:{name:"Thai",nativeName:"ไทย"},ti:{name:"Tigrinya",nativeName:"ትግርኛ"},tk:{name:"Turkmen",nativeName:"Türkmençe"},tl:{name:"Tagalog",nativeName:"Wikang Tagalog"},tn:{name:"Tswana",nativeName:"Setswana"},to:{name:"Tonga",nativeName:"faka Tonga"},tr:{name:"Turkish",nativeName:"Türkçe"},ts:{name:"Tsonga",nativeName:"Xitsonga"},tt:{name:"Tatar",nativeName:"татар теле"},tw:{name:"Twi",nativeName:"Twi"},ty:{name:"Tahitian",nativeName:"Reo Tahiti"},ug:{name:"Uyghur",nativeName:"ئۇيغۇرچە‎"},uk:{name:"Ukrainian",nativeName:"Українська"},ur:{name:"Urdu",nativeName:"اردو"},uz:{name:"Uzbek",nativeName:"Ўзбек"},ve:{name:"Venda",nativeName:"Tshivenḓa"},vi:{name:"Vietnamese",nativeName:"Tiếng Việt"},vo:{name:"Volapük",nativeName:"Volapük"},wa:{name:"Walloon",nativeName:"walon"},wo:{name:"Wolof",nativeName:"Wollof"},xh:{name:"Xhosa",nativeName:"isiXhosa"},yi:{name:"Yiddish",nativeName:"ייִדיש"},yo:{name:"Yoruba",nativeName:"Yorùbá"},za:{name:"Zhuang",nativeName:"Saɯ cueŋƅ"},zh:{name:"Chinese",nativeName:"中文"},zu:{name:"Zulu",nativeName:"isiZulu"}}),zu}var Mu,ny;function jme(){if(ny)return Mu;ny=1;const e=Lme(),a={},n={},t=[],i=[],r=[];for(const o in e){const{name:s,nativeName:l}=e[o];a[o]=n[s.toLowerCase()]=n[l.toLowerCase()]={code:o,name:s,nativeName:l},t.push(o),i.push(s),r.push(l)}return Mu=class Rl{static getLanguages(s=[]){return s.map(l=>Rl.validate(l)?Object.assign({},a[l]):{code:l,name:"",nativeName:""})}static getName(s){return Rl.validate(s)?e[s].name:""}static getAllNames(){return i.slice()}static getNativeName(s){return Rl.validate(s)?e[s].nativeName:""}static getAllNativeNames(){return r.slice()}static getCode(s){return s=s.toLowerCase(),n.hasOwnProperty(s)?n[s].code:""}static getAllCodes(){return t.slice()}static validate(s){return e.hasOwnProperty(s)}},Mu}var Ome=jme();const Bme=Go(Ome),Ume=["cu","kp","sy","xn--ogbpf8fl","سورية","ir","xn--mgba3a4f16a","ایران"],Tm=["ישראל","co.az","la.gov","hz.de","as","in.gov","ll.land","co.pt","ag.org"],qme=e=>e.indexOf("..")>=0,Vme=e=>Ume.indexOf(e.toLowerCase())>=0,$me=e=>!e||$C(e).length<1,Wme=e=>{if(!e)return{error:"DOMAIN_TOO_SHORT",input:e};if(e.input)return e;const a=e;if(qme(a))return{error:"TWO_CONSECUTIVE_DOTS",input:a};const n=WC(a);let t=jC(GC(a));if("error"in t)return{error:Gme[t.error.code],input:a};if(t.sld==null)return{error:"INVALID_DOMAIN_NAME",input:a};t=Kme(t);const{domain:i,tld:r,sld:o,subdomain:s,input:l}=t,d=r&&Vme(r),p=$me(o);return{input:l,main:i,tld:r,sld:o,subdomain:s||null,error:(()=>{switch(!0){case d:return"OFAC_TLD";case p:return"DOMAIN_TOO_SHORT";default:return null}})(),isValidTld:Yme(t),formattedInput:$C(n),asciiDomain:ty(i),fullAsciiDomain:ty(n)}},Gme={DOMAIN_TOO_SHORT:"DOMAIN_TOO_SHORT",DOMAIN_TOO_LONG:"DOMAIN_TOO_LONG",LABEL_STARTS_WITH_DASH:"INVALID_DASH_USAGE",LABEL_ENDS_WITH_DASH:"INVALID_DASH_USAGE",LABEL_TOO_LONG:"DOMAIN_TOO_LONG",LABEL_TOO_SHORT:"DOMAIN_TOO_SHORT",LABEL_INVALID_CHARS:"LABEL_INVALID_CHARS"},Hme=e=>{const a=e.split(".");return a.length===3?`${a[1]}.${a[2]}`:a[1]},WC=e=>{let a=e.trim();a.endsWith(".")&&(a=a.slice(0,-1));const n=Hme(a);return!n||n==="."?`${a}.com`.replace(/\.{2,}/,"."):a.startsWith("www.")&&a.split(".").length<=2?`${a}.com`:a},GC=e=>{const a=e.trimEnd().toLowerCase().replace(/^(www\.)/,"");return WC(a)},Yme=e=>{if(!e.tld)return!1;const a=Dme(e.input);return!a&&Tm.includes(e.tld)?!0:a};Bme.getAllCodes();const Kme=e=>{var r;const a=((r=GC(e.input))==null?void 0:r.split("."))??[];if(a.length<2)return e;let n=a.pop();n&&!Tm.includes(n)&&(n=`${a.pop()}.${n}`);const t=a.pop()??null,i=a.join(".");return n&&Tm.includes(n)&&t?{...e,tld:n,sld:t,domain:`${t}.${n}`,subdomain:i}:e};function HC(e){var t;const n=`; ${document.cookie}`.split(`; ${e}=`);return n.length===2&&((t=n.pop())==null?void 0:t.split(";").shift())||null}function Zme(e,a,n=30){if(document==null)return a();const t=document.cookie.split("; ").find(o=>o.startsWith(e+"="));if(t)return t.split("=")[1];const i=a(),r=new Date(Date.now()+n*60*1e3).toUTCString();return document.cookie=[`${e}=${i}`,"path=/",`expires=${r}`,"SameSite=Lax"].join("; "),i}function Jme(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var a=Math.random()*16|0,n=e==="x"?a:a&3|8;return n.toString(16)})}function Qme(){return Zme("_base44_sessionId",()=>Jme(),30)}const YC=()=>{const e=window.location.hostname,a=Wme(e);return a.error||!a.main?e:"."+a.main},Xme=(e,a,n=90)=>{const t=YC(),i=new Date;i.setTime(i.getTime()+n*24*60*60*1e3),document.cookie=`${e}=${a}; expires=${i.toUTCString()}; domain=${t}; path=/; SameSite=None; Secure`},ege=e=>{const a=YC();document.cookie=`${e}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=${a}; path=/; SameSite=None; Secure`},KC="mixpanel_utm_params",ZC="mixpanel_utm_timestamp",tge=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","utm_id","utm_campaign_id","utm_source_platform","utm_creative_format","utm_marketing_tactic"],age=["impact_click_id"],nge=[...tge,...age],She=()=>{try{const e=new URLSearchParams(window.location.search),a={};let n=!1;if(nge.forEach(t=>{const i=e.get(t);i&&(a[t]=i,n||(n=!0))}),n){const t=kd();return!t.params||Object.keys(t.params).length===0?(localStorage.setItem(KC,JSON.stringify(a)),localStorage.setItem(ZC,Date.now().toString()),a):t.params}return{}}catch{return{}}},kd=()=>{try{const e=localStorage.getItem(KC),a=localStorage.getItem(ZC);return{params:e?JSON.parse(e):{},timestamp:a?parseInt(a):null}}catch{return{params:{},timestamp:null}}},$a={feature_flags:[],tier:null,organization_id:null,user_role:null,platform:null},Wo=[],Nu=[];function ige(){return HC("_wixCIDX")||"no-cookie-found"}function iy(){for(;Wo.length>0;){const e=Wo.shift();e==null||e()}}function Che({onLoaded:e,platform:a}={}){if(a&&($a.platform=a),Ct.__loaded){$a.platform&&Ct.register({platform:$a.platform}),e==null||e(),iy();return}if(e&&Nu.push(e),Ct.__initializing)return;Ct.__initializing=!0,Ct.init("eff913a25a5a2642acc7794bb28dc621",{debug:!1,opt_out_tracking_by_default:!1,ignore_dnt:!0,loaded:()=>{Ct.__loaded=!0,Ct.__initializing=!1;const{params:t}=kd();for($a.platform&&Ct.register({platform:$a.platform}),Object.keys(t).length>0&&Ct.register(t);Nu.length>0;){const i=Nu.shift();i==null||i()}iy()}})}function ry(e,a,n){const t=ige(),i=Qme(),r={...a,feature_flags:a.feature_flags||$a.feature_flags,tier:a.tier||$a.tier,client_id:t,session_id:i,organization_id:a.organization_id||$a.organization_id,user_role:a.user_role||$a.user_role,platform:a.platform||$a.platform};n!=null&&n.transport?Ct.track(e,r,{transport:n.transport}):Ct.track(e,r)}const _a=(e,a={},n)=>{Ct.__loaded?ry(e,a,n):Wo.push(()=>ry(e,a,n))},Dhe=e=>{Ct.__loaded?Ct.identify(e):Wo.push(()=>Ct.identify(e))},The=(e,a)=>{Ct.__loaded?(Ct.identify(e),Ct.people.set(a)):Wo.push(()=>{Ct.identify(e),Ct.people.set(a)})},rge={signup:{src:189,evid:1204},login:{src:189,evid:1200}},JC=(e,a="signup",n={})=>{try{if(!e)return;const t=rge[a];if(!t)return;const i=HC("_wixCIDX")||"no-cookie-found",r=e||"no-user-id",o={dt:0,e:[{dt:0,f:{src:t.src,evid:t.evid}}],g:{uuid:r,client_id:i}};Object.keys(n).length>0&&(o.additional_data=n),fetch("https://frog.wix.com/base44",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o),keepalive:!0}).then(s=>{if(!s.ok)throw new Error(`Frog service responded with status: ${s.status}`);return s.text()}).then(s=>{}).catch(s=>{})}catch{}},Ehe=e=>{const a={event_type:"signup",timestamp:new Date().toISOString()};JC(e,"signup",a)},oge=e=>{const a={event_type:"login",timestamp:new Date().toISOString()};JC(e,"login",a)},sge=(e,a)=>{const{params:n}=kd();_a("User Login",{auth_method:e,...n}),oge(a??null)},lge=()=>{const{params:e}=kd();_a("Auth: Register - page viewed",{page_path:typeof window<"u"?window.location.pathname:"",...e})},cge=()=>{_a("Auth: Signup - signup clicked",{auth_method:"google"},{transport:"sendBeacon"})},dge=()=>{_a("Auth: Login - login with google clicked",{auth_method:"google"},{transport:"sendBeacon"})},uge=e=>{_a("Auth: Register - page left",{reason:e,page_path:typeof window<"u"?window.location.pathname:""},{transport:"sendBeacon"})},Phe=()=>({reportGoogleOneTapEvent:(e,a,n)=>{_a(`Google One Tap ${e}: ${a}`,{...n})},reportVerifyEmailClick:()=>{_a("Auth: Verify Email - verify email clicked")},reportResendVerifyEmailClick:()=>{_a("Auth: Verify Email - resend email clicked")},reportSignupOnClick:()=>{_a("Auth: Signup - signup clicked",{auth_method:"email"})},reportRegisterEmailInputFocus:()=>{_a("Auth: Register - email input focused")},reportRegisterPasswordInputFocus:()=>{_a("Auth: Register - password input focused")},reportRegisterPageView:lge,reportGoogleSignupButtonClick:cge,reportGoogleLoginButtonClick:dge,reportRegisterPageLeave:uge});function pge(e){try{const a=e.split(".")[1],n=JSON.parse(atob(a.replace(/-/g,"+").replace(/_/g,"/")));return n.sub??n.user_id??null}catch{return null}}class mge{constructor(){this.listeners=new Set,this._refreshPromise=null,this._jwtRefreshEnabled=!1;const a=new URLSearchParams(window.location.search),n=a.get("access_token");this.oauthRedirectAuthMethod=n?a.get("auth_method"):null,this.oauthRedirectUserId=n?pge(n):null,setTimeout(()=>{this.processSSOTokensFromURL(),this.trackLoginFromRedirect()},0)}trackLoginFromRedirect(){this.oauthRedirectAuthMethod&&(sge(this.oauthRedirectAuthMethod,this.oauthRedirectUserId),Qd("auth_method"),this.oauthRedirectAuthMethod=null,this.oauthRedirectUserId=null)}getToken(){return this.fetchToken(!1)||localStorage.getItem("token")||localStorage.getItem("base44_access_token")}fetchToken(a=!0){const n=new URLSearchParams(window.location.search),t=n.get("access_token")||localStorage.getItem("token")||localStorage.getItem("base44_access_token");return a&&n.has("access_token")&&(Qd("access_token"),Qd("auth_method")),t}setToken(a){a?(localStorage.setItem("token",a),localStorage.setItem("base44_access_token",a),hl("Authorization",`Bearer ${a}`)):(localStorage.removeItem("token"),localStorage.removeItem("base44_access_token"),fl("Authorization")),this.notifyListeners("token_changed",{token:a})}addListener(a){return this.listeners.add(a),()=>this.listeners.delete(a)}notifyListeners(a,n={}){this.listeners.forEach(t=>{try{t(a,n)}catch{}})}async refreshAccessToken(){if(this._refreshPromise)return this._refreshPromise;this._refreshPromise=this._doRefresh();try{return await this._refreshPromise}finally{this._refreshPromise=null}}async _doRefresh(){const a=await fetch(`${Vc()}/auth/refresh`,{method:"POST",credentials:"include"});if(!a.ok)throw new Error("Refresh failed");const n=await a.json();return this.setToken(n.access_token),n.access_token}setJwtRefreshEnabled(a){this._jwtRefreshEnabled=a}isJwtRefreshEnabled(){return this._jwtRefreshEnabled}processSSOTokensFromURL(){const a=new URLSearchParams(window.location.search);if(a.get("sso_access_token")){const t={sso_access_token:a.get("sso_access_token"),sso_token_type:a.get("sso_token_type"),sso_expires_at:a.get("sso_expires_at"),sso_scope:a.get("sso_scope"),sso_provider:a.get("sso_provider"),sso_id_token:a.get("sso_id_token")};this.setSSOTokens(t),["sso_access_token","sso_token_type","sso_expires_at","sso_scope","sso_provider","sso_id_token"].forEach(o=>{a.delete(o)});const r=window.location.pathname+(a.toString()?"?"+a.toString():"");window.history.replaceState({},"",r),this.notifyListeners("sso_tokens_updated",{tokens:this.getSSOTokens()})}}setSSOTokens(a){const n={access_token:a.sso_access_token,token_type:a.sso_token_type,expires_at:a.sso_expires_at,scope:a.sso_scope,provider:a.sso_provider,id_token:a.sso_id_token,stored_at:Date.now()},t=Object.fromEntries(Object.entries(n).filter(([i,r])=>r!=null));if(localStorage.setItem("sso_tokens",JSON.stringify(t)),t.access_token)try{hl("SSO_AUTHORIZATION",`${t.token_type} ${t.access_token}`)}catch{setTimeout(()=>{try{hl("SSO_AUTHORIZATION",`${t.token_type} ${t.access_token}`)}catch{}},100)}}getSSOTokens(){try{const a=localStorage.getItem("sso_tokens");if(!a)return null;const n=JSON.parse(a);return n.expires_at&&new Date(Number(n.expires_at)*1e3)<=new Date?(this.clearSSOTokens(),null):n}catch{return this.clearSSOTokens(),null}}clearSSOTokens(){localStorage.removeItem("sso_tokens");try{fl("SSO_AUTHORIZATION")}catch{setTimeout(()=>{try{fl("SSO_AUTHORIZATION")}catch{}},100)}this.notifyListeners("sso_tokens_cleared")}}const ti=new mge;function gge(e=!0){return ti.fetchToken(e)}function _he(e){ti.setToken(e)}function xhe(){ti.setToken(null)}class hge{constructor(){this._cursorCallbacks={},this._selectionCallbacks={},this._layoutCallbacks={},this._socket=null}_wireEvent(a,n,t,i){a.on(n,({room:r,data:o})=>{r&&t[r]&&Object.values(t[r]).forEach(s=>{var l;return(l=s[i])==null?void 0:l.call(s,o)})})}_addListener(a,n,t){a[n]||(a[n]={});const i=Xi();return a[n][i]=t,()=>{var r;(r=a[n])==null||delete r[i],a[n]&&Object.keys(a[n]).length===0&&delete a[n]}}init(a){this._socket=a,this._wireEvent(a,"canvas:cursor_batch_update",this._cursorCallbacks,"onCursorBatch"),this._wireEvent(a,"canvas:cursor_left",this._cursorCallbacks,"onCursorLeft"),this._wireEvent(a,"canvas:broadcast_selection_updated",this._selectionCallbacks,"onSelectionUpdate"),this._wireEvent(a,"canvas:selections_snapshot",this._selectionCallbacks,"onSelectionsSnapshot"),this._wireEvent(a,"canvas:notify_node_updated",this._layoutCallbacks,"onNodeUpdated"),this._wireEvent(a,"canvas:notify_node_update_ended",this._layoutCallbacks,"onNodeUpdateEnded"),this._wireEvent(a,"canvas:layout_snapshot",this._layoutCallbacks,"onLayoutSnapshot")}emitCursorBatch(a,n){var t;(t=this._socket)==null||t.emit("canvas:cursor_batch",a,n)}emitCursorLeave(a){var n;(n=this._socket)==null||n.emit("canvas:notify_cursor_leave",a)}emitClaimActive(a){var n;(n=this._socket)==null||n.emit("canvas:claim_active",a)}addCursorListener(a,n){return this._addListener(this._cursorCallbacks,a,n)}emitSelectionUpdate(a,n){var t;(t=this._socket)==null||t.emit("canvas:broadcast_selection_update",a,n)}requestSelections(a){var n;(n=this._socket)==null||n.emit("canvas:send_selections_snapshot",a)}addSelectionListener(a,n){return this._addListener(this._selectionCallbacks,a,n)}reclaimActive(){new Set([...Object.keys(this._cursorCallbacks),...Object.keys(this._selectionCallbacks),...Object.keys(this._layoutCallbacks)]).forEach(n=>this.emitClaimActive(n))}notifyReconnect(){const a=n=>{Object.values(n).forEach(t=>Object.values(t).forEach(i=>{var r;return(r=i.onReconnect)==null?void 0:r.call(i)}))};a(this._cursorCallbacks),a(this._selectionCallbacks),a(this._layoutCallbacks)}emitNodeUpdate(a,n){var t;(t=this._socket)==null||t.emit("canvas:notify_node_update",a,n)}emitNodeUpdateEnd(a,n){var t;(t=this._socket)==null||t.emit("canvas:notify_node_update_end",a,n)}emitFullLayoutPush(a,n){var t;(t=this._socket)==null||t.emit("canvas:seed_layout",a,n)}requestLayout(a){var n;(n=this._socket)==null||n.emit("canvas:send_layout_snapshot",a)}addLayoutListener(a,n){return this._addListener(this._layoutCallbacks,a,n)}}function Xi(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var a=Math.random()*16|0,n=e==="x"?a:a&3|8;return n.toString(16)})}class fge{constructor(){this.tokenUnsubscribe=null,this._connectionPromise=null,this._connectionResolver=null,this._roomToListeners={},this._notificationListeners={},this._directiveCallbacks={},this._statusBannerListeners={},this._collaboratorCallbacks={},this._canvasSocketMethods=new hge,this._oauthResultCallbacks={},this._roomMetadata={},this.historicalSocketIds=[],this.initializeSocket(),this.setupTokenListener()}waitForConnection(){var a;return(a=this.socket)!=null&&a.connected?Promise.resolve():(this._connectionPromise||(this._connectionPromise=new Promise(n=>{this._connectionResolver=n})),this._connectionPromise)}setupTokenListener(){this.tokenUnsubscribe=ti.addListener(a=>{a==="token_changed"&&this.reconnectWithAuth()})}getMountPath(){throw new Error("Not implemented")}getSocketQuery(){const a=ti.getToken();return a?{token:a}:{}}initializeSocket(){const a={path:this.getMountPath(),transports:["websocket"]};a.query=this.getSocketQuery(),this.socket=wl(Lee(),a),this.socket.on("connect",()=>{this.historicalSocketIds=Wl.uniq(this.historicalSocketIds.concat([this.socket.id])),this.reconnectAllRooms(),this._connectionResolver&&(this._connectionResolver(),this._connectionResolver=null,this._connectionPromise=null)}),this.socket.on("disconnect",()=>{}),this.socket.on("update_model",n=>this.onUpdateModel(n)),this.socket.on("agent_done",n=>this.onAgentDone(n)),this.socket.on("new_notification",n=>this.onNewNotification(n)),this.socket.on("github_changes",n=>this.onGitHubChanges(n)),this.socket.on("mobile_build_update",n=>{this.onMobileBuildUpdate(n)}),this.socket.on("directive",n=>this.onDirective(n)),this.socket.on("status_banner_update",n=>this.onStatusBannerUpdate(n)),this.socket.on("task_update",n=>{this.onTaskUpdate(n)}),this.socket.on("image_ready",n=>{this.onImageReady(n)}),this.socket.on("collaborators:list",n=>{const{room:t,data:i,total_active_users:r}=n;t&&this._collaboratorCallbacks[t]&&Object.values(this._collaboratorCallbacks[t]).forEach(o=>{var s;return(s=o.onList)==null?void 0:s.call(o,i,r)})}),this._canvasSocketMethods.init(this.socket),this.socket.on("oauth_connection_result",n=>{this.onOAuthConnectionResult(n)}),this.socket.on("error",n=>{n.message==="Authentication required to join rooms"||n.message==="Access denied to this room"||n.message}),this.socket.on("*",n=>{})}reconnectWithAuth(){this.socket&&this.socket.disconnect(),this.initializeSocket()}getSocketId(){return this.socket.id}reconnectAllRooms(){Object.keys(this._roomToListeners).forEach(a=>{this.joinRoom(a,this._roomMetadata[a]),Object.values(this._roomToListeners[a]).forEach(({reconnectCallback:n})=>{n&&n()})}),Object.keys(this._notificationListeners).forEach(a=>{this.joinRoom(a),Object.values(this._notificationListeners[a]).forEach(({reconnectCallback:n})=>{n&&n()})}),Object.values(this._collaboratorCallbacks).forEach(a=>{Object.values(a).forEach(n=>{var t;return(t=n.onReconnect)==null?void 0:t.call(n)})}),this._canvasSocketMethods.reclaimActive(),this._canvasSocketMethods.notifyReconnect()}hasListeners(a){return Object.keys(this._roomToListeners[a]||{}).length>0}joinRoom(a,n){n?this.socket.emit("join",a,n):this.socket.emit("join",a)}leaveRoom(a){this.socket.emit("leave",a)}addListener(a,n,t){const i=typeof t=="function"?{reconnectCallback:t}:t||{};this.hasListeners(a)||(i.roomMetadata&&(this._roomMetadata[a]=i.roomMetadata),this.joinRoom(a,i.roomMetadata),this._roomToListeners[a]={});const r=Xi();this._roomToListeners[a][r]={callback:n,reconnectCallback:i.reconnectCallback,onGitHubChanges:i.onGitHubChanges,onTaskUpdate:i.onTaskUpdate,onImageReady:i.onImageReady,onMobileBuildUpdate:i.onMobileBuildUpdate,onAgentDone:i.onAgentDone};const o=this;return()=>{o.removeListener(r)}}getListeners(a){return this._roomToListeners[a]}removeListener(a){Object.keys(this._roomToListeners).forEach(n=>{this._roomToListeners[n][a]&&(delete this._roomToListeners[n][a],Object.keys(this._roomToListeners[n]).length===0&&(this.leaveRoom(n),delete this._roomToListeners[n],delete this._roomMetadata[n]))})}hasNotificationListeners(a){return Object.keys(this._notificationListeners[a]||{}).length>0}addNotificationListener(a,n,t){this.hasNotificationListeners(a)||(this.joinRoom(a),this._notificationListeners[a]={});const i=Xi();this._notificationListeners[a][i]={callback:n,reconnectCallback:t};const r=this;return()=>{r.removeNotificationListener(i)}}removeNotificationListener(a){Object.keys(this._notificationListeners).forEach(n=>{this._notificationListeners[n][a]&&(delete this._notificationListeners[n][a],Object.keys(this._notificationListeners[n]).length===0&&(this.leaveRoom(n),delete this._notificationListeners[n]))})}onUpdateModel(a){const n=a.room,t=JSON.parse(a.data);this._roomToListeners[n]&&Object.values(this._roomToListeners[n]).forEach(({callback:i})=>{i(t)})}onAgentDone(a){const n=a.room;this._roomToListeners[n]&&Object.values(this._roomToListeners[n]).forEach(({onAgentDone:t})=>{t&&t(a)})}onTaskUpdate(a){try{const n=a.room,t=JSON.parse(a.data);this._roomToListeners[n]&&Object.values(this._roomToListeners[n]).forEach(({onTaskUpdate:i})=>{if(i)try{i(t)}catch{}})}catch{}}onImageReady(a){try{const n=a.room,t=JSON.parse(a.data);this._roomToListeners[n]&&Object.values(this._roomToListeners[n]).forEach(({onImageReady:i})=>{if(i)try{i(t)}catch{}})}catch{}}onNewNotification(a){const n=a.room,t=JSON.parse(a.data);this._notificationListeners[n]&&Object.values(this._notificationListeners[n]).forEach(({callback:i})=>{i(t)})}onGitHubChanges(a){const n=a.room,t=a.data;this._roomToListeners[n]&&Object.values(this._roomToListeners[n]).forEach(({onGitHubChanges:i})=>{i&&i(t)})}onMobileBuildUpdate(a){const n=a.room,t=a.data;this._roomToListeners[n]&&Object.values(this._roomToListeners[n]).forEach(({onMobileBuildUpdate:i})=>{i&&i(t)})}onDirective(a){var r;const{room:n,type:t}=a,i=(r=this._directiveCallbacks[n])==null?void 0:r[t];i&&i()}setDirectiveCallback(a,n,t){this._directiveCallbacks[a]||(this._directiveCallbacks[a]={}),this._directiveCallbacks[a][n]=t}removeDirectiveCallback(a,n){this._directiveCallbacks[a]&&(delete this._directiveCallbacks[a][n],Object.keys(this._directiveCallbacks[a]).length===0&&delete this._directiveCallbacks[a])}removeAllDirectiveCallbacks(a){delete this._directiveCallbacks[a]}onStatusBannerUpdate(a){Object.values(this._statusBannerListeners).forEach(n=>{try{n(a)}catch{}})}addStatusBannerListener(a){const n=Xi();return this._statusBannerListeners[n]=a,()=>{delete this._statusBannerListeners[n]}}addCollaboratorListener(a,n){this._collaboratorCallbacks[a]||(this._collaboratorCallbacks[a]={});const t=Xi();return this._collaboratorCallbacks[a][t]=n,()=>{this._collaboratorCallbacks[a]&&(delete this._collaboratorCallbacks[a][t],Object.keys(this._collaboratorCallbacks[a]).length===0&&delete this._collaboratorCallbacks[a])}}requestCollaboratorsList(a){this.socket.emit("collaborators:request_list",a)}sendCollaboratorHeartbeat(a){this.socket.emit("collaborators:heartbeat",a)}sendCollaboratorAway(a){this.socket.emit("collaborators:away",a)}sendCollaboratorBack(a){this.socket.emit("collaborators:back",a)}get canvas(){return this._canvasSocketMethods}onOAuthConnectionResult(a){const n=(a==null?void 0:a.data)||a;Object.values(this._oauthResultCallbacks).forEach(t=>{try{const i=t(n);i&&typeof i.catch=="function"&&i.catch(r=>{})}catch{}})}addOAuthResultListener(a,n){const t=Xi();return this._oauthResultCallbacks[t]=a,()=>{delete this._oauthResultCallbacks[t]}}cleanup(){this.tokenUnsubscribe&&(this.tokenUnsubscribe(),this.tokenUnsubscribe=null),this.socket&&this.socket.disconnect()}}class vge extends fge{getMountPath(){return"/ws/socket.io/"}}const Em=new vge,bge=(e,a)=>{try{const n=new URL(a??"",window.location.origin);return new URL(e,n).origin===n.origin}catch{return!1}};let QC=[];function yge(e){QC.push(e)}let XC=()=>null;function Ihe(e){XC=e}let eD=()=>null;function Rhe(e){eD=e}function kge(e,a={},n=!1,t=!0,i=!0){const r=uy.create();let o;return e.startsWith("/")?o=Vc()+e:o=e,r.defaults.baseURL=o,t&&(r.defaults.headers.common["Content-Type"]="application/json",r.defaults.headers.common.Accept="application/json"),Object.keys(a).forEach(s=>{r.defaults.headers.common[s]=a[s]}),r.interceptors.request.use(s=>{var u,g,b;s.headers=Wl.merge(Wl.cloneDeep(Zae()),s.headers),bge(s.url,s.baseURL)||(bk("cross_origin_request_detected",{url:s.url,baseURL:s.baseURL}),delete s.headers.Authorization,delete s.headers.SSO_AUTHORIZATION,(u=s.headers.common)==null||delete u.Authorization,(g=s.headers.common)==null||delete g.SSO_AUTHORIZATION),s.headers["X-Socket-Id"]=Em.getSocketId(),s.headers["X-Origin-URL"]=window.location.href;const l=((b=window.location.pathname.match(/^\/workspace\/([^/]+)/))==null?void 0:b[1])||XC();l&&(s.headers["X-Active-Workspace-Id"]=l);const d=eD();d&&(s.headers["X-Active-App-Id"]=d);const p=s.headers["X-Request-ID"]||Kae();if(s.requestId=p,s.headers["X-Request-ID"]=p,n)try{window.parent.postMessage({type:"api-request-start",requestId:p,data:{url:e+s.url,method:s.method,body:s.data instanceof FormData?"[FormData object]":s.data}},"*")}catch{}return s},s=>Promise.reject(s)),r.interceptors.response.use(s=>{if(n)try{window.parent.postMessage({type:"api-request-end",requestId:s.config.requestId,data:{statusCode:s.status,response:s.data}},"*")}catch{}return t?s.data:s},async s=>{var d,p,u,g,b,v,A,f,S,C,T;if(s.requestId=((p=(d=s.response)==null?void 0:d.data)==null?void 0:p.request_id)||((u=s.config)==null?void 0:u.requestId),(g=s.config)!=null&&g.requestId&&window.parent.postMessage({type:"api-request-end",requestId:s.config.requestId,data:{statusCode:((b=s.response)==null?void 0:b.status)||0,response:((v=s.response)==null?void 0:v.data)||{error:s.message}}},"*"),((A=s.response)==null?void 0:A.status)===401&&!((f=s.config)!=null&&f._retry)&&(ti.isJwtRefreshEnabled()||((S=s.config)==null?void 0:S.url)==="/me")){s.config._retry=!0;try{return await ti.refreshAccessToken(),s.config.headers&&delete s.config.headers.Authorization,r(s.config)}catch{}}if(i)for(const I of QC)I(s);return(T=(C=s.response)==null?void 0:C.data)!=null&&T.traceback,Promise.reject(s)}),r}class wge{constructor(){this.axios=this.getClient()}getBaseURL(){return"/"}getClient(){return kge(this.getBaseURL())}}class Age extends wge{parseInstance(a){return a}list(a,n,t,i){let r={};return a&&(r.sort=a),n&&(r.limit=n),t&&(r.skip=t),i&&(r.fields=i),this.axios.get("",{params:r}).then(o=>o.map(this.parseInstance))}filterParams(a,n,t,i,r){let o={q:JSON.stringify(a)};return n&&(o.sort=n),t&&(o.limit=t),i&&(o.skip=i),r&&(o.fields=r),o}filter(a,n,t,i,r){let o=this.filterParams(a,n,t,i,r);return this.axios.get("",{params:o}).then(s=>s.map(this.parseInstance))}get(a){return this.axios.get(`/${a}`).then(this.parseInstance)}subscribe(a,n,t,i={}){const r=this;t(this.parseInstance(n));const o=this.getBaseURL()+"/"+a;return Em.addListener(o,s=>{n={...n,...s},t(this.parseInstance(n),Object.keys(s))},{reconnectCallback:async()=>{const s=await r.get(a);t(this.parseInstance(s),Object.keys(s))},onGitHubChanges:i.onGitHubChanges,onTaskUpdate:i.onTaskUpdate,onImageReady:i.onImageReady,roomMetadata:n!=null&&n.owner_id?{owner_id:n.owner_id}:void 0})}async fetchAndSubscribe(a,n,t={}){let i=await this.get(a);return this.subscribe(a,i,n,t)}schema(){return this.axios.get("/schema")}create(a){return this.axios.post("",a).then(this.parseInstance)}update(a,n){return this.axios.put(`/${a}`,n).then(this.parseInstance).then(t=>{const i=Em.getListeners(this.getBaseURL()+"/"+a)||[];return Object.values(i).forEach(r=>r.callback(t,Object.keys(n))),t})}delete(a){return this.axios.delete(`/${a}`)}deleteMany(a){return this.axios.delete("",{data:a})}}class Sge extends Age{getBaseURL(){return"/auth"}getCurrentUser(){return this.axios.get("/me")}regenerateApiKey(){return this.axios.post("/regenerate_api_key")}regenerateBackofficeApiKey(){return this.axios.post("/regenerate_backoffice_api_key")}updateUser(a,n){return this.axios.post(`/${a}/update-user`,{...n})}listUsers(a){return this.axios.get("/list-users",{params:a})}searchUsers(a,n=100){return this.axios.get("/search-users",{params:{search:a,limit:n}})}async checkDomainSSO(a){try{return(await uy.get(`${Vc()}/workspace/public/sso/check-email-or-domain`,{params:{email_or_domain:a}})).data}catch{return{has_sso:!1}}}login(a,n,t=null){const i={email:a,password:n};return t&&(i.turnstile_token=t),this.axios.post("/login",i)}register(a,n,t=null,i=null,r=null){const o={email:a,password:n};return t&&(o.turnstile_token=t),i&&(o.referral_code=i),r&&(o.marketing_client_id=r),this.axios.post("/register",o)}verifyOtp(a,n){return this.axios.post("/verify-otp",{email:a,otp_code:n})}resendOtp(a){return this.axios.post("/resend-otp",{email:a})}resetPasswordRequest(a,n=null){const t={email:a};return n&&(t.turnstile_token=n),this.axios.post("/reset-password-request",t)}resetPassword(a,n,t=null){const i={reset_token:a,new_password:n};return t&&(i.turnstile_token=t),this.axios.post("/reset-password",i)}changePassword(a,n,t){return this.axios.post("/change-password",{user_id:a,current_password:n,new_password:t})}logout(){return this.axios.post("/logout")}getUserFeatureFlags(a){return this.axios.get(`/${a}/feature-flags`)}}const Fu=new Sge,Cge=()=>{try{Xme("logged_in","true")}catch{}},Dge=()=>{try{ege("logged_in")}catch{}},Tge={APP_AGENT_SKILLS:"app-agent-skills",GITHUB_ALLOW_DISCONNECT:"github-two-ways-integration-allow-disconnect",SUPERBOWL_US_USER_EXPOSURE:"superbowl-us-user-exposure",SUPERBOWL_BANNER_ENABLED:"superbowl-banner-enabled",BUILDER_TASK_MANAGEMENT:"builder-task-management",USER_AGENT_TASK_MANAGEMENT:"user-agent-task-management",EXPERT_CHAT_BANNER:"expert-chat-banner",FIGMA_IMPORT:"figma-import-feature",NEW_INLINE_EDIT:"new-inline-edit",EDITOR_NEW_SPLIT_MODE:"editor-new-split-mode",CANVAS_VIEW:"canvas-view",NEW_INLINE_EDIT_FOR_DYNAMIC_DATA:"new-inline-edit-for-dynamic-data",SHOW_PUBLISH_SECURITY_WARNING:"show-publish-security-warning",RLS_SUGGESTIONS_IN_ENTITY:"rls-suggestions-in-entity",UPGRADE_BUTTON_IN_TOPBAR:"upgrade-button-in-topbar",CUSTOM_LOGIN_FLOW:"custom-login-flow",STUDENT_DISCOUNT:"student-discount",NEW_SITE_THEME_COLOR:"new-site-theme-color",PERSONAL_AGENT_IMESSAGE:"personal-agent-imessage",ENABLE_JWT_REFRESH:"enable-jwt-refresh",ADD_CONNECTORS_TO_HOMEPAGE:"add-connectors-to-homepage",VIRALITY:"virality",ASSET_MANAGER:"asset-manager",AUTOMATION_TRIGGER_CONDITIONS:"automation-trigger-conditions",AGENTS_BILLING:"agents-billing",DYNAMIC_RECOMMENDED_PLAN:"dynamic-recommended-plan",HIDE_PREVIEW:"hide-preview",REAL_FILE_PATHS:"real-file-paths",ATOMIC_APP_CREATION:"atomic-app-creation",BASE_DAY_ENABLED:"base-day-enabled",GIFT_CARD:"gift-card",UOU_CONNECTORS:"uou-connectors",IDEAS_EXPERIMENT:"ideas-experiment",COLLAPSE_OLD_ASSISTANT_MESSAGES:"collapse-old-assistant-messages",URL_CAPTURE_V2:"url-capture-v2",SUPERAGENT_DARK_MODE:"superagent-dark-mode",ENABLE_EDITOR_STATIC_PREVIEW:"enable-editor-static-preview",APP_FOLDERS:"app-folders",POST_PAYMENT_WORKSPACE_INVITE:"post-payment-workspace-invite",SIDEBAR_REFERRAL_CTA:"sidebar-referral-cta",CANCEL_MODAL_CTA_COPY:"cancel-modal-cta-copy",SIDEBAR_APPS_FAVS:"sidebar-apps-favs",AGENT_INTEGRATIONS_TABS:"agent-integrations-tabs",OUT_OF_CREDITS_REFERRAL_CTA:"out-of-credits-referral-cta",NEW_DESKTOP_LAYOUT:"new-desktop-layout",BORDER_TAG_PACKAGE_PICKER_V2:"border-tag-package-picker-v2",SIDEBAR_UPGRADE_PAID_USERS:"sidebar-upgrade-paid-users",OPUS_47_MODEL_PICKER:"opus-47-model-picker",LAUNCHPAD_ENABLED:"launchpad-enabled"},tD=M.createContext(),Ege=e=>{var a;return((a=e.response)==null?void 0:a.status)===401},zhe=({children:e})=>{const[a,n]=M.useState(null),[t,i]=M.useState(!1),[r,o]=M.useState(!0),s=()=>{Dge(),localStorage.removeItem("token"),localStorage.removeItem("base44_access_token"),fl("Authorization"),n(null),i(!1),o(!1)};M.useEffect(()=>{const g=gge(!0);g?(localStorage.setItem("token",g),hl("Authorization",`Bearer ${g}`),p()):o(!1),yge(b=>{Ege(b)&&s()})},[]);const l=g=>{n(b=>({...b,...g}))},d=(g=!0)=>{if(Fu.logout().catch(()=>{}),s(),g){const b=encodeURIComponent(window.location.href);window.location.href="/login?from_url="+b}},p=async()=>{var g,b;try{o(!0);const v=await Fu.getCurrentUser();return n(v),i(!0),o(!1),ti.setJwtRefreshEnabled(((g=v==null?void 0:v.feature_flags)==null?void 0:g.includes(Tge.ENABLE_JWT_REFRESH))??!1),Cge(),v}catch(v){o(!1);const A=(b=v.response)==null?void 0:b.status;(A===401||A===403)&&s()}},u=M.useCallback(async()=>{const g=await Fu.getCurrentUser();g&&n(g)},[]);return J.jsx(tD.Provider,{value:{user:a,isAuthenticated:t,logout:d,isLoadingAuth:r,updateUser:l,reloadUser:u},children:e})},Mhe=()=>M.useContext(tD),Pge=3,_ge=100,xge=5e3;class Ige extends M.Component{constructor(a){super(a),this.retryTimer=null,this.resetTimer=null,this.retryCount=0,this.state={hasError:!1,error:null,retriesExhausted:!1}}static getDerivedStateFromError(a){return{hasError:!0,error:a,retriesExhausted:!1}}componentDidCatch(a,n){if(this.resetTimer&&(clearTimeout(this.resetTimer),this.resetTimer=null),this.retryCount<Pge){this.retryCount++,this.retryTimer=setTimeout(()=>{this.setState({hasError:!1,error:null})},_ge);return}this.setState({retriesExhausted:!0}),vk(a,{source:Wc.REACT,component:this.props.componentName||"ErrorBoundary",context:{errorType:"react_render_error",componentStack:n.componentStack,retryCount:this.retryCount}})}componentDidUpdate(a,n){n.hasError&&!this.state.hasError&&(this.resetTimer=setTimeout(()=>{this.retryCount=0},xge))}componentWillUnmount(){this.retryTimer&&clearTimeout(this.retryTimer),this.resetTimer&&clearTimeout(this.resetTimer)}render(){return this.state.hasError?this.state.retriesExhausted?this.props.fallback?this.props.fallback:J.jsx("div",{className:"min-h-screen"}):null:this.props.children}}class Rge extends M.Component{constructor(){super(...arguments),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a,n){}render(){return this.state.hasError?J.jsx("div",{className:"min-h-screen bg-white"}):this.props.children}}const zge="chunk-reload:",Mge=3e4;function oy(e){return e instanceof Error?e.name==="ChunkLoadError"||e.message.includes("Loading chunk")||e.message.includes("Loading CSS chunk")||e.message.includes("Failed to fetch dynamically imported module"):!1}function Nge(e){const a=zge+e,n=Number(sessionStorage.getItem(a)||0);if(Date.now()-n>Mge)return sessionStorage.setItem(a,String(Date.now())),window.location.reload(),new Promise(()=>{});throw new Error(`Chunk "${e}" failed to load after reload`)}const Ih=(e,a)=>M.lazy(()=>e().catch(n=>new Promise(t=>setTimeout(t,500)).then(()=>e()).catch(t=>{if(oy(t)||oy(n))return Nge(a);throw t}))),Fge=Ih(()=>Pc(()=>import("./UserAppMain-C6qQslSa.js").then(e=>e.U),__vite__mapDeps([3,4,5,6,7,8,9,10,11,1,2,12,13,14,15])),"user-app-main"),Lge=Ih(()=>Pc(()=>import("./WebApp-VzhvG0oC.js").then(e=>e.W),__vite__mapDeps([16,1,2,4,5,6,7,8,9,17,18,19,20,21])),"web-app"),jge=Ih(()=>Pc(()=>import("./NativeMobileApp-D4mAmUkY.js"),__vite__mapDeps([22,4,5,6,7,8,9,18,19,1,2,20,23])),"native-mobile-app"),Oge=()=>{M.useEffect(()=>{var n;if(Gf()){document.title="Base44 Backoffice";const t=document.querySelector('link[rel="icon"]');t&&(t.href="/favicon-backoffice.png");const i=document.querySelector('link[rel="apple-touch-icon"]');i&&(i.href="/favicon-backoffice.png"),(n=document.querySelector('meta[name="apple-mobile-web-app-title"]'))==null||n.setAttribute("content","Base44 Backoffice")}},[]);const e=window.location.host;if(!Mee(e)&&!Gf())return J.jsx(Rge,{children:J.jsx(M.Suspense,{fallback:null,children:J.jsx(Fge,{})})});const a=wg()?J.jsx(jge,{}):J.jsx(Lge,{});return J.jsx(Ige,{componentName:"App",children:J.jsx(Fae,{children:J.jsxs("div",{className:"font-sans",children:[J.jsx("div",{children:J.jsx(Zk,{})}),J.jsx("div",{children:J.jsx(jae,{})}),J.jsx("div",{children:J.jsx(Fk,{})}),J.jsx(Qk,{children:J.jsx(M.Suspense,{fallback:null,children:a})})]})})})};if(typeof Node<"u"){const e=Node.prototype.insertBefore;Node.prototype.insertBefore=function(n,t){return t&&t.parentNode!==this?e.call(this,n,null):e.call(this,n,t)};const a=Node.prototype.removeChild;Node.prototype.removeChild=function(n){return n.parentNode!==this?n:a.call(this,n)}}const Bge=my.createRoot(document.getElementById("root"));Bge.render(J.jsx(Oge,{}));export{Gf as $,Fu as A,wge as B,K as C,Vae as D,Dt as E,Tge as F,jk as G,kae as H,Xge as I,Ih as J,zhe as K,bhe as L,fhe as M,yhe as N,vhe as O,zt as P,khe as Q,mk as R,Oae as S,Qk as T,Bae as U,kg as V,Em as W,wg as X,Jge as Y,Zm as Z,Kae as _,Dhe as a,She as a0,Wl as a1,Mee as a2,Qge as a3,Ihe as a4,ghe as a5,gge as a6,ti as a7,xhe as a8,Mr as a9,Jm as aA,fk as aB,aw as aC,Qme as aD,bk as aE,ehe as aF,the as aG,Rhe as aH,Qm as aI,Gee as aJ,vk as aK,Wc as aL,Wee as aM,Wme as aN,Gl as aO,ov as aP,zee as aQ,ew as aR,Ige as aS,Kk as aT,Zk as aU,ahe as aV,Iee as aW,Jo as aa,Nae as ab,Jk as ac,wl as ad,hhe as ae,phe as af,she as ag,uhe as ah,dhe as ai,whe as aj,Wge as ak,che as al,lhe as am,mhe as an,Yge as ao,Kge as ap,ohe as aq,Fk as ar,Gge as as,Hge as at,fge as au,Yee as av,ihe as aw,yge as ax,$ee as ay,rhe as az,kge as b,$a as c,Fee as d,Age as e,Zge as f,kd as g,dge as h,Che as i,sge as j,_he as k,nhe as l,Ct as m,Phe as n,HC as o,Vc as p,pa as q,Qd as r,The as s,_a as t,Mhe as u,Ehe as v,ni as w,mg as x,Ok as y,Mte as z};