diff --git a/app.js b/app.js index d52f546..24bf690 100644 --- a/app.js +++ b/app.js @@ -82,6 +82,7 @@ import { highlightCode, renderMarkdownAudit, } from "./src/auditRenderer.js"; +import { initComposer } from "./src/composerAdapter.js"; // --- CONFIGURATION --- const IS_DEV = import.meta.env.DEV @@ -147,6 +148,11 @@ function createSubscriptionState(overrides = {}) { let subscriptionState = createSubscriptionState({ isResolved: true }) +// Settles once startup auth + subscription fetches finish. The composer binds +// before they complete, so a submission that lands early waits on this rather +// than checking entitlements against free-tier defaults. +let sessionReadiness = Promise.resolve() + // --- PIPELINE --- const PIPELINE_ENDPOINT = `${BUILDSHIP_BASE_URL}/service/runpipeline` @@ -225,6 +231,19 @@ const PIPELINE_IMAGE_ENDPOINT = // what actually gets sent to the pipeline. let promptImages = [] // Array of { dataUrl, name, url } +// In-flight attachment uploads, one entry per file: { slot, controller, job }. +// A submission that lands mid-upload waits on these before snapshotting +// promptImages, and the composer gates Send/Enter while any are pending. +// Ordering and cap claims live on the reserved slots in promptImages itself +// (url === null while a slot is pending); removing a slot aborts its entry. +const pendingImageUploads = [] + +// An unresponsive upload endpoint must not gate the composer forever. +const PROMPT_IMAGE_UPLOAD_TIMEOUT_MS = 30000 + +// Handle returned by initComposer; lets attachment state gate the Send button. +let composerControls = null + function readAsDataUrl(file) { return new Promise((resolve) => { const reader = new FileReader() @@ -236,12 +255,13 @@ function readAsDataUrl(file) { // Uploads one image file to the BuildShip image endpoint. The endpoint is // called separately from the pipeline so we pass real URLs, not base64. -async function uploadPromptImage(file) { +async function uploadPromptImage(file, signal) { const formData = new FormData() formData.append("file", file) const res = await fetch(PIPELINE_IMAGE_ENDPOINT, { method: "POST", body: formData, + signal, }) return res.json() } @@ -282,9 +302,78 @@ function uploadedFileUrl(uploaded) { return "" } +// Uploads one selected file into its reserved promptImages slot. The slot +// fixes the file's position and its claim on the cap at selection time; on +// failure the slot is removed, on user removal the commit is skipped. +// Resolves "added", "failed" (no usable upload URL, including a timeout), +// or "dropped" (the slot was removed while the upload was in flight). +async function addPromptImage(file, slot, signal) { + const dataUrl = await readAsDataUrl(file) + if (dataUrl && promptImages.includes(slot)) { + // Fast local preview while the upload is still in flight. + slot.dataUrl = dataUrl + renderPromptImages() + } + let url = "" + if (dataUrl) { + try { + url = uploadedFileUrl(await uploadPromptImage(file, signal)) + } catch (e) { + url = "" + } + } + // The slot may have been removed while the upload was in flight (remove + // button, or a non-vision model switch clearing attachments) — commit + // nothing then. discardImageUpload has already released the pending gate. + if (!promptImages.includes(slot)) return "dropped" + // A file that never produced an upload URL is reported by the caller and + // its slot removed — keeping it would render a thumbnail the pipeline + // silently filters out of the payload. + if (!dataUrl || !url) { + promptImages.splice(promptImages.indexOf(slot), 1) + renderPromptImages() + return "failed" + } + slot.url = url + renderPromptImages() + return "added" +} + +function releaseImageUpload(entry) { + const i = pendingImageUploads.indexOf(entry) + if (i >= 0) pendingImageUploads.splice(i, 1) + updateAttachmentPending() +} + +// Drop a pending upload: abort its request, free the send gate immediately, +// and pull the slot if it is still attached. A settled upload is already out +// of pendingImageUploads and can't reach this path. +function discardImageUpload(entry) { + entry.controller.abort() + releaseImageUpload(entry) + const i = promptImages.indexOf(entry.slot) + if (i >= 0) { + promptImages.splice(i, 1) + renderPromptImages() + } +} + +function updateAttachmentPending() { + composerControls?.setAttachmentsPending(pendingImageUploads.length > 0) +} + async function handlePromptImageSelect(event) { const files = Array.from(event.target.files || []) if (!files.length) return + // Clear immediately so picking the same files again fires a change event. + event.target.value = "" + + // A run already in flight has snapshotted its attachments; refuse new + // selections so an upload can't appear to belong to a run that omitted it. + if (pipelineState.isRunning) { + showToast("Wait for the current generation to finish before attaching images.", "info") + return + } // Drop oversized files up front rather than uploading/reading them. const oversized = files.filter((f) => f.size > MAX_PROMPT_IMAGE_BYTES) @@ -295,46 +384,54 @@ async function handlePromptImageSelect(event) { ) } const validFiles = files.filter((f) => f.size <= MAX_PROMPT_IMAGE_BYTES) - if (!validFiles.length) { - event.target.value = "" - return - } + if (!validFiles.length) return + // Reserved slots already count toward the cap, so a second selection can't + // claim slots the first one is still filling. const remaining = MAX_PROMPT_IMAGES - promptImages.length const toAdd = validFiles.slice(0, remaining) - - const jobs = toAdd.map(async (file) => { - const dataUrl = await readAsDataUrl(file) - if (!dataUrl) return null - let url = "" - try { - url = uploadedFileUrl(await uploadPromptImage(file)) - } catch (e) { - url = "" - } - return { dataUrl, name: file.name, url } - }) - - const added = (await Promise.all(jobs)).filter(Boolean) - event.target.value = "" - // A non-vision model may have been selected while uploading; don't restore - // images that the model-change handler cleared. - if ( - added.length && - !modelSupportsImages( - document.getElementById("code-generator-model")?.value, - ) - ) { - return - } - promptImages.push(...added) if (validFiles.length > remaining) { showToast(`You can attach up to ${MAX_PROMPT_IMAGES} images.`, "info") } + if (!toAdd.length) return + + const jobs = toAdd.map((file) => { + // Reserve the ordered slot synchronously: thumbnails and the payload keep + // selection order even when uploads finish out of order. + const slot = { dataUrl: null, name: file.name, url: null } + promptImages.push(slot) + const entry = { slot, controller: new AbortController() } + const timeoutId = setTimeout( + () => entry.controller.abort(), + PROMPT_IMAGE_UPLOAD_TIMEOUT_MS, + ) + entry.job = addPromptImage(file, slot, entry.controller.signal) + pendingImageUploads.push(entry) + entry.job.finally(() => { + clearTimeout(timeoutId) + releaseImageUpload(entry) + }) + return entry.job + }) renderPromptImages() + updateAttachmentPending() + + const results = await Promise.all(jobs) + const failed = results.filter((r) => r === "failed").length + if (failed) { + showToast(`${failed} image(s) could not be uploaded and were not attached.`, "error") + } } function removePromptImage(index) { + const slot = promptImages[index] + const entry = pendingImageUploads.find((e) => e.slot === slot) + // Removing a pending thumbnail aborts its upload and frees the send gate + // right away instead of waiting on the abandoned request. + if (entry) { + discardImageUpload(entry) + return + } promptImages.splice(index, 1) renderPromptImages() } @@ -347,9 +444,11 @@ function renderPromptImages() { container.innerHTML = "" promptImages.forEach((img, i) => { const el = document.createElement("div") - el.className = "prompt-img-thumb" + // A slot whose upload is still in flight (url === null) renders dimmed + // with a spinner; it can already carry a local dataUrl preview. + el.className = "prompt-img-thumb" + (img.url ? "" : " is-pending") el.innerHTML = - `Prompt image` + + (img.dataUrl ? `Prompt image` : "") + `` container.appendChild(el) }) @@ -368,6 +467,8 @@ function updatePromptImageAvailability() { section.classList.toggle("hidden", !supports) // Non-vision models have no way to consume images: drop any already attached. if (!supports && promptImages.length) { + // Abort uploads still in flight so they release the send gate now. + pendingImageUploads.slice().forEach(discardImageUpload) promptImages = [] renderPromptImages() } @@ -4286,6 +4387,12 @@ async function runThinkingPipeline() { const userInput = document.getElementById("pipeline-input").value; const selectedModel = document.getElementById("code-generator-model").value; + // Freeze the attachment list at submission time: a thumbnail removal or a + // non-vision model switch during the preflight awaits below must not change + // the images this run was started with. Still-pending slots live in the + // slice too — their jobs commit into these same objects before the payload + // is built, so the wait-for-uploads path still works. + const submittedImages = promptImages.slice(); if (!userInput.trim()) { showToast("Please describe your FlutterFlow widget first.", "warning"); @@ -4299,6 +4406,19 @@ async function runThinkingPipeline() { const runId = startPipelineRun(); try { + // A submission can beat startup auth/subscription reconciliation; wait for + // it so entitlement checks see the real session instead of free defaults. + await sessionReadiness; + if (!isCurrentPipelineRun(runId)) return; + + // Images still uploading must join this run: wait for every accepted file + // to produce a URL (or fail out). Their slots sit in the frozen + // submittedImages slice, so commits land there without needing promptImages. + if (pendingImageUploads.length) { + await Promise.allSettled(pendingImageUploads.map((entry) => entry.job)); + } + if (!isCurrentPipelineRun(runId)) return; + if (!(await canRunPipeline())) return; if (!isCurrentPipelineRun(runId)) return; @@ -4316,7 +4436,7 @@ async function runThinkingPipeline() { // Reset state resetPipelineResults(); pipelineState.submittedPrompt = userInput; - pipelineState.submittedImages = promptImages.slice(); + pipelineState.submittedImages = submittedImages.filter((img) => img.url); setRunPipelineButtonBusy(true); @@ -4342,9 +4462,9 @@ async function runThinkingPipeline() { // Uploaded image URLs are sent to both the architect and the generator so // the vision-carrying model sees them when producing the widget. - const imagePayload = promptImages - .filter((img) => img.url) - .map((img) => ({ url: img.url })); + const imagePayload = pipelineState.submittedImages.map((img) => ({ + url: img.url, + })); // A stage result commits to shared pipeline state only after its run is // revalidated: a response that lands after the user started a newer run @@ -6081,9 +6201,25 @@ document.addEventListener("DOMContentLoaded", async () => { // cleanup-safe on view transition; completion never depends on it. window.__pipelineLogo = createPipelineLogoLoop(); - await initializeAuth(); - handleCheckoutRedirect(); - await fetchSubscription(); + // Bind the composer before the first awaited startup call so the send + // button's listener exists while auth/subscription requests are still in + // flight; runThinkingPipeline waits on sessionReadiness before checking + // entitlements. + composerControls = initComposer({ onSubmit: runThinkingPipeline }); + + // Startup auth + subscription share one promise: the pipeline awaits it so + // an early submission sees the resolved session instead of free defaults. + // It always resolves — a failed init must not hang a waiting run. + sessionReadiness = (async () => { + try { + await initializeAuth(); + handleCheckoutRedirect(); + await fetchSubscription(); + } catch (err) { + console.warn("Startup auth/subscription initialization failed:", err); + } + })(); + await sessionReadiness; confirmCheckoutAfterReconcile(); updateSubscriptionUI(); updatePricingDisplay(); @@ -6156,7 +6292,6 @@ document.addEventListener("DOMContentLoaded", async () => { } }); - bindHeroChips(); restoreViewFromHash(); }); @@ -7462,7 +7597,12 @@ function editPipelinePrompt() { setGenerationStageVisible(false); const input = document.getElementById("pipeline-input"); if (input) { - if (pipelineState.submittedPrompt) input.value = pipelineState.submittedPrompt; + if (pipelineState.submittedPrompt) { + input.value = pipelineState.submittedPrompt; + // Programmatic restores emit no input event; dispatch one so the + // composer's ghost text, chip selection and send state resync. + input.dispatchEvent(new Event("input", { bubbles: true })); + } input.focus({ preventScroll: true }); input.setSelectionRange(input.value.length, input.value.length); } @@ -7473,6 +7613,8 @@ function retryPipelineRun() { const input = document.getElementById("pipeline-input"); if (input && pipelineState.submittedPrompt) { input.value = pipelineState.submittedPrompt; + // Same resync as the composer-restore path above. + input.dispatchEvent(new Event("input", { bubbles: true })); } promptImages = pipelineState.submittedImages.slice(); renderPromptImages(); @@ -8388,17 +8530,6 @@ window.addEventListener("hashchange", () => { restoreViewFromHash(); }); -function bindHeroChips() { - const chips = document.querySelectorAll("#example-chips .chip"); - const input = document.getElementById("pipeline-input"); - chips.forEach((chip) => { - chip.addEventListener("click", () => { - if (input) input.value = chip.dataset.prompt || ""; - input?.focus(); - }); - }); -} - window.copyResultsCode = copyResultsCode; window.selectArtifact = selectArtifact; window.selectResultsSummary = selectResultsSummary; diff --git a/dist/assets/index-CNM4BL4C.js b/dist/assets/index-CNM4BL4C.js deleted file mode 100644 index ae86c29..0000000 --- a/dist/assets/index-CNM4BL4C.js +++ /dev/null @@ -1,317 +0,0 @@ -(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();var _=typeof window<"u"?window:void 0,Te=typeof globalThis<"u"?globalThis:_,Be=Te?.navigator,C=Te?.document,ue=Te?.location,Na=Te?.fetch,Ro=Te!=null&&Te.XMLHttpRequest&&"withCredentials"in new Te.XMLHttpRequest?Te.XMLHttpRequest:void 0,Vl=Te?.AbortController,Df=Te?.CompressionStream,Ue=Be?.userAgent;function Bu(){return!(!_||_.navigator.onLine===!1)}var ti=typeof globalThis<"u"?globalThis:_;ti&&typeof self>"u"&&(ti.self=ti),ti&&typeof File>"u"&&(ti.File=function(){});var T=_??{},ee={DEBUG:!1,LIB_VERSION:"0.5.0",LIB_NAME:"browser-common"};function Gl(t,e,n,i,r,s,o){try{var a=t[s](o),l=a.value}catch(u){return void n(u)}a.done?e(l):Promise.resolve(l).then(i,r)}function ne(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var s=t.apply(e,n);function o(l){Gl(s,i,r,o,a,"next",l)}function a(l){Gl(s,i,r,o,a,"throw",l)}o(void 0)}))}}function E(){return E=Object.assign?Object.assign.bind():function(t){for(var e=1;arguments.length>e;e++){var n=arguments[e];for(var i in n)({}).hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},E.apply(null,arguments)}function Du(t,e){if(t==null)return{};var n={};for(var i in t)if({}.hasOwnProperty.call(t,i)){if(e.indexOf(i)!==-1)continue;n[i]=t[i]}return n}var Kl=t=>{if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}};function Yl(t){return typeof t=="string"||t}function Jl(t){return typeof t=="string"?t:void 0}var ni,jf=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$referring_domain","utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid","gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],Ft=(function(t){return t.AnonymousId="anonymous_id",t.DistinctId="distinct_id",t.Props="props",t.EnablePersonProcessing="enable_person_processing",t.PersonMode="person_mode",t.FeatureFlagDetails="feature_flag_details",t.FeatureFlags="feature_flags",t.FeatureFlagPayloads="feature_flag_payloads",t.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",t.BootstrapFeatureFlags="bootstrap_feature_flags",t.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",t.OverrideFeatureFlags="override_feature_flags",t.Queue="queue",t.AiQueue="ai_queue",t.LogsQueue="logs_queue",t.OptedOut="opted_out",t.SessionId="session_id",t.SessionStartTimestamp="session_start_timestamp",t.SessionLastTimestamp="session_timestamp",t.PersonProperties="person_properties",t.GroupProperties="group_properties",t.InstalledAppBuild="installed_app_build",t.InstalledAppVersion="installed_app_version",t.SessionReplay="session_replay",t.PushRegistered="push_registered",t.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",t.SurveyLastSeenDate="survey_last_seen_date",t.SurveysSeen="surveys_seen",t.Surveys="surveys",t.RemoteConfig="remote_config",t.FlagsEndpointWasHit="flags_endpoint_was_hit",t.DeviceId="device_id",t})({}),Zl=(function(t){return t.GZipJS="gzip-js",t.Base64="base64",t})({}),Uf=["$snapshot","$pageview","$pageleave","$set","survey dismissed","survey sent","survey shown","$identify","$groupidentify","$create_alias","$$client_ingestion_warning","$web_experiment_applied","$feature_enrollment_update","$feature_flag_called"],Hf=["token"],ju="NativeGzipValidationError",To=t=>t.length>=2&&t[0]===31&&t[1]===139,Xl=(t,e)=>t===Zl.GZipJS||e===Zl.GZipJS||e==="gzip",Ql=t=>!(!t||typeof t!="object")&&("name"in t?String(t.name):"")==="NotReadableError",Ki=t=>{var e=new Error("Native gzip produced invalid output: "+t);throw e.name=ju,e},Wf=(function(){var t=ne((function*(e,n){18>e.size&&Ki("too-short");var i=new Uint8Array(yield e.slice(0,10).arrayBuffer());To(i)&&i[2]===8||Ki("invalid-header");var r=new DataView(yield e.slice(e.size-8).arrayBuffer());r.getUint32(0,!0)!==(o=>{for(var a=(()=>{if(ni)return ni;ni=[];for(var c=0;256>c;c++){for(var d=c,h=0;8>h;h++)d=1&d?3988292384^d>>>1:d>>>1;ni[c]=d>>>0}return ni})(),l=4294967295,u=0;o.length>u;u++)l=a[255&(l^o[u])]^l>>>8;return(4294967295^l)>>>0})(n)&&Ki("invalid-crc");var s=n.length>>>0;r.getUint32(4,!0)!==s&&Ki("invalid-size")}));return function(e,n){return t.apply(this,arguments)}})();function $o(){return $o=ne((function*(t,e,n){e===void 0&&(e=!0);try{var i=new TextEncoder().encode(t),r=new globalThis.CompressionStream("gzip"),s=r.writable.getWriter(),o=s.write(i).then((()=>s.close())).catch((function(){var u=ne((function*(c){try{yield s.abort(c)}catch{}throw c}));return function(c){return u.apply(this,arguments)}})()),a=new Response(r.readable).blob(),l=(yield Promise.all([a,o]))[0];return yield Wf(l,i),l}catch(u){if(n!=null&&n.rethrow)throw u;return e&&console.error("Failed to gzip compress data",u),null}})),$o.apply(this,arguments)}var qf=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],ec=function(t,e){if(e===void 0&&(e=[]),!t)return!1;var n=t.toLowerCase();return qf.concat(e).some((i=>{var r=i.toLowerCase();return n.indexOf(r)!==-1}))};function B(t,e){return t.indexOf(e)!==-1}var us=function(t){return t.trim()},Mo=function(t){return t.replace(/^\$/,"")};function Uu(t){var e,n=[];return(e=JSON.stringify(t,(function(i,r){if(typeof r=="bigint")return r.toString();if(typeof r!="function"&&typeof r!="symbol"){if(r instanceof Error)return{name:r.name,message:r.message,stack:r.stack};if(r&&typeof r=="object"){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.includes(r))return"[Circular]";n.push(r)}return r}})))!==null&&e!==void 0?e:"null"}var Hu=Object.prototype,Wu=Hu.hasOwnProperty,ds=Hu.toString,D=Array.isArray||function(t){return ds.call(t)==="[object Array]"},Ne=t=>typeof t=="function",ae=t=>t===Object(t)&&!D(t),Nt=t=>{if(ae(t)){for(var e in t)if(Wu.call(t,e))return!1;return!0}return!1},x=t=>t===void 0,K=t=>ds.call(t)=="[object String]",Lo=t=>K(t)&&t.trim().length===0,We=t=>t===null,j=t=>x(t)||We(t),Se=t=>ds.call(t)=="[object Number]"&&t==t,At=t=>Se(t)&&t>0,at=t=>ds.call(t)==="[object Boolean]",zf=t=>t instanceof FormData,Vf=t=>B(Uf,t),Gf=t=>B(Hf,t);function qu(t){return t===null||typeof t!="object"}function kr(t,e){return{}.toString.call(t)==="[object "+e+"]"}function Oa(t){return typeof Event<"u"&&zu(t,Event)}function zu(t,e){try{return t instanceof e}catch{return!1}}var Kf=[!0,"true",1,"1","yes"],Xs=t=>B(Kf,t),Yf=[!1,"false",0,"0","no"];function _t(t,e,n,i,r){return e>n&&(i.warn("min cannot be greater than max."),e=n),Se(t)?t>n?(i.warn(" cannot be greater than max: "+n+". Using max value instead."),n):e>t?(i.warn(" cannot be less than min: "+e+". Using min value instead."),e):t:(i.warn(" must be a number. using max or fallback. max: "+n+", fallback: "+r),_t(r||n,e,n,i))}class Jf{constructor(e){this.tt={},this.et=e.et,this.it=_t(e.bucketSize,0,100,e.rt),this.nt=_t(e.refillRate,0,this.it,e.rt),this.st=_t(e.refillInterval,0,864e5,e.rt)}ot(e,n){var i=Math.floor((n-e.lastAccess)/this.st);i>0&&(e.tokens=Math.min(e.tokens+i*this.nt,this.it),e.lastAccess=e.lastAccess+i*this.st)}consumeRateLimit(e){var n,i=Date.now(),r=String(e),s=this.tt[r];return s?this.ot(s,i):this.tt[r]=s={tokens:this.it,lastAccess:i},s.tokens===0||(s.tokens--,s.tokens===0&&((n=this.et)==null||n.call(this,e)),s.tokens===0)}stop(){this.tt={}}}var Ye="Mobile",Ir="iOS",Ot="Android",Un="Tablet",Vu=Ot+" "+Un,Gu="iPad",Ku="Apple",Yu=Ku+" Watch",yi="Safari",Hn="BlackBerry",Ju="Samsung",Zu=Ju+"Browser",Xu=Ju+" Internet",_n="Chrome",Zf=_n+" OS",Qu=_n+" "+Ir,Ba="Internet Explorer",ed=Ba+" "+Ye,Da="Opera",Xf=Da+" Mini",ja="Edge",td="Microsoft "+ja,Bn="Firefox",nd=Bn+" "+Ir,Ai="Nintendo",Pi="PlayStation",Dn="Xbox",id=Ot+" "+Ye,rd=Ye+" "+yi,hi="Windows",No=hi+" Phone",tc="Nokia",Oo="Ouya",sd="Generic",Qf=sd+" "+Ye.toLowerCase(),od=sd+" "+Un.toLowerCase(),Bo="Konqueror",ad="Oculus Browser",Cr="Vivaldi",ld="Yandex",Ar="Whale",Do="DuckDuckGo",cd="Pale Moon",Pr="Waterfox",wi="Brave",ud="Google Search App",pe="(\\d+(\\.\\d+)?)",Qs=new RegExp("Version/"+pe),ep=new RegExp(Dn,"i"),tp=new RegExp(Pi+" \\w+","i"),np=new RegExp(Ai+" \\w+","i"),Ua=new RegExp(Hn+"|PlayBook|BB10","i"),ip={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},dd=function(t,e,n,i){e=e||"";var r=(function(s){return s!=null&&s.brave?wi:null})(n);return r||(i!=null&&i.detectGoogleSearchApp&&B(t,"GSA/")?ud:B(t," OPR/")&&B(t,"Mini")?Xf:B(t," OPR/")?Da:Ua.test(t)?Hn:B(t,"IE"+Ye)||B(t,"WPDesktop")?ed:B(t,"OculusBrowser")?ad:B(t,Zu)?Xu:B(t,ja)||B(t,"Edg/")?td:B(t,Cr+"/")?Cr:B(t,"YaBrowser/")?ld:B(t,Ar+"/")?Ar:B(t,Do+"/")||B(t,"Ddg/")?Do:B(t,"FBIOS")?"Facebook "+Ye:B(t,"UCWEB")||B(t,"UCBrowser")?"UC Browser":B(t,"CriOS")?Qu:B(t,"CrMo")||B(t,_n)?_n:B(t,Ot)&&B(t,yi)?id:B(t,"FxiOS")?nd:B(t.toLowerCase(),Bo.toLowerCase())?Bo:B(t,wi+"/")?wi:((s,o)=>o&&B(o,Ku)||(function(a){return B(a,yi)&&!B(a,_n)&&!B(a,Ot)})(s))(t,e)?B(t,Ye)?rd:yi:B(t,"PaleMoon/")?cd:B(t,Pr+"/")?Pr:B(t,Bn)?Bn:B(t,"MSIE")||B(t,"Trident/")?Ba:B(t,"Gecko")?Bn:"")},rp={[ed]:[new RegExp("rv:"+pe)],[td]:[new RegExp(ja+"?\\/"+pe)],[_n]:[new RegExp("("+_n+"|CrMo)\\/"+pe)],[Qu]:[new RegExp("CriOS\\/"+pe)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+pe)],[yi]:[Qs],[rd]:[Qs],[Da]:[new RegExp("(Opera|OPR)\\/"+pe)],[Bn]:[new RegExp(Bn+"\\/"+pe)],[nd]:[new RegExp("FxiOS\\/"+pe)],[Bo]:[new RegExp("Konqueror[:/]?"+pe,"i")],[Hn]:[new RegExp(Hn+" "+pe),Qs],[id]:[new RegExp("android\\s"+pe,"i")],[Xu]:[new RegExp(Zu+"\\/"+pe)],[ad]:[new RegExp("OculusBrowser\\/"+pe)],[Cr]:[new RegExp(Cr+"\\/"+pe)],[ld]:[new RegExp("YaBrowser\\/"+pe)],[Ar]:[new RegExp(Ar+"\\/"+pe)],[wi]:[new RegExp(wi+"\\/"+pe)],[Do]:[new RegExp("(DuckDuckGo|Ddg)\\/"+pe)],[cd]:[new RegExp("PaleMoon\\/"+pe)],[Pr]:[new RegExp(Pr+"\\/"+pe)],[ud]:[new RegExp("GSA\\/"+pe)],[Ba]:[new RegExp("(rv:|MSIE )"+pe)],Mozilla:[new RegExp("rv:"+pe)]},sp=function(t,e,n,i){var r=dd(t,e,n,i),s=rp[r];if(x(s))return null;for(var o=0;s.length>o;o++){var a=t.match(s[o]);if(a)return parseFloat(a[a.length-2])}return null},nc=[[new RegExp(Dn+"; "+Dn+" (.*?)[);]","i"),t=>[Dn,t&&t[1]||""]],[new RegExp(Ai,"i"),[Ai,""]],[new RegExp(Pi,"i"),[Pi,""]],[Ua,[Hn,""]],[new RegExp(hi,"i"),(t,e)=>{if(/Phone/.test(e)||/WPDesktop/.test(e))return[No,""];if(new RegExp(Ye).test(e)&&!/IEMobile\b/.test(e))return[hi+" "+Ye,""];var n=/Windows NT ([0-9.]+)/i.exec(e);if(n&&n[1]){var i=ip[n[1]]||"";return/arm/i.test(e)&&(i="RT"),[hi,i]}return[hi,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,t=>t&&t[3]?[Ir,[t[3],t[4],t[5]||"0"].join(".")]:[Ir,""]],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,t=>{var e="";return t&&t.length>=3&&(e=x(t[2])?t[3]:t[2]),["watchOS",e]}],[new RegExp("("+Ot+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Ot+")","i"),t=>t&&t[2]?[Ot,[t[2],t[3],t[4]||"0"].join(".")]:[Ot,""]],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,t=>{var e=["Mac OS X",""];return t&&t[1]&&(e[1]=[t[1],t[2],t[3]||"0"].join(".")),e}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Zf,""]],[/Linux|debian/i,["Linux",""]]],ic=function(t){return np.test(t)?Ai:tp.test(t)?Pi:ep.test(t)?Dn:new RegExp(Oo,"i").test(t)?Oo:new RegExp("("+No+"|WPDesktop)","i").test(t)?No:/iPad/.test(t)?Gu:/iPod/.test(t)?"iPod Touch":/iPhone/.test(t)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(t)?Yu:Ua.test(t)?Hn:/(kobo)\s(ereader|touch)/i.test(t)?"Kobo":new RegExp(tc,"i").test(t)?tc:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(t)||/(kf[a-z]+)( bui|\)).+silk\//i.test(t)?"Kindle Fire":/(Android|ZTE)/i.test(t)?new RegExp(Ye).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?Ot:Vu:new RegExp("(pda|"+Ye+")","i").test(t)?Qf:new RegExp(Un,"i").test(t)&&!new RegExp(Un+" pc","i").test(t)?od:""},op=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function rc(t,e){return typeof(n=t)=="string"&&op.test(n)?t:e();var n}function Qt(t){return t&&t.split("#")[0]}function Ha(t,e){var n=setTimeout(t,e);return n?.unref&&n?.unref(),n}function sc(t,e,n){return hd.apply(this,arguments)}function hd(){return(hd=ne((function*(t,e,n){var i;try{return yield Promise.race([t,new Promise(((r,s)=>{i=Ha((()=>{try{n?.(),r()}catch(o){s(o)}}),e)}))])}finally{clearTimeout(i)}}))).apply(this,arguments)}var ap=t=>t instanceof Error,fd={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},lp=fd.info;function pd(t){if(at(t))return{boolValue:t};if(typeof t=="number")return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if(typeof t=="string")return{stringValue:t};if(D(t))return{arrayValue:{values:t.map((e=>pd(e)))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}function Fr(t){var e=[];for(var n in t){var i=t[n];We(i)||x(i)||e.push({key:n,value:pd(i)})}return e}function cp(t,e){var n=fd[t.level||"info"]||lp,i=n.text,r=n.number,s=String(Date.now())+"000000",o={};e.distinctId&&(o.posthogDistinctId=e.distinctId),e.sessionId&&(o.sessionId=e.sessionId),e.windowId&&(o["window.id"]=e.windowId),j(e.sessionStartTimestamp)||(o.sessionStartTimestamp=String(e.sessionStartTimestamp)),j(e.lastActivityTimestamp)||(o.lastActivityTimestamp=String(e.lastActivityTimestamp)),e.currentUrl&&(o["url.full"]=e.currentUrl),e.screenName&&(o["screen.name"]=e.screenName),e.appState&&(o["app.state"]=e.appState),e.activeFeatureFlags&&e.activeFeatureFlags.length>0&&(o.feature_flags=e.activeFeatureFlags);var a=E({},o,t.attributes||{}),l={timeUnixNano:s,observedTimeUnixNano:s,severityNumber:r,severityText:i,body:{stringValue:t.body},attributes:Fr(a)};return t.trace_id&&(l.traceId=t.trace_id),t.span_id&&(l.spanId=t.span_id),x(t.trace_flags)||(l.flags=t.trace_flags),l}function gd(t,e,n){return E({},t.resourceAttributes,{"service.name":t.serviceName||"unknown_service"},t.environment&&{"deployment.environment":t.environment},t.serviceVersion&&{"service.version":t.serviceVersion},{"telemetry.sdk.name":e,"telemetry.sdk.version":n})}function md(t,e,n,i){return{resourceLogs:[{resource:{attributes:Fr(e)},scopeLogs:[{scope:{name:n,version:i},logRecords:t}]}]}}let up=class{constructor(t,e,n,i,r,s,o){var a;s===void 0&&(s=()=>Promise.resolve()),this._instance=t,this.Ne=e,this.rt=n,this.ut=i,this.ht=r,this.dt=s,this.vt=o,this.ct=null,this.ft=0,this.yt=0,this.bt=0,this._t=0,this.wt=!1,this.kt=e.maxBufferSize,this.xt=Math.max((a=e.maxQueueSize)!==null&&a!==void 0?a:e.maxBufferSize,e.maxBufferSize),this.St=e.flushIntervalMs,this.Ct=e.maxBatchRecordsPerPost,this.Mt=e.rateCapWindowMs,this.Tt=e.maxLogsPerInterval}reset(){this.Et(),this.ct=null,this.bt=0,this._t=0,this.wt=!1,this.ft=0,this.yt=0,this.Ct=this.Ne.maxBatchRecordsPerPost}onReconnect(){this.yt=0,this.It()}captureLog(t){if(!this._instance.isDisabled&&!this._instance.optedOut&&t!=null&&t.body){var e=this.Pt(t);if(e!==null)if(e.body){if(this.Rt()){var n={record:cp(e,this.ut())};this.ht((()=>this.At(n)))}}else this.rt.info("Log was rejected in beforeSend function")}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=D(e)?e:[e],i=t;for(var r of n)try{var s=r(i);if(!s)return this.rt.info("Log was rejected in beforeSend function"),null;i=s}catch(o){return this.rt.error("Error in beforeSend function for log:",o),null}return i}Rt(){if(this.Tt===void 0)return!0;var t=Date.now(),e=t-this.bt;return this.Mt>e&&e>=0||(this.bt=t,this._t=0,this.wt=!1),this.Tt>this._t?(this._t++,!0):(this.wt||(this.rt.warn("captureLog dropping logs: exceeded "+this.Tt+" logs per "+this.Mt+"ms"),this.wt=!0),!1)}flush(){var t=this;return ne((function*(){if(!t._instance.isDisabled)return t.ct||(t.ct=t.Ft().finally((()=>{t.ct=null}))),t.ct}))()}Ft(){var t=this;return ne((function*(){var e;t.Et();var n=(e=t._instance.getPersistedProperty(Ft.LogsQueue))!==null&&e!==void 0?e:[];if(n.length!==0)for(var i=n.length,r=0;n.length>0&&i>r;){var s,o;t.ft=0;var a=Math.min(n.length,t.Ct),l=n.slice(0,a),u=md(l.map((d=>d.record)),t.Lt(),(s=t.vt)!==null&&s!==void 0?s:t._instance.getLibraryId(),t._instance.getLibraryVersion()),c=yield t._instance.Ot(u);if(c.kind==="too-large"&&l.length>1)t.Ct=Math.max(1,Math.floor(l.length/2)),t.rt.warn("Received 413 when sending logs batch of size "+l.length+", reducing batch size to "+t.Ct);else if(c.kind==="retry-later"||(c.kind==="too-large"?t.rt.warn("Dropping a single log record after 413 with batch size 1 — the record is larger than the server cap and cannot be split further."):c.kind==="ok"&&t.Ne.maxBatchRecordsPerPost>t.Ct&&(t.Ct=Math.min(t.Ne.maxBatchRecordsPerPost,t.Ct+1)),yield t.Dt(l.length),n=(o=t._instance.getPersistedProperty(Ft.LogsQueue))!==null&&o!==void 0?o:[],r+=l.length,c.kind==="fatal"))throw c.error}}))()}Dt(t){var e=this;return ne((function*(){var n,i=Math.max(0,t-e.ft),r=(n=e._instance.getPersistedProperty(Ft.LogsQueue))!==null&&n!==void 0?n:[];e._instance.setPersistedProperty(Ft.LogsQueue,r.slice(i)),yield e.dt()}))()}Lt(){return gd(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion())}At(t){var e;if(!this._instance.optedOut){var n=(e=this._instance.getPersistedProperty(Ft.LogsQueue))!==null&&e!==void 0?e:[];this.xt>n.length||(n.shift(),this.ft++,this.rt.info("Logs queue is full, dropping oldest record.")),n.push(t),this._instance.setPersistedProperty(Ft.LogsQueue,n),this.kt>n.length?this.$t():this.It()}}$t(t){t===void 0&&(t=this.St),this.Nt||(this.Nt=Ha((()=>{this.Nt=void 0,this.It()}),t))}qt(){var t=Math.min(Math.max(0,this.yt-1),6);return this.St*Math.pow(2,t)}jt(){var t=this._instance.getPersistedProperty(Ft.LogsQueue);return!!t&&t.length>0}shutdown(t){var e=this;return ne((function*(){e.Et();var n=e.flush().catch((()=>{}));t!==void 0?yield sc(n,t):yield n}))()}flushWithTimeout(t){var e=this;return ne((function*(){var n=e.flush();yield sc(n,t,(()=>{n.catch((()=>{}))}))}))()}It(){this.flush().then((()=>{this.yt=0}),(t=>{this.yt++,this.rt.error("PostHog logs flush failed:",t)})).finally((()=>{!this._instance.isDisabled&&this.jt()&&this.$t(this.qt())}))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}};var eo=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function oc(t){return String(t)+"000000"}function ac(t,e,n,i){var r="";return i&&(r=Object.keys(i).sort().map((s=>JSON.stringify(s)+":"+JSON.stringify(i[s]))).join(",")),t+"\0"+e+"\0"+(n??"")+"\0"+r}let dp=class{constructor(t,e,n){this._instance=t,this.Ne=e,this.rt=n,this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Wt=0}count(t,e,n){e===void 0&&(e=1),this.Vt({name:t,type:"count",value:e,unit:n?.unit,attributes:n?.attributes})}gauge(t,e,n){this.Vt({name:t,type:"gauge",value:e,unit:n?.unit,attributes:n?.attributes})}histogram(t,e,n){this.Vt({name:t,type:"histogram",value:e,unit:n?.unit,attributes:n?.attributes})}flush(){var t=this,e=this.ct,n=(function(){var r=ne((function*(){e&&(yield e.catch((()=>{}))),yield t.Zt()}));return function(){return r.apply(this,arguments)}})(),i=n().finally((()=>{this.ct===i&&(this.ct=null)}));return this.ct=i,i}drainWindow(){if(this.Bt.size===0)return null;var t=this.Bt;return this.Bt=new Map,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Gt(t)}reset(){this.Wt++,this.Et(),this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set}Vt(t){if(!this._instance.isDisabled&&!this._instance.optedOut){var e=this.Pt(t);if(e!==null)if(e.name&&typeof e.name=="string")if(typeof e.value=="number"&&Number.isFinite(e.value))if(e.type==="count"&&0>e.value)this.rt.warn("Dropping count '"+e.name+"': counters are monotonic, value must be >= 0");else{var n,i;try{n=e.attributes?E({},e.attributes):void 0,i=ac(e.type,e.name,e.unit,n)}catch(o){return void this.rt.warn("Dropping metric '"+e.name+"': attributes could not be serialized",o)}var r=this.Bt.get(i);if(!r){if(!this.Qt())return;r={name:e.name,type:e.type,unit:e.unit,attributes:n,windowStartMs:Date.now()},this.Bt.set(i,r)}var s=this.Ut.get(e.name);s===void 0?this.Ut.set(e.name,e.type):s===e.type||this.zt.has(e.name)||(this.zt.add(e.name),this.rt.warn("Metric name '"+e.name+"' is already used as a "+s+"; recording it as a "+e.type+" too will blend both series in charts. Use a distinct name.")),this.Kt(r,e.value),this.$t()}else this.rt.warn("Dropping metric '"+e.name+"': value must be a finite number");else this.rt.warn("Dropping metric with empty name")}}Qt(){return this.Ne.maxSeriesPerFlush>this.Bt.size||(this.Ht||(this.Ht=!0,this.rt.warn("Metric series cap reached ("+this.Ne.maxSeriesPerFlush+" per flush window); dropping new series until the next flush. Reduce attribute cardinality.")),!1)}Kt(t,e){var n;switch(t.type){case"count":t.total=((n=t.total)!==null&&n!==void 0?n:0)+e;break;case"gauge":t.last=e;break;case"histogram":t.hist||(t.hist={count:0,sum:0,min:e,max:e,bucketCounts:new Array(eo.length+1).fill(0)});var i=t.hist;i.count+=1,i.sum+=e,i.min=Math.min(i.min,e),i.max=Math.max(i.max,e),i.bucketCounts[(function(r,s){for(var o=0;s.length>o;o++)if(s[o]>=r)return o;return s.length})(e,eo)]+=1}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=D(e)?e:[e],i=t;for(var r of n)try{var s=r(i);if(!s)return this.rt.info("Metric was rejected in beforeSend function"),null;i=s}catch(o){return this.rt.error("Error in beforeSend function for metric:",o),null}return i}$t(){this.Nt||(this.Nt=Ha((()=>{this.Nt=void 0,this.flush().catch((t=>{this.rt.error("Metrics flush failed:",t)}))}),this.Ne.flushIntervalMs))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}Zt(){var t=this;return ne((function*(){if(t.Bt.size!==0){var e=t.Bt;t.Bt=new Map,t.Ht=!1,t.Ut=new Map,t.zt=new Set;var n=t.Wt,i=yield t._instance.Jt(t.Gt(e));if(n===t.Wt)switch(i.kind){case"ok":return;case"retry-later":return t.Yt(e),void t.$t();case"too-large":return void t.rt.warn("Metrics batch exceeded the server size limit and was dropped");case"fatal":return void t.rt.error("Failed to send metrics batch:",i.error)}}}))()}Gt(t){return e=this.Xt(t),n=(function(s,o,a){return E({},s.resourceAttributes,{"service.name":s.serviceName||"unknown_service"},s.environment&&{"deployment.environment":s.environment},s.serviceVersion&&{"service.version":s.serviceVersion},{"telemetry.sdk.name":o,"telemetry.sdk.version":a})})(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion()),i=this._instance.getLibraryId(),r=this._instance.getLibraryVersion(),{resourceMetrics:[{resource:{attributes:Fr(n)},scopeMetrics:[{scope:{name:i,version:r},metrics:e}]}]};var e,n,i,r}Xt(t){var e=oc(Date.now()),n=new Map;for(var i of t.values()){var r,s=ac(i.type,i.name,i.unit,void 0),o=n.get(s);o||(o=E({name:i.name},i.unit&&{unit:i.unit}),i.type==="count"?o.sum={aggregationTemporality:1,isMonotonic:!0,dataPoints:[]}:i.type==="gauge"?o.gauge={dataPoints:[]}:o.histogram={aggregationTemporality:1,dataPoints:[]},n.set(s,o));var a=Fr((r=i.attributes)!==null&&r!==void 0?r:{}),l=oc(i.windowStartMs);if(i.type==="count"){var u,c={attributes:a,startTimeUnixNano:l,timeUnixNano:e,asDouble:(u=i.total)!==null&&u!==void 0?u:0};o.sum.dataPoints.push(c)}else if(i.type==="gauge"){var d,h={attributes:a,timeUnixNano:e,asDouble:(d=i.last)!==null&&d!==void 0?d:0};o.gauge.dataPoints.push(h)}else i.hist&&o.histogram.dataPoints.push({attributes:a,startTimeUnixNano:l,timeUnixNano:e,count:i.hist.count,sum:i.hist.sum,min:i.hist.min,max:i.hist.max,bucketCounts:i.hist.bucketCounts,explicitBounds:eo})}return Array.from(n.values())}Yt(t){var e,n;for(var i of t){var r=i[0],s=i[1],o=this.Bt.get(r);if(o)switch(o.windowStartMs=Math.min(o.windowStartMs,s.windowStartMs),o.type){case"count":o.total=((e=o.total)!==null&&e!==void 0?e:0)+((n=s.total)!==null&&n!==void 0?n:0);break;case"gauge":break;case"histogram":if(s.hist)if(o.hist){o.hist.count+=s.hist.count,o.hist.sum+=s.hist.sum,o.hist.min=Math.min(o.hist.min,s.hist.min),o.hist.max=Math.max(o.hist.max,s.hist.max);for(var a=0;o.hist.bucketCounts.length>a;a++)o.hist.bucketCounts[a]+=s.hist.bucketCounts[a]}else o.hist=s.hist}else this.Qt()&&this.Bt.set(r,s)}}};var Yi,lc,to;function hp(t){var e=globalThis._posthogChunkIds;if(e){var n=Object.keys(e);return to&&n.length===lc||(lc=n.length,to=n.reduce(((i,r)=>{Yi||(Yi={});var s=Yi[r];if(s)i[s[0]]=s[1];else for(var o=t(r),a=o.length-1;a>=0;a--){var l=o[a],u=l?.filename,c=e[r];if(u&&c){i[u]=c,Yi[r]=[u,c];break}}return i}),{})),to}}class fp{constructor(e,n,i){i===void 0&&(i=[]),this.coercers=e,this.stackParser=n,this.modifiers=i}buildFromUnknown(e,n){n===void 0&&(n={});var i=n&&n.mechanism||{handled:!0,type:"generic"},r=this.buildCoercingContext(i,n,0).apply(e),s=this.buildParsingContext(n),o=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(o,i),$exception_level:"error"}}modifyFrames(e){var n=this;return ne((function*(){for(var i of e)i.stacktrace&&i.stacktrace.frames&&D(i.stacktrace.frames)&&(i.stacktrace.frames=yield n.applyModifiers(i.stacktrace.frames));return e}))()}coerceFallback(e){var n;return{type:"Error",value:"Unknown error",stack:(n=e.syntheticException)==null?void 0:n.stack,synthetic:!0}}parseStacktrace(e,n){var i,r;return e.cause!=null&&(i=this.parseStacktrace(e.cause,n)),e.stack!=""&&e.stack!=null&&(r=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?n.skipFirstLines:0),n.chunkIdMap)),E({},e,{cause:i,stack:r})}applyChunkIds(e,n){return e.map((i=>(i.filename&&n&&(i.chunk_id=n[i.filename]),i)))}applyCoercers(e,n){for(var i of this.coercers)if(i.match(e))return i.coerce(e,n);return this.coerceFallback(n)}applyModifiers(e){var n=this;return ne((function*(){var i=e;for(var r of n.modifiers)i=yield r(i);return i}))()}convertToExceptionList(e,n){var i,r,s,o={type:e.type,value:e.value,mechanism:{type:(i=n.type)!==null&&i!==void 0?i:"generic",handled:(r=n.handled)===null||r===void 0||r,synthetic:(s=e.synthetic)!==null&&s!==void 0&&s}};e.stack&&(o.stacktrace={type:"raw",frames:e.stack});var a=[o];return e.cause!=null&&a.push(...this.convertToExceptionList(e.cause,E({},n,{handled:!0}))),a}buildParsingContext(e){var n;return{chunkIdMap:hp(this.stackParser),skipFirstLines:(n=e.skipFirstLines)!==null&&n!==void 0?n:1}}buildCoercingContext(e,n,i){i===void 0&&(i=0);var r=(s,o)=>{if(4>=o){var a=this.buildCoercingContext(e,n,o);return this.applyCoercers(s,a)}};return E({},n,{syntheticException:i==0?n.syntheticException:void 0,mechanism:e,apply:s=>r(s,i),next:s=>r(s,i+1)})}}var Wn="?";function jo(t,e,n,i,r){var s={platform:t,filename:e,function:n===""?Wn:n,in_app:!0};return x(i)||(s.lineno=i),x(r)||(s.colno=r),s}var vd=(t,e)=>{var n=t.indexOf("safari-extension")!==-1,i=t.indexOf("safari-web-extension")!==-1;return n||i?[t.indexOf("@")!==-1?t.split("@")[0]:Wn,n?"safari-extension:"+e:"safari-web-extension:"+e]:[t,e]},pp=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,gp=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,mp=/\((\S*)(?::(\d+))(?::(\d+))\)/,vp=(t,e)=>{var n=pp.exec(t);if(n)return jo(e,n[1],Wn,+n[2],+n[3]);var i=gp.exec(t);if(i){if(i[2]&&i[2].indexOf("eval")===0){var r=mp.exec(i[2]);r&&(i[2]=r[1],i[3]=r[2],i[4]=r[3])}var s=vd(i[1]||Wn,i[2]);return jo(e,s[1],s[0],i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}},_p=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,yp=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,wp=(t,e)=>{var n=_p.exec(t);if(n){if(n[3]&&n[3].indexOf(" > eval")>-1){var i=yp.exec(n[3]);i&&(n[1]=n[1]||"eval",n[3]=i[1],n[4]=i[2],n[5]="")}var r=n[3],s=n[1]||Wn,o=vd(s,r);return jo(e,r=o[1],s=o[0],n[4]?+n[4]:void 0,n[5]?+n[5]:void 0)}},cc=/\(error: (.*)\)/;class bp{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,n){var i=K(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:i?e.stack:void 0,cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){var n=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?n+": "+e.message:n}isDOMException(e){return kr(e,"DOMException")}isDOMError(e){return kr(e,"DOMError")}}class Ep{match(e){return(function(n){switch({}.toString.call(n)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object DOMError]":case"[object WebAssembly.Exception]":return!0;default:return zu(n,Error)}})(e)}coerce(e,n){return{type:this.getType(e),value:this.getMessage(e,n),stack:this.getStack(e),cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,n){var i=e.message;return String(i.error&&typeof i.error.message=="string"?i.error.message:i)}getStack(e){return e.stacktrace||e.stack||void 0}}class Sp{constructor(){}match(e){return!!kr(e,"ErrorEvent")&&(e.error!=null||this.fe(e))}coerce(e,n){var i;if(e.error!=null)return n.apply(e.error);var r=n.apply(e.message);return E({},r,{stack:(i=this.pe(e))!==null&&i!==void 0?i:r.stack,synthetic:!0})}fe(e){return K(e.message)&&e.message.length>0}pe(e){var n=e;if(K(n.filename)&&n.filename.length>0){var i,r,s=(i=n.lineno)!==null&&i!==void 0?i:0,o=(r=n.colno)!==null&&r!==void 0?r:0;return`Error - at `+n.filename+":"+s+":"+o}}}var xp=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class kp{match(e){return typeof e=="string"}coerce(e,n){var i,r=this.getInfos(e),s=r[0],o=r[1];return{type:s??"Error",value:o??e,stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}getInfos(e){var n="Error",i=e,r=e.match(xp);return r&&(n=r[1],i=r[2]),[n,i]}}var Ip=["fatal","error","warning","log","info","debug"];function _d(t,e){e===void 0&&(e=40);var n=Object.keys(t);if(n.sort(),!n.length)return"[object has no keys]";for(var i=n.length;i>0;i--){var r=n.slice(0,i).join(", ");if(e>=r.length)return i===n.length?r:r.length>e?r.slice(0,e)+"...":r}return""}class Cp{match(e){return typeof e=="object"&&e!==null}coerce(e,n){var i,r,s=this.getErrorPropertyFromObject(e);return s?n.apply(s):{type:this.getType(e),value:this.getValue(e),stack:(i=this.getStack(e))!==null&&i!==void 0?i:(r=n.syntheticException)==null?void 0:r.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return Oa(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){var n="'"+e.name+"' captured as exception";return"message"in e&&typeof e.message=="string"&&(n+=" with message: '"+e.message+"'"),n}if("message"in e&&typeof e.message=="string")return e.message;var i=this.getObjectClassName(e);return(i&&i!=="Object"?"'"+i+"'":"Object")+" captured as exception with keys: "+_d(e)}isSeverityLevel(e){return K(e)&&!Lo(e)&&Ip.indexOf(e)>=0}getStack(e){try{return K(e.stacktrace)&&e.stacktrace.length>0?e.stacktrace:K(e.stack)&&e.stack.length>0?e.stack:void 0}catch{return}}getErrorPropertyFromObject(e){for(var n in e)if({}.hasOwnProperty.call(e,n)){var i=e[n];if(ap(i))return i}}getObjectClassName(e){try{var n=Object.getPrototypeOf(e);return n?n.constructor.name:void 0}catch{return}}}class Ap{match(e){return Oa(e)}coerce(e,n){var i,r=e.constructor.name;return{type:r,value:r+" captured as exception with keys: "+_d(e),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}}class Pp{match(e){return qu(e)}coerce(e,n){var i;return{type:"Error",value:"Primitive value captured as exception: "+String(e),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}}class Fp{match(e){return kr(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!Oa(e))return!1;try{var n=e.detail;return n!=null&&typeof n=="object"&&"reason"in n}catch{return!1}}coerce(e,n){var i,r=this.getUnhandledRejectionReason(e);return qu(r)?{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(r),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}:n.apply(r)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}var Rr="$message",Tr="$timestamp",Rp=new Set([Rr,Tr]),no={enabled:!0,max_bytes:32768};function $r(t){var e;return t?{enabled:(e=t.enabled)!==null&&e!==void 0?e:no.enabled,max_bytes:$p(t.max_bytes,no.max_bytes)}:E({},no)}class Tp{constructor(e){this.Ke=[],this.Je=0,this.Ne=$r(e)}setConfig(e){this.Ne=$r(e),this.Xe()}add(e){var n=(function(r){var s;try{s=Uu(r)}catch{return}try{var o=JSON.parse(s);if(!ae(o))return;var a=o,l=a[Rr],u=a[Tr];return!K(l)||l.trim().length===0||!K(u)&&!Se(u)?void 0:{step:a,json:s}}catch{return}})(e);if(n){var i=(function(r){if(typeof TextEncoder<"u")return new TextEncoder().encode(r).length;for(var s=encodeURIComponent(r),o=0,a=0;s.length>a;a++)s[a]==="%"?(o+=1,a+=2):o+=1;return o})(n.json);i>this.Ne.max_bytes||(this.Ke.push({step:n.step,bytes:i}),this.Je+=i,this.Xe())}}getAttachable(){return this.Ke.map((e=>e.step))}clear(){this.Ke=[],this.Je=0}size(){return this.Ke.length}Xe(){for(;this.Je>this.Ne.max_bytes&&this.Ke.length>0;){var e=this.Ke.shift();e&&(this.Je-=e.bytes)}}}function $p(t,e){if(!Se(t)||t===1/0||t===-1/0)return e;var n=Math.floor(t);return 0>n?e:n}var yd=function(t,e){var n=(e===void 0?{}:e).debugEnabled,i={k(r){if(_&&(ee.DEBUG||_.POSTHOG_DEBUG||n)&&!x(_.console)&&_.console){for(var s=("__rrweb_original__"in _.console[r])?_.console[r].__rrweb_original__:_.console[r],o=arguments.length,a=new Array(o>1?o-1:0),l=1;o>l;l++)a[l-1]=arguments[l];s(t,...a)}},debug(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("debug",...s)},info(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("log",...s)},warn(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("warn",...s)},error(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("error",...s)},critical(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];console.error(t,...s)},uninitializedWarning(r){i.error("You must initialize PostHog before calling "+r)},createLogger:(r,s)=>yd(t+" "+r,s)};return i},k=yd("[PostHog.js]"),le=k.createLogger,Mp=le("[ExternalScriptsLoader]"),io=(t,e,n)=>{if(t.config.disable_external_dependency_loading)return Mp.warn(e+" was requested but loading of external scripts is disabled."),n("Loading of external scripts is disabled");var i=C?.querySelectorAll("script");if(i){for(var r,s=function(){if(i[o].src===e){var l=i[o];return l.__posthog_loading_callback_fired?{v:n()}:(l.addEventListener("load",(u=>{l.__posthog_loading_callback_fired=!0,n(void 0,u)})),l.onerror=u=>n(u),{v:void 0})}},o=0;i.length>o;o++)if(r=s())return r.v}var a=()=>{if(!C)return n("document not found");var l=C.createElement("script");if(l.type="text/javascript",l.crossOrigin="anonymous",l.src=e,l.onload=d=>{l.__posthog_loading_callback_fired=!0,n(void 0,d)},l.onerror=d=>n(d),t.config.prepare_external_dependency_script&&(l=t.config.prepare_external_dependency_script(l)),!l)return n("prepare_external_dependency_script returned null");if(t.config.external_scripts_inject_target==="head")C.head.appendChild(l);else{var u,c=C.querySelectorAll("body > script");c.length>0?(u=c[0].parentNode)==null||u.insertBefore(l,c[0]):C.body.appendChild(l)}};C!=null&&C.body?a():C?.addEventListener("DOMContentLoaded",a)};T.__PosthogExtensions__=T.__PosthogExtensions__||{},T.__PosthogExtensions__.loadExternalDependency=(t,e,n)=>{if(e!=="remote-config"){var i;if(t.config.strict_script_versioning)i=t.requestRouter.endpointFor("assets","/static/"+t.version+"/"+e+".js");else{var r="/static/"+e+".js?v="+t.version;if(e==="toolbar"){var s=3e5;r=r+"&t="+Math.floor(Date.now()/s)*s}i=t.requestRouter.endpointFor("assets",r)}io(t,i,n)}else{var o=t.requestRouter.endpointFor("assets","/array/"+t.config.token+"/config.js");io(t,o,n)}},T.__PosthogExtensions__.loadSiteApp=(t,e,n)=>{var i=t.requestRouter.endpointFor("api",e);io(t,i,n)};ee.DEBUG=!1,ee.LIB_VERSION="1.415.7",ee.LIB_NAME="web";var wd="$people_distinct_id",Fi="$device_id",ro="$device_model",fi="__alias",pi="__timers",Uo="$autocapture_disabled_server_side",Ho="$heatmaps_enabled_server_side",Wo="$exception_capture_enabled_server_side",qo="$error_tracking_suppression_rules",zo="$error_tracking_capture_extension_exceptions",Vo="$web_vitals_enabled_server_side",Wa="$dead_clicks_enabled_server_side",qa="$product_tours_enabled_server_side",Go="$web_vitals_allowed_metrics",vn="$session_recording_remote_config",bd="$replay_sample_rate",Ed="$replay_override_sampling",Sd="$replay_override_linked_flag",xd="$replay_override_url_trigger",kd="$replay_override_event_trigger",Nn="$sesid",za="$session_is_sampled",hn="$enabled_feature_flags",gi="$active_feature_flags",ur="$early_access_features",Ko="$feature_flag_details",mi="$feature_flag_payloads",dr="$feature_flag_request_id",Mr="$minimal_flag_called_events",gt="$override_feature_flags",fn="$override_feature_flag_payloads",Pt="$stored_person_properties",pn="$stored_group_properties",Yo="$surveys",Lr="$surveys_loaded_at",Jo="$surveys_activated",hr="$surveys_activated_session",fr="$surveys_activated_timestamps",vi="ph_product_tours",mn="$flag_call_reported",_i="$flag_call_reported_session_id",pr="$feature_flag_errors",bi="$feature_flag_evaluated_at",Xe="$user_state",Zo="$client_session_props",Xo="$capture_rate_limit",Qo="$initial_campaign_params",ea="$initial_referrer_info",Nr="$initial_person_info",Or="$epp",Ji="$posthog_cookieless",Id="$cookieless_mode",Cd="$sdk_debug_extensions_init_method",Ad="$sdk_debug_extensions_init_time_ms",Pd="$sdk_debug_recording_script_not_loaded",Va="PostHog loadExternalDependency extension not found.",gn="on_reject",Tt="always",An="anonymous",on="identified",ta="identified_only",Br="visibilitychange",Dr="beforeunload",$n="$pageview",so="$pageleave",oo="$identify",uc="$groupidentify";function Zi(t,e){D(t)&&t.forEach(e)}function te(t,e){if(!j(t))if(D(t))t.forEach(e);else if(zf(t))t.forEach(((i,r)=>e(i,r)));else for(var n in t)Wu.call(t,n)&&e(t[n],n)}var oe=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;e>i;i++)n[i-1]=arguments[i];for(var r of n)for(var s in r)r[s]!==void 0&&(t[s]=r[s]);return t};function gr(t){for(var e=Object.keys(t),n=e.length,i=new Array(n);n--;)i[n]=[e[n],t[e[n]]];return i}var dc=function(t){try{return t()}catch{return}},Lp=function(t){return function(){try{for(var e=arguments.length,n=new Array(e),i=0;e>i;i++)n[i]=arguments[i];return t.apply(this,n)}catch(r){k.critical("Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A."),k.critical(r)}}},Ga=function(t){var e={};return te(t,(function(n,i){(K(n)&&n.length>0||Se(n))&&(e[i]=n)})),e},Np=["herokuapp.com","vercel.app","netlify.app"];function Op(t){var e=t?.hostname;if(!K(e))return!1;var n=e.split(".").slice(-2).join(".");for(var i of Np)if(n===i)return!1;return!0}function de(t,e,n,i){var r=i??{},s=r.capture,o=r.passive;t?.addEventListener(e,n,{capture:s!==void 0&&s,passive:o===void 0||o})}function na(t){return t.name==="ph_toolbar_internal"}var Fd=t=>{if(C){try{for(var e=t+"=",n=C.cookie.split(";").filter((s=>s.length)),i=0;n.length>i;i++){for(var r=n[i];r.charAt(0)==" ";)r=r.substring(1,r.length);if(r.indexOf(e)===0)return decodeURIComponent(r.substring(e.length,r.length))}}catch{}return null}};Math.trunc||(Math.trunc=function(t){return 0>t?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return Se(t)&&isFinite(t)&&Math.floor(t)===t});class jr{constructor(e){if(this.bytes=e,e.length!==16)throw new TypeError("not 128-bit length")}static fromFieldsV7(e,n,i,r){if(!Number.isInteger(e)||!Number.isInteger(n)||!Number.isInteger(i)||!Number.isInteger(r)||0>e||0>n||0>i||0>r||e>0xffffffffffff||n>4095||i>1073741823||r>4294967295)throw new RangeError("invalid field value");var s=new Uint8Array(16);return s[0]=e/Math.pow(2,40),s[1]=e/Math.pow(2,32),s[2]=e/Math.pow(2,24),s[3]=e/Math.pow(2,16),s[4]=e/256,s[5]=e,s[6]=112|n>>>8,s[7]=n,s[8]=128|i>>>24,s[9]=i>>>16,s[10]=i>>>8,s[11]=i,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new jr(s)}toString(){for(var e="",n=0;this.bytes.length>n;n++)e=e+(this.bytes[n]>>>4).toString(16)+(15&this.bytes[n]).toString(16),n!==3&&n!==5&&n!==7&&n!==9||(e+="-");if(e.length!==36)throw new Error("Invalid UUIDv7 was generated");return e}clone(){return new jr(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(var n=0;16>n;n++){var i=this.bytes[n]-e.bytes[n];if(i!==0)return Math.sign(i)}return 0}}class Bp{generate(){var e=this.generateOrAbort();if(!x(e))return e;this.S=0;var n=this.generateOrAbort();if(x(n))throw new Error("Could not generate UUID after timestamp reset");return n}generateOrAbort(){var e=Date.now();if(e>this.S)this.S=e,this.C();else{if(this.S>=e+1e4)return;this.I++,this.I>4398046511103&&(this.S++,this.C())}return jr.fromFieldsV7(this.S,Math.trunc(this.I/Math.pow(2,30)),this.I&Math.pow(2,30)-1,this.A.nextUint32())}C(){this.I=1024*this.A.nextUint32()+(1023&this.A.nextUint32())}constructor(){this.S=0,this.I=0,this.A=new Dp}}var hc,Rd=t=>{if(typeof UUIDV7_DENY_WEAK_RNG<"u"&&UUIDV7_DENY_WEAK_RNG)throw new Error("no cryptographically strong RNG available");for(var e=0;t.length>e;e++)t[e]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};_&&!x(_.crypto)&&crypto.getRandomValues&&(Rd=t=>crypto.getRandomValues(t));class Dp{nextUint32(){return this.R.length>this.O||(Rd(this.R),this.O=0),this.R[this.O++]}constructor(){this.R=new Uint32Array(8),this.O=1/0}}var Rt=()=>jp().toString(),jp=()=>(hc||(hc=new Bp)).generate(),ii="",Up=/[a-z0-9][a-z0-9-]+\.[a-z]{2,}$/i,$t={N:()=>!!C,j(t){k.error("cookieStore error: "+t)},P:Fd,H(t){var e;try{e=JSON.parse($t.P(t))||{}}catch{}return e},F(t,e,n,i,r){if(!C)return!1;try{var s="",o="",a=(function(c,d){if(d){var h=(function(p,g){if(g===void 0&&(g=C),ii)return ii;if(!g||["localhost","127.0.0.1"].includes(p))return"";for(var m=p.split("."),v=Math.min(m.length,8),w="dmn_chk_"+Rt();!ii&&v--;){var b=m.slice(v).join("."),I=w+"=1;domain=."+b+";path=/";g.cookie=I+";max-age=3",g.cookie.includes(w)&&(g.cookie=I+";max-age=0",ii=b)}return ii})(c);if(!h){var f=(p=>{var g=p.match(Up);return g?g[0]:""})(c);f!==h&&k.info("Warning: cookie subdomain discovery mismatch",f,h),h=f}return h?"; domain=."+h:""}return""})(C.location.hostname,i);if(n){var l=new Date;l.setTime(l.getTime()+864e5*n),s="; expires="+l.toUTCString()}r&&(o="; secure");var u=t+"="+encodeURIComponent(JSON.stringify(e))+s+"; SameSite=Lax; path=/"+a+o;return u.length>3686.4&&k.warn("cookieStore warning: large cookie, len="+u.length),C.cookie=u,!0}catch{return!1}},q(t,e){if(C!=null&&C.cookie)try{$t.F(t,"",-1,e)}catch{return}}},ao=null,re={N(){if(!We(ao))return ao;var t=!0;if(x(_))t=!1;else try{var e="__mplssupport__";re.F(e,"xyz"),re.P(e)!=='"xyz"'&&(t=!1),re.q(e)}catch{t=!1}return t||k.error("localStorage unsupported; falling back to cookie store"),ao=t,t},j(t){k.error("localStorage error: "+t)},P(t){try{return _?.localStorage.getItem(t)}catch(e){re.j(e)}return null},H(t){try{return JSON.parse(re.P(t))||{}}catch{}return null},F(t,e){try{return _?.localStorage.setItem(t,JSON.stringify(e)),!0}catch(n){re.j(n)}return!1},q(t){try{_?.localStorage.removeItem(t)}catch(e){re.j(e)}}},Hp=[Fi,"distinct_id",Nn,za,Or,Nr,Xe],Xi={},Wp={N:()=>!0,j(t){k.error("memoryStorage error: "+t)},P:t=>Xi[t]||null,H:t=>Xi[t]||null,F:(t,e)=>(Xi[t]=e,!0),q(t){delete Xi[t]}},an=null,ge={N(){if(!We(an))return an;if(an=!0,x(_))an=!1;else try{var t="__support__";ge.F(t,"xyz"),ge.P(t)!=='"xyz"'&&(an=!1),ge.q(t)}catch{an=!1}return an},j(t){k.error("sessionStorage error: ",t)},P(t){try{return _?.sessionStorage.getItem(t)}catch(e){ge.j(e)}return null},H(t){try{return JSON.parse(ge.P(t))||null}catch{}return null},F(t,e){try{return _?.sessionStorage.setItem(t,JSON.stringify(e)),!0}catch(n){ge.j(n)}return!1},q(t){try{_?.sessionStorage.removeItem(t)}catch(e){ge.j(e)}}};class qp{constructor(e){this._instance=e}get Ne(){return this._instance.config}get consent(){return this.ti()?0:this.ei}isOptedOut(){return this.Ne.cookieless_mode===Tt||this.isRejected()||this.consent===-1&&this.Ne.cookieless_mode===gn}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===0}isRejected(){return this.consent===0||this.consent===-1&&this.Ne.opt_out_capturing_by_default}optInOut(e){this.ii.F(this.ri,e?1:0,this.Ne.cookie_expiration,this.Ne.cross_subdomain_cookie,this.Ne.secure_cookie)}reset(){this.ii.q(this.ri,this.Ne.cross_subdomain_cookie)}get ri(){var e=this._instance.config,n=e.token,i=e.opt_out_capturing_cookie_prefix;return e.consent_persistence_name||(i?i+n:"__ph_opt_in_out_"+n)}get ei(){var e=this.ii.P(this.ri);return Xs(e)?1:B(Yf,e)?0:-1}get ii(){var e=this.Ne.opt_out_capturing_persistence_type,n=e==="localStorage"?re:$t;if(!this.ni||this.ni!==n){this.ni=n;var i=e==="localStorage"?$t:re;i.P(this.ri)&&(this.ni.P(this.ri)||this.optInOut(Xs(i.P(this.ri))),i.q(this.ri,this.Ne.cross_subdomain_cookie))}return this.ni}ti(){return!!this.Ne.respect_dnt&&[Be?.doNotTrack,Be?.msDoNotTrack,T.doNotTrack].some((e=>Xs(e)))}}function Td(t,e){var n,i=t==null||(n=t.config)==null?void 0:n.get_current_url;if(!Ne(i))return e;try{var r=i(e);return K(r)&&r?r:e}catch(s){return k.error("Error in get_current_url, falling back to window.location.href",s),e}}var $d="__POSTHOG_TOOLBAR__",zp=1,Vp=3,Gp=11;function fc(t){return t instanceof Element&&(t.id===$d||!(t.closest==null||!t.closest(".toolbar-global-fade-container")))}function en(t){return!!t&&t.nodeType===zp}function Ge(t,e){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===e.toLowerCase()}function Md(t){return!!t&&t.nodeType===Vp}function Ld(t){return!!t&&t.nodeType===Gp&&en(t.host)}var Nd=1e3;function Ka(t){return t?us(t).split(/\s+/):[]}function pc(t,e){var n=(function(i){var r,s=_==null||(r=_.location)==null?void 0:r.href;return x(s)?void 0:Td(i,s)})(e);return!!(n&&t&&t.some((i=>n.match(i))))}function Ur(t){var e="";switch(typeof t.className){case"string":e=t.className;break;case"object":e=(t.className&&"baseVal"in t.className?t.className.baseVal:null)||t.getAttribute("class")||"";break;default:e=""}return Ka(e)}function Od(t){return j(t)?null:us(t).split(/(\s+)/).filter((e=>Ei(e))).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)}function Ri(t){var e="";return ra(t)&&!Ud(t)&&t.childNodes&&t.childNodes.length&&te(t.childNodes,(function(n){var i;Md(n)&&n.textContent&&(e+=(i=Od(n.textContent))!==null&&i!==void 0?i:"")})),us(e)}function lo(t){var e;return x(t.target)?t.srcElement||null:(e=t.target)!=null&&e.shadowRoot?t.composedPath()[0]||null:t.target||null}var Ya=["a","button","form","input","select","textarea","label"];function ia(t,e){if(x(e))return!0;var n,i=function(s){if(e.some((o=>(function(a,l){var u=a.matches||a.matchesSelector||a.msMatchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.oMatchesSelector;try{return!!u&&u.call(a,l)}catch{return!1}})(s,o))))return{v:!0}};for(var r of t)if(n=i(r))return n.v;return!1}function Bd(t){var e=t.parentNode;return!(!e||!en(e))&&e}var Kp=[".ph-no-autocapture","[data-ph-no-autocapture]"],Dd=["next","previous","prev",">","<"],Yp=[...Dd,"+","-","−","–"],gc=(t,e)=>/[a-z0-9]/i.test(e)?t.includes(e):t===e,mc=[".ph-no-rageclick",".ph-no-capture"],Jp=["","text","search","email","password","url","tel","number"];function vc(t,e){if(!_||Ja(t))return!1;var n,i,r,s,o;if(at(e)?(n=!!e&&mc,i=void 0,r=!1):(n=(s=e?.css_selector_ignorelist)!==null&&s!==void 0?s:mc,i=e?.content_ignorelist,r=(o=e?.ignore_text_selection)!==null&&o!==void 0&&o),n===!1||r&&(function(l){return!(!l||!en(l))&&(!!Ge(l,"textarea")||(Ge(l,"input")?B(Jp,(l.getAttribute("type")||"").toLowerCase()):(function(u){if(u.isContentEditable)return!0;var c=u.getAttribute==null?void 0:u.getAttribute("contenteditable");return c==="true"||c===""})(l)))})(t))return!1;var a=jd(t,!1).targetElementList;return!(function(l,u){if(l===!1||x(l))return!1;var c;if(l===!0)c=Dd;else{if(!D(l))return!1;if(l.length>10)return k.error("[PostHog] content_ignorelist array cannot exceed 10 items. Use css_selector_ignorelist for more complex matching."),!1;c=l.map((d=>d.toLowerCase()))}return u.some((d=>{var h=d.safeText,f=d.ariaLabel;return c.some((p=>gc(h,p)||gc(f,p)))}))})(i,a.map((l=>{var u;return{safeText:Ri(l).toLowerCase(),ariaLabel:((u=l.getAttribute("aria-label"))==null?void 0:u.toLowerCase().trim())||""}})))&&!ia(a,n)}var Ja=t=>!t||Ge(t,"html")||!en(t),jd=(t,e)=>{if(!_||Ja(t))return{parentIsUsefulElement:!1,targetElementList:[]};for(var n=!1,i=[t],r=t;r.parentNode&&!Ge(r,"body");)if(Ld(r.parentNode))i.push(r.parentNode.host),r=r.parentNode.host;else{var s=Bd(r);if(!s)break;if(e||Ya.indexOf(s.tagName.toLowerCase())>-1)n=!0;else try{var o=_.getComputedStyle(s);o&&o.getPropertyValue("cursor")==="pointer"&&(n=!0)}catch{}i.push(s),r=s}return{parentIsUsefulElement:n,targetElementList:i}};function ra(t){for(var e=new Set,n=0,i=t;i.parentNode&&!Ge(i,"body");i=i.parentNode){if(n++>=Nd||e.has(i))return!1;e.add(i);var r=Ur(i);if(B(r,"ph-sensitive")||B(r,"ph-no-capture"))return!1}if(B(Ur(t),"ph-include"))return!0;var s=t.type||"";if(K(s))switch(s.toLowerCase()){case"hidden":case"password":return!1}var o=t.name||t.id||"";return!K(o)||!/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(o.replace(/[^a-zA-Z0-9]/g,""))}function Ud(t){return!!(Ge(t,"input")&&!["button","checkbox","submit","reset"].includes(t.type)||Ge(t,"select")||Ge(t,"textarea")||t.getAttribute("contenteditable")==="true")}var _c=new RegExp("^(?:(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}))$"),yc=/(^|[^0-9A-Za-z_])([0-9][0-9 -]*[0-9])(?=$|[^0-9A-Za-z_])/g,Zp=[16,15,14,13],Xp=new RegExp("^(\\d{3}-?\\d{2}-?\\d{4})$"),wc=new RegExp("(^|[^0-9])((?!000|666)[0-9]{3}-?(?!00)[0-9]{2}-?(?!0000)[0-9]{4})(?=$|([^0-9]))","g"),bc=/[0-9A-Za-z_]/;function Qp(t){for(var e=0,n=!1,i=t.length-1;i>=0;i--){var r=t.charCodeAt(i)-48;n&&(r*=2)>9&&(r-=9),e+=r,n=!n}return e%10==0}function Ei(t,e){if(e===void 0&&(e=!0),j(t))return!1;if(K(t)){t=us(t);var n=e?_c.test((t||"").replace(/[- ]/g,"")):(function(r){var s;for(yc.lastIndex=0;s=yc.exec(r);){var o=s[2];if(o)for(var a=o.replace(/[- ]/g,""),l=0;a.length>l;l++)for(var u of Zp){var c=l+u;if(a.length>=c){var d=a.slice(l,c);if(_c.test(d)&&Qp(d))return!0}}}return!1})(t);if(n)return!1;var i=e?Xp.test(t):(function(r){var s;for(wc.lastIndex=0;s=wc.exec(r);){var o=s[1],a=s[3];if(!(o&&a&&bc.test(o)&&bc.test(a)))return!0}return!1})(t);if(i)return!1}return!0}function Ec(t){var e=Ri(t);return Ei(e=(e+" "+Hd(t)).trim())?e:""}function Hd(t){var e="";return t&&t.childNodes&&t.childNodes.length&&te(t.childNodes,(function(n){var i;if(n&&((i=n.tagName)==null?void 0:i.toLowerCase())==="span")try{var r=Ri(n);e=(e+" "+r).trim(),n.childNodes&&n.childNodes.length&&(e=(e+" "+Hd(n)).trim())}catch(s){k.error("[AutoCapture]",s)}})),e}function Sc(t){return t.replace(/"|\\"/g,'\\"')}function eg(t){var e=t.attr__class;if(e)return D(e)?e:Ka(e)}var Qi=le("[Dead Clicks]"),tg=()=>!0,ng=t=>{var e,n=!((e=t.instance.persistence)==null||!e.get_property(Wa)),i=t.instance.config.capture_dead_clicks;return at(i)?i:!!ae(i)||n};class xc{get lazyLoadedDeadClicksAutocapture(){return this.si}constructor(e,n,i){this.instance=e,this.isEnabled=n,this.onCapture=i,this.startIfEnabledOrStop()}onRemoteConfig(e){if(e.ok){var n=e.config;"captureDeadClicks"in n&&(this.instance.persistence&&this.instance.persistence.register({[Wa]:n.captureDeadClicks}),this.startIfEnabledOrStop())}}startIfEnabledOrStop(){this.isEnabled(this)?this.ai((()=>{this.oi()})):this.stop()}ai(e){var n,i;(n=T.__PosthogExtensions__)!=null&&n.initDeadClicksAutocapture?e():(i=T.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this.instance,"dead-clicks-autocapture",(r=>{r?Qi.error("failed to load script",r):e()}))}oi(){var e;if(C){if(!this.si&&(e=T.__PosthogExtensions__)!=null&&e.initDeadClicksAutocapture){var n=ae(this.instance.config.capture_dead_clicks)?E({},this.instance.config.capture_dead_clicks):{};n.__onCapture=this.onCapture,this.onCapture&&(n.capture_dead_swipes=!1),this.si=T.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,n),this.si.start(C),Qi.info("starting...")}}else Qi.error("`document` not found. Cannot start.")}stop(){this.si&&(this.si.stop(),this.si=void 0,Qi.info("stopping..."))}}var co=le("[SegmentIntegration]"),Wd="posthog-js";function qd(t,e){var n=e===void 0?{}:e,i=n.organization,r=n.projectId,s=n.prefix,o=n.severityAllowList,a=o===void 0?["error"]:o,l=n.sendExceptionsToPostHog,u=l===void 0||l;return c=>{var d,h,f,p,g;if(a!=="*"&&!a.includes(c.level)||!t.__loaded)return c;c.tags||(c.tags={});var m=t.requestRouter.endpointFor("ui","/project/"+t.config.token+"/person/"+t.get_distinct_id());c.tags["PostHog Person URL"]=m,t.sessionRecordingStarted()&&(c.tags["PostHog Recording URL"]=t.get_session_replay_url({withTimestamp:!0}));var v,w=((d=c.exception)==null?void 0:d.values)||[],b=w.map((A=>E({},A,{stacktrace:A.stacktrace?E({},A.stacktrace,{type:"raw",frames:(A.stacktrace.frames||[]).map((P=>E({},P,{platform:"web:javascript"})))}):void 0}))),I={$exception_message:((h=w[0])==null?void 0:h.value)||c.message,$exception_type:(f=w[0])==null?void 0:f.type,$exception_level:c.level,$exception_list:b,$sentry_event_id:c.event_id,$sentry_exception:c.exception,$sentry_exception_message:((p=w[0])==null?void 0:p.value)||c.message,$sentry_exception_type:(g=w[0])==null?void 0:g.type,$sentry_tags:c.tags};return i&&r&&(I.$sentry_url=(s||"https://sentry.io/organizations/")+i+"/issues/?project="+r+"&query="+c.event_id),u&&((v=t.exceptions)==null||v.sendExceptionEvent(I)),c}}class ig{constructor(e,n,i,r,s,o){this.name=Wd,this.setupOnce=function(a){a(qd(e,{organization:n,projectId:i,prefix:r,severityAllowList:s,sendExceptionsToPostHog:o==null||o}))}}}class kc{constructor(e){this.li=(n,i,r)=>{r&&(r.noSessionId||r.activityTimeout||r.sessionPastMaximumLength||r.crossTabAdoption)&&(k.info("[PageViewManager] Session rotated, clearing pageview state",{sessionId:n,changeReason:r}),this.ui=void 0,this._instance.scrollManager.resetContext())},this._instance=e,this.hi()}hi(){var e;this.di=(e=this._instance.sessionManager)==null?void 0:e.onSessionId(this.li)}destroy(){var e;(e=this.di)==null||e.call(this),this.di=void 0}doPageView(e,n){var i,r=this.vi(e,n);return this.ui={pathname:(i=_?.location.pathname)!==null&&i!==void 0?i:"",pageViewId:n,timestamp:e},this._instance.scrollManager.resetContext(),r}doPageLeave(e){var n;return this.vi(e,(n=this.ui)==null?void 0:n.pageViewId)}doEvent(){var e;return{$pageview_id:(e=this.ui)==null?void 0:e.pageViewId}}vi(e,n){var i=this.ui;if(!i)return{$pageview_id:n};var r={$pageview_id:n,$prev_pageview_id:i.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var o=s.maxScrollHeight,a=s.lastScrollY,l=s.maxScrollY,u=s.maxContentHeight,c=s.lastContentY,d=s.maxContentY;if(!(x(o)||x(a)||x(l)||x(u)||x(c)||x(d))){o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),c=Math.ceil(c),d=Math.ceil(d);var h=o>1?_t(a/o,0,1,k):1,f=o>1?_t(l/o,0,1,k):1,p=u>1?_t(c/u,0,1,k):1,g=u>1?_t(d/u,0,1,k):1;r=oe(r,{$prev_pageview_last_scroll:a,$prev_pageview_last_scroll_percentage:h,$prev_pageview_max_scroll:l,$prev_pageview_max_scroll_percentage:f,$prev_pageview_last_content:c,$prev_pageview_last_content_percentage:p,$prev_pageview_max_content:d,$prev_pageview_max_content_percentage:g})}}return i.pathname&&(r.$prev_pageview_pathname=i.pathname),i.timestamp&&(r.$prev_pageview_duration=(e.getTime()-i.timestamp.getTime())/1e3),r}}var uo=["flags","surveys"],rg={[wd]:{exposure:"hidden"},[fi]:{exposure:"hidden"},__cmpns:{exposure:"hidden"},[pi]:{exposure:"hidden"},[Uo]:{exposure:"event"},[Ho]:{exposure:"hidden"},[Wo]:{exposure:"event"},[qo]:{exposure:"hidden"},[zo]:{exposure:"event"},[Vo]:{exposure:"event"},[Wa]:{exposure:"event"},[qa]:{exposure:"hidden"},[Go]:{exposure:"event"},[vn]:{exposure:"hidden"},$session_recording_enabled_server_side:{exposure:"hidden"},[Nn]:{exposure:"hidden"},[za]:{exposure:"event"},[bd]:{exposure:"event",shouldSkipFromEventProperties:t=>We(t)},$session_past_minimum_duration:{exposure:"event"},$session_recording_url_trigger_activated_session:{exposure:"event"},$session_recording_event_trigger_activated_session:{exposure:"event"},$debug_first_full_snapshot_timestamp:{exposure:"event"},$sess_rec_flush_size:{exposure:"hidden"},[hn]:{exposure:"hidden",storageGroup:"flags"},[gi]:{exposure:"hidden",storageGroup:"flags"},[ur]:{exposure:"hidden"},[Ko]:{exposure:"hidden",storageGroup:"flags"},[mi]:{exposure:"hidden",storageGroup:"flags"},[dr]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[Mr]:{exposure:"hidden",storageGroup:"flags"},[gt]:{exposure:"hidden"},[fn]:{exposure:"hidden"},[Pt]:{exposure:"hidden"},[pn]:{exposure:"hidden"},[Yo]:{exposure:"hidden",storageGroup:"surveys"},[Lr]:{exposure:"hidden",storageGroup:"surveys",volatile:!0},[Jo]:{exposure:"event"},[hr]:{exposure:"hidden"},[fr]:{exposure:"hidden"},[vi]:{exposure:"hidden"},$product_tours_activated:{exposure:"hidden"},$product_tours_activated_session:{exposure:"hidden"},$conversations_widget_session_id:{exposure:"event"},$conversations_ticket_id:{exposure:"event"},$conversations_widget_state:{exposure:"event"},$conversations_user_traits:{exposure:"event"},[mn]:{exposure:"hidden"},[_i]:{exposure:"hidden"},[pr]:{exposure:"hidden"},[bi]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[Xe]:{exposure:"hidden"},[Zo]:{exposure:"hidden"},[Xo]:{exposure:"hidden"},[Qo]:{exposure:"hidden"},[ea]:{exposure:"hidden"},[Nr]:{exposure:"hidden"},[Or]:{exposure:"hidden"},[Ed]:{exposure:"event"},[Sd]:{exposure:"event"},[xd]:{exposure:"event"},[kd]:{exposure:"event"},[Cd]:{exposure:"event"},[Ad]:{exposure:"event"},[Pd]:{exposure:"event"},$sdk_debug_replay_event_trigger_status:{exposure:"event"},$sdk_debug_replay_linked_flag_trigger_status:{exposure:"event"},$sdk_debug_replay_matched_recording_trigger_groups:{exposure:"event"},$sdk_debug_replay_remote_trigger_matching_config:{exposure:"event"},$sdk_debug_replay_trigger_groups_count:{exposure:"event"},$sdk_debug_replay_url_trigger_status:{exposure:"event"},$session_recording_start_reason:{exposure:"event"}},sg=[["$posthog_sr_group_event_trigger_",{exposure:"hidden"}],["$posthog_sr_group_url_trigger_",{exposure:"hidden"}],["$posthog_sr_group_sampling_",{exposure:"hidden"}]],ln=t=>{var e=rg[t];if(e)return e;for(var n of sg){var i=n[1];if(t.indexOf(n[0])===0)return i}},On=(t,e)=>{try{return JSON.stringify(t,((n,i)=>typeof i=="bigint"?i.toString():i),e)}catch{return Uu(t)}},Hr=t=>{var e=C?.createElement("a");return x(e)?null:(e.href=t,e)},qn=function(t,e){for(var n,i=((t.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),r=0;i.length>r;r++){var s=i[r].split("=");if(s[0]===e){n=s;break}}if(!D(n)||2>n.length)return"";var o=n[1];try{o=decodeURIComponent(o)}catch{k.error("Skipping decoding for malformed query param: "+o)}return o.replace(/\+/g," ")},Ti=function(t,e,n){if(!t||!e||!e.length)return t;for(var i=t.split("#"),r=i[1],s=(i[0]||"").split("?"),o=s[1],a=s[0],l=(o||"").split("&"),u=[],c=0;l.length>c;c++){var d=l[c].split("=");D(d)&&(e.includes(d[0])?u.push(d[0]+"="+n):u.push(l[c]))}var h=a;return o!=null&&(h+="?"+u.join("&")),r!=null&&(h+="#"+r),h},Wr=function(t,e){var n=t.match(new RegExp(e+"=([^&]*)"));return n?n[1]:null},zd=(t,e)=>t>=e&&Bu(),Vd=(t,e,n,i)=>{if(t===0){if(Bu()){var r=e+1;return r===n&&i(),r}return e}return 0},er="https?://(.*)",zn=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],og=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid",...zn],$i="",ag=["li_fat_id"];function Gd(t,e,n){if(!C)return{};var i,r=e?[...zn,...n||[]]:[],s=Kd(Ti(C.URL,r,$i),t),o=(i={},te(ag,(function(a){var l=Fd(a);i[a]=l||null})),i);return oe(o,s)}function Kd(t,e){var n=og.concat(e||[]),i={};return te(n,(function(r){var s=qn(t,r);i[r]=s||null})),i}function Yd(t){var e=(function(s){return s?s.search(er+"google.([^/?]*)")===0?"google":s.search(er+"bing.com")===0?"bing":s.search(er+"yahoo.com")===0?"yahoo":s.search(er+"duckduckgo.com")===0?"duckduckgo":null:null})(t),n=e!="yahoo"?"q":"p",i={};if(!We(e)){i.$search_engine=e;var r=C?qn(C.referrer,n):"";r.length&&(i.ph_keyword=r)}return i}function Ic(){return navigator.language||navigator.userLanguage}var qr="$direct";function Jd(){return C?.referrer||qr}function Zd(t,e,n){n===void 0&&(n=!1);var i=t?[...zn,...e||[]]:[],r=n?Qt(ue?.href):ue?.href,s=r?.substring(0,1e3);return{r:Jd().substring(0,1e3),u:s?Ti(s,i,$i):void 0}}function Xd(t,e){var n;e===void 0&&(e=!1);var i=t.r,r=t.u,s=e?Qt(r):r,o={$referrer:i,$referring_domain:i==null?void 0:i==qr?qr:(n=Hr(i))==null?void 0:n.host};if(s){o.$current_url=s;var a=Hr(s);o.$host=a?.host,o.$pathname=a?.pathname;var l=Kd(s);oe(o,l)}if(i){var u=Yd(i);oe(o,u)}return o}function Qd(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function lg(){try{return new Date().getTimezoneOffset()}catch{return}}var cg={flags:bi,surveys:Lr},ug=["cookie","localstorage","localstorage+cookie","sessionstorage","memory"],Pn="main";class ho{constructor(e,n,i){if(i===void 0&&(i=!0),this.ci={},this.fi=!1,this.pi=!1,this.Ne=e,this.gi=i,this.props={},this.mi=void 0,this.yi=(s=>{var o="";return s.token&&(o=s.token.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ")),s.persistence_name?"ph_"+s.persistence_name:"ph_"+o+"_posthog"})(e),this.ii=this.bi(e),this.pi=this.wi(e),this.load(),e.debug&&k.info("Persistence loaded",e.persistence,E({},this.props)),this.update_config(e,e,n),this.save(),_){var r=()=>this.flush();de(_,"beforeunload",r,{capture:!1}),de(_,"pagehide",r,{capture:!1})}}ki(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return Se(n)&&n>0?n:0}isDisabled(){return!!this.xi}bi(e){ug.indexOf(e.persistence.toLowerCase())===-1&&(k.critical("Unknown persistence type "+e.persistence+"; falling back to localStorage+cookie"),e.persistence="localStorage+cookie");var n,i=(function(o,a){o===void 0&&(o=[]),a===void 0&&(a=!1);var l=[...Hp,...o];return E({},re,{H(u){try{var c={};try{c=$t.H(u)||{}}catch{}var d,h=JSON.parse(re.P(u)||"{}");if(a){var f={};for(var p in c){var g=c[p];We(g)||g===""||(f[p]=g)}d=oe(h,f)}else d=oe(c,h);return re.F(u,d),d}catch{}return null},F(u,c,d,h,f,p){var g=re.F(u,c,void 0,void 0,p);try{var m={};l.forEach((v=>{c[v]&&(m[v]=c[v])})),Object.keys(m).length&&$t.F(u,m,d,h,f,p)}catch(v){re.j(v)}return g},q(u,c){try{_?.localStorage.removeItem(u),$t.q(u,c)}catch(d){re.j(d)}}})})(e.cookie_persisted_properties||[],e.__preview_cookie_wins_on_conflict||!1),r=!1,s=e.persistence.toLowerCase();return s==="localstorage"&&re.N()?(n=re,r=!0):s==="localstorage+cookie"&&i.N()?(n=i,r=!0):s==="sessionstorage"&&ge.N()?n=ge:s==="memory"?n=Wp:s==="cookie"?n=$t:i.N()?(n=i,r=!0):n=$t,this.fi=r,n}Si(e){return this.yi+"__"+e}wi(e){return this.fi&&!!e.split_storage}properties(){var e={};return te(this.props,((n,i)=>{var r=ln(i);if(!r||r.exposure==="event"){if(r!=null&&r.shouldSkipFromEventProperties!=null&&r.shouldSkipFromEventProperties(n))return;e[i]=n}})),e}load(){if(!this.xi){var e=this.ii.H(this.yi);e&&(this.props=oe({},e)),this.pi&&this.Ci()}}Ci(){for(var e of uo){var n=re.H(this.Si(e));if(n&&!Nt(n)){var i=this.Mi(e);i.persisted=!0,this.Ti(e)||(i.fingerprint=this.Ei(n,e)),this.Ii(e,n)||oe(this.props,n)}}}Ti(e){return Object.keys(this.props).some((n=>{var i;return((i=ln(n))==null?void 0:i.storageGroup)===e}))}Ii(e,n){var i=cg[e];if(!i)return!1;var r=n[i],s=this.props[i];return Se(r)&&Se(s)&&s>r}refreshKey(e){var n;if(!this.xi){var i=this.pi?(n=ln(e))==null?void 0:n.storageGroup:void 0,r=i?re.H(this.Si(i)):this.ii.H(this.yi);if(r&&e in r)this.Pi(e,r[e]);else{if(i){var s=this.ii.H(this.yi);if(s&&e in s)return void this.Pi(e,s[e])}this.Ri(e)}}}save(){if(!this.xi){var e=this.ki();e>0?x(this.Ai)&&(this.Ai=setTimeout((()=>{this.Ai=void 0,this.Fi()}),e)):this.Fi()}}flush(){x(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0,this.Fi())}Fi(){this.xi||(this.pi?this.Li():this.Oi(this.ii,this.yi,this.props,Pn))}Li(){var e=this.Di(),n=e.main,i=e.groups;for(var r of(this.Oi(this.ii,this.yi,n,Pn),uo)){var s,o=i[r];(!Nt(o)||(s=this.ci[r])!=null&&s.persisted)&&this.Oi(re,this.Si(r),o,r)}}Di(){var e={},n={flags:{},surveys:{}};return te(this.props,((i,r)=>{var s,o=(s=ln(r))==null?void 0:s.storageGroup;o?n[o][r]=i:e[r]=i})),{main:e,groups:n}}Ei(e,n){if(n===Pn)return JSON.stringify(e)+"|"+this.$i+"|"+this.Ni+"|"+this.qi;var i={};return te(e,((r,s)=>{var o;i[s]=(o=ln(s))!=null&&o.volatile?"__volatile__":r})),JSON.stringify(i)}Oi(e,n,i,r){var s=this.Mi(r);if(r===Pn||s.dirty||x(s.fingerprint)){var o;try{if((o=this.Ei(i,r))===s.fingerprint)return void(s.dirty=!1)}catch{o=void 0}e.F(n,i,this.$i,this.Ni,this.qi,this.Ne.debug)?(s.dirty=!1,r!==Pn&&(s.persisted=!0),x(o)||(s.fingerprint=o)):this.Ne.debug&&k.warn('failed to persist storage entry "'+n+'"; will retry on next save')}}remove(e){var n=(e===void 0?{}:e).keepGroupEntries,i=n!==void 0&&n;if(x(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0),this.ii.q(this.yi,!1),this.ii.q(this.yi,!0),!i&&this.gi)for(var r of uo)re.q(this.Si(r));i?delete this.ci[Pn]:this.ci={}}clear(){this.remove(),this.props={}}register_once(e,n,i){if(ae(e)){x(n)&&(n="None"),this.$i=x(i)?this.ji:i;var r=!1;if(te(e,((s,o)=>{this.props.hasOwnProperty(o)&&this.props[o]!==n||(this.Pi(o,s),r=!0)})),r)return this.save(),!0}return!1}register(e,n){if(ae(e)){this.$i=x(n)?this.ji:n;var i=!1;if(te(e,((r,s)=>{e.hasOwnProperty(s)&&(this.props[s]!==r||ae(r)||D(r))&&(this.Pi(s,r),i=!0)})),i)return this.save(),!0}return!1}unregister(e){var n=typeof e=="string"?[e]:e,i=!1;for(var r of n)r in this.props&&(this.Ri(r),i=!0);i&&this.save()}update_campaign_params(){var e=C?.URL;if(e!==this.mi){var n=Gd(this.Ne.custom_campaign_params,this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties);Nt(Ga(n))||this.register(n),this.mi=e}}update_search_keyword(){var e;this.register((e=C?.referrer)?Yd(e):{})}update_referrer_info(){var e;this.register_once({$referrer:Jd(),$referring_domain:C!=null&&C.referrer&&((e=Hr(C.referrer))==null?void 0:e.host)||qr},void 0)}set_initial_person_info(){this.props[Qo]||this.props[ea]||this.register_once({[Nr]:Zd(this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties,this.Ne.disable_capture_url_hashes)},void 0)}get_initial_props(){var e={};te([ea,Qo],(r=>{var s=this.props[r];s&&te(s,(function(o,a){e["$initial_"+Mo(a)]=o}))}));var n=this.props[Nr];if(n){var i=(function(r,s){s===void 0&&(s=!1);var o=Xd(r,s),a={};return te(o,(function(l,u){a["$initial_"+Mo(u)]=l})),a})(n,this.Ne.disable_capture_url_hashes);oe(e,i)}return e}safe_merge(e){return te(this.props,(function(n,i){i in e||(e[i]=n)})),e}update_config(e,n,i){this.ji=this.$i=e.cookie_expiration,this.set_disabled(e.disable_persistence||!!i),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie);var r=e.persistence!==n.persistence||!((l,u)=>{if(l.length!==u.length)return!1;var c=[...l].sort(),d=[...u].sort();return c.every(((h,f)=>h===d[f]))})(e.cookie_persisted_properties||[],n.cookie_persisted_properties||[]),s=r?this.bi(e):this.ii,o=this.wi(e);if(r||o!==this.pi){var a=this.props;this.clear(),this.ii=s,this.pi=o,this.props=a,this.save()}}set_disabled(e){this.xi=e,this.xi?this.remove():this.save()}set_cross_subdomain(e){e!==this.Ni&&(this.Ni=e,this.remove({keepGroupEntries:!0}),this.save())}set_secure(e){e!==this.qi&&(this.qi=e,this.remove({keepGroupEntries:!0}),this.save())}set_event_timer(e,n){var i=this.props[pi]||{};i[e]=n,this.Pi(pi,i),this.save()}remove_event_timer(e){var n=this.props[pi]||{},i=n[e];return x(i)||(delete n[e],this.Pi(pi,n),this.save()),i}get_property(e){return this.props[e]}set_property(e,n){this.Pi(e,n),this.save()}Pi(e,n){var i;this.props[e]=n,(i=ln(e))!=null&&i.volatile||this.Bi(e)}Ri(e){delete this.props[e],this.Bi(e)}Bi(e){var n,i=(n=ln(e))==null?void 0:n.storageGroup;i&&(this.Mi(i).dirty=!0)}Mi(e){return this.ci[e]||(this.ci[e]={})}}function tr(t){var e=!0;return{dispose(){if(e){e=!1;var n=t();n&&Ne(n.then)&&n.then(void 0,(()=>{}))}}}}var Oe={GZipJS:"gzip-js",Base64:"base64"},ri={Activation:"events",Cancellation:"cancelEvents"},fo={Popover:"popover",API:"api",Widget:"widget"},Mt={SHOWN:"survey shown",DISMISSED:"survey dismissed",SENT:"survey sent"},po={SURVEY_ID:"$survey_id",SURVEY_ITERATION:"$survey_iteration",SURVEY_LAST_SEEN_DATE:"$survey_last_seen_date"},sa={Popover:"popover",Inline:"inline"},dg={SHOWN:"product tour shown"},Cc={TOUR_LAST_SEEN_DATE:"$product_tour_last_seen_date",TOUR_TYPE:"$product_tour_type"},Ac=le("[RateLimiter]");class hg{constructor(e){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=n=>{var i=n.text;if(i&&i.length)try{(JSON.parse(i).quota_limited||[]).forEach((r=>{Ac.info((r||"events")+" is quota limited."),this.serverLimits[r]=new Date().getTime()+6e4}))}catch(r){return void Ac.warn('could not rate limit - continuing. Error: "'+r?.message+'"',{text:i})}},this.instance=e,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var e;return((e=this.instance.config.rate_limiting)==null?void 0:e.events_per_second)||10}get captureEventsBurstLimit(){var e;return Math.max(((e=this.instance.config.rate_limiting)==null?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(e){var n,i,r;e===void 0&&(e=!1);var s=this.captureEventsBurstLimit,o=this.captureEventsPerSecond,a=new Date().getTime(),l=(n=(i=this.instance.persistence)==null?void 0:i.get_property(Xo))!==null&&n!==void 0?n:{tokens:s,last:a};l.tokens+=(a-l.last)/1e3*o,l.last=a,l.tokens>s&&(l.tokens=s);var u=1>l.tokens;if(u||e||(l.tokens=Math.max(0,l.tokens-1)),u&&!e){var c=(Se(l.dropped)?l.dropped:0)+1;l.dropped=c,!this.lastEventRateLimited&&this.Hi(c)&&(l.dropped=0)}return this.lastEventRateLimited=u,(r=this.instance.persistence)==null||r.set_property(Xo,l),{isRateLimited:u,remainingTokens:l.tokens}}Ui(e){var n=this.instance.config.property_denylist;return!D(n)||!n.includes(e)}zi(){var e;if(this.Ui("$current_url")&&this.Ui("$pathname")&&ue!=null&&ue.pathname)return""+((e=ue.origin)!==null&&e!==void 0?e:"")+ue.pathname}Hi(e){var n,i,r=this.captureEventsBurstLimit,s=this.captureEventsPerSecond,o=this.zi(),a=this.Ui("$session_id")?(n=(i=this.instance).get_session_id)==null?void 0:n.call(i):void 0,l=[e+" event(s) dropped since the last warning",o?"triggered on "+o:void 0,a?"session "+a:void 0].filter(Boolean).join(", ");return!!this.instance.capture("$$client_ingestion_warning",{$$client_ingestion_warning_message:"posthog-js client rate limited: "+l+". Config is set to "+s+" events per second and "+r+" events burst limit."},{skip_client_rate_limiting:!0})}isServerRateLimited(e){var n=this.serverLimits[e||"events"]||!1;return n!==!1&&new Date().getTime()e(this.remoteConfig))):e()}Vi(e){this._instance._send_request({method:"GET",url:this._instance.requestRouter.endpointFor("assets","/array/"+this._instance.config.token+"/config"),callback:e})}load(){try{if(this.remoteConfig)return Yt.info("Using preloaded remote config",this.remoteConfig),this.Zi(this.remoteConfig),void this.Gi();if(this._instance.Qi())return void Yt.warn("Remote config is disabled. Falling back to local config.");this.Wi((e=>{if(!e)return Yt.info("No config found after loading remote JS config. Falling back to JSON."),void this.Vi((n=>{this.Zi(n.json,n),this.Gi()}));this.Zi(e),this.Gi()}))}catch(e){Yt.error("Error loading remote config",e),this.Zi()}}stop(){this.Ki&&(clearInterval(this.Ki),this.Ki=void 0)}refresh(){!this._instance.Qi()&&C&&C.visibilityState!=="hidden"&&this._instance.reloadFeatureFlags()}Gi(){var e;if(!this.Ki){var n=(e=this._instance.config.remote_config_refresh_interval_ms)!==null&&e!==void 0?e:3e5;n!==0&&(this.Ki=setInterval((()=>{this.refresh()}),n))}}Zi(e,n){!e&&n&&(n.statusCode===0?n.error||Yt.warn("Failed to fetch remote config from PostHog."):Yt.error("Failed to fetch remote config from PostHog."));try{this._instance.Zi(e?{ok:!0,config:e}:{ok:!1})}catch(r){Yt.error("Error applying remote config",r)}if(e?.hasFeatureFlags!==!1&&!this._instance.config.advanced_disable_feature_flags_on_first_load)try{var i;(i=this._instance.featureFlags)==null||i.ensureFlagsLoaded()}catch(r){Yt.error("Error loading feature flags",r)}}}var et=Uint8Array,He=Uint16Array,Vn=Uint32Array,Za=new et([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Xa=new et([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Pc=new et([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),th=function(t,e){for(var n=new He(31),i=0;31>i;++i)n[i]=e+=1<i;++i)for(var s=n[i];n[i+1]>s;++s)r[s]=s-n[i]<<5|i;return[n,r]},nh=th(Za,2),oa=nh[1];nh[0][28]=258,oa[258]=28;for(var Fc=th(Xa,0)[1],ih=new He(32768),he=0;32768>he;++he){var Fn=(43690&he)>>>1|(21845&he)<<1;ih[he]=((65280&(Fn=(61680&(Fn=(52428&Fn)>>>2|(13107&Fn)<<2))>>>4|(3855&Fn)<<4))>>>8|(255&Fn)<<8)>>>1}var Si=function(t,e,n){for(var i=t.length,r=0,s=new He(e);i>r;++r)++s[t[r]-1];var o,a=new He(e);for(r=0;e>r;++r)a[r]=a[r-1]+s[r-1]<<1;for(o=new He(i),r=0;i>r;++r)o[r]=ih[a[t[r]-1]++]>>>15-t[r];return o},En=new et(288);for(he=0;144>he;++he)En[he]=8;for(he=144;256>he;++he)En[he]=9;for(he=256;280>he;++he)En[he]=7;for(he=280;288>he;++he)En[he]=8;var zr=new et(32);for(he=0;32>he;++he)zr[he]=5;var fg=Si(En,9),pg=Si(zr,5),rh=function(t){return(t/8>>0)+(7&t&&1)},sh=function(t,e,n){(n==null||n>t.length)&&(n=t.length);var i=new(t instanceof He?He:t instanceof Vn?Vn:et)(n-e);return i.set(t.subarray(e,n)),i},It=function(t,e,n){var i=e/8>>0;t[i]|=n<<=7&e,t[i+1]|=n>>>8},si=function(t,e,n){var i=e/8>>0;t[i]|=n<<=7&e,t[i+1]|=n>>>8,t[i+2]|=n>>>16},go=function(t,e){for(var n=[],i=0;t.length>i;++i)t[i]&&n.push({s:i,f:t[i]});var r=n.length,s=n.slice();if(!r)return[new et(0),0];if(r==1){var o=new et(n[0].s+1);return o[n[0].s]=1,[o,1]}n.sort((function(A,P){return A.f-P.f})),n.push({s:-1,f:25001});var a=n[0],l=n[1],u=0,c=1,d=2;for(n[0]={s:-1,f:a.f+l.f,l:a,r:l};c!=r-1;)a=n[n[d].f>n[u].f?u++:d++],l=n[u!=c&&n[d].f>n[u].f?u++:d++],n[c++]={s:-1,f:a.f+l.f,l:a,r:l};var h=s[0].s;for(i=1;r>i;++i)s[i].s>h&&(h=s[i].s);var f=new He(h+1),p=aa(n[c-1],f,0);if(p>e){i=0;var g=0,m=p-e,v=1<i;++i){var w=s[i].s;if(e>=f[w])break;g+=v-(1<>>=m;g>0;){var b=s[i].s;e>f[b]?g-=1<=0&&g;--i){var I=s[i].s;f[I]==e&&(--f[I],++g)}p=e}return[new et(f),p]},aa=function(t,e,n){return t.s==-1?Math.max(aa(t.l,e,n+1),aa(t.r,e,n+1)):e[t.s]=n},Rc=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new He(++e),i=0,r=t[0],s=1,o=function(l){n[i++]=l},a=1;e>=a;++a)if(t[a]==r&&a!=e)++s;else{if(!r&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(r),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(r);s=1,r=t[a]}return[n.subarray(0,i),e]},oi=function(t,e){for(var n=0,i=0;e.length>i;++i)n+=t[i]*e[i];return n},la=function(t,e,n){var i=n.length,r=rh(e+2);t[r]=255&i,t[r+1]=i>>>8,t[r+2]=255^t[r],t[r+3]=255^t[r+1];for(var s=0;i>s;++s)t[r+s+4]=n[s];return 8*(r+4+i)},Tc=function(t,e,n,i,r,s,o,a,l,u,c){It(e,c++,n),++r[256];for(var d=go(r,15),h=d[0],f=d[1],p=go(s,15),g=p[0],m=p[1],v=Rc(h),w=v[0],b=v[1],I=Rc(g),A=I[0],P=I[1],O=new He(19),S=0;w.length>S;++S)O[31&w[S]]++;for(S=0;A.length>S;++S)O[31&A[S]]++;for(var F=go(O,7),R=F[0],M=F[1],$=19;$>4&&!R[Pc[$-1]];--$);var N,Y,V,H,J=u+5<<3,fe=oi(r,En)+oi(s,zr)+o,Ae=oi(r,h)+oi(s,g)+o+14+3*$+oi(O,R)+(2*O[16]+3*O[17]+7*O[18]);if(fe>=J&&Ae>=J)return la(e,c,t.subarray(l,l+u));if(It(e,c,1+(fe>Ae)),c+=2,fe>Ae){N=Si(h,f),Y=h,V=Si(g,m),H=g;var ve=Si(R,M);for(It(e,c,b-257),It(e,c+5,P-1),It(e,c+10,$-4),c+=14,S=0;$>S;++S)It(e,c+3*S,R[Pc[S]]);c+=3*$;for(var xe=[w,A],Fe=0;2>Fe;++Fe){var ie=xe[Fe];for(S=0;ie.length>S;++S)It(e,c,ve[we=31&ie[S]]),c+=R[we],we>15&&(It(e,c,ie[S]>>>5&127),c+=ie[S]>>>12)}}else N=fg,Y=En,V=pg,H=zr;for(S=0;a>S;++S)if(i[S]>255){var we;si(e,c,N[257+(we=i[S]>>>18&31)]),c+=Y[we+257],we>7&&(It(e,c,i[S]>>>23&31),c+=Za[we]);var _e=31&i[S];si(e,c,V[_e]),c+=H[_e],_e>3&&(si(e,c,i[S]>>>5&8191),c+=Xa[_e])}else si(e,c,N[i[S]]),c+=Y[i[S]];return si(e,c,N[256]),c+Y[256]},gg=new Vn([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),mg=(function(){for(var t=new Vn(256),e=0;256>e;++e){for(var n=e,i=9;--i;)n=(1&n&&3988292384)^n>>>1;t[e]=n}return t})(),mo=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8};function vg(t,e){e===void 0&&(e={});var n=(function(){var d=4294967295;return{p(h){for(var f=d,p=0;h.length>p;++p)f=mg[255&f^h[p]]^f>>>8;d=f},d(){return 4294967295^d}}})(),i=t.length;n.p(t);var r,s,o,a,l,u=(a=10+((r=e).filename&&r.filename.length+1||0),l=8,(function(d,h,f,p,g,m){var v=d.length,w=new et(p+v+5*(1+Math.floor(v/7e3))+g),b=w.subarray(p,w.length-g),I=0;if(!h||8>v)for(var A=0;v>=A;A+=65535){var P=A+65535;v>P?I=la(b,I,d.subarray(A,P)):(b[A]=!0,I=la(b,I,d.subarray(A,v)))}else{for(var O=gg[h-1],S=O>>>13,F=8191&O,R=(1<A;++A){var we=V(A),_e=32767&A,Le=$[we];if(M[_e]=Le,$[we]=_e,A>=Fe){var ut=v-A;if((Ae>7e3||xe>24576)&&ut>423){I=Tc(d,b,0,H,J,fe,ve,xe,ie,A-ie,I),xe=Ae=ve=0,ie=A;for(var ce=0;286>ce;++ce)J[ce]=0;for(ce=0;30>ce;++ce)fe[ce]=0}var qe=2,dt=0,sn=F,Pe=_e-Le&32767;if(ut>2&&we==V(A-Pe))for(var Ie=Math.min(S,ut)-1,Et=Math.min(32767,A),kn=Math.min(258,ut);Et>=Pe&&--sn&&_e!=Le;){if(d[A+qe]==d[A+qe-Pe]){for(var je=0;kn>je&&d[A+je]==d[A+je-Pe];++je);if(je>qe){if(qe=je,dt=Pe,je>Ie)break;var In=Math.min(Pe,je-2),St=0;for(ce=0;In>ce;++ce){var xt=A-Pe+ce+32768&32767,nt=xt-M[xt]+32768&32767;nt>St&&(St=nt,Le=xt)}}}Pe+=(_e=Le)-(Le=M[_e])+32768&32767}if(dt){H[xe++]=268435456|oa[qe]<<18|Fc[dt];var Gt=31&oa[qe],Qn=31&Fc[dt];ve+=Za[Gt]+Xa[Qn],++J[257+Gt],++fe[Qn],Fe=A+qe,++Ae}else H[xe++]=d[A],++J[d[A]]}}I=Tc(d,b,!0,H,J,fe,ve,xe,ie,A-ie,I)}return sh(w,0,p+rh(I)+g)})(s=t,(o=e).level==null?6:o.level,o.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):12+o.mem,a,l)),c=u.length;return(function(d,h){var f=h.filename;if(d[0]=31,d[1]=139,d[2]=8,d[8]=2>h.level?4:h.level==9?2:0,d[9]=3,h.mtime!=0&&mo(d,4,Math.floor(new Date(h.mtime||Date.now())/1e3)),f){d[3]=8;for(var p=0;f.length>=p;++p)d[p+10]=f.charCodeAt(p)}})(u,e),mo(u,c-8,n.d()),mo(u,c-4,i),u}var _g=!!Ro||!!Na,oh="text/plain",mr=!1,ah=(t,e)=>{var n=t.split("#"),i=n[1],r=n[0].split("?"),s=r[0],o=r[1];if(!o)return t;var a=o.split("&").filter((l=>l.split("=")[0]!==e)).join("&");return s+(a?"?"+a:"")+(i?"#"+i:"")},hs=function(t,e,n){var i;n===void 0&&(n=!0);var r=t.split("?"),s=r[0],o=r[1],a=E({},e),l=(i=o?.split("&").map((c=>{var d,h=c.split("="),f=h[0],p=n&&(d=a[f])!==null&&d!==void 0?d:h[1];return delete a[f],f+"="+p})))!==null&&i!==void 0?i:[],u=(function(c,d){var h,f;d===void 0&&(d="&");var p=[];return te(c,(function(g,m){x(g)||x(m)||m==="undefined"||(h=encodeURIComponent((v=>v instanceof File)(g)?g.name:g.toString()),f=encodeURIComponent(m),p[p.length]=f+"="+h)})),p.join(d)})(a);return u&&l.push(u),l.length>0?s+"?"+l.join("&"):s},vo=t=>{if(t.Ji)return t.Ji;var e=t.data,n=t.compression;if(e){if(n===Oe.GZipJS){var i=vg((function(a,l){var u=a.length;if(typeof TextEncoder<"u")return new TextEncoder().encode(a);for(var c=new et(a.length+(a.length>>>1)),d=0,h=function(m){c[d++]=m},f=0;u>f;++f){if(d+5>c.length){var p=new et(d+8+(u-f<<1));p.set(c),c=p}var g=a.charCodeAt(f);128>g?h(g):2048>g?(h(192|g>>>6),h(128|63&g)):g>55295&&57344>g?(h(240|(g=65536+(1047552&g)|1023&a.charCodeAt(++f))>>>18),h(128|g>>>12&63),h(128|g>>>6&63),h(128|63&g)):(h(224|g>>>12),h(128|g>>>6&63),h(128|63&g))}return sh(c,0,d)})(On(e)),{mtime:0});return{contentType:oh,body:i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength),estimatedSize:i.byteLength}}if(n===Oe.Base64){var r=(function(a){return a&&btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,((l,u)=>String.fromCharCode(parseInt(u,16)))))})(On(e)),s=(a=>"data="+encodeURIComponent(typeof a=="string"?a:On(a)))(r);return{contentType:"application/x-www-form-urlencoded",body:s,estimatedSize:new Blob([s]).size}}var o=On(e);return{contentType:"application/json",body:o,estimatedSize:new Blob([o]).size}}},lh=t=>{var e,n,i=()=>t.transport==="sendBeacon"?{url:hs(t.url,{compression:Oe.Base64}),encodedBody:vo(E({},t,{compression:Oe.Base64,Ji:void 0}))}:{url:ah(t.url,"compression"),encodedBody:vo(E({},t,{compression:void 0,Ji:void 0}))};try{e=vo(t)}catch(r){if(Xl(t.compression,qn(t.url,"compression")))return k.error("Failed to gzip request body, sending uncompressed payload",r),i();throw r}return e&&Xl(t.compression,qn(t.url,"compression"))&&!((n=e.body)instanceof ArrayBuffer?To(new Uint8Array(n)):ArrayBuffer.isView(n)&&To(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)))?(mr=!0,i()):{url:t.url,encodedBody:e}},ch=t=>{try{return lh(t)}catch(e){return k.error(e),void(t.callback==null||t.callback({statusCode:0,error:e}))}},yg=(function(){var t=ne((function*(e){var n=On(e.data),i=yield(function(s,o,a){return $o.apply(this,arguments)})(n,ee.DEBUG,{rethrow:!0});if(!i)return e;var r=yield i.arrayBuffer();return E({},e,{Ji:{contentType:oh,body:r,estimatedSize:r.byteLength}})}));return function(e){return t.apply(this,arguments)}})(),wg=/Failed to fetch|NetworkError|Load failed/i,uh=t=>t?.name==="TypeError"&&wg.test(t?.message||""),dh=t=>{var e=ch(t);if(e){var n=e.url,i=e.encodedBody,r=i??{},s=r.contentType,o=r.body,a=r.estimatedSize,l=new Headers;te(t.headers,(function(p,g){l.append(g,p)})),s&&l.append("Content-Type",s);var u=null,c=!1;if(Vl){var d=new Vl;u={signal:d.signal,timeout:setTimeout((()=>{var p,g;c=!0,d.abort((p=t.timeout,(g=new Error("PostHog request timed out"+(p?" after "+p+"ms":""))).name="AbortError",g))}),t.timeout)}}var h=p=>{c&&p?.name==="AbortError"||uh(p)?k.warn(p):k.error(p),t.callback==null||t.callback({statusCode:0,error:p})};try{var f;Na(n,E({method:t?.method||"GET",headers:l,keepalive:t.method==="POST"&&!t.Yi&&52428.8>(a||0),body:o,signal:(f=u)==null?void 0:f.signal},t.fetchOptions)).then((p=>p.text().then((g=>{var m={statusCode:p.status,text:g};if(p.status===200)try{m.json=JSON.parse(g)}catch(v){k.error(v)}t.callback==null||t.callback(m)})))).catch(h).finally((()=>u?clearTimeout(u.timeout):null))}catch(p){u&&clearTimeout(u.timeout),h(p)}}},ca=t=>{try{var e,n=lh(t),i=n.url,r=n.encodedBody,s=r??{},o=s.body,a=s.estimatedSize;if(!o)return;var l=o instanceof Blob?o:new Blob([o],{type:s.contentType});if(Be.sendBeacon(i,l))return;var u=D(t.data)?t.data:(e=t.data)==null?void 0:e.batch;if(D(u)&&u.length>1&&(a??0)>16384){var c=Math.ceil(u.length/2),d=h=>D(t.data)?h:E({},t.data,{batch:h});return ca(E({},t,{data:d(u.slice(0,c))})),void ca(E({},t,{data:d(u.slice(c))}))}k.warn("Beacon of ~"+(a??0)+" bytes was rejected by the browser, falling back to fetch"),dh(E({},t,{Yi:!0}))}catch(h){k.warn("Beacon send failed",h)}},$c=(t,e,n,i)=>{var r=i==="query"?e==="POST"?"sent_at":"_":void 0;return hs(n===Oe.GZipJS?ah(t,"compression"):t,E({},r?{[r]:Date.now().toString()}:{},n===Oe.GZipJS?{}:{compression:n}))},vr=[];Na&&vr.push({transport:"fetch",method:dh}),Ro&&vr.push({transport:"XHR",method(t){var e=ch(t);if(e){var n=new Ro,i=e.encodedBody;n.open(t.method||"GET",e.url,!0);var r=i??{},s=r.contentType,o=r.body;te(t.headers,(function(a,l){n.setRequestHeader(l,a)})),s&&n.setRequestHeader("Content-Type",s),t.timeout&&(n.timeout=t.timeout),n.onreadystatechange=()=>{if(n.readyState===4){var a={statusCode:n.status,text:n.responseText};if(n.status===200)try{a.json=JSON.parse(n.responseText)}catch{}t.callback==null||t.callback(a)}},n.send(o)}}}),Be!=null&&Be.sendBeacon&&vr.push({transport:"sendBeacon",method:ca});var ua=3e3;class bg{constructor(e,n){this.Xi=!0,this.tr=[],this.er=_t(n?.flush_interval_ms||ua,250,5e3,k.createLogger("flush interval"),ua),this.ir=e}enqueue(e){this.tr.push(e),this.rr||this.nr()}unload(){this.sr();var e=this.tr.length>0?this.ar():{},n=Object.values(e);[...n.filter((i=>i.url.indexOf("/e")===0)),...n.filter((i=>i.url.indexOf("/e")!==0))].map((i=>{this.lr(E({},i,{transport:"sendBeacon"}))}))}enable(){this.Xi=!1,this.nr()}nr(){var e=this;this.Xi||(this.rr=setTimeout((()=>{if(this.sr(),this.tr.length>0){var n=this.ar(),i=function(){var s=n[r],o=new Date().getTime();s.data&&D(s.data)&&te(s.data,(a=>{a.offset=Math.abs(a.timestamp-o),delete a.timestamp})),e.lr(s)};for(var r in n)i()}}),this.er))}lr(e){try{this.ir(e)}catch(n){k.error(n)}}sr(){clearTimeout(this.rr),this.rr=void 0}ar(){var e={};return te(this.tr,(n=>{var i,r=n,s=(r?r.batchKey:null)||r.url;x(e[s])&&(e[s]=E({},r,{data:[]})),(i=e[s].data)==null||i.push(r.data)})),this.tr=[],e}}var Eg=["retriesPerformedSoFar"];class Sg{constructor(e){this.ur=!1,this.hr=3e3,this.tr=[],this._instance=e,this.tr=[],this.dr=!0,!x(_)&&"onLine"in _.navigator&&(this.dr=_.navigator.onLine,this.vr=()=>{this.dr=!0,this.cr()},this.pr=()=>{this.dr=!1},de(_,"online",this.vr),de(_,"offline",this.pr))}get length(){return this.tr.length}retriableRequest(e){var n=e.retriesPerformedSoFar,i=Du(e,Eg);At(n)&&(i.url=hs(i.url,{retry_count:n})),this._instance._send_request(E({},i,{callback:r=>{if(r.statusCode!==200&&(400>r.statusCode||r.statusCode>=500)){if((r.statusCode===0?3:10)>(n??0))return void this.At(E({retriesPerformedSoFar:n},i));r.statusCode===0&&k.warn("Request failed before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped retrying after "+(n??0)+" retries.")}i.callback==null||i.callback(r)}}))}At(e){var n=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=n+1;var i=(function(o){var a=3e3*Math.pow(2,o),l=a/2,u=Math.min(18e5,a),c=Math.random()-.5;return Math.ceil(u+c*(u-l))})(n),r=Date.now()+i;this.tr.push({retryAt:r,requestOptions:e});var s="Enqueued failed request for retry in "+i;navigator.onLine||(s+=" (Browser is offline)"),k.warn(s),this.ur||(this.ur=!0,this.gr())}gr(){if(this.mr&&clearTimeout(this.mr),this.tr.length===0)return this.ur=!1,void(this.mr=void 0);this.mr=setTimeout((()=>{this.dr&&this.tr.length>0&&this.cr(),this.gr()}),this.hr)}cr(){var e=Date.now(),n=[],i=this.tr.filter((s=>e>s.retryAt||(n.push(s),!1)));if(this.tr=n,i.length>0)for(var r of i)this.retriableRequest(r.requestOptions)}unload(){for(var e of(this.mr&&(clearTimeout(this.mr),this.mr=void 0),this.ur=!1,x(_)||(this.vr&&(_.removeEventListener("online",this.vr),this.vr=void 0),this.pr&&(_.removeEventListener("offline",this.pr),this.pr=void 0)),this.tr)){var n=e.requestOptions;try{this._instance._send_request(E({},n,{transport:"sendBeacon"}))}catch(i){k.error(i)}}this.tr=[]}}class xg{constructor(e){this.yr=()=>{var n,i,r,s;this.br||(this.br={});var o=this.scrollElement(),a=this.scrollY(),l=o?Math.max(0,o.scrollHeight-o.clientHeight):0,u=a+(o?.clientHeight||0),c=o?.scrollHeight||0;this.br.lastScrollY=Math.ceil(a),this.br.maxScrollY=Math.max(a,(n=this.br.maxScrollY)!==null&&n!==void 0?n:0),this.br.maxScrollHeight=Math.max(l,(i=this.br.maxScrollHeight)!==null&&i!==void 0?i:0),this.br.lastContentY=u,this.br.maxContentY=Math.max(u,(r=this.br.maxContentY)!==null&&r!==void 0?r:0),this.br.maxContentHeight=Math.max(c,(s=this.br.maxContentHeight)!==null&&s!==void 0?s:0)},this._instance=e}get _r(){return this._instance.config.scroll_root_selector}getContext(){return this.br}resetContext(){var e=this.br;return setTimeout(this.yr,0),e}startMeasuringScrollPosition(){de(_,"scroll",this.yr,{capture:!0}),de(_,"scrollend",this.yr,{capture:!0}),de(_,"resize",this.yr)}scrollElement(){if(!this._r)return _?.document.documentElement;var e=D(this._r)?this._r:[this._r];for(var n of e){var i=_?.document.querySelector(n);if(i)return i}}wr(e){var n=e==="y"?"scrollTop":"scrollLeft";if(this._r){var i=this.scrollElement();return i&&i[n]||0}return _?e==="y"?_.scrollY||_.pageYOffset||_.document.documentElement.scrollTop||0:_.scrollX||_.pageXOffset||_.document.documentElement.scrollLeft||0:0}scrollY(){return this.wr("y")}scrollX(){return this.wr("x")}}var kg=t=>Zd(t?.config.mask_personal_data_properties,t?.config.custom_personal_data_properties,t?.config.disable_capture_url_hashes);class Mc{constructor(e,n,i,r){this.kr=s=>{var o=this.Sr();if(!o||o.sessionId!==s){var a={sessionId:s,props:this.Cr(this._instance)};this.Mr.register({[Zo]:a})}},this._instance=e,this.Tr=n,this.Mr=i,this.Cr=r||kg,this.Tr.onSessionId(this.kr)}Sr(){return this.Mr.props[Zo]}getSetOnceProps(){var e,n=(e=this.Sr())==null?void 0:e.props;return n?"r"in n?Xd(n,this._instance.config.disable_capture_url_hashes):{$referring_domain:n.referringDomain,$pathname:n.initialPathName,utm_source:n.utm_source,utm_campaign:n.utm_campaign,utm_medium:n.utm_medium,utm_content:n.utm_content,utm_term:n.utm_term}:{}}getSessionProps(){var e={};return te(Ga(this.getSetOnceProps()),((n,i)=>{i==="$current_url"&&(i="url"),e["$session_entry_"+Mo(i)]=n})),e}}class Qa{on(e,n){return this.Er[e]||(this.Er[e]=[]),this.Er[e].push(n),()=>{this.Er[e]=this.Er[e].filter((i=>i!==n))}}emit(e,n){for(var i of this.Er[e]||[])i(n);for(var r of this.Er["*"]||[])r(e,n)}constructor(){this.Er={}}}var ai=le("[SessionId]");class Lc{on(e,n){return this.Ir.on(e,n)}constructor(e,n,i){var r;if(this.Pr=null,this.Rr=[],this.Ar=void 0,this.Fr=!1,this.Ir=new Qa,this.Lr=(u,c)=>!(!At(u)||!At(c))&&Math.abs(u-c)>this.sessionTimeoutMs,!e.persistence)throw new Error("SessionIdManager requires a PostHogPersistence instance");if(e.config.cookieless_mode===Tt)throw new Error('SessionIdManager cannot be used with cookieless_mode="always"');this.Ne=e.config,this.Mr=e.persistence,this.Or=void 0,this.Dr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.$r=n||Rt,this.Nr=i||Rt;var s=this.Ne.persistence_name||this.Ne.token;if(this._sessionTimeoutMs=1e3*_t(this.Ne.session_idle_timeout_seconds||1800,60,36e3,ai.createLogger("session_idle_timeout_seconds"),1800),e.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.qr(),this.jr="ph_"+s+"_window_id",this.Br="ph_"+s+"_primary_window_exists",this.Hr()){var o=ge.H(this.jr),a=ge.H(this.Br);o&&!a?this.Or=o:ge.q(this.jr),ge.F(this.Br,!0)}if((r=this.Ne.bootstrap)!=null&&r.sessionID)try{var l=(u=>{var c=this.Ne.bootstrap.sessionID.replace(/-/g,"");if(c.length!==32)throw new Error("Not a valid UUID");if(c[12]!=="7")throw new Error("Not a UUIDv7");return parseInt(c.substring(0,12),16)})();this.Ur(this.Ne.bootstrap.sessionID,new Date().getTime(),l)}catch(u){ai.error("Invalid sessionID in bootstrap",u)}this.zr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(e){return x(this.Rr)&&(this.Rr=[]),this.Rr.push(e),this.Dr&&e(this.Dr,this.Or),()=>{this.Rr=this.Rr.filter((n=>n!==e))}}Hr(){return this.Ne.persistence!=="memory"&&!this.Mr.xi&&ge.N()}Wr(e){e!==this.Or&&(this.Or=e,this.Hr()&&ge.F(this.jr,e))}Vr(){return this.Or?this.Or:this.Hr()?ge.H(this.jr):null}Zr(e){var n=this.Pr;return!We(n)&&!We(e)&&5e3>Math.abs(e-n)}Ur(e,n,i){var r=n!==this._sessionActivityTimestamp,s=!(e!==this.Dr||i!==this._sessionStartTimestamp);this._sessionStartTimestamp=i,this._sessionActivityTimestamp=n,this.Dr=e,s&&!r||s&&this.Zr(n)||(this.Pr=n,this.Mr.register({[Nn]:[n,e,i]}))}Gr(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return At(n)&&n>0}Qr(){this.Gr()?this.Mr.refreshKey(Nn):(this.Mr.flush(),this.Mr.load())}Kr(){var e;if(!We(this._sessionActivityTimestamp)&&this._sessionActivityTimestamp!==this.Pr){this.Qr();var n=this.Jr();n[1]===this.Dr&&n[2]===this._sessionStartTimestamp&&(this.Pr=this._sessionActivityTimestamp,this.Mr.register({[Nn]:[this._sessionActivityTimestamp,(e=this.Dr)!==null&&e!==void 0?e:null,this._sessionStartTimestamp]}),this.Mr.flush())}}Yr(){var e=this.Jr()[0],n=At(e)?e:0,i=At(this._sessionActivityTimestamp)?this._sessionActivityTimestamp:0;return Math.max(n,i)}Xr(e){return this.Qr(),this.Lr(e,this.Yr())}Jr(){var e=this.Mr.props[Nn];return D(e)&&e.length===2&&e.push(e[0]),e||[0,null,0]}resetSessionId(){this.Pr=null,clearTimeout(this.tn),this.tn=void 0,this.Ur(null,null,null)}destroy(){this.Fr=!0,this.Kr(),clearTimeout(this.tn),this.tn=void 0,this.Ar&&_&&(_.removeEventListener(Dr,this.Ar,{capture:!1}),this.Ar=void 0),this.Rr=[]}zr(){this.Ar=()=>{this.Kr(),this.Hr()&&ge.q(this.Br)},de(_,Dr,this.Ar,{capture:!1})}checkAndGetSessionAndWindowId(e,n){if(e===void 0&&(e=!1),n===void 0&&(n=null),this.Ne.cookieless_mode===Tt)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode="always"');var i=n||new Date().getTime(),r=this.Jr(),s=r[1],o=r[2],a=this.Yr(),l=this.Vr(),u=At(o)&&Math.abs(i-o)>864e5,c=!1,d=!1,h=!s,f=s,p=!h&&!e&&this.Lr(i,a);if(p){(p=this.Xr(i))||ai.info("cross-tab refresh kept the session alive",{sessionId:s});var g=this.Jr();s=g[1],o=g[2]}h||p||u?(s=this.$r(),l=this.Nr(),ai.info("new session ID generated",{sessionId:s,windowId:l,changeReason:{noSessionId:h,activityTimeout:p,sessionPastMaximumLength:u}}),o=i,c=!0):(l||(l=this.Nr(),c=!0),(d=s!==f)&&(ai.info("adopted cross-tab session id",{sessionId:s,windowId:l}),c=!0));var m=At(a)&&e&&!u?a:i,v=At(o)?o:new Date().getTime();this.Wr(l),this.Ur(s,m,v),e||this.qr();var w={noSessionId:h,activityTimeout:p,sessionPastMaximumLength:u,crossTabAdoption:d};return c&&this.Rr.forEach((b=>b(s,l,w))),{sessionId:s,windowId:l,sessionStartTimestamp:v,changeReason:c?w:void 0,lastActivityTimestamp:a}}qr(){this.Fr||(clearTimeout(this.tn),this.tn=setTimeout((()=>{if(!this.Fr)if(this.Xr(new Date().getTime())){var e=this.Dr;this.resetSessionId(),this.Ir.emit("forcedIdleReset",{idleSessionId:e})}else this.qr()}),1.1*this.sessionTimeoutMs))}}var hh=function(t,e){if(!t)return!1;var n=t.userAgent;if(n&&ec(n,e))return!0;try{var i=t?.userAgentData;if(i!=null&&i.brands&&i.brands.some((r=>ec(r?.brand,e))))return!0}catch{}return!!t.webdriver};function fh(){return(fh=ne((function*(){var t=Be?.userAgentData;if(t!=null&&t.getHighEntropyValues)try{var e=yield t.getHighEntropyValues(["model"]),n=e?.model;return K(n)&&n.length>0?n:void 0}catch(i){return void k.info("Unable to resolve $device_model from userAgentData.getHighEntropyValues",i)}}))).apply(this,arguments)}var Vr=function(t,e){if(!(function(n){try{new RegExp(n)}catch{return!1}return!0})(e))return!1;try{return new RegExp(e).test(t)}catch{return!1}};function _o(t,e,n){return On({distinct_id:t,userPropertiesToSet:e,userPropertiesToSetOnce:n})}var ph={exact:(t,e)=>e.some((n=>t.some((i=>n===i)))),is_not:(t,e)=>e.every((n=>t.every((i=>n!==i)))),regex:(t,e)=>e.some((n=>t.some((i=>Vr(n,i))))),not_regex:(t,e)=>e.every((n=>t.every((i=>!Vr(n,i))))),icontains:(t,e)=>e.map(nr).some((n=>t.map(nr).some((i=>n.includes(i))))),not_icontains:(t,e)=>e.map(nr).every((n=>t.map(nr).every((i=>!n.includes(i))))),gt:(t,e)=>e.some((n=>{var i=parseFloat(n);return!isNaN(i)&&t.some((r=>i>parseFloat(r)))})),lt:(t,e)=>e.some((n=>{var i=parseFloat(n);return!isNaN(i)&&t.some((r=>it.toLowerCase();function gh(t,e){return!t||Object.entries(t).every((n=>{var i=n[1],r=e?.[n[0]];if(x(r)||We(r))return!1;var s=[String(r)],o=ph[i.operator];return!!o&&o(i.values,s)}))}var da="custom",Nc="i.posthog.com",Ig=/^\/static\//;class Cg{constructor(e){this.en={},this.instance=e}get apiHost(){var e=this.instance.config.api_host.trim().replace(/\/$/,"");return e==="https://app.posthog.com"?"https://us.i.posthog.com":e}get flagsApiHost(){var e=this.instance.config.flags_api_host;return e?e.trim().replace(/\/$/,""):this.apiHost}get uiHost(){var e,n=(e=this.instance.config.ui_host)==null?void 0:e.replace(/\/$/,"");return n||(n=this.apiHost.replace("."+Nc,".posthog.com")),n==="https://app.posthog.com"?"https://us.posthog.com":n}get region(){return this.en[this.apiHost]||(this.en[this.apiHost]=/https:\/\/(app|us|us-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"us":/https:\/\/(eu|eu-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"eu":da),this.en[this.apiHost]}rn(e){if(Ig.test(e)){var n=this.instance.config.asset_host;if(typeof n=="string")return n.trim().replace(/\/$/,"")||void 0}}endpointFor(e,n){if(n===void 0&&(n=""),n&&(n=n[0]==="/"?n:"/"+n),e==="ui")return this.uiHost+n;if(e==="flags")return this.flagsApiHost+n;if(e==="assets"){var i=this.rn(n);if(i)return""+i+n}if(this.region===da)return this.apiHost+n;var r=Nc+n;switch(e){case"assets":return"https://"+this.region+"-assets."+r;case"api":return"https://"+this.region+"."+r}}}function mh(t){var e;return!((e=t.conditions)==null||(e=e.events)==null||(e=e.values)==null||!e.length)}var Z=le("[Surveys]"),vh="seenSurvey_",_h=t=>{try{var e=(n=>((i,r)=>""+vh+(function(s){return s.current_iteration&&s.current_iteration>0?s.id+"_"+s.current_iteration:s.id})(r))(0,n))(t);if(localStorage.getItem(e))return;localStorage.setItem(e,"true")}catch(n){Z.error("Failed to persist survey seen state",n)}},Ag=[fo.Popover,fo.Widget,fo.API],Pg={ignoreConditions:!1,ignoreDelay:!1,displayType:sa.Popover},Fg=le("[PostHog ExternalIntegrations]"),Rg={intercom:"intercom-integration",crispChat:"crisp-chat-integration"};class Tg{constructor(e){this._instance=e}ai(e,n){var i;(i=T.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this._instance,e,(r=>{if(r)return Fg.error("failed to load script",r);n()}))}startIfEnabledOrStop(){var e=this,n=function(){var s,o,a,l=i[0],u=i[1];!u||(s=T.__PosthogExtensions__)!=null&&(s=s.integrations)!=null&&s[l]||e.ai(Rg[l],(()=>{var c;(c=T.__PosthogExtensions__)==null||(c=c.integrations)==null||(c=c[l])==null||c.start(e._instance)})),!u&&(o=T.__PosthogExtensions__)!=null&&(o=o.integrations)!=null&&o[l]&&((a=T.__PosthogExtensions__)==null||(a=a.integrations)==null||(a=a[l])==null||a.stop())};for(var i of Object.entries((r=this._instance.config.integrations)!==null&&r!==void 0?r:{})){var r;n()}}}class $g{constructor(e,n){this.rt=e,this.nn=n,this.sn=new Map,this.an=!1}add(e){var n=this;return ne((function*(){if(n.an)throw new Error("Cannot add an extension to a disposed ExtensionRuntime");if(n.sn.has(e.name))throw new Error('Browser extension "'+e.name+'" is already registered');n.sn.set(e.name,e);try{var i=e.setup(n.nn);i&&(yield i)}catch(s){var r=n.sn.get(e.name)===e;r&&n.sn.delete(e.name),n.rt.error('Failed to set up browser extension "'+e.name+'"',s),r&&n.ln(e)}}))()}dispose(){if(!this.an){this.an=!0;var e=Array.from(this.sn.values()).reverse();for(var n of(this.sn.clear(),e))this.ln(n)}}ln(e){try{var n=e.dispose==null?void 0:e.dispose();n&&Ne(n.then)&&n.then(void 0,(i=>{this.rt.error('Failed to dispose browser extension "'+e.name+'"',i)}))}catch(i){this.rt.error('Failed to dispose browser extension "'+e.name+'"',i)}}}class Mg{constructor(e){this._instance=e}initialize(){}get(e){var n=this._instance.persistence;if(typeof e=="string")return n?.get_property(e);var i={};for(var r of e){var s=n?.get_property(r);x(s)||(i[r]=s)}return i}set(e,n){var i;(i=this._instance.persistence)==null||i.register(typeof e=="string"?{[e]:n}:e)}remove(e){var n;(n=this._instance.persistence)==null||n.unregister(e)}}var Oc="extensionsRemoteConfig";class Lg{constructor(e){this.an=!1,this.instance=e,this.rt=k,this.un=e.hn,this.kv=new Mg(e),this.onEvent=n=>tr(this.instance.on("eventCaptured",(i=>{try{n({event:i.event,properties:i.properties})}catch(r){this.rt.error("Browser extension event listener failed",r)}}))),this.onRemoteConfig=n=>{if(this.an)return tr((()=>{}));var i=s=>{try{n(s)}catch(o){this.rt.error("Browser extension remote config listener failed",o)}},r=this.instance.dn.on(Oc,i);return this.un&&i(this.un),tr(r)},this.vn=new $g(k.createLogger("[BrowserExtensions]"),this)}get logger(){return this.rt}get distinctId(){return this.instance.get_distinct_id()}get anonymousId(){var e;return(e=this.instance.get_property(Fi))!==null&&e!==void 0?e:this.distinctId}get deviceId(){var e=this.instance.get_property(Fi);return typeof e=="string"?e:void 0}get library(){return{name:ee.LIB_NAME,version:ee.LIB_VERSION}}get initialPersonProperties(){var e,n;return(e=(n=this.instance.persistence)==null?void 0:n.get_initial_props())!==null&&e!==void 0?e:{}}get groups(){return this.instance.getGroups()}get session(){try{var e,n,i,r,s=(e=this.instance.sessionManager)==null?void 0:e.checkAndGetSessionAndWindowId(!0);return{sessionId:(n=s?.sessionId)!==null&&n!==void 0?n:"",windowId:(i=s?.windowId)!==null&&i!==void 0?i:"",sessionStartTimestamp:(r=s?.sessionStartTimestamp)!==null&&r!==void 0?r:0}}catch{return{sessionId:"",windowId:"",sessionStartTimestamp:0}}}get projectToken(){return this.instance.config.token}add(e){return this.vn.add(e)}capture(e,n,i){var r=this;return ne((function*(){i?r.instance.capture(e,n,{timestamp:i.timestamp,uuid:i.uuid,$set:i.set,$set_once:i.setOnce}):r.instance.capture(e,n)}))()}registerDynamicEventProperties(e){return tr(this.instance.cn(e))}handleRemoteConfig(e){this.an||(this.un=e,this.instance.dn.emit(Oc,e))}sendRequest(e,n){var i=this;return ne((function*(){var r;n===void 0&&(n={});var s=i.instance.requestRouter.endpointFor((r=n.target)!==null&&r!==void 0?r:"api",e),o={method:n.method,url:n.query?hs(s,n.query):s,data:n.body,headers:n.headers,timeout:n.timeoutMs,fireCallbackOnDrop:!0,transport:n.transport,compression:n.compression,timestampMode:n.sentAt};return n.transport==="sendBeacon"?(i.instance._send_request(o),{statusCode:202}):new Promise((a=>{o.callback=a,i.instance._send_request(o)}))}))()}dispose(){this.an||(this.an=!0,this.vn.dispose())}}var xi={},yo=0,Gr=()=>{},Bc='Consent opt in/out is not valid with cookieless_mode="always" and will be ignored',li="Surveys module not available",Dc="sanitize_properties is deprecated. Use before_send instead",yh="Invalid value for property_denylist config: ",Ng=["token","distinct_id",Id],Mn="posthog",wh=!_g&&Ue?.indexOf("MSIE")===-1&&Ue?.indexOf("Mozilla")===-1,wo=t=>{var e;return E({api_host:"https://us.i.posthog.com",flags_api_host:null,ui_host:null,asset_host:null,token:"",autocapture:!0,cross_subdomain_cookie:Op(C?.location),persistence:"localStorage+cookie",persistence_name:"",cookie_persisted_properties:[],loaded:Gr,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:"if_capture_pageview",defaults:t??"unset",__preview_deferred_init_extensions:!1,__preview_external_dependency_versioned_paths:!1,__preview_cookie_wins_on_conflict:!1,debug:ue&&K(ue?.search)&&ue.search.indexOf("__posthog_debug=true")!==-1||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!1,disableDeviceModel:!1,disable_external_dependency_loading:!1,strict_script_versioning:!1,enable_recording_console_log:void 0,secure_cookie:(_==null||(e=_.location)==null?void 0:e.protocol)==="https:",ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:"localStorage",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_feature_flags_dedup_per_session:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error(n){k.error("Bad HTTP status: "+n.statusCode+" "+n.text)},get_device_id:n=>n,capture_performance:void 0,name:"posthog",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:ta,before_send:void 0,get_current_url:void 0,request_queue_config:{flush_interval_ms:ua},error_tracking:{},_onCapture:Gr},(n=>({rageclick:n&&n>="2026-05-30"?{content_ignorelist:Yp,ignore_text_selection:!0}:!n||"2025-11-30">n||{content_ignorelist:!0},capture_pageview:!n||"2025-05-24">n||"history_change",session_recording:n&&n>="2026-06-25"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6},streamNetworkBody:!0}:n&&n>="2026-05-30"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6}}:n&&n>="2025-11-30"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:n&&n>="2026-01-30"?"head":"body",internal_or_test_user_hostname:n&&n>="2026-01-30"?/^(localhost|127\.0\.0\.1)$/:void 0,persistence_save_debounce_ms:n&&n>="2026-05-30"?250:0,split_storage:!(!n||"2026-05-30">n),detect_google_search_app:!(!n||"2026-05-30">n),disable_capture_url_hashes:!(!n||"2026-06-25">n)}))(t))},Og=[["process_person","person_profiles"],["xhr_headers","request_headers"],["cookie_name","persistence_name"],["disable_cookie","disable_persistence"],["__preview_disable_beacon","disable_beacon"],["store_google","save_campaign_params"],["verbose","debug"]],jc=t=>{var e={};for(var n of Og){var i=n[0],r=n[1];x(t[i])||(e[r]=t[i])}var s=oe({},e,t),o=t.__preview_external_dependency_versioned_paths;return x(o)||(x(t.strict_script_versioning)&&(s.strict_script_versioning=!!o),K(o)&&x(t.asset_host)&&(s.asset_host=o)),D(t.property_blacklist)&&(x(t.property_denylist)?s.property_denylist=t.property_blacklist:D(t.property_denylist)?s.property_denylist=[...t.property_blacklist,...t.property_denylist]:k.error(yh+t.property_denylist)),s};class Bg{constructor(){this.__forceAllowLocalhost=!1}get fn(){return this.__forceAllowLocalhost}set fn(e){k.error("WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`"),this.__forceAllowLocalhost=e}}class ze{pn(e,n){if(e){var i=this.sn.indexOf(e);i!==-1&&this.sn.splice(i,1)}return this.sn.push(n),n.initialize==null||n.initialize(),n}gn(){return this.config.cookieless_mode===Tt||this.config.cookieless_mode===gn&&this.consent.isRejected()}get decideEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}get flagsEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}constructor(){var e;this.webPerformance=new Bg,this.mn=!1,this.version=ee.LIB_VERSION,this.yn=new Set,this.bn="",this.dn=new Qa,this.sn=[],this._n=[],this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=wo(),this.SentryIntegration=ig,this.sentryIntegration=i=>(function(r,s){var o=qd(r,s);return{name:Wd,processEvent:a=>o(a)}})(this,i),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint="/e/",this.wn=!1,this.kn=null,this.xn=null,this.Sn=null,this.scrollManager=new xg(this),this.pageViewManager=new kc(this),this.rateLimiter=new hg(this),this.requestRouter=new Cg(this),this.consent=new qp(this),this.externalIntegrations=new Tg(this);var n=(e=ze.__defaultExtensionClasses)!==null&&e!==void 0?e:{};this.featureFlags=n.featureFlags&&new n.featureFlags(this),this.toolbar=n.toolbar&&new n.toolbar(this),this.surveys=n.surveys&&new n.surveys(this),this.conversations=n.conversations&&new n.conversations(this),this.logs=n.logs&&new n.logs(this),this.metrics=n.metrics&&new n.metrics(this),this.experiments=n.experiments&&new n.experiments(this),this.exceptions=n.exceptions&&new n.exceptions(this),this.people={set:(i,r,s)=>{var o=K(i)?{[i]:r}:i;this.setPersonProperties(o),s?.({})},set_once:(i,r,s)=>{var o=K(i)?{[i]:r}:i;this.setPersonProperties(void 0,o),s?.({})}},this.on("eventCaptured",(i=>k.info('send "'+i?.event+'"',i)))}init(e,n,i){if(i&&i!==Mn){var r,s=(r=xi[i])!==null&&r!==void 0?r:new ze;return s._init(e,n,i),xi[i]=s,xi[Mn][i]=s,s}return this._init(e,n,i)}_init(e,n,i){var r,s;n===void 0&&(n={});var o,a=K(e)?e.trim():"";if(!a)return k.critical("PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()"),this;if(this.__loaded)return a!==((o=this.config)==null?void 0:o.token)?console.warn("[PostHog.js]","You have already initialized PostHog with a different project token! Re-initializing is a no-op, so events will keep going to the project this instance was initialized with. To capture into a second project, load PostHog once, then initialize a named instance after the SDK has loaded, e.g. posthog.init('"+a+"', { ... }, 'project2')"):console.warn("[PostHog.js]","You have already initialized PostHog! Re-initializing is a no-op"),this;this.__loaded=!0,this.config=wo(n.defaults),n.debug=this.Cn(n.debug),this.Mn=n,this.Tn=[],n.person_profiles?this.xn=n.person_profiles:n.process_person&&(this.xn=n.process_person);var l=wo(n.defaults),u=jc(n),c=oe({},l,u,{name:i,token:a});ae(l.rageclick)&&ae(u.rageclick)&&(c.rageclick=oe({},l.rageclick,u.rageclick)),ae(l.session_recording)&&ae(u.session_recording)&&(c.session_recording=oe({},l.session_recording,u.session_recording)),this.set_config(c),this.config.on_xhr_error&&k.error("on_xhr_error is deprecated. Use on_request_error instead"),this.compression=n.disable_compression?void 0:Oe.GZipJS;var d=this.En();if(this.persistence=new ho(this.config,d),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new ho(E({},this.config,{persistence:"sessionStorage"}),d,!1),this.bn="ph_"+(this.config.persistence_name||this.config.token)+"_session_registered_properties",this.config.persistence!=="memory"&&!d&&ge.N()){var h=ge.H(this.bn);D(h)&&h.forEach((P=>{K(P)&&this.yn.add(P)}))}else ge.q(this.bn);var f=E({},this.persistence.props),p=E({},this.sessionPersistence.props);this.register({$initialization_time:new Date().toISOString()}),this.In=new bg((P=>this.Pn(P)),this.config.request_queue_config),this.Rn=new Sg(this),this.__request_queue=[];var g=this.gn();if(g||(this.sessionManager=new Lc(this),this.sessionPropsManager=new Mc(this,this.sessionManager,this.persistence),this.sessionManager.onSessionId(((P,O,S)=>{(S!=null&&S.activityTimeout||S!=null&&S.sessionPastMaximumLength||S!=null&&S.crossTabAdoption)&&this.An()}))),this.Fn(),this.config.__preview_deferred_init_extensions?(k.info("Deferring extension initialization to improve startup performance"),setTimeout((()=>{this.Ln(g)}),0)):(k.info("Initializing extensions synchronously"),this.Ln(g)),ee.DEBUG=ee.DEBUG||this.config.debug,ee.DEBUG&&k.info("Starting in debug mode",{this:this,config:n,thisC:E({},this.config),p:f,s:p}),!this.config.identity_distinct_id||(r=n.bootstrap)!=null&&r.distinctID||(n.bootstrap=E({},n.bootstrap,{distinctID:this.config.identity_distinct_id,isIdentifiedID:!0})),((s=n.bootstrap)==null?void 0:s.distinctID)!==void 0){var m=n.bootstrap.distinctID,v=this.get_distinct_id(),w=this.persistence.get_property(Xe);if(n.bootstrap.isIdentifiedID&&v!=null&&v!==m&&w===An)this.identify(m);else if(n.bootstrap.isIdentifiedID&&v!=null&&v!==m&&w===on)k.warn("Bootstrap distinctID differs from an already-identified user. The existing identity is preserved. Call reset() before reinitializing if you intend to switch users.");else{var b=this.config.get_device_id(Rt()),I=n.bootstrap.isIdentifiedID?b:m;this.persistence.set_property(Xe,n.bootstrap.isIdentifiedID?on:An),this.register({distinct_id:m,$device_id:I})}}if(g)this.register_once({distinct_id:Ji,$device_id:null},"");else if(!this.get_distinct_id()){var A=this.config.get_device_id(Rt());this.register_once({distinct_id:A,$device_id:A},""),this.persistence.set_property(Xe,An)}return de(_,"onpagehide"in self?"pagehide":"unload",this._handle_unload.bind(this),{passive:!1}),n.segment?(function(P,O){var S=P.config.segment;if(!S)return O();(function(F,R){var M=F.config.segment;if(!M)return R();var $=Y=>{var V=()=>Y.anonymousId()||Rt();F.config.get_device_id=V,Y.id()&&(F.register({distinct_id:Y.id(),$device_id:V()}),F.persistence.set_property(Xe,on)),R()},N=M.user();"then"in N&&Ne(N.then)?N.then($):$(N)})(P,(()=>{S.register((F=>{typeof Promise<"u"&&Promise.resolve||co.warn("This browser does not have Promise support, and can not use the segment integration");var R=(M,$)=>{if(!$)return M;M.event.userId||M.event.anonymousId===F.get_distinct_id()||(co.info("No userId set, resetting PostHog"),F.reset()),M.event.userId&&M.event.userId!==F.get_distinct_id()&&(co.info("UserId set, identifying with PostHog"),F.identify(M.event.userId));var N=F.calculateEventProperties($,M.event.properties);return M.event.properties=Object.assign({},N,M.event.properties),M};return{name:"PostHog JS",type:"enrichment",version:"1.0.0",isLoaded:()=>!0,load:()=>Promise.resolve(),track:M=>R(M,M.event.event),page:M=>R(M,$n),identify:M=>R(M,oo),screen:M=>R(M,"$screen")}})(P)).then((()=>{O()}))}))})(this,(()=>this.On())):this.On(),Ne(this.config._onCapture)&&this.config._onCapture!==Gr&&(k.warn("onCapture is deprecated. Please use `before_send` instead"),this.on("eventCaptured",(P=>this.config._onCapture(P.event,P)))),this.config.ip&&k.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or "Discard IP data" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this.config.disableDeviceModel||(function(){return fh.apply(this,arguments)})().then((P=>{P&&this.register({[ro]:P})})).catch(Gr),this}Fn(){var e,n,i,r,s,o,a=(e=(n=this.config.__extensionClasses)==null?void 0:n.featureFlags)!==null&&e!==void 0?e:(i=ze.__defaultExtensionClasses)==null?void 0:i.featureFlags;a&&(this.featureFlags&&this.featureFlags instanceof a||((r=this.Dn)==null||r.call(this),this.Dn=void 0,this.featureFlags=new a(this)),Ne(this.featureFlags.onReloading)&&Ne(this.featureFlags.setup)?this.Dn||(this.Dn=this.featureFlags.onReloading((()=>{this.dn.emit("featureFlagsReloading",!0)})),this.$n().add(this.featureFlags)):(s=(o=this.featureFlags).initialize)==null||s.call(o))}Ln(e){var n,i,r,s,o,a,l,u=performance.now(),c=E({},ze.__defaultExtensionClasses,this.config.__extensionClasses),d=[];c.exceptions&&this.sn.push(this.exceptions=(n=this.exceptions)!==null&&n!==void 0?n:new c.exceptions(this)),c.historyAutocapture&&this.sn.push(this.historyAutocapture=new c.historyAutocapture(this)),c.tracingHeaders&&this.sn.push(this.tracingHeaders=new c.tracingHeaders(this)),c.siteApps&&this.sn.push(this.siteApps=new c.siteApps(this)),c.sessionRecording&&!e&&this.sn.push(this.sessionRecording=new c.sessionRecording(this)),this.config.disable_scroll_properties||d.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),c.autocapture&&this.sn.push(this.autocapture=new c.autocapture(this)),c.surveys&&this.sn.push(this.surveys=(i=this.surveys)!==null&&i!==void 0?i:new c.surveys(this)),c.logs&&this.sn.push(this.logs=(r=this.logs)!==null&&r!==void 0?r:new c.logs(this)),c.metrics&&this.sn.push(this.metrics=(s=this.metrics)!==null&&s!==void 0?s:new c.metrics(this)),c.conversations&&this.sn.push(this.conversations=(o=this.conversations)!==null&&o!==void 0?o:new c.conversations(this)),c.productTours&&this.sn.push(this.productTours=new c.productTours(this)),c.heatmaps&&this.sn.push(this.heatmaps=new c.heatmaps(this)),c.webVitalsAutocapture&&this.sn.push(this.webVitalsAutocapture=new c.webVitalsAutocapture(this)),c.exceptionObserver&&this.sn.push(this.exceptionObserver=new c.exceptionObserver(this)),c.deadClicksAutocapture&&this.sn.push(this.deadClicksAutocapture=new c.deadClicksAutocapture(this,ng)),c.toolbar&&this.sn.push(this.toolbar=(a=this.toolbar)!==null&&a!==void 0?a:new c.toolbar(this)),c.experiments&&this.sn.push(this.experiments=(l=this.experiments)!==null&&l!==void 0?l:new c.experiments(this)),this.sn.forEach((h=>{h.initialize&&d.push((()=>{h.initialize==null||h.initialize()}))})),d.push((()=>{if(this.Nn){var h=this.Nn;this.Nn=void 0,this.sn.forEach((f=>f.onRemoteConfig==null?void 0:f.onRemoteConfig(h)))}})),this.qn(d,u)}qn(e,n){for(;e.length>0;){if(this.config.__preview_deferred_init_extensions&&performance.now()-n>=30&&e.length>0)return void setTimeout((()=>{this.qn(e,n)}),0);var i=e.shift();if(i)try{i()}catch(s){k.error("Error initializing extension:",s)}}var r=Math.round(performance.now()-n);this.register_for_session({[Cd]:this.config.__preview_deferred_init_extensions?"deferred":"synchronous",[Ad]:r}),this.config.__preview_deferred_init_extensions&&k.info("PostHog extensions initialized ("+r+"ms)")}Zi(e){var n;if(!C||!C.body)return k.info("document not ready yet, trying again in 500 milliseconds..."),void setTimeout((()=>{this.Zi(e)}),500);if(this.config.__preview_deferred_init_extensions&&(this.Nn=e),this.hn=e,this.compression=void 0,e.ok){var i,r=e.config;r.supportedCompression&&!this.config.disable_compression&&(this.compression=B(r.supportedCompression,Oe.GZipJS)?Oe.GZipJS:B(r.supportedCompression,Oe.Base64)?Oe.Base64:void 0),(i=r.analytics)!=null&&i.endpoint&&(this.analyticsDefaultEndpoint=r.analytics.endpoint)}this.set_config({person_profiles:this.xn?this.xn:ta}),(n=this.jn)==null||n.handleRemoteConfig(e),this.sn.forEach((s=>s.onRemoteConfig==null?void 0:s.onRemoteConfig(e)))}On(){try{this.config.loaded(this)}catch(i){k.critical("`loaded` function failed",i)}if(this.Bn(),this.config.internal_or_test_user_hostname&&ue!=null&&ue.hostname){var e=ue.hostname,n=this.config.internal_or_test_user_hostname;(typeof n=="string"?e===n:n.test(e))&&this.setInternalOrTestUser()}this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||this.gn())&&this.Hn()}),1),this.Un=new eh(this),this.Un.load()}Bn(){var e;this.is_capturing()&&this.config.request_batching&&((e=this.In)==null||e.enable())}_dom_loaded(){this.is_capturing()&&Zi(this.__request_queue,(e=>this.Pn(e))),this.__request_queue=[],this.Bn()}_handle_unload(){var e,n,i,r,s;(e=this.surveys)==null||e.handlePageUnload==null||e.handlePageUnload(),(n=this.metrics)==null||n.flush("sendBeacon"),this.config.request_batching?(this.zn()&&this.capture(so),(i=this.logs)==null||i.flushLogs("sendBeacon"),(r=this.In)==null||r.unload(),(s=this.Rn)==null||s.unload()):this.zn()&&this.capture(so,null,{transport:"sendBeacon"})}_send_request(e){this.__loaded?wh?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)?e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:429})):(e.transport=e.transport||this.config.api_transport,e.headers=E({},this.config.request_headers,e.headers),e.compression=e.compression==="best-available"?this.compression:e.compression,(x(this.config.disable_beacon)?this.config.__preview_disable_beacon:this.config.disable_beacon)&&(e.disableTransport=["sendBeacon"]),e.fetchOptions=e.fetchOptions||this.config.fetch_options,(n=>{var i,r,s,o=E({},n);o.timeout=o.timeout||6e4;var a,l,u,c,d,h=(i=o.transport)!==null&&i!==void 0?i:"fetch";h==="sendBeacon"&&x(o.compression)&&o.data&&(o.compression=Oe.Base64),o.method==="POST"&&o.data&&(o.timestampMode==="capture-body"?o.data={api_key:(l=(d=(c=D(a=o.data)?a:[a])[0])==null||(u=d.properties)==null?void 0:u.token)!==null&&l!==void 0?l:d?.token,batch:c,sent_at:new Date().toISOString()}:o.timestampMode==="body"&&(o.data=(function(m,v){return v===void 0&&(v=new Date().toISOString()),D(m)?m.map((w=>E({},w,{sent_at:v}))):E({},m,{sent_at:v})})(o.data))),o.url=$c(o.url,o.method,o.compression,o.timestampMode);var f=vr.filter((m=>!o.disableTransport||!m.transport||!o.disableTransport.includes(m.transport))),p=(r=(s=(function(m,v){for(var w=0;m.length>w;w++)if(m[w].transport===h)return m[w]})(f))==null?void 0:s.method)!==null&&r!==void 0?r:f[0].method;if(!p)throw new Error("No available transport method");var g=m=>{try{p(m)}catch(v){uh(v)?k.warn(v):k.error(v),o.callback==null||o.callback({statusCode:0,error:v})}};h!=="sendBeacon"&&o.data&&o.compression===Oe.GZipJS&&Df&&typeof Promise<"u"&&!mr?yg(o).then((m=>{g(m)})).catch((m=>{if(Ql(m))return mr=!0,void g(E({},o,{compression:void 0,url:$c(n.url,n.method,void 0,n.timestampMode)}));(v=>{if(!v||typeof v!="object")return!1;var w="name"in v?String(v.name):"";return Ql(v)||w===ju})(m)&&(mr=!0),g(o)})):p(o)})(E({},e,{callback:n=>{var i,r;this.rateLimiter.checkForLimiting(n),400>n.statusCode||(i=(r=this.config).on_request_error)==null||i.call(r,n),e.callback==null||e.callback(n)}}))):e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:0}))}Pn(e){this.Rn?this.Rn.retriableRequest(e):this._send_request(e)}_execute_array(e){yo++;try{var n,i=[],r=[],s=[];Zi(e,(a=>{if(a)if(D(n=a[0]))s.push(a);else if(Ne(a))try{a.call(this)}catch(l){k.error("Error executing queued PostHog call",a,l)}else D(a)&&n==="alias"?i.push(a):D(a)&&n.indexOf("capture")!==-1&&Ne(this[n])?s.push(a):r.push(a)}));var o=function(a,l){Zi(a,(function(u){try{if(D(u[0])){var c=l;te(u,(function(d){c=c[d[0]].apply(c,d.slice(1))}))}else l[u[0]].apply(l,u.slice(1))}catch(d){k.error("Error executing queued PostHog call",u,d)}}))};o(i,this),o(r,this),o(s,this)}finally{yo--}}push(e){if(yo>0&&D(e)&&K(e[0])){var n=ze.prototype[e[0]];Ne(n)&&n.apply(this,e.slice(1))}else this._execute_array([e])}capture(e,n,i){var r,s,o,a,l;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.In){if(this.is_capturing())if(!x(e)&&K(e)){var u=!this.config.opt_out_useragent_filter&&this._is_bot();if(!u||this.config.__preview_capture_bot_pageviews){var c=i!=null&&i.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(c==null||!c.isRateLimited){n!=null&&n.$current_url&&!K(n?.$current_url)&&(k.error("Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value."),n==null||delete n.$current_url),e!=="$exception"||i!=null&&i.Wn||k.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var d=new Date,h=i?.timestamp||d,f=rc(i?.uuid,Rt),p={uuid:f,event:e,properties:this.calculateEventProperties(e,n||{},h,f)};e===$n&&this.config.__preview_capture_bot_pageviews&&u&&(p.event="$bot_pageview",p.properties.$browser_type="bot"),c&&(p.properties.$lib_rate_limit_remaining_tokens=c.remainingTokens);var g=e==="$feature_flag_called"&&p.properties.$feature_flag_has_experiment===!1&&this.get_property(Mr)===!0;i?.$set&&!g&&(p.$set=i?.$set);var m=i?.$unset;m&&(p.$unset=m);var v,w,b,I=g?void 0:this.Vn(i?.$set_once,e!==uc,e===oo);if(I&&(p.$set_once=I),i!=null&&i._noTruncate||(s=this.config.properties_string_max_length,o=p,a=$=>K($)?$.slice(0,s):$,l=new Set,p=(function $(N,Y){if(N!==Object(N))return a?a(N):N;if(!l.has(N)){var V;if(l.add(N),D(N))V=[],Zi(N,(J=>{V.push($(J))}));else{var H={};te(N,((J,fe)=>{l.has(J)||(H[fe]=$(J))})),V=H}return V}})(o)),p.timestamp=h,x(i?.timestamp)||(p.properties.$event_time_override_provided=!0,p.properties.$event_time_override_system_time=d),g&&(p.properties=(function($,N){N===void 0&&(N=[]);var Y={},V=H=>{$[H]!==void 0&&(Y[H]=$[H])};return jf.forEach(V),N.forEach(V),Y})(p.properties,Ng)),e===Mt.DISMISSED||e===Mt.SENT){var A=n?.[po.SURVEY_ID],P=n?.[po.SURVEY_ITERATION];_h({id:A,current_iteration:P}),p.$set=E({},p.$set,{[(v={id:A,current_iteration:P},w=e===Mt.SENT?"responded":"dismissed",b="$survey_"+w+"/"+v.id,v.current_iteration&&v.current_iteration>0&&(b="$survey_"+w+"/"+v.id+"/"+v.current_iteration),b)]:!0})}else e===Mt.SHOWN&&(p.$set=E({},p.$set,{[po.SURVEY_LAST_SEEN_DATE]:new Date().toISOString()}));if(e===dg.SHOWN){var O=n?.[Cc.TOUR_TYPE];O&&(p.$set=E({},p.$set,{[Cc.TOUR_LAST_SEEN_DATE+"/"+O]:new Date().toISOString()}))}var S=E({},p.properties.$set,p.$set);if(Nt(S)||this.setPersonPropertiesForFlags(S),!j(this.config.before_send)){var F=this.Pt(p);if(!F)return;(p=F).uuid=rc(p.uuid,Rt)}this.dn.emit("eventCaptured",p);var R=(r=i?._url)!==null&&r!==void 0?r:this.requestRouter.endpointFor("api",this.analyticsDefaultEndpoint),M={method:"POST",url:R,data:p,compression:"best-available",timestampMode:i?._batchKey==="recordings"||/\/s\/(?:\?|$)/.test(R)?"body":"capture-body",batchKey:i?._batchKey,transport:i?.transport};return!this.config.request_batching||i&&(i==null||!i._batchKey)||i!=null&&i.send_instantly?this.Pn(M):this.In.enqueue(M),p}k.critical("This capture call is ignored due to client rate limiting.")}}else k.error("No event name provided to posthog.capture")}else k.uninitializedWarning("posthog.capture")}_addCaptureHook(e){return this.on("eventCaptured",(n=>e(n.event,n)))}$n(){var e;return(e=this.jn)!==null&&e!==void 0?e:this.jn=new Lg(this)}cn(e){this._n.push(e);var n=!0;return()=>{if(n){n=!1;var i=this._n.indexOf(e);i!==-1&&this._n.splice(i,1)}}}calculateEventProperties(e,n,i,r,s){if(i=i||new Date,!this.persistence||!this.sessionPersistence)return n;var o=s?void 0:this.persistence.remove_event_timer(e),a=E({},n);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,this.gn()&&(a[Id]=!0),e==="$snapshot"){var l=E({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!K(a.distinct_id)&&!Se(a.distinct_id)||Lo(a.distinct_id))&&k.error("Invalid distinct_id for replay event. This indicates a bug in your implementation"),a}var u,c=(function(A,P,O,S){var F,R,M,$;if(S===void 0&&(S=!1),!Ue)return{};var N,Y=A?[...zn,...P||[]]:[],V=(function(kn){for(var je=0;nc.length>je;je++){var In=nc[je],St=In[1],xt=In[0].exec(kn),nt=xt&&(Ne(St)?St(xt,kn):St);if(nt)return nt}return["",""]})(Ue),H=V[0],J=V[1],fe=(N=typeof navigator<"u"?navigator:void 0)!=null&&N.brave?{brave:!0}:{},Ae={};x(O)||(Ae.detectGoogleSearchApp=O);var ve={},xe=(F=navigator)==null||(F=F.userAgentData)==null?void 0:F.platform,Fe=(R=navigator)==null?void 0:R.maxTouchPoints,ie=_==null||(M=_.screen)==null?void 0:M.width,we=_==null||($=_.screen)==null?void 0:$.height,_e=_?.devicePixelRatio;x(xe)||(ve.userAgentDataPlatform=xe),x(Fe)||(ve.maxTouchPoints=Fe),x(ie)||(ve.screenWidth=ie),x(we)||(ve.screenHeight=we),x(_e)||(ve.devicePixelRatio=_e);var Le,ut,ce,qe,dt,sn,Pe,Ie,Et=oe(Ga({$os:H,$os_version:J,$browser:dd(Ue,navigator.vendor,fe,Ae),$device:ic(Ue),$device_type:(ut=Ue,ce=ve,Ie=ic(ut),Ie===Gu||Ie===Vu||Ie==="Kobo"||Ie==="Kindle Fire"||Ie===od?Un:Ie===Ai||Ie===Dn||Ie===Pi||Ie===Oo?"Console":Ie===Yu?"Wearable":Ie?Ye:ce?.userAgentDataPlatform==="Android"&&((qe=ce?.maxTouchPoints)!==null&&qe!==void 0?qe:0)>0?600>Math.min((dt=ce?.screenWidth)!==null&&dt!==void 0?dt:0,(sn=ce?.screenHeight)!==null&&sn!==void 0?sn:0)/((Pe=ce?.devicePixelRatio)!==null&&Pe!==void 0?Pe:1)?Ye:Un:"Desktop"),$timezone:Qd(),$timezone_offset:lg()}),{$current_url:Ti(S?Qt(ue?.href):ue?.href,Y,$i),$host:ue?.host,$pathname:ue?.pathname,$raw_user_agent:Ue.length>1e3?Ue.substring(0,997)+"...":Ue,$browser_version:sp(Ue,navigator.vendor,fe,Ae),$browser_language:Ic(),$browser_language_prefix:(Le=Ic(),typeof Le=="string"?Le.split("-")[0]:void 0),$screen_height:_?.screen.height,$screen_width:_?.screen.width,$viewport_height:_?.innerHeight,$viewport_width:_?.innerWidth,$lib:ee.LIB_NAME,$lib_version:ee.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3});return ee.SDK_DIST_CHANNEL&&(Et.$sdk_dist_channel=ee.SDK_DIST_CHANNEL),Et})(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties,this.config.detect_google_search_app,this.config.disable_capture_url_hashes);if(this.sessionManager){var d=this.sessionManager.checkAndGetSessionAndWindowId(s,i.getTime()),h=d.windowId;a.$session_id=d.sessionId,a.$window_id=h}this.sessionPropsManager&&oe(a,this.sessionPropsManager.getSessionProps());try{var f;this.sessionRecording&&oe(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=(f=this.Rn)==null?void 0:f.length}catch(A){a.$sdk_debug_error_capturing_properties=String(A)}if(this.requestRouter.region===da&&(a.$lib_custom_api_host=this.config.api_host),u=e!==$n||s?e!==so||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(i):this.pageViewManager.doPageView(i,r),a=oe(a,u),e===$n&&C&&(a.title=C.title),!x(o)){var p=i.getTime()-o;a.$duration=parseFloat((p/1e3).toFixed(3))}Ue&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?"bot":"browser");var g=this.persistence.properties(),m=this.sessionPersistence.properties();te(["$referrer","$referring_domain"],(A=>{A in g&&delete m[A]}));var v={};if(this._n.length>0)for(var w of this._n.slice())try{oe(v,w())}catch(A){k.error("Failed to produce browser extension event properties",A)}(a=oe({},c,g,m,E({},v,a))).$is_identified=this._isIdentified(),D(this.config.property_denylist)?te(this.config.property_denylist,(function(A){delete a[A]})):k.error(yh+this.config.property_denylist+" or property_blacklist config: "+this.config.property_blacklist);var b=this.config.sanitize_properties;b&&(k.error(Dc),a=b(a,e));var I=this.Zn();return a.$process_person_profile=I,I&&!s&&this.Gn("_calculate_event_properties"),a}Vn(e,n,i){var r;if(n===void 0&&(n=!0),i===void 0&&(i=!1),!this.persistence||!this.Zn()||this.mn&&!i)return e;var s=this.persistence.get_initial_props(),o=(r=this.sessionPropsManager)==null?void 0:r.getSetOnceProps(),a=oe({},s,o||{},e||{}),l=this.config.sanitize_properties;return l&&(k.error(Dc),a=l(a,"$set_once")),n&&(this.mn=!0),Nt(a)?void 0:a}register(e,n){var i;(i=this.persistence)==null||i.register(e,n)}register_once(e,n,i){var r;(r=this.persistence)==null||r.register_once(e,n,i)}register_for_session(e){var n;(n=this.sessionPersistence)==null||n.register(e),Object.keys(e).forEach((i=>this.yn.add(i))),this.Qn()}unregister(e){var n;(n=this.persistence)==null||n.unregister(e)}unregister_for_session(e){var n;(n=this.sessionPersistence)==null||n.unregister(e),this.yn.delete(e),this.Qn()}Kn(e,n){this.register({[e]:n})}An(){this.yn.forEach((e=>{var n;(n=this.sessionPersistence)==null||n.unregister(e)})),this.yn.clear(),this.Qn()}Qn(){var e;if(this.bn)if(this.config.persistence==="memory"||(e=this.sessionPersistence)!=null&&e.xi||!ge.N())ge.q(this.bn);else{var n=[];this.yn.forEach((i=>n.push(i))),n.length>0?ge.F(this.bn,n):ge.q(this.bn)}}getFeatureFlag(e,n){var i;return(i=this.featureFlags)==null?void 0:i.getFeatureFlag(e,n)}getFeatureFlagPayload(e){var n;return(n=this.featureFlags)==null?void 0:n.getFeatureFlagPayload(e)}getFeatureFlagResult(e,n){var i;return(i=this.featureFlags)==null?void 0:i.getFeatureFlagResult(e,n)}getAllFeatureFlags(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.getAllFeatureFlags())!==null&&e!==void 0?e:[]}isFeatureEnabled(e,n){var i,r;return(i=(r=this.featureFlags)==null?void 0:r.isFeatureEnabled(e,n))!==null&&i!==void 0?i:n?.defaultValue}reloadFeatureFlags(){var e;(e=this.featureFlags)==null||e.reloadFeatureFlags()}updateFlags(e,n,i){var r;(r=this.featureFlags)==null||r.updateFlags(e,n,i)}updateEarlyAccessFeatureEnrollment(e,n,i){var r;(r=this.featureFlags)==null||r.updateEarlyAccessFeatureEnrollment(e,n,i)}getEarlyAccessFeatures(e,n,i){var r;return n===void 0&&(n=!1),(r=this.featureFlags)==null?void 0:r.getEarlyAccessFeatures(e,n,i)}on(e,n){return this.dn.on(e,n)}onFeatureFlags(e){return this.featureFlags?this.featureFlags.onFeatureFlags(e):(e([],{},{errorsLoading:!0}),()=>{})}onSurveysLoaded(e){return this.surveys?this.surveys.onSurveysLoaded(e):(e([],{isLoaded:!1,error:li}),()=>{})}onSessionId(e){var n,i;return(n=(i=this.sessionManager)==null?void 0:i.onSessionId(e))!==null&&n!==void 0?n:()=>{}}getSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getSurveys(e,n):e([],{isLoaded:!1,error:li})}getActiveMatchingSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getActiveMatchingSurveys(e,n):e([],{isLoaded:!1,error:li})}renderSurvey(e,n){var i;(i=this.surveys)==null||i.renderSurvey(e,n)}displaySurvey(e,n){var i;n===void 0&&(n=Pg),(i=this.surveys)==null||i.displaySurvey(e,n)}cancelPendingSurvey(e){var n;(n=this.surveys)==null||n.cancelPendingSurvey(e)}canRenderSurvey(e){var n,i;return(n=(i=this.surveys)==null?void 0:i.canRenderSurvey(e))!==null&&n!==void 0?n:{visible:!1,disabledReason:li}}canRenderSurveyAsync(e,n){var i,r;return n===void 0&&(n=!1),(i=(r=this.surveys)==null?void 0:r.canRenderSurveyAsync(e,n))!==null&&i!==void 0?i:Promise.resolve({visible:!1,disabledReason:li})}Jn(e){return!e||Lo(e)?(k.critical("Unique user id has not been set in posthog.identify"),!1):e===Ji?(k.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.'),!1):!["distinct_id","distinctid"].includes(e.toLowerCase())&&!["undefined","null"].includes(e.toLowerCase())||(k.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'),!1)}identify(e,n,i){if(!this.__loaded||!this.persistence)return k.uninitializedWarning("posthog.identify");if(Se(e)&&(e=e.toString(),k.warn("The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.")),this.Jn(e)&&this.Gn("posthog.identify")){var r=this.get_distinct_id();this.register({$user_id:e}),this.get_property(Fi)||this.register_once({$had_persisted_distinct_id:!0,$device_id:r},""),e!==r&&e!==this.get_property(fi)&&(this.unregister(fi),this.register({distinct_id:e}));var s,o=(this.persistence.get_property(Xe)||An)===An,a=e!==r,l=!a&&o;if(a&&o)this.persistence.set_property(Xe,on),this.setPersonPropertiesForFlags({$set:n||{},$set_once:i||{}},!1),this.capture(oo,{distinct_id:e,$anon_distinct_id:r},{$set:n||{},$set_once:i||{}}),this.Sn=_o(e,n,i),(s=this.featureFlags)==null||s.setAnonymousDistinctId(r);else if(l){this.persistence.set_property(Xe,on);var u=n||{},c=i||{};this.setPersonPropertiesForFlags({$set:u,$set_once:c},!1),this.capture("$set",{$set:u,$set_once:c}),this.Sn=_o(e,n,i)}else(n||i)&&this.setPersonProperties(n,i);a?(this.reloadFeatureFlags(),this.featureFlags?this.featureFlags.resetFlagCallReported():this.unregister(mn)):l&&(n||i)&&this.reloadFeatureFlags()}}setPersonProperties(e,n){if((e||n)&&this.Gn("posthog.setPersonProperties")){var i=_o(this.get_distinct_id(),e,n);this.Sn!==i?(this.setPersonPropertiesForFlags({$set:e||{},$set_once:n||{}},!0),this.capture("$set",{$set:e||{},$set_once:n||{}}),this.Sn=i):k.info("A duplicate setPersonProperties call was made with the same properties. It has been ignored.")}}unsetPersonProperties(e){var n,i=(D(e)?e:[e]).filter((r=>K(r)&&r.length>0));i.length!==0&&this.Gn("posthog.unsetPersonProperties")&&((n=this.featureFlags)==null||n.unsetPersonPropertiesForFlags(i,!0),this.capture("$set",{$unset:i}),this.Sn=null)}group(e,n,i){if(e&&n){var r=this.getGroups(),s=r[e]!==n;if(s&&this.resetGroupPropertiesForFlags(e),this.register({$groups:E({},r,{[e]:n})}),s||i){var o={$group_type:e,$group_key:n};i&&(o.$group_set=i),this.capture(uc,o)}i&&this.setGroupPropertiesForFlags({[e]:i}),s&&!i&&this.reloadFeatureFlags()}else k.error("posthog.group requires a group type and group key")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(e,n){var i;n===void 0&&(n=!0),(i=this.featureFlags)==null||i.setPersonPropertiesForFlags(e,n)}resetPersonPropertiesForFlags(e){var n;e===void 0&&(e=!0),(n=this.featureFlags)==null||n.resetPersonPropertiesForFlags(e)}setGroupPropertiesForFlags(e,n){var i;n===void 0&&(n=!0),this.Gn("posthog.setGroupPropertiesForFlags")&&((i=this.featureFlags)==null||i.setGroupPropertiesForFlags(e,n))}resetGroupPropertiesForFlags(e){var n;(n=this.featureFlags)==null||n.resetGroupPropertiesForFlags(e)}reset(e){this.Yn(e)}Yn(e,n){var i,r,s,o,a,l,u,c,d,h;if(n===void 0&&(n=!1),k.info("reset"),!this.__loaded)return k.uninitializedWarning("posthog.reset");var f,p=this.get_property(Fi),g=this.get_property(ro),m=this.get_property(vn),v=this.is_capturing();if(this.consent.reset(),n||!v||this.is_capturing()||console.warn("[PostHog.js]","reset() cleared the stored consent, and capturing is now off because of `opt_out_capturing_by_default`. Call opt_in_capturing() again, and prefer calling reset() before opting in rather than after."),(i=this.persistence)==null||i.clear(),(r=this.sessionPersistence)==null||r.clear(),this.yn.clear(),this.Qn(),x(m)||(f=this.persistence)==null||f.register({[vn]:m}),(s=this.surveys)==null||s.reset(),(o=this.Un)==null||o.stop(),(a=this.featureFlags)==null||a.reset(),(l=this.conversations)==null||l.reset(),(u=this.logs)==null||u.reset(),(c=this.metrics)==null||c.reset(),(d=this.persistence)==null||d.set_property(Xe,An),(h=this.sessionManager)==null||h.resetSessionId(),this.Sn=null,this.config.cookieless_mode===Tt)this.register_once({distinct_id:Ji,$device_id:null},"");else{var w=this.config.get_device_id(Rt());this.register_once({distinct_id:w,$device_id:e?w:p},""),e||x(g)||this.register({[ro]:g})}this.register({$last_posthog_reset:new Date().toISOString()},1),delete this.config.identity_distinct_id,delete this.config.identity_hash,this.reloadFeatureFlags()}shutdown(e){var n=this;return ne((function*(){var i,r,s,o,a,l,u;if(n.__loaded){(i=n.Un)==null||i.stop(),(r=n.jn)==null||r.dispose(),(s=n.sessionRecording)==null||s.dispose(),(o=n.logs)==null||o.flushLogs("sendBeacon"),(a=n.metrics)==null||a.flush("sendBeacon"),(l=n.In)==null||l.unload(),(u=n.Rn)==null||u.unload();try{var c;(c=n.featureFlags)==null||c.destroy()}catch(d){k.error("Error while destroying feature flags",d)}}else k.uninitializedWarning("posthog.shutdown")}))()}setIdentity(e,n){var i;this.config.identity_distinct_id=e,this.config.identity_hash=n,this.alias(e),(i=this.conversations)==null||i.Xn()}clearIdentity(){var e;delete this.config.identity_distinct_id,delete this.config.identity_hash,(e=this.conversations)==null||e.ts()}get_distinct_id(){return this.get_property("distinct_id")}getGroups(){return this.get_property("$groups")||{}}get_session_id(){var e,n;return(e=(n=this.sessionManager)==null?void 0:n.checkAndGetSessionAndWindowId(!0).sessionId)!==null&&e!==void 0?e:""}get_session_replay_url(e){if(!this.sessionManager)return"";var n=this.sessionManager.checkAndGetSessionAndWindowId(!0),i=n.sessionStartTimestamp,r=this.requestRouter.endpointFor("ui","/project/"+this.config.token+"/replay/"+n.sessionId);if(e!=null&&e.withTimestamp&&i){var s,o=(s=e.timestampLookBack)!==null&&s!==void 0?s:10;if(!i)return r;r+="?t="+Math.max(Math.floor((new Date().getTime()-i)/1e3)-o,0)}return r}alias(e,n){return e===this.get_property(wd)?(k.critical("Attempting to create alias for existing People user - aborting."),-2):this.Gn("posthog.alias")?(x(n)&&(n=this.get_distinct_id()),e!==n?(this.Kn(fi,e),this.capture("$create_alias",{alias:e,distinct_id:n})):(k.warn("alias matches current distinct_id - skipping api call."),this.identify(e),-1)):void 0}set_config(e){var n=E({},this.config);if(ae(e)){var i,r,s,o,a,l,u,c,d,h,f,p;oe(this.config,jc(e));var g=this.En();(i=this.persistence)==null||i.update_config(this.config,n,g),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new ho(E({},this.config,{persistence:"sessionStorage"}),g,!1);var m=this.Cn(this.config.debug);at(m)&&(this.config.debug=m),at(this.config.debug)&&(this.config.debug?(ee.DEBUG=!0,re.N()&&re.F("ph_debug",!0),k.info("set_config",{config:e,oldConfig:n,newConfig:E({},this.config)})):(ee.DEBUG=!1,re.N()&&re.q("ph_debug"))),(r=this.featureFlags)==null||r.updateConfig==null||r.updateConfig(this.config,this.Qi()),(s=this.exceptionObserver)==null||s.onConfigChange(),(o=this.exceptions)==null||o.onConfigChange(),(a=this.sessionRecording)==null||a.startIfEnabledOrStop(),(l=this.tracingHeaders)==null||l.startIfEnabledOrStop(),(u=this.autocapture)==null||u.startIfEnabled(),(c=this.heatmaps)==null||c.startIfEnabled(),(d=this.exceptionObserver)==null||d.startIfEnabledOrStop(),(h=this.deadClicksAutocapture)==null||h.startIfEnabledOrStop(),(f=this.surveys)==null||f.loadIfEnabled(),this.es(),(p=this.externalIntegrations)==null||p.startIfEnabledOrStop()}}_overrideSDKInfo(e,n){ee.LIB_NAME=e,ee.LIB_VERSION=n}startSessionRecording(e){var n,i,r,s,o,a=e===!0,l={sampling:a||!(e==null||!e.sampling),linked_flag:a||!(e==null||!e.linked_flag),url_trigger:a||!(e==null||!e.url_trigger),event_trigger:a||!(e==null||!e.event_trigger)};Object.values(l).some(Boolean)&&((n=this.sessionManager)==null||n.checkAndGetSessionAndWindowId(),l.sampling&&((i=this.sessionRecording)==null||i.overrideSampling()),l.linked_flag&&((r=this.sessionRecording)==null||r.overrideLinkedFlag()),l.url_trigger&&((s=this.sessionRecording)==null||s.overrideTrigger("url")),l.event_trigger&&((o=this.sessionRecording)==null||o.overrideTrigger("event"))),this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var e;return!((e=this.sessionRecording)==null||!e.started)}captureException(e,n){if(this.exceptions){var i=new Error("PostHog syntheticException"),r=this.exceptions.buildProperties(e,{handled:!0,syntheticException:i});return this.exceptions.sendExceptionEvent(E({},r,n))}}addExceptionStep(e,n){var i;(i=this.exceptions)==null||i.addExceptionStep(e,n)}captureLog(e){var n;(n=this.logs)==null||n.captureLog(e)}get logger(){var e,n;return(e=(n=this.logs)==null?void 0:n.logger)!==null&&e!==void 0?e:ze.rs}startExceptionAutocapture(e){this.set_config({capture_exceptions:e==null||e})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(e){var n,i;return(n=(i=this.toolbar)==null?void 0:i.loadToolbar(e))!==null&&n!==void 0&&n}get_property(e){var n;return(n=this.persistence)==null?void 0:n.props[e]}getSessionProperty(e){var n;return(n=this.sessionPersistence)==null?void 0:n.props[e]}toString(){var e,n=(e=this.config.name)!==null&&e!==void 0?e:Mn;return n!==Mn&&(n=Mn+"."+n),n}_isIdentified(){var e,n;return((e=this.persistence)==null?void 0:e.get_property(Xe))===on||((n=this.sessionPersistence)==null?void 0:n.get_property(Xe))===on}Zn(){var e,n;return!(this.config.person_profiles==="never"||this.config.person_profiles===ta&&!this._isIdentified()&&Nt(this.getGroups())&&((e=this.persistence)==null||(e=e.props)==null||!e[fi])&&((n=this.persistence)==null||(n=n.props)==null||!n[Or]))}zn(){return this.config.capture_pageleave===!0||this.config.capture_pageleave==="if_capture_pageview"&&(this.config.capture_pageview===!0||this.config.capture_pageview==="history_change")}createPersonProfile(){this.Zn()||this.Gn("posthog.createPersonProfile")&&this.setPersonProperties({},{})}setInternalOrTestUser(){this.Gn("posthog.setInternalOrTestUser")&&this.setPersonProperties({$internal_or_test_user:!0})}Gn(e){return this.config.person_profiles==="never"?(k.error(e+' was called, but process_person is set to "never". This call will be ignored.'),!1):(this.Kn(Or,!0),!0)}En(){if(this.config.cookieless_mode==="always")return!0;var e=this.consent.isOptedOut();return this.config.disable_persistence||e&&!(!this.config.opt_out_persistence_by_default&&this.config.cookieless_mode!==gn)}es(){var e,n,i,r,s=this.En();return((e=this.persistence)==null?void 0:e.xi)!==s&&((i=this.persistence)==null||i.set_disabled(s)),((n=this.sessionPersistence)==null?void 0:n.xi)!==s&&((r=this.sessionPersistence)==null||r.set_disabled(s)),s&&(this.yn.clear(),this.Qn()),s}opt_in_capturing(e){var n;if(this.config.cookieless_mode!==Tt){if(this.gn()){var i,r,s,o,a;this.Yn(!0,!0),(i=this.sessionManager)==null||i.destroy(),(r=this.pageViewManager)==null||r.destroy(),this.sessionManager=new Lc(this),this.pageViewManager=new kc(this),this.persistence&&(this.sessionPropsManager=new Mc(this,this.sessionManager,this.persistence));var l,u=(s=(o=this.config.__extensionClasses)==null?void 0:o.sessionRecording)!==null&&s!==void 0?s:(a=ze.__defaultExtensionClasses)==null?void 0:a.sessionRecording;u&&(this.sessionRecording=this.pn(this.sessionRecording,new u(this)),this.hn&&((l=this.sessionRecording)==null||l.onRemoteConfig==null||l.onRemoteConfig(this.hn)))}var c,d;this.consent.optInOut(!0),this.es(),this.Bn(),(n=this.sessionRecording)==null||n.startIfEnabledOrStop(),this.config.cookieless_mode==gn&&((c=this.surveys)==null||c.loadIfEnabled()),(x(e?.captureEventName)||e!=null&&e.captureEventName)&&this.capture((d=e?.captureEventName)!==null&&d!==void 0?d:"$opt_in",e?.captureProperties,{send_instantly:!0}),this.config.capture_pageview&&this.Hn()}else k.warn(Bc)}opt_out_capturing(){var e,n,i;this.config.cookieless_mode!==Tt?(this.config.cookieless_mode===gn&&this.consent.isOptedIn()&&this.Yn(!0,!0),this.consent.optInOut(!1),this.es(),this.config.cookieless_mode===gn&&(this.register({distinct_id:Ji,$device_id:null}),(e=this.sessionRecording)==null||e.stopRecording(),this.sessionRecording=void 0,(n=this.sessionManager)==null||n.destroy(),(i=this.pageViewManager)==null||i.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,this.config.capture_pageview&&this.Hn(),this.Bn())):k.warn(Bc)}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var e=this.consent.consent;return e===1?"granted":e===0?"denied":"pending"}is_capturing(){return this.config.cookieless_mode===Tt||(this.config.cookieless_mode===gn?this.consent.isRejected()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.es()}_is_bot(){return Be?hh(Be,this.config.custom_blocked_useragents):void 0}Hn(){C&&(C.visibilityState==="visible"?this.wn||(this.wn=!0,this.capture($n,{title:C.title},{send_instantly:!0}),this.kn&&(C.removeEventListener(Br,this.kn),this.kn=null)):this.kn||(this.kn=this.Hn.bind(this),de(C,Br,this.kn)))}debug(e){e===!1?(_?.console.log("You've disabled debug mode."),this.set_config({debug:!1})):(_?.console.log("You're now in debug mode. All calls to PostHog will be logged in your console.\nYou can disable this with `posthog.debug(false)`."),this.set_config({debug:!0}))}Qi(){var e=this.Mn||{};return"advanced_disable_flags"in e?!!e.advanced_disable_flags:this.config.advanced_disable_flags!==!1?!!this.config.advanced_disable_flags:this.config.advanced_disable_decide===!0?(k.warn("Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version."),!0):(function(n,i,r,s,o){var a=i in n&&!j(n[i]),l=r in n&&!j(n[r]);return a?n[i]:!!l&&(o&&o.warn("Config field '"+r+"' is deprecated. Please use '"+i+"' instead. The old field will be removed in a future major version."),n[r])})(e,"advanced_disable_flags","advanced_disable_decide",0,k)}Pt(e){var n;if(j(this.config.before_send))return e;var i=Object.keys((n=e.properties)!==null&&n!==void 0?n:{}).filter(Gf),r=D(this.config.before_send)?this.config.before_send:[this.config.before_send],s=e;for(var o of r){if(s=o(s),j(s)){var a="Event '"+e.event+"' was rejected in beforeSend function";return Vf(e.event)?k.warn(a+". This can cause unexpected behavior."):k.info(a),null}s.properties&&!Nt(s.properties)||k.warn("Event '"+e.event+"' has no properties after beforeSend function, this is likely an error.")}for(var l of i)if(s.properties&&j(s.properties[l]))return k.warn("Event '"+e.event+"' had its '"+l+"' property removed in a beforeSend function. This property is required for ingestion, so the event will be dropped."),null;return s}getPageViewId(){var e;return(e=this.pageViewManager.ui)==null?void 0:e.pageViewId}captureTraceFeedback(e,n){this.capture("$ai_feedback",{$ai_trace_id:String(e),$ai_feedback_text:n})}captureTraceMetric(e,n,i){this.capture("$ai_metric",{$ai_trace_id:String(e),$ai_metric_name:n,$ai_metric_value:String(i)})}Cn(e){var n=at(e)&&!e,i=re.N()&&re.P("ph_debug")==="true";return!n&&(!!i||e)}}ze.__defaultExtensionClasses={},ze.rs=(()=>{var t=()=>{};return{trace:t,debug:t,info:t,warn:t,error:t,fatal:t}})(),(function(t,e){for(var n=0;e.length>n;n++)t.prototype[e[n]]=Lp(t.prototype[e[n]])})(ze,["identify"]);class Uc{constructor(e){this.disabled=e===!1;var n=ae(e)?e:{};this.thresholdPx=n.threshold_px||30,this.timeoutMs=n.timeout_ms||1e3,this.clickCount=n.click_count||3,this.clicks=[]}isRageClick(e,n,i){if(this.disabled)return!1;var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(e-r.x)+Math.abs(n-r.y)i-r.timestamp){if(this.clicks.push({x:e,y:n,timestamp:i}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:e,y:n,timestamp:i}];return!1}}var bo="$copy_autocapture",Eo=le("[AutoCapture]");function So(t,e){return e.length>t?e.slice(0,t)+"...":e}function Dg(t){if(t.previousElementSibling)return t.previousElementSibling;var e=t;do e=e.previousSibling;while(e&&!en(e));return e}function jg(t,e){var n,i,r=e.e,s=e.maskAllElementAttributes,o=e.maskAllText,a=e.elementAttributeIgnoreList,l=e.elementsChainAsString,u=e.disableCaptureUrlHashes;if(!en(t))return{props:{}};for(var c=[t],d=new Set([t]),h=t;h.parentNode&&!Ge(h,"body")&&Nd>c.length;)if(Ld(h.parentNode)){var f=h.parentNode.host;if(d.has(f))break;d.add(f),c.push(f),h=f}else{if(!en(h.parentNode)||d.has(h.parentNode))break;d.add(h.parentNode),c.push(h.parentNode),h=h.parentNode}var p,g,m=[],v={},w=!1,b=!1;if(te(c,(S=>{var F=ra(S);if(Ge(S,"a")){var R=S.getAttribute("href");w=!!(F&&R&&Ei(R))&&(u?Qt(R):R)}B(Ur(S),"ph-no-capture")&&(b=!0),m.push((function($,N,Y,V,H){H===void 0&&(H=!1);var J=$.tagName.toLowerCase(),fe={tag_name:J};Ya.indexOf(J)>-1&&!Y&&(fe.$el_text=J.toLowerCase()==="a"||J.toLowerCase()==="button"?So(1024,Ec($)):So(1024,Ri($)));var Ae=Ur($);Ae.length>0&&(fe.classes=Ae.filter((function(ie){return ie!==""}))),te($.attributes,(function(ie){var we;if((!Ud($)||["name","id","class","aria-label"].indexOf(ie.name)!==-1)&&(V==null||!V.includes(ie.name))&&!N&&Ei(ie.value)&&(!K(we=ie.name)||we.substring(0,10)!=="_ngcontent"&&we.substring(0,7)!=="_nghost")){var _e=ie.value;ie.name==="class"&&(_e=Ka(_e).join(" ")),fe["attr__"+ie.name]=So(1024,ie.name==="href"&&H?Qt(_e):_e)}}));for(var ve=1,xe=1,Fe=$;Fe=Dg(Fe);)ve++,Fe.tagName===$.tagName&&xe++;return fe.nth_child=ve,fe.nth_of_type=xe,fe})(S,s,o,a,u));var M=(function($){if(!ra($))return{};var N={};return te($.attributes,(function(Y){if(Y.name&&Y.name.indexOf("data-ph-capture-attribute")===0){var V=Y.name.replace("data-ph-capture-attribute-",""),H=Y.value;V&&H&&Ei(H)&&(N[V]=H)}})),N})(S);oe(v,M)})),b)return{props:{},explicitNoCapture:b};if(o||(m[0].$el_text=Ge(t,"a")||Ge(t,"button")?Ec(t):Ri(t)),w){var I,A;m[0].attr__href=w;var P=(I=Hr(w))==null?void 0:I.host,O=_==null||(A=_.location)==null?void 0:A.host;P&&O&&P!==O&&(p=w)}return{props:oe({$event_type:r.type,$ce_version:1},l?{}:{$elements:m},{$elements_chain:(g=m,(function(S){return S.map((F=>{var R,M,$="";if(F.tag_name&&($+=F.tag_name),F.attr_class)for(var N of(F.attr_class.sort(),F.attr_class))$+="."+N.replace(/"/g,"");var Y=E({},F.text?{text:F.text}:{},{"nth-child":(R=F.nth_child)!==null&&R!==void 0?R:0,"nth-of-type":(M=F.nth_of_type)!==null&&M!==void 0?M:0},F.href?{href:F.href}:{},F.attr_id?{attr_id:F.attr_id}:{},F.attributes),V={};return gr(Y).sort(((H,J)=>H[0].localeCompare(J[0]))).forEach((H=>{var J=H[1];return V[Sc(H[0].toString())]=Sc(J.toString())})),($+=":")+gr(V).map((H=>H[0]+'="'+H[1]+'"')).join("")})).join(";")})((function(S){return S.map((F=>{var R,M,$={text:(R=F.$el_text)==null?void 0:R.slice(0,400),tag_name:F.tag_name,href:(M=F.attr__href)==null?void 0:M.slice(0,2048),attr_class:eg(F),attr_id:F.attr__id,nth_child:F.nth_child,nth_of_type:F.nth_of_type,attributes:{}};return gr(F).filter((N=>N[0].indexOf("attr__")===0)).forEach((N=>$.attributes[N[0]]=N[1])),$}))})(g)))},(n=m[0])!=null&&n.$el_text?{$el_text:(i=m[0])==null?void 0:i.$el_text}:{},p&&r.type==="click"?{$external_click_url:p}:{},v)}}var ci=le("[ExceptionAutocapture]"),Hc=()=>{},Ug=le("[TracingHeaders]"),cn=le("[Web Vitals]"),Wc=9e5,qc="disabled",zc="lazy_loading",ui="awaiting_config",ir="missing_config";le("[SessionRecording]"),le("[SessionRecording]");var ha="[SessionRecording]",Ct=le(ha),Hg=le("[Heatmaps]");function xo(t){return ae(t)&&"clientX"in t&&"clientY"in t&&Se(t.clientX)&&Se(t.clientY)}var rr=le("[Product Tours]"),ko=t=>{var e;return!t.config.disable_product_tours&&!((e=t.persistence)==null||!e.get_property(qa))},Wg=["$set_once","$set"],ht=le("[SiteApps]"),Vc="Error while initializing PostHog app with config id ";function Rn(t,e,n){if(j(t))return!1;switch(n){case"exact":return t===e;case"contains":var i=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/_/g,".").replace(/%/g,".*");return new RegExp(i,"i").test(t);case"regex":try{return new RegExp(e).test(t)}catch{return!1}default:return!1}}class qg{constructor(e){this.ns=new Qa,this.ss=(n,i)=>this.os(n,i)&&this.ls(n,i)&&this.us(n,i)&&this.hs(n,i),this.os=(n,i)=>i==null||!i.event||n?.event===i?.event,this._instance=e,this.ds=new Set,this.vs=new Set}init(){var e,n;x((e=this._instance)==null?void 0:e._addCaptureHook)||(n=this._instance)==null||n._addCaptureHook(((i,r)=>{this.on(i,r)}))}register(e){var n,i;if(!x((n=this._instance)==null?void 0:n._addCaptureHook)&&(e.forEach((o=>{var a,l;(a=this.vs)==null||a.add(o),(l=o.steps)==null||l.forEach((u=>{var c;(c=this.ds)==null||c.add(u?.event||"")}))})),(i=this._instance)!=null&&i.autocapture)){var r,s=new Set;e.forEach((o=>{var a;(a=o.steps)==null||a.forEach((l=>{l!=null&&l.selector&&s.add(l?.selector)}))})),(r=this._instance)==null||r.autocapture.setElementSelectors(s)}}on(e,n){var i;n!=null&&e.length!=0&&(this.ds.has(e)||this.ds.has(n.event))&&this.vs&&((i=this.vs)==null?void 0:i.size)>0&&this.vs.forEach((r=>{this.cs(n,r)&&this.ns.emit("actionCaptured",r.name)}))}fs(e){this.onAction("actionCaptured",(n=>e(n)))}cs(e,n){if(n?.steps==null)return!1;for(var i of n.steps)if(this.ss(e,i))return!0;return!1}onAction(e,n){return this.ns.on(e,n)}ls(e,n){if(n!=null&&n.url){var i,r=e==null||(i=e.properties)==null?void 0:i.$current_url;if(!r||typeof r!="string"||!Rn(r,n.url,n.url_matching||"contains"))return!1}return!0}us(e,n){return!!this.ps(e,n)&&!!this.gs(e,n)&&!!this.ys(e,n)}ps(e,n){var i;if(n==null||!n.href)return!0;var r=this.bs(e);if(r.length>0)return r.some((a=>Rn(a.href,n.href,n.href_matching||"exact")));var s,o=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";return!!o&&Rn((s=o.match(/(?::|")href="(.*?)"/))?s[1]:"",n.href,n.href_matching||"exact")}gs(e,n){var i;if(n==null||!n.text)return!0;var r=this.bs(e);if(r.length>0)return r.some((u=>Rn(u.text,n.text,n.text_matching||"exact")||Rn(u.$el_text,n.text,n.text_matching||"exact")));var s,o,a,l=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";return!!l&&(s=(function(u){for(var c,d=[],h=/(?::|")text="(.*?)"/g;!j(c=h.exec(u));)d.includes(c[1])||d.push(c[1]);return d})(l),o=n.text,a=n.text_matching||"exact",s.some((u=>Rn(u,o,a))))}ys(e,n){var i,r;if(n==null||!n.selector)return!0;var s=e==null||(i=e.properties)==null?void 0:i.$element_selectors;if(s!=null&&s.includes(n.selector))return!0;var o=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";if(n.selector_regex&&o)try{return new RegExp(n.selector_regex).test(o)}catch{return!1}return!1}bs(e){var n;return(e==null||(n=e.properties)==null?void 0:n.$elements)==null?[]:e?.properties.$elements}hs(e,n){return n==null||!n.properties||n.properties.length===0||gh(n.properties.reduce(((i,r)=>{var s=D(r.value)?r.value.map(String):r.value!=null?[String(r.value)]:[];return i[r.key]={values:s,operator:r.operator||"exact"},i}),{}),e?.properties)}}class zg{constructor(e){var n;this._s=[],this._instance=e,this.ws=new Map,this.ks=new Map,this.xs=new Map,(n=this._instance)==null||n.onSessionId==null||n.onSessionId((i=>this.Ss(i)))}Cs(e){return!1}Ms(){return null}Ts(e){}Es(){}Is(e,n){return!!e&&gh(e.propertyFilters,n?.properties)}Ps(e,n){var i=new Map;return e.forEach((r=>{var s;(s=r.conditions)==null||(s=s[n])==null||(s=s.values)==null||s.forEach((o=>{if(o!=null&&o.name){var a=i.get(o.name)||[];a.push(r.id),i.set(o.name,a)}}))})),i}Rs(e,n,i){var r=(i===ri.Activation?this.ws:this.ks).get(e),s=[];return this.As((o=>{s=o.filter((a=>r?.includes(a.id)))})),s.filter((o=>{var a,l=(a=o.conditions)==null||(a=a[i])==null||(a=a.values)==null?void 0:a.find((u=>u.name===e));return this.Is(l,n)}))}register(e){var n;x((n=this._instance)==null?void 0:n._addCaptureHook)||(this.Fs(e),this.Ls(e))}Ls(e){var n=e.filter((i=>{var r,s;return((r=i.conditions)==null?void 0:r.actions)&&((s=i.conditions)==null||(s=s.actions)==null||(s=s.values)==null?void 0:s.length)>0}));n.length!==0&&(this.Os==null&&(this.Os=new qg(this._instance),this.Os.init(),this.Os.fs((i=>{this.onAction(i)}))),n.forEach((i=>{var r,s,o,a,l;i.conditions&&(r=i.conditions)!=null&&r.actions&&(s=i.conditions)!=null&&(s=s.actions)!=null&&s.values&&((o=i.conditions)==null||(o=o.actions)==null||(o=o.values)==null?void 0:o.length)>0&&((a=this.Os)==null||a.register(i.conditions.actions.values),(l=i.conditions)==null||(l=l.actions)==null||(l=l.values)==null||l.forEach((u=>{if(u&&u.name){var c=this.xs.get(u.name);c&&c.push(i.id),this.xs.set(u.name,c||[i.id])}})))})))}Fs(e){var n,i=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.events)&&((a=s.conditions)==null||(a=a.events)==null||(a=a.values)==null?void 0:a.length)>0})),r=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.cancelEvents)&&((a=s.conditions)==null||(a=a.cancelEvents)==null||(a=a.values)==null?void 0:a.length)>0}));i.length===0&&r.length===0||((n=this._instance)==null||n._addCaptureHook(((s,o)=>{this.onEvent(s,o)})),this.ws=this.Ps(e,ri.Activation),this.ks=this.Ps(e,ri.Cancellation))}onEvent(e,n){var i,r,s=this.Ds(),o=(n==null||(i=n.properties)==null?void 0:i.$survey_id)||(n==null||(r=n.properties)==null?void 0:r.$product_tour_id);if(o&&this.getActivatedIds().includes(o)){var a=this.$s(e,o);if(a==="consume")return s.info("event consumed activated item, removing it",{event:e,itemId:o}),void this.Ns([o]);if(a==="persist")return s.info("shown item promoted to persisted activation",{event:e,itemId:o}),this.qs(o),void this.js([o])}if(this.ks.has(e)){var l=this.Rs(e,n,ri.Cancellation);l.length>0&&(s.info("cancel event matched, cancelling items",{event:e,itemsToCancel:l.map((c=>c.id))}),this.Ns(l.map((c=>c.id))),l.forEach((c=>this.Bs(c.id))))}if(this.ws.has(e)){s.info("event name matched",{event:e,eventPayload:n,items:this.ws.get(e)});var u=this.Rs(e,n,ri.Activation);this.Hs(u.map((c=>c.id)))}}onAction(e){this.xs.has(e)&&this.Hs(this.xs.get(e)||[])}Hs(e){var n;if(e.length!==0){var i=!((n=this._instance)==null||n.get_session_id==null||!n.get_session_id()),r=[];for(var s of e)i&&this.Cs(s)?this.qs(s)&&this.Us(s):r.push(s);r.length>0&&(this._s=[...new Set([...this._s,...r])]),this.Ds().info("updating activated items",{activatedItems:this.getActivatedIds()})}}qs(e){this._s=this._s.filter((i=>i!==e));var n=this.zs();return!n.includes(e)&&(this.Ws([...n,e]),this.Vs(),!0)}Ns(e){var n=new Set(e);this._s=this._s.filter((s=>!n.has(s)));var i=this.Zs(),r=i.filter((s=>!n.has(s)));r.length!==i.length&&(this.Ws(r),r.length===0&&this.Gs()),this.js(e)}Qs(){var e,n=this.Ms();if(!n)return{};var i=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n];return i&&typeof i=="object"?i:{}}Us(e){if(this.Ms()){var n=this.Qs();this.Ts(E({},n,{[e]:Date.now()}))}}js(e){if(this.Ms()){var n=this.Qs(),i={},r=!1;for(var s of Object.entries(n)){var o=s[0],a=s[1];e.includes(o)?r=!0:i[o]=a}r&&(Nt(i)?this.Es():this.Ts(i))}}Ks(){this.Ms()&&this.Es()}getActivationTimestamp(e){if(this.zs().includes(e)){var n=this.Qs()[e];return Se(n)?n:void 0}}Zs(){var e,n=this.Js();return((e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n])||[]}zs(){var e,n,i=this.Zs();if(i.length===0)return[];var r=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[this.Ys()],s=(n=this._instance)==null||n.get_session_id==null?void 0:n.get_session_id();return s&&r===s?i:[]}Vs(){var e,n=(e=this._instance)==null||e.get_session_id==null?void 0:e.get_session_id();n&&this.Xs(n)}Gs(){this.ta()}Ss(e){var n,i=(n=this._instance)==null||(n=n.persistence)==null?void 0:n.props[this.Ys()];if(i&&i!==e){var r=this.Zs(),s=this.Qs();r.length>0&&(this.Ws([]),r.filter((o=>Se(s[o]))).forEach((o=>this.Bs(o)))),this.Gs(),this.Ks()}}getActivatedIds(){return[...new Set([...this.zs(),...this._s])].filter((e=>!this.ea(e)))}reset(){this._s=[],this.Zs().length>0&&this.Ws([]),this.Gs(),this.Ks()}getEventToItemsMap(){return this.ws}ia(){return this.Os}}class Vg extends zg{constructor(e){super(e)}Js(){return Jo}Ys(){return hr}Ms(){return fr}Ts(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[fr]:e})}Es(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(fr)}Cs(e){var n,i;this.As((s=>{i=s.find((o=>o.id===e))}));var r=(n=i)==null||(n=n.appearance)==null?void 0:n.surveyPopupDelaySeconds;return Se(r)&&r>0}ra(){return Mt.SHOWN}As(e){var n;(n=this._instance)==null||n.getSurveys(e)}Bs(e){var n;(n=this._instance)==null||n.cancelPendingSurvey(e)}Ds(){return Z}Ws(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[Jo]:e})}Xs(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[hr]:e})}ta(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(hr)}ea(){return!1}$s(e,n){var i;this.As((s=>{i=s.find((o=>o.id===n))}));var r=!i||(function(s){var o;return mh(s)&&!((o=s.conditions)==null||(o=o.events)==null||!o.repeatedActivation)||s.schedule==="always"})(i);return r?e===Mt.SHOWN?"consume":"ignore":e===Mt.SHOWN?"persist":e===Mt.DISMISSED||e===Mt.SENT?"consume":"ignore"}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}var sr="SDK is not enabled or survey functionality is not yet loaded",Gc="Disabled. Not loading surveys.",Gg=_!=null&&_.location?Wr(_.location.hash,"__posthog")||Wr(location.hash,"state"):null,Kc="_postHogToolbarParams",Yc=le("[Toolbar]"),Jc=le("[FeatureFlags]");class Kg{constructor(e,n){n===void 0&&(n=!1),this.na=!1,this.update(e,n)}update(e,n){this.sa=((i,r)=>{var s,o,a,l;return{bootstrap:{featureFlags:(s=i.bootstrap)==null?void 0:s.featureFlags,featureFlagPayloads:(o=i.bootstrap)==null?void 0:o.featureFlagPayloads},remoteRequestsDisabled:r,featureFlagsDisabled:!!i.advanced_disable_feature_flags,onlyEvaluateSurveyFeatureFlags:!!i.advanced_only_evaluate_survey_feature_flags,deduplicateCallsPerSession:!!i.advanced_feature_flags_dedup_per_session,cacheTtlMs:i.feature_flag_cache_ttl_ms,requestTimeoutMs:i.feature_flag_request_timeout_ms,compression:i.disable_compression?"none":"base64",evaluationContexts:(a=(l=i.evaluation_contexts)!==null&&l!==void 0?l:i.evaluation_environments)!==null&&a!==void 0?a:[],flagKeys:D(i.flag_keys)?i.flag_keys:void 0}})(e,n),!e.evaluation_environments||e.evaluation_contexts||this.na||(Jc.warn("evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version."),this.na=!0),x(e.flag_keys)||D(e.flag_keys)||Jc.error("Invalid flag_keys found:",e.flag_keys,"Expected array of non-empty strings")}get(){return this.sa}}var Zc=le("[FeatureFlags]"),un=le("[FeatureFlags]",{debugEnabled:!0}),Io=`" failed. Feature flags didn't load in time.`,Xc="connection_error",Qc=t=>{for(var e={},n=0;t.length>n;n++)e[t[n]]=!0;return e},eu=t=>{var e={};for(var n of gr(t||{})){var i=n[1];i&&(e[n[0]]=i)}return e},ft=le("[Error tracking]"),tu="Refusing to render web experiment since the viewer is a likely bot",Yg={icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())>-1,not_icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())===-1,regex:(t,e)=>Vr(e,t),not_regex:(t,e)=>!Vr(e,t),exact:(t,e)=>e===t,is_not:(t,e)=>e!==t};class Re{get Ne(){return this._instance.config}constructor(e){var n=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(i){i===void 0&&(i=!1),n.getWebExperiments((r=>{Re.aa("retrieved web experiments from the server"),n.oa=new Map,r.forEach((s=>{if(s.feature_flag_key){var o;n.oa&&(Re.aa("setting flag key ",s.feature_flag_key," to web experiment ",s),(o=n.oa)==null||o.set(s.feature_flag_key,s));var a=n._instance.getFeatureFlag(s.feature_flag_key);K(a)&&s.variants[a]&&n.la(s.name,a,s.variants[a].transforms)}else if(s.variants)for(var l in s.variants){var u=s.variants[l];Re.ua(u,n._instance)&&n.la(s.name,l,u.transforms)}}))}),i)},this._instance=e,this._instance.onFeatureFlags((i=>{this.onFeatureFlags(i)}))}initialize(){}onFeatureFlags(e){if(this._is_bot())Re.aa(tu);else if(!this.Ne.disable_web_experiments){if(j(this.oa))return this.oa=new Map,this.loadIfEnabled(),void this.previewWebExperiment();Re.aa("applying feature flags",e),e.forEach((n=>{var i;if(this.oa&&(i=this.oa)!=null&&i.has(n)){var r,s=this._instance.getFeatureFlag(n),o=(r=this.oa)==null?void 0:r.get(n);s&&o!=null&&o.variants[s]&&this.la(o.name,s,o.variants[s].transforms)}}))}}previewWebExperiment(){var e=Re.getWindowLocation();if(e!=null&&e.search){var n=qn(e?.search,"__experiment_id"),i=qn(e?.search,"__experiment_variant");n&&i&&(Re.aa("previewing web experiments "+n+" && "+i),this.getWebExperiments((r=>{this.ha(parseInt(n),i,r)}),!1,!0))}}loadIfEnabled(){this.Ne.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(e,n,i){if(this.Ne.disable_web_experiments&&!i)return e([]);var r=this._instance.get_property("$web_experiments");if(r&&!n)return e(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/web_experiments/?token="+this.Ne.token),method:"GET",timestampMode:"query",callback:s=>e(s.statusCode===200&&s.json&&s.json.experiments||[])})}ha(e,n,i){var r=i.filter((s=>s.id===e));r&&r.length>0&&(Re.aa("Previewing web experiment ["+r[0].name+"] with variant ["+n+"]"),this.la(r[0].name,n,r[0].variants[n].transforms))}static ua(e,n){return!j(e.conditions)&&Re.da(e,n)&&Re.va(e)}static da(e,n){var i;if(j(e.conditions)||j((i=e.conditions)==null?void 0:i.url))return!0;var r=Re.getWindowLocation();if(r){var s,o,a,l=Td(n,r.href);return(s=e.conditions)==null||!s.url||Yg[(o=(a=e.conditions)==null?void 0:a.urlMatchType)!==null&&o!==void 0?o:"icontains"](e.conditions.url,l)}return!1}static getWindowLocation(){return _?.location}static va(e){var n;if(j(e.conditions)||j((n=e.conditions)==null?void 0:n.utm))return!0;var i=Gd();if(i.utm_source){var r,s,o,a,l,u,c,d,h=(r=e.conditions)==null||(r=r.utm)==null||!r.utm_campaign||((s=e.conditions)==null||(s=s.utm)==null?void 0:s.utm_campaign)==i.utm_campaign,f=(o=e.conditions)==null||(o=o.utm)==null||!o.utm_source||((a=e.conditions)==null||(a=a.utm)==null?void 0:a.utm_source)==i.utm_source,p=(l=e.conditions)==null||(l=l.utm)==null||!l.utm_medium||((u=e.conditions)==null||(u=u.utm)==null?void 0:u.utm_medium)==i.utm_medium,g=(c=e.conditions)==null||(c=c.utm)==null||!c.utm_term||((d=e.conditions)==null||(d=d.utm)==null?void 0:d.utm_term)==i.utm_term;return h&&p&&g&&f}return!1}static aa(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;n>r;r++)i[r-1]=arguments[r];k.info("[WebExperiments] "+e,i)}la(e,n,i){this._is_bot()?Re.aa(tu):n!=="control"?i.forEach((r=>{if(r.selector){var s;Re.aa("applying transform of variant "+n+" for experiment "+e+" ",r);var o=(s=document)==null?void 0:s.querySelectorAll(r.selector);o?.forEach((a=>{var l=a;r.html&&(l.innerHTML=r.html),r.css&&l.setAttribute("style",r.css)}))}})):Re.aa("Control variants leave the page unmodified.")}_is_bot(){return Be&&this._instance?hh(Be,this.Ne.custom_blocked_useragents):void 0}}var Ze=le("[Conversations]"),dn="Conversations not available yet.",nu="console",bh="__posthogHandledLogsRequestError",Co=(t,e)=>{var n=t instanceof Error?t:new Error(e);return n[bh]=!0,n},iu=t=>!!t&&typeof t=="object"&&t[bh]===!0,fs={featureFlags:class{constructor(t){this.name="featureFlags",this.ca=!1,this.featureFlagEventHandlers=[],this.rt=Zc,this.fa={},this.pa={},this.ga=[],this.ma=!1,this.ya=!1,this.ba=0,this._a=!1,this.wa=!1,this.ka=!1,this.xa=!1,this.Sa=0,this.Ca=()=>{var e=this.Ma();this.Sa=0,e&&this.reloadFeatureFlags()},"get"in t?this.Ta=t:(this.Ea=new Kg(t.config,t.Qi()),this.Ta=this.Ea)}updateConfig(t,e){var n;(n=this.Ea)==null||n.update(t,e)}setup(t){return this.Ia=t,this.rt=t.logger.createLogger("[FeatureFlags]"),n=()=>{this.Ia===t&&(this.Ia=void 0,this.nn=t,this.Pa(t))},(e=t.kv.initialize())!=null&&e.then?e.then(n):n();var e,n}Pa(t){if(this.nn===t)return _&&de(_,"online",this.Ca),this.Ra=t.registerDynamicEventProperties((()=>this.Aa()?this.fa:this.pa)),this.Fa(),this.initialize()}destroy(){_?.removeEventListener("online",this.Ca)}dispose(){var t;this.ba++,this.wa=!1,this.Ia=void 0,this.nn&&(this.La(),(t=this.Ra)==null||t.dispose(),this.Ra=void 0,this.ga=[],_?.removeEventListener("online",this.Ca),this.nn=void 0)}get Ne(){return this.Ta.get()}Oa(t){var e;return(e=this.nn)==null?void 0:e.kv.get(t)}F(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.set(t)}))}q(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.remove(t)}))}Da(t){try{t()}catch(e){this.rt.error("Failed to update feature flag persistence",e)}}Fa(){var t={};for(var e of[gi,mi,dr,gt]){var n=this.Oa(e);x(n)||(t[e]=n)}this.fa=t;var i=E({},t),r=this.Oa(hn);if(r)for(var s of Object.entries(r))i["$feature/"+s[0]]=s[1];this.pa=i}Aa(){var t=this.Ne.cacheTtlMs;if(!t||0>=t)return!1;var e=this.Oa(bi);return typeof e!="number"||Date.now()-e>t}$a(){return!!this.Aa()&&(this.xa||this.ya||(this.xa=!0,this.rt.warn("Feature flag cache is stale, triggering refresh..."),this.reloadFeatureFlags()),!0)}Na(){var t=this.Ne.evaluationContexts;return t!=null&&t.length?t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid evaluation context found:",e,"Expected non-empty string"),n})):[]}qa(){var t=this.Ne.flagKeys;if(!x(t))return t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid flag key found:",e,"Expected non-empty string"),n}))}initialize(){var t,e,n=this.Ne,i=(t=(e=n.bootstrap)==null?void 0:e.featureFlags)!==null&&t!==void 0?t:{};if(Object.keys(i).length){var r,s,o=(r=(s=n.bootstrap)==null?void 0:s.featureFlagPayloads)!==null&&r!==void 0?r:{},a=Object.keys(i).filter((u=>!!i[u])).reduce(((u,c)=>(u[c]=i[c]||!1,u)),{}),l=Object.keys(o).filter((u=>a[u])).reduce(((u,c)=>(o[c]&&(u[c]=o[c]),u)),{});return this.ja({featureFlags:a,featureFlagPayloads:l})}}updateFlags(t,e,n){var i,r,s=n!=null&&n.merge&&(i=this.Oa(hn))!==null&&i!==void 0?i:{},o=n!=null&&n.merge&&(r=this.Oa(mi))!==null&&r!==void 0?r:{},a=E({},s,t),l=E({},o,e),u={};for(var c of Object.entries(a)){var d=c[0],h=c[1];u[d]={key:d,enabled:Yl(h),variant:Jl(h),reason:void 0,metadata:x(l?.[d])?void 0:{id:0,version:void 0,description:void 0,payload:l[d]}}}this.ja({flags:u})}get hasLoadedFlags(){return this.ma}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this.Oa(Ko),e=this.Oa(gt),n=this.Oa(fn);if(!n&&!e)return t||{};var i=oe({},t||{}),r=[...new Set([...Object.keys(n||{}),...Object.keys(e||{})])];for(var s of r){var o,a,l=i[s],u=e?.[s],c=x(u)?(o=l?.enabled)!==null&&o!==void 0&&o:!!u,d=x(u)?l?.variant:typeof u=="string"?u:void 0,h=n?.[s],f=E({},l,{enabled:c,variant:c?d??l?.variant:void 0});c!==l?.enabled&&(f.original_enabled=l?.enabled),d!==l?.variant&&(f.original_variant=l?.variant),h&&(f.metadata=E({},l?.metadata,{payload:h,original_payload:l==null||(a=l.metadata)==null?void 0:a.payload})),i[s]=f}return this.ca||(this.rt.warn(" Overriding feature flag details!",{flagDetails:t,overriddenPayloads:n,finalDetails:i}),this.ca=!0),i}getAllFeatureFlags(){var t=this.getFlagVariants(),e=this.getFlagPayloads();return Object.keys(t).map((n=>{var i=t[n];return{key:n,enabled:Yl(i),variant:Jl(i),payload:Kl(e[n])}}))}getFlagVariants(){var t=this.Oa(hn),e=this.Oa(gt);if(!e)return t||{};for(var n=oe({},t||{}),i=Object.keys(e),r=0;i.length>r;r++)n[i[r]]=e[i[r]];return this.ca||(this.rt.warn(" Overriding feature flags!",{enabledFlags:t,overriddenFlags:e,finalFlags:n}),this.ca=!0),n}getFlagPayloads(){var t=this.Oa(mi),e=this.Oa(fn);if(!e)return t||{};for(var n=oe({},t||{}),i=Object.keys(e),r=0;i.length>r;r++)n[i[r]]=e[i[r]];return this.ca||(this.rt.warn(" Overriding feature flag payloads!",{flagPayloads:t,overriddenPayloads:e,finalPayloads:n}),this.ca=!0),n}reloadFeatureFlags(){this._a||this.Ne.featureFlagsDisabled||this.Ma()||this.Ba||(this.ga.slice().forEach((t=>{try{t()}catch(e){this.rt.error("Error while running feature flags reloading callback",e)}})),this.Ba=setTimeout((()=>{this.Ha()}),5))}La(){clearTimeout(this.Ba),this.Ba=void 0}onReloading(t){return this.ga.push(t),()=>{this.ga=this.ga.filter((e=>e!==t))}}ensureFlagsLoaded(){this.ma||this.ya||this.Ba||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this._a=t}resetFlagCallReported(){this.q(mn)}Ha(t){this.La();var e=this.nn;if(e&&!this.Ne.remoteRequestsDisabled&&!this.Ma())if(this.ya)this.wa=!0;else{var n={token:e.projectToken,distinct_id:e.distinctId,groups:e.groups,$anon_distinct_id:this.$anon_distinct_id,person_properties:E({},e.initialPersonProperties,this.Oa(Pt)||{},{$lib:e.library.name,$lib_version:e.library.version}),group_properties:this.Oa(pn),timezone:Qd()};x(e.deviceId)||(n.$device_id=e.deviceId),(t!=null&&t.disableFlags||this.Ne.featureFlagsDisabled)&&(n.disable_flags=!0);var i=this.Na();i.length&&(n.evaluation_contexts=i);var r=this.qa();x(r)||(n.flag_keys=r);var s=this.Ne.onlyEvaluateSurveyFeatureFlags,o="/flags/?v=2"+(s?"&only_evaluate_survey_feature_flags=true":""),a=this.ba;this.ya=!0;var l=()=>{this.wa&&(this.wa=!1,this.Ha())},u=c=>{this.ya=!1,a===this.ba&&(this.F({[pr]:[Xc]}),this.rt.error("Feature flag request failed",c)),l()};try{e.sendRequest(o,{target:"flags",method:"POST",body:n,compression:this.Ne.compression==="base64"?Oe.Base64:void 0,sentAt:"body",timeoutMs:this.Ne.requestTimeoutMs}).then((c=>{var d,h,f=(d=c.json)!==null&&d!==void 0?d:{},p=c.statusCode!==200;if(this.ya=!1,a===this.ba){if(this.Ua(c.statusCode),p||this.wa||(this.$anon_distinct_id=void 0),!n.disable_flags||this.wa){this.ka=!p;var g=[];c.error?g.push(c.error instanceof Error&&c.error.name==="AbortError"?"timeout":c.error instanceof Error?Xc:"unknown_error"):c.statusCode!==200&&g.push("api_error_"+c.statusCode),f.errorsWhileComputingFlags&&g.push("errors_while_computing_flags");var m=!((h=f.quotaLimited)==null||!h.includes("feature_flags"));m&&g.push("quota_limited"),this.F({[pr]:g}),m?this.rt.warn("You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more."):n.disable_flags||this.ja(f,p,{partialResponse:s}),l()}}else l()})).catch(u)}catch(c){u(c)}}}Ma(){return zd(this.Sa,3)}Ua(t){this.Sa=Vd(t,this.Sa,3,(()=>this.rt.warn("Feature flag requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped refreshing feature flags; will try again when connectivity changes.")))}getFeatureFlag(t,e){var n;if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var i=this.getFeatureFlagResult(t,e);return(n=i?.variant)!==null&&n!==void 0?n:i?.enabled}}else this.rt.warn('getFeatureFlag for key "'+t+Io)}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){var e=this.getFeatureFlagResult(t,{send_event:!1});return e?.payload}getFeatureFlagResult(t,e){if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var n,i=this.getFlagVariants(),r=t in i,s=i[t],o=this.getFlagPayloads()[t],a=String(s),l=this.Oa(dr)||void 0,u=this.Oa(bi)||void 0,c=this.Oa(mn)||{};if(this.Ne.deduplicateCallsPerSession){var d,h=(d=this.nn)==null?void 0:d.session.sessionId,f=this.Oa(_i);h&&h!==f&&(c={},n=h)}if(e.send_event||!("send_event"in e))if(t in c&&c[t].includes(a))n&&this.F({[mn]:c,[_i]:n});else{var p,g,m,v,w,b,I,A,P,O;D(c[t])?c[t].push(a):c[t]=[a],this.F(E({[mn]:c},n?{[_i]:n}:{}));var S=this.getFeatureFlagDetails(t),F=[...(p=this.Oa(pr))!==null&&p!==void 0?p:[]];x(s)&&F.push("flag_missing");var R={$feature_flag:t,$feature_flag_response:s,$feature_flag_payload:o||null,$feature_flag_request_id:l,$feature_flag_evaluated_at:u,$feature_flag_bootstrapped_response:((g=this.Ne.bootstrap)==null||(g=g.featureFlags)==null?void 0:g[t])||null,$feature_flag_bootstrapped_payload:((m=this.Ne.bootstrap)==null||(m=m.featureFlagPayloads)==null?void 0:m[t])||null,$used_bootstrap_value:!this.ka};x(S==null||(v=S.metadata)==null?void 0:v.has_experiment)||(R.$feature_flag_has_experiment=S.metadata.has_experiment),x(S==null||(w=S.metadata)==null?void 0:w.version)||(R.$feature_flag_version=S.metadata.version);var M,$=(b=S==null||(I=S.reason)==null?void 0:I.description)!==null&&b!==void 0?b:S==null||(A=S.reason)==null?void 0:A.code;$&&(R.$feature_flag_reason=$),S!=null&&(P=S.metadata)!=null&&P.id&&(R.$feature_flag_id=S.metadata.id),x(S?.original_variant)&&x(S?.original_enabled)||(R.$feature_flag_original_response=x(S.original_variant)?S.original_enabled:S.original_variant),S!=null&&(O=S.metadata)!=null&&O.original_payload&&(R.$feature_flag_original_payload=S==null||(M=S.metadata)==null?void 0:M.original_payload),F.length&&(R.$feature_flag_error=F.join(",")),this.za(R)}else n&&this.F({[mn]:c,[_i]:n});if(r)return{key:t,enabled:!!s,variant:typeof s=="string"?s:void 0,payload:Kl(o)}}}else this.rt.warn('getFeatureFlagResult for key "'+t+Io)}za(t){try{var e;(e=this.nn)==null||e.capture("$feature_flag_called",t).catch((n=>{this.rt.error("Failed to capture feature flag call",n)}))}catch(n){this.rt.error("Failed to capture feature flag call",n)}}getRemoteConfigPayload(t,e){this.Wa(t,e)}Wa(t,e){var n=this;return ne((function*(){var i=n.nn;if(i){var r={distinct_id:i.distinctId,token:i.projectToken,person_properties:{$lib:i.library.name,$lib_version:i.library.version}},s=n.Na();s.length&&(r.evaluation_contexts=s);var o,a=n.qa();x(a)||(r.flag_keys=a);try{var l,u=(l=(yield i.sendRequest("/flags/?v=2",{target:"flags",method:"POST",body:r,compression:n.Ne.compression==="base64"?Oe.Base64:void 0,sentAt:"body",timeoutMs:n.Ne.requestTimeoutMs})).json)==null?void 0:l.featureFlagPayloads;o=u?.[t]||void 0}catch(c){return void n.rt.error("Remote config feature flag request failed",c)}try{e(o)}catch(c){n.rt.error("Remote config feature flag callback failed",c)}}}))()}isFeatureEnabled(t,e){if(e===void 0&&(e={}),e.fresh&&!this.ka)return e.defaultValue;if(!(this.ma||this.getFlags()&&this.getFlags().length>0))return this.rt.warn('isFeatureEnabled for key "'+t+Io),e.defaultValue;var n=this.getFeatureFlag(t,e);return x(n)?e.defaultValue:!!n}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((e=>e!==t))}receivedFeatureFlags(t,e,n){this.ja(t,e,n)}ja(t,e,n){if(this.nn){this.ma=!0;var i=(function(r,s,o,a,l,u){s===void 0&&(s={}),o===void 0&&(o={}),a===void 0&&(a={}),u===void 0&&(u=Zc);var c=((P,O)=>{var S=P.flags;return S?E({},P,{featureFlags:Object.fromEntries(Object.keys(S).map((F=>{var R;return[F,(R=S[F].variant)!==null&&R!==void 0?R:S[F].enabled]}))),featureFlagPayloads:Object.fromEntries(Object.keys(S).filter((F=>S[F].enabled)).filter((F=>{var R;return(R=S[F].metadata)==null?void 0:R.payload})).map((F=>{var R;return[F,(R=S[F].metadata)==null?void 0:R.payload]})))}):(P.featureFlags&&O.warn("Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version"),P)})(r,u),d=c.flags,h=c.featureFlags,f=c.featureFlagPayloads;if(h){var p=r.requestId,g=r.evaluatedAt;if(D(h)){u.warn("v1 of the feature flags endpoint is deprecated. Please use the latest version.");var m={};if(h)for(var v=0;h.length>v;v++)m[h[v]]=!0;return{[gi]:h,[hn]:m,[Mr]:!1}}var w=h,b=f,I=d;if(l!=null&&l.partialResponse)w=E({},s,w),b=E({},o,b),I=E({},a,I);else if(r.errorsWhileComputingFlags)if(d){var A=new Set(Object.keys(d).filter((P=>{var O;return!((O=d[P])!=null&&O.failed)})));w=E({},s,Object.fromEntries(Object.entries(w).filter((P=>A.has(P[0]))))),b=E({},o,Object.fromEntries(Object.entries(b||{}).filter((P=>A.has(P[0]))))),I=E({},a,Object.fromEntries(Object.entries(I||{}).filter((P=>A.has(P[0])))))}else w=E({},s,w),b=E({},o,b),I=E({},a,I);return E({[gi]:Object.keys(eu(w)),[hn]:w||{},[mi]:b||{},[Ko]:I||{},[Mr]:r.minimalFlagCalledEvents===!0},p?{[dr]:p}:{},g?{[bi]:g}:{})}})(t,this.getFlagVariants(),this.getFlagPayloads(),this.getFlagsWithDetails(),n,this.rt);i&&this.F(i),e||(this.xa=!1),this.Va(e)}}override(t,e){e===void 0&&(e=!1),this.rt.warn("override is deprecated. Please use overrideFeatureFlags instead."),this.overrideFeatureFlags({flags:t,suppressWarning:e})}overrideFeatureFlags(t){this.Za(t)}Za(t){if(this.nn){if(t===!1)return this.q([gt,fn]),this.Va(),void un.info("All overrides cleared");if(D(t))return this.F({[gt]:Qc(t)}),this.Va(),void un.info("Flag overrides set",{flags:t});if(t&&typeof t=="object"&&("flags"in t||"payloads"in t)){var e,n=t;this.ca=!!((e=n.suppressWarning)!==null&&e!==void 0&&e);var i={},r=n.flags,s=n.payloads;return r&&(i[gt]=D(r)?Qc(r):r),s&&(i[fn]=s),Object.keys(i).length&&this.F(i),r===!1&&s===!1?this.q([gt,fn]):r===!1?this.q(gt):s===!1&&this.q(fn),this.Va(),r===!1?un.info("Flag overrides cleared"):r&&un.info("Flag overrides set",{flags:r}),void(s===!1?un.info("Payload overrides cleared"):s&&un.info("Payload overrides set",{payloads:s}))}if(t&&typeof t=="object")return this.F({[gt]:t}),this.Va(),void un.info("Flag overrides set",{flags:t});this.rt.warn("Invalid overrideOptions provided to overrideFeatureFlags",{overrideOptions:t})}else this.rt.warn("posthog.featureFlags.overrideFeatureFlags called before feature flags were ready")}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ma){var e=this.Ga(),n=e.flags,i=e.flagVariants;try{t(n,i)}catch(r){this.rt.error("Error while running feature flags callback",r)}}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,e,n){var i=(this.Oa(ur)||[]).find((l=>l.flagKey===t)),r={["$feature_enrollment/"+t]:e},s={$feature_flag:t,$feature_enrollment:e,$set:r};i&&(s.$early_access_feature_name=i.name),n&&(s.$feature_enrollment_stage=n);var o=E({},this.getFlagVariants(),{[t]:e});this.F({[gi]:Object.keys(eu(o)),[hn]:o,[Pt]:E({},this.Oa(Pt)||{},r)}),this.Va();try{var a;(a=this.nn)==null||a.capture("$feature_enrollment_update",s).catch((l=>{this.rt.error("Failed to capture early access feature enrollment",l)}))}catch(l){this.rt.error("Failed to capture early access feature enrollment",l)}}getEarlyAccessFeatures(t,e,n){e===void 0&&(e=!1);var i=this.Oa(ur);!i||e?this.Qa(t,n):t(i)}Qa(t,e){var n=this;return ne((function*(){var i=n.nn;if(i){var r,s=e?"&"+e.map((a=>"stage="+a)).join("&"):"";try{var o=yield i.sendRequest("/api/early_access_features/?token="+i.projectToken+s,{target:"api",method:"GET",sentAt:"query"});if(!o.json)return;n.F({[ur]:r=o.json.earlyAccessFeatures})}catch(a){return void n.rt.error("Early access feature request failed",a)}try{t(r)}catch(a){n.rt.error("Early access feature callback failed",a)}}}))()}Ga(){var t=this.getFlags(),e=this.getFlagVariants();return{flags:t.filter((n=>e[n])),flagVariants:Object.keys(e).filter((n=>e[n])).reduce(((n,i)=>(n[i]=e[i],n)),{})}}Va(t){this.Fa();var e=this.Ga(),n=e.flags,i=e.flagVariants;this.featureFlagEventHandlers.forEach((r=>{try{r(n,i,{errorsLoading:t})}catch(s){this.rt.error("Error while running feature flags callback",s)}}))}setPersonPropertiesForFlags(t,e){e===void 0&&(e=!0),this.Ka(t,e)}Ka(t,e){e===void 0&&(e=!0);var n=this.Oa(Pt)||{},i=t?.$set||(t!=null&&t.$set_once?{}:t),r=t?.$set_once,s={};if(r)for(var o in r)({}).hasOwnProperty.call(r,o)&&(o in n||(s[o]=r[o]));this.F({[Pt]:E({},n,s,i)}),e&&this.reloadFeatureFlags()}unsetPersonPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=E({},this.Oa(Pt)||{});t.forEach((i=>{delete n[i]})),this.F({[Pt]:n}),e&&this.reloadFeatureFlags()}resetPersonPropertiesForFlags(t){t===void 0&&(t=!0),this.q(Pt),t&&this.reloadFeatureFlags()}setGroupPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=this.Oa(pn)||{},i=E({},n);for(var r of Object.keys(t))i[r]=E({},n[r],t[r]);this.F({[pn]:i}),e&&this.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var e=this.Oa(pn)||{};this.F({[pn]:E({},e,{[t]:{}})})}else this.q(pn)}reset(){this.ba++,this.wa=!1,this.Fa(),this.ma=!1,this._a=!1,this.ka=!1,this.$anon_distinct_id=void 0,this.La(),this.ca=!1,this.Sa=0}}},Jg={sessionRecording:class{get Ne(){return this._instance.config}get Mr(){return this._instance.persistence}get started(){var t;return!((t=this.Ja)==null||!t.isStarted)}get status(){var t,e;return this.Ya===ui||this.Ya===ir?this.Ya:(t=(e=this.Ja)==null?void 0:e.status)!==null&&t!==void 0?t:this.Ya}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Ya=qc,this.Xa=void 0,this.eo=!1,this.io=(()=>{var e;if(C==null||!C.visibilityState||C.visibilityState==="visible")return!0;var n=_==null||(e=_.performance)==null||e.getEntriesByType==null?void 0:e.getEntriesByType("visibility-state");return!(n!=null&&n.length)||n.some((i=>i.name==="visible"))})(),this.Ie=()=>{var e;C?.visibilityState==="visible"&&(this.io=!0,(e=this.Ja)==null||e.setDocumentWasEverVisible==null||e.setDocumentWasEverVisible(!0))},this._instance=t,!this._instance.sessionManager)throw Ct.error("started without valid sessionManager"),new Error(ha+" started without valid sessionManager. This is a bug.");if(this.Ne.cookieless_mode===Tt)throw new Error(ha+' cannot be used with cookieless_mode="always"');C!=null&&C.addEventListener&&de(C,"visibilitychange",this.Ie)}initialize(){this.startIfEnabledOrStop()}dispose(){this.eo=!0,C==null||C.removeEventListener==null||C.removeEventListener("visibilitychange",this.Ie),this.stopRecording()}get ro(){var t,e=!((t=this._instance.get_property(vn))==null||!t.enabled),n=!this.Ne.disable_session_recording,i=this.Ne.disable_session_recording||this._instance.consent.isOptedOut();return _&&e&&n&&!i}startIfEnabledOrStop(t){var e;if(!(this.eo||this.ro&&(e=this.Ja)!=null&&e.isStarted)){var n=!x(Object.assign)&&!x(Array.from);this.ro&&n?(this.no(t),Ct.info("starting")):(this.Ya=qc,this.stopRecording())}}no(t){var e,n,i;this.ro&&(this.Ya!==ui&&this.Ya!==ir&&(this.Ya=zc),T!=null&&(e=T.__PosthogExtensions__)!=null&&(e=e.rrweb)!=null&&e.record&&(n=T.__PosthogExtensions__)!=null&&n.initSessionRecording?this.so(t):(i=T.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this._instance,this.ao,(r=>{if(r)return Ct.error("could not load recorder",r);this.so(t)})))}stopRecording(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.stop()}oo(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.discard()}lo(){var t,e;(t=this.Mr)==null||t.unregister(za),(e=this.Mr)==null||e.unregister(bd)}uo(t,e){if(j(t))return null;var n,i=Se(t)?t:parseFloat(t);return typeof(n=i)!="number"||!Number.isFinite(n)||0>n||n>1?(Ct.warn(e+" must be between 0 and 1. Ignoring invalid value:",t),null):i}ho(t){if(this.Mr){var e,n,i=this.Mr,r=()=>{var s,o=t.sessionRecording===!1?void 0:t.sessionRecording,a=this.uo((s=this.Ne.session_recording)==null?void 0:s.sampleRate,"session_recording.sampleRate"),l=this.uo(o?.sampleRate,"remote config sampleRate"),u=a??l;j(u)&&this.lo();var c=o?.minimumDurationMilliseconds;i.register({[vn]:E({cache_timestamp:Date.now(),enabled:!!o},o,{networkPayloadCapture:E({capturePerformance:t.capturePerformance},o?.networkPayloadCapture),canvasRecording:{enabled:o?.recordCanvas,fps:o?.canvasFps,quality:o?.canvasQuality},sampleRate:u,minimumDurationMilliseconds:x(c)?null:c,endpoint:o?.endpoint,triggerMatchType:o?.triggerMatchType,masking:o?.masking,urlTriggers:o?.urlTriggers,version:o?.version,triggerGroups:o?.triggerGroups})})};r(),(e=this.Xa)==null||e.call(this),this.Xa=(n=this._instance.sessionManager)==null?void 0:n.onSessionId(r)}}onRemoteConfig(t){var e=t.ok?t.config:void 0;return e&&"sessionRecording"in e?e.sessionRecording===!1?(this.ho(e),void this.oo()):(this.ho(e),void this.startIfEnabledOrStop()):(this.Ya===ui&&(this.Ya=ir,Ct.warn("config refresh failed, recording will not start until page reload")),void this.startIfEnabledOrStop())}log(t,e){var n;e===void 0&&(e="log"),(n=this.Ja)!=null&&n.log?this.Ja.log(t,e):Ct.warn("log called before recorder was ready")}get ao(){var t,e,n=(t=this._instance)==null||(t=t.persistence)==null?void 0:t.get_property(vn);return(n==null||(e=n.scriptConfig)==null?void 0:e.script)||"lazy-recorder"}do(){var t,e=this._instance.get_property(vn);if(!e)return!1;try{t=typeof e=="object"?e:JSON.parse(e)}catch(n){return Ct.warn("persisted remote config for session recording is invalid and will be ignored",n),!1}return!j(t.cache_timestamp)&&36e5>=Date.now()-t.cache_timestamp}so(t){var e,n,i;if(!this.eo){if((e=T.__PosthogExtensions__)==null||!e.initSessionRecording)return Ct.warn("Called on script loaded before session recording is available. This can be caused by adblockers."),void this._instance.register_for_session({[Pd]:!0});var r;if(this.Ja||(this.Ja=(r=T.__PosthogExtensions__)==null?void 0:r.initSessionRecording(this._instance,this.io),this.Ja._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture),!this.do())return this.Ya===ir||this.Ya===ui?void 0:(this.Ya=ui,Ct.info("persisted remote config is stale, requesting fresh config before starting"),void new eh(this._instance).load());this.Ya=zc,(n=(i=this.Ja).setDocumentWasEverVisible)==null||n.call(i,this.io),this.Ja.start(t)}}onRRwebEmit(t){var e;(e=this.Ja)==null||e.onRRwebEmit==null||e.onRRwebEmit(t)}overrideLinkedFlag(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Sd]:!0}),(t=this.Ja)==null||t.overrideLinkedFlag()}overrideSampling(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Ed]:!0}),(t=this.Ja)==null||t.overrideSampling()}overrideTrigger(t){var e,n;this.Ja||(n=this.Mr)==null||n.register({[t==="url"?xd:kd]:!0}),(e=this.Ja)==null||e.overrideTrigger(t)}get sdkDebugProperties(){var t;return((t=this.Ja)==null?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,e){var n;return!((n=this.Ja)==null||!n.tryAddCustomEvent(t,e))}}},Zg={autocapture:class{constructor(t){this.vo=!1,this.co=null,this.fo=!1,this.po=!1,this.instance=t,this.rageclicks=new Uc(t.config.rageclick),this.mo=null}initialize(){this.startIfEnabled()}get Ne(){var t,e,n=ae(this.instance.config.autocapture)?this.instance.config.autocapture:{};return n.url_allowlist=(t=n.url_allowlist)==null?void 0:t.map((i=>new RegExp(i))),n.url_ignorelist=(e=n.url_ignorelist)==null?void 0:e.map((i=>new RegExp(i))),n}yo(){if(this.isBrowserSupported()){if(_&&C){var t=n=>{n=n||_?.event;try{this.bo(n)}catch(i){Eo.error("Failed to capture event",i)}};if(de(C,"submit",t,{capture:!0}),de(C,"change",t,{capture:!0}),de(C,"click",t,{capture:!0}),this.Ne.capture_copied_text){var e=n=>{n=n||_?.event;try{this.bo(n,bo)}catch(i){Eo.error("Failed to capture copy/cut event",i)}};de(C,"copy",e,{capture:!0}),de(C,"cut",e,{capture:!0})}}}else Eo.info("Disabling Automatic Event Collection because this browser is not supported")}startIfEnabled(){this.isEnabled&&!this.vo&&(this.yo(),this.vo=!0)}onRemoteConfig(t){if(this.fo=!0,t.ok){var e=t.config;e.elementsChainAsString&&(this.po=e.elementsChainAsString);var n=e.autocapture_opt_out;at(n)&&(this.instance.persistence&&this.instance.persistence.register({[Uo]:n}),this.co=n),this.startIfEnabled()}else this.startIfEnabled()}setElementSelectors(t){this.mo=t}getElementSelectors(t){var e,n=[];return(e=this.mo)==null||e.forEach((i=>{var r=C?.querySelectorAll(i);r?.forEach((s=>{t===s&&n.push(i)}))})),n}get isEnabled(){var t,e,n=(t=this.instance.persistence)==null?void 0:t.props[Uo],i=this.co,r=this.instance.Qi()&&!this.fo;if(We(i)&&!at(n)&&!r)return!1;var s=(e=this.co)!==null&&e!==void 0?e:!!n;return!!this.instance.config.autocapture&&!s}bo(t,e){if(e===void 0&&(e="$autocapture"),this.isEnabled){var n,i=lo(t);Md(i)&&(i=i.parentNode||null),e==="$autocapture"&&t.type==="click"&&t instanceof MouseEvent&&this.instance.config.rageclick&&(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,t.timeStamp||new Date().getTime())&&vc(i,this.instance.config.rageclick)&&this.bo(t,"$rageclick");var r=e===bo;if(i&&(function(d,h,f,p,g,m){var v;if(!_||Ja(d)||f!=null&&f.url_allowlist&&!pc(f.url_allowlist,m)||f!=null&&f.url_ignorelist&&pc(f.url_ignorelist,m))return!1;if(f!=null&&f.dom_event_allowlist){var w=f.dom_event_allowlist;if(w&&!w.some((S=>h.type===S)))return!1}var b=jd(d,p),I=b.parentIsUsefulElement,A=b.targetElementList;if(!(function(S,F){var R=F?.element_allowlist;if(x(R))return!0;var M,$=function(Y){if(R.some((V=>Y.tagName.toLowerCase()===V)))return{v:!0}};for(var N of S)if(M=$(N))return M.v;return!1})(A,f)||!ia(A,f?.css_selector_allowlist)||ia(A,(v=f?.css_selector_ignorelist)!==null&&v!==void 0?v:Kp))return!1;try{var P=_.getComputedStyle(d);if(P&&P.getPropertyValue("cursor")==="pointer"&&h.type==="click")return!0}catch{}var O=d.tagName.toLowerCase();switch(O){case"html":return!1;case"form":return(g||["submit"]).indexOf(h.type)>=0;case"input":case"select":case"textarea":return(g||["change","click"]).indexOf(h.type)>=0;default:return I?(g||["click"]).indexOf(h.type)>=0:(g||["click"]).indexOf(h.type)>=0&&(Ya.indexOf(O)>-1||d.getAttribute("contenteditable")==="true")}})(i,t,this.Ne,r,r?["copy","cut"]:void 0,this.instance)){var s=jg(i,{e:t,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.Ne.element_attribute_ignorelist,elementsChainAsString:this.po,disableCaptureUrlHashes:this.instance.config.disable_capture_url_hashes}),o=s.props;if(s.explicitNoCapture)return!1;var a=this.getElementSelectors(i);if(a&&a.length>0&&(o.$element_selectors=a),e===bo){var l,u=Od(_==null||(l=_.getSelection())==null?void 0:l.toString()),c=t.type||"clipboard";if(!u)return!1;o.$selected_content=u,o.$copy_type=c}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return Ne(C?.querySelectorAll)}},historyAutocapture:class{constructor(t){var e;this._instance=t,this._o=(_==null||(e=_.location)==null?void 0:e.pathname)||""}initialize(){this.startIfEnabled()}get isEnabled(){return this._instance.config.capture_pageview==="history_change"}startIfEnabled(){this.isEnabled&&(k.info("History API monitoring enabled, starting..."),this.monitorHistoryChanges())}stop(){this.wo&&this.wo(),this.wo=void 0,k.info("History API monitoring stopped")}monitorHistoryChanges(){_&&_.history&&(this.ko("pushState"),this.ko("replaceState"),this.xo())}ko(t){var e;if(_&&((e=_.history[t])==null||!e.__posthog_wrapped__)){var n=this;(function(i,r,s){try{if(!(r in i))return Hc;var o={next:i[r]},a=s((function(){for(var l=arguments.length,u=new Array(l),c=0;l>c;c++)u[c]=arguments[c];return o.next.apply(this,u)}));return Ne(a)&&(a.prototype=a.prototype||{},Object.defineProperties(a,{__posthog_wrapped__:{enumerable:!1,value:!0},__posthog_layer__:{enumerable:!1,value:o}})),i[r]=a,()=>{if(i[r]!==a)for(var l=i[r];Ne(l)&&l.__posthog_layer__;){var u=l.__posthog_layer__;if(u.next===a)return void(u.next=o.next);l=u.next}else i[r]=o.next}}catch{return Hc}})(_.history,t,(i=>function(r,s,o){i.call(this,r,s,o),n.So(t)}))}}So(t){try{var e,n=_==null||(e=_.location)==null?void 0:e.pathname;if(!n)return;n!==this._o&&this.isEnabled&&this._instance.capture($n,{navigation_type:t}),this._o=n}catch(i){k.error("Error capturing "+t+" pageview",i)}}xo(){if(!this.wo){var t=()=>{this.So("popstate")};de(_,"popstate",t),this.wo=()=>{_&&_.removeEventListener("popstate",t)}}}},heatmaps:class{get Ne(){return this.instance.config}constructor(t){var e;this.Co=!1,this.vo=!1,this.Mo=null,this.instance=t,this.Co=!((e=this.instance.persistence)==null||!e.props[Ho]),this.rageclicks=new Uc(t.config.rageclick)}initialize(){this.startIfEnabled()}get flushIntervalMilliseconds(){var t=5e3;return ae(this.Ne.capture_heatmaps)&&this.Ne.capture_heatmaps.flush_interval_milliseconds&&(t=this.Ne.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return j(this.Ne.capture_heatmaps)?j(this.Ne.enable_heatmaps)?this.Co:this.Ne.enable_heatmaps:this.Ne.capture_heatmaps!==!1}startIfEnabled(){if(this.isEnabled){if(this.vo)return;Hg.info("starting..."),this.To(),this.Ie()}else{var t;clearInterval((t=this.Mo)!==null&&t!==void 0?t:void 0),this.Eo(),this.getAndClearBuffer()}}onRemoteConfig(t){if(t.ok){var e=t.config;if("heatmaps"in e){var n=!!e.heatmaps;this.instance.persistence&&this.instance.persistence.register({[Ho]:n}),this.Co=n,this.startIfEnabled()}}}getAndClearBuffer(){var t=this.R;return this.R=void 0,t}Io(t){xo(t.originalEvent)&&this.ke(t.originalEvent,"deadclick")}Ie(){this.Mo&&clearInterval(this.Mo),this.Mo=C?.visibilityState==="visible"?setInterval(this.cr.bind(this),this.flushIntervalMilliseconds):null}To(){_&&C&&(this.Po=this.cr.bind(this),de(_,Dr,this.Po),this.Ro=t=>this.ke(t||_?.event),de(C,"click",this.Ro,{capture:!0}),this.Ao=t=>this.Fo(t||_?.event),de(C,"mousemove",this.Ao,{capture:!0}),this.Lo=new xc(this.instance,tg,this.Io.bind(this)),this.Lo.startIfEnabledOrStop(),this.Oo=this.Ie.bind(this),de(C,Br,this.Oo),this.vo=!0)}Eo(){var t;_&&C&&(this.Po&&_.removeEventListener(Dr,this.Po),this.Ro&&C.removeEventListener("click",this.Ro,{capture:!0}),this.Ao&&C.removeEventListener("mousemove",this.Ao,{capture:!0}),this.Oo&&C.removeEventListener(Br,this.Oo),clearTimeout(this.Do),(t=this.Lo)==null||t.stop(),this.vo=!1)}$o(t,e){var n=this.instance.scrollManager.scrollY(),i=this.instance.scrollManager.scrollX(),r=this.instance.scrollManager.scrollElement(),s=(function(o,a,l){for(var u=o;u&&en(u)&&!Ge(u,"body");){if(u===l)return!1;var c=void 0;try{var d,h,f;c=(d=(h=(f=u.ownerDocument)==null?void 0:f.defaultView)!==null&&h!==void 0?h:_)==null?void 0:d.getComputedStyle(u).position}catch{return!1}if(B(a,c))return!0;u=Bd(u)}return!1})(lo(t),["fixed","sticky"],r);return{x:t.clientX+(s?0:i),y:t.clientY+(s?0:n),target_fixed:s,type:e}}ke(t,e){var n;if(e===void 0&&(e="click"),!fc(t.target)&&xo(t)){var i=this.$o(t,e);(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,new Date().getTime())&&vc(lo(t),this.instance.config.rageclick)&&this.Vt(E({},i,{type:"rageclick"})),this.Vt(i)}}Fo(t){!fc(t.target)&&xo(t)&&(clearTimeout(this.Do),this.Do=setTimeout((()=>{this.Vt(this.$o(t,"mousemove"))}),500))}Vt(t){if(_){var e=this.Ne.disable_capture_url_hashes?Qt(_.location.href):_.location.href,n=this.Ne.custom_personal_data_properties,i=this.Ne.mask_personal_data_properties?[...zn,...n||[]]:[],r=Ti(e,i,$i);this.R=this.R||{},this.R[r]||(this.R[r]=[]),this.R[r].push(t)}}cr(){this.R&&!Nt(this.R)&&this.instance.capture("$$heatmap",{$heatmap_data:this.getAndClearBuffer()})}},deadClicksAutocapture:xc,webVitalsAutocapture:class{constructor(t){var e;this.Co=!1,this.vo=!1,this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},this.No=()=>{clearTimeout(this.qo),this.qo=void 0,this.R.metrics.length!==0&&(this._instance.capture("$web_vitals",E({$current_url:this.R.url},this.R.metrics.reduce(((n,i)=>E({},n,{["$web_vitals_"+i.name+"_event"]:E({},i),["$web_vitals_"+i.name+"_value"]:i.value})),{}))),this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.jo=n=>{var i;if(this.R=this.R||{navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},j(n?.name)||j(n?.value))cn.error("Invalid metric received",n);else{var r=typeof n.navigationURL=="string"?n.navigationURL:void 0,s=this.Bo(r);if(!x(s)){var o=Se(n.navigationId)||typeof n.navigationId=="string"?"navigation:"+n.navigationId:"url:"+s;if(!this.Ho||this.Ho>n.value){this.R.navigationKey!==o&&(this.No(),this.qo=setTimeout(this.No,this.flushToCaptureTimeoutMs)),x(this.R.navigationKey)&&(this.R.navigationKey=o,this.R.url=s),this.R.firstMetricTimestamp=x(this.R.firstMetricTimestamp)?Date.now():this.R.firstMetricTimestamp,n.attribution&&n.attribution.interactionTargetElement&&(n.attribution.interactionTargetElement=void 0);var a=(i=this._instance.sessionManager)==null?void 0:i.checkAndGetSessionAndWindowId(!0),l=E({},n,r?{navigationURL:s}:{},{$current_url:s,timestamp:Date.now()});x(a)||(l.$session_id=a.sessionId,l.$window_id=a.windowId),this.R.metrics.push(l),this.R.metrics.length===this.allowedMetrics.length&&this.No()}else cn.error("Ignoring metric with value >= "+this.Ho,n)}}},this.Uo=()=>{if(!this.vo){var n,i,r,s,o=T.__PosthogExtensions__,a=o?.postHogWebVitalsCallbacksByFlavor,l=a?.[this.zo]||(this.zo==="web-vitals"&&x(a)?o?.postHogWebVitalsCallbacks:void 0);if(x(l)||(n=l.onLCP,i=l.onCLS,r=l.onFCP,s=l.onINP),n&&i&&r&&s){var u={reportSoftNavs:this.useSoftNavs};this.allowedMetrics.indexOf("LCP")>-1&&n(this.jo.bind(this),u),this.allowedMetrics.indexOf("CLS")>-1&&i(this.jo.bind(this),u),this.allowedMetrics.indexOf("FCP")>-1&&r(this.jo.bind(this),u),this.allowedMetrics.indexOf("INP")>-1&&s(this.jo.bind(this),u),this.vo=!0}else cn.error("web vitals callbacks not loaded - not starting")}},this._instance=t,this.Co=!((e=this._instance.persistence)==null||!e.props[Vo]),this.startIfEnabled()}get Wo(){return this._instance.config.capture_performance}get allowedMetrics(){var t,e,n=ae(this.Wo)?(t=this.Wo)==null?void 0:t.web_vitals_allowed_metrics:void 0;return j(n)?((e=this._instance.persistence)==null?void 0:e.props[Go])||["CLS","FCP","INP","LCP"]:n}get flushToCaptureTimeoutMs(){return(ae(this.Wo)?this.Wo.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var t=ae(this.Wo)?this.Wo.web_vitals_attribution:void 0;return t!=null&&t}get useSoftNavs(){var t=ae(this.Wo)?this.Wo.__preview_web_vitals_soft_navs:void 0;return t!=null&&t}get Ho(){var t=ae(this.Wo)&&Se(this.Wo.__web_vitals_max_value)?this.Wo.__web_vitals_max_value:Wc;return t>0&&6e4>=t?Wc:t}get isEnabled(){var t=ue?.protocol;if(t!=="http:"&&t!=="https:")return cn.info("Web Vitals are disabled on non-http/https protocols"),!1;var e=ae(this.Wo)?this.Wo.web_vitals:at(this.Wo)?this.Wo:void 0;return at(e)?e:this.Co}startIfEnabled(){this.isEnabled&&!this.vo&&(cn.info("enabled, starting..."),this.ai(this.Uo))}onRemoteConfig(t){if(t.ok){var e=t.config;if("capturePerformance"in e){var n=ae(e.capturePerformance)&&!!e.capturePerformance.web_vitals,i=ae(e.capturePerformance)?e.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[Vo]:n}),this._instance.persistence.register({[Go]:i})),this.Co=n,this.startIfEnabled()}}}get zo(){return this.useSoftNavs?this.useAttribution?"web-vitals-with-attribution-soft-navs":"web-vitals-soft-navs":this.useAttribution?"web-vitals-with-attribution":"web-vitals"}ai(t){var e=T.__PosthogExtensions__,n=this.zo,i=e?.postHogWebVitalsCallbacksByFlavor;i!=null&&i[n]||n==="web-vitals"&&x(i)&&e!=null&&e.postHogWebVitalsCallbacks?t():e==null||e.loadExternalDependency==null||e.loadExternalDependency(this._instance,n,(r=>{r?cn.error("failed to load script",r):t()}))}Bo(t){var e=t||_?.location.href;if(e){var n=this._instance.config.disable_capture_url_hashes?Qt(e):e,i=this._instance.config.custom_personal_data_properties,r=this._instance.config.mask_personal_data_properties?[...zn,...i||[]]:[];return Ti(n,r,$i)}cn.error("Could not determine current URL")}}},Xg={exceptionObserver:class{constructor(t){var e;this.Uo=()=>{var n;if(_&&this.isEnabled&&(n=T.__PosthogExtensions__)!=null&&n.errorWrappingFunctions){var i=T.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,r=T.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=T.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.Vo&&this.Ne.capture_unhandled_errors&&(this.Vo=i(this.captureException.bind(this))),!this.Zo&&this.Ne.capture_unhandled_rejections&&(this.Zo=r(this.captureException.bind(this))),!this.Go&&this.Ne.capture_console_errors&&(this.Go=s(this.captureException.bind(this)))}catch(o){ci.error("failed to start",o),this.Qo()}}},this._instance=t,this.Ko=!((e=this._instance.persistence)==null||!e.props[Wo]),this.Jo=new Jf(E({},(function(n){var i,r,s,o;return n===void 0&&(n={}),{refillRate:(i=(r=n.exceptionRateLimiterRefillRate)!==null&&r!==void 0?r:n.__exceptionRateLimiterRefillRate)!==null&&i!==void 0?i:1,bucketSize:(s=(o=n.exceptionRateLimiterBucketSize)!==null&&o!==void 0?o:n.__exceptionRateLimiterBucketSize)!==null&&s!==void 0?s:10}})(this._instance.config.error_tracking),{refillInterval:1e4,rt:ci})),this.Ne=this.Yo(),this.startIfEnabledOrStop()}Yo(){var t=this._instance.config.capture_exceptions,e={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return ae(t)?e=E({},e,t):(x(t)?this.Ko:t)&&(e=E({},e,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),e}get isEnabled(){return this.Ne.capture_console_errors||this.Ne.capture_unhandled_errors||this.Ne.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(ci.info("enabled"),this.Qo(),this.ai(this.Uo)):this.Qo()}ai(t){var e,n;(e=T.__PosthogExtensions__)!=null&&e.errorWrappingFunctions?t():(n=T.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"exception-autocapture",(i=>{if(i)return ci.error("failed to load script",i);t()}))}Qo(){var t,e,n;(t=this.Vo)==null||t.call(this),this.Vo=void 0,(e=this.Zo)==null||e.call(this),this.Zo=void 0,(n=this.Go)==null||n.call(this),this.Go=void 0}onRemoteConfig(t){if(t.ok){var e=t.config;"autocaptureExceptions"in e&&(this.Ko=!!e.autocaptureExceptions||!1,this._instance.persistence&&this._instance.persistence.register({[Wo]:this.Ko}),this.Ne=this.Yo(),this.startIfEnabledOrStop())}}onConfigChange(){this.Ne=this.Yo()}captureException(t){var e,n,i,r=(e=t==null||(n=t.$exception_list)==null||(n=n[0])==null?void 0:n.type)!==null&&e!==void 0?e:"Exception";this.Jo.consumeRateLimit(r)?ci.info("Skipping exception capture because of client rate limiting.",{exception:r}):(i=this._instance.exceptions)==null||i.sendExceptionEvent(t)}},exceptions:class{constructor(t){var e,n;this.Xo=[],this.tl=new fp([new bp,new Fp,new Sp,new Ep,new Ap,new Cp,new kp,new Pp],(function(i){for(var r=arguments.length,s=new Array(r>1?r-1:0),o=1;r>o;o++)s[o-1]=arguments[o];return function(a,l){l===void 0&&(l=0);for(var u=[],c=a.split(` -`),d=l;c.length>d;d++){var h=c[d];if(1024>=h.length){var f=cc.test(h)?h.replace(cc,"$1"):h;if(!f.match(/\S*Error: /)){for(var p of s){var g=p(f,i);if(g){u.push(g);break}}if(u.length>=50)break}}}return(function(m){if(!m.length)return[];var v=Array.from(m);return v.reverse(),v.slice(0,50).map((w=>{return E({},w,{filename:w.filename||(b=v,b[b.length-1]||{}).filename,function:w.function||Wn});var b}))})(u)}})("web:javascript",vp,wp)),this._instance=t,this.Xo=(e=(n=this._instance.persistence)==null?void 0:n.get_property(qo))!==null&&e!==void 0?e:[],this.el=$r(this.il()),this.rl=new Tp(this.el)}onConfigChange(){this.el=$r(this.il()),this.rl.setConfig(this.el)}onRemoteConfig(t){var e,n,i;if(t.ok){var r=t.config;if("errorTracking"in r){var s=(e=(n=r.errorTracking)==null?void 0:n.suppressionRules)!==null&&e!==void 0?e:[],o=(i=r.errorTracking)==null?void 0:i.captureExtensionExceptions;this.Xo=s,this._instance.persistence&&this._instance.persistence.register({[qo]:this.Xo,[zo]:o})}}}get nl(){var t,e=!!this._instance.get_property(zo),n=this._instance.config.error_tracking.captureExtensionExceptions;return(t=n??e)!==null&&t!==void 0&&t}buildProperties(t,e){return this.tl.buildFromUnknown(t,{syntheticException:e?.syntheticException,mechanism:{handled:e?.handled}})}addExceptionStep(t,e){if(this.el.enabled)try{if(!K(t)||t.trim().length===0)return void ft.warn("Ignoring exception step because message must be a non-empty string");var n=(function(s){if(!s)return{sanitizedProperties:{},droppedKeys:[]};var o=[];return{sanitizedProperties:Object.keys(s).reduce(((a,l)=>Rp.has(l)?(o.push(l),a):(a[l]=s[l],a)),{}),droppedKeys:o}})(this.sl(e)),i=n.sanitizedProperties,r=n.droppedKeys;r.length>0&&ft.warn("Ignoring reserved exception step fields",{droppedKeys:r}),this.rl.add(E({[Rr]:t,[Tr]:new Date().toISOString()},i))}catch(s){ft.error("Failed to add exception step. Ignoring breadcrumb.",s)}}sendExceptionEvent(t){try{var e=t.$exception_list;if(this.al(e)){if(this.ol(e))return this.ll("Exception dropped: matched a suppression rule"),void ft.info("Skipping exception capture because a suppression rule matched");if(!this.nl&&this.ul(e))return this.ll("Exception dropped: thrown by a browser extension"),void ft.info("Skipping exception capture because it was thrown by an extension");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.hl(e))return this.ll("Exception dropped: thrown by the PostHog SDK"),void ft.info("Skipping exception capture because it was thrown by the PostHog SDK")}var n=this.el.enabled&&j(t.$exception_steps)?this.dl(t):t,i=typeof(s=globalThis._posthogReleaseId)=="string"&&s.length>0?s:void 0;i&&(n.$release_id=i);try{var r=this._instance.capture("$exception",n,{_noTruncate:!0,_batchKey:"exceptionEvent",Wn:!0});return r&&this.rl.clear(),r}catch(o){return ft.error("Failed to capture exception event. Dropping this exception.",o),void this.rl.clear()}}catch(o){return void ft.error("Failed to process exception event. Ignoring this exception.",o)}var s}dl(t){try{var e=this.rl.getAttachable();return e.length===0?t:E({},t,{$exception_steps:e})}catch(n){return ft.error("Failed to read buffered exception steps. Capturing exception without steps.",n),t}}ll(t){this.el.enabled&&this.rl.add({[Rr]:t,[Tr]:new Date().toISOString()})}sl(t){return ae(t)?E({},t):{}}il(){var t,e;return(t=(e=this._instance.config.error_tracking)==null?void 0:e.exception_steps)!==null&&t!==void 0?t:{}}ol(t){if(t.length===0)return!1;try{var e=t.reduce(((n,i)=>{var r=i.type,s=i.value;return K(r)&&r.length>0&&n.$exception_types.push(r),K(s)&&s.length>0&&n.$exception_values.push(s),n}),{$exception_types:[],$exception_values:[]});return this.Xo.some((n=>{var i=n.values.map((r=>{var s=ph[r.operator],o=e[r.key];if(!s||!o)return!1;var a=D(r.value)?r.value:[r.value];return a.length>0&&s(a,o)}));return n.type==="OR"?i.some(Boolean):i.every(Boolean)}))}catch(n){return ft.warn("Failed to evaluate suppression rules. Capturing the exception.",n),!1}}ul(t){return t.flatMap((e=>{var n,i;return(n=(i=e.stacktrace)==null?void 0:i.frames)!==null&&n!==void 0?n:[]})).some((e=>e.filename&&e.filename.startsWith("chrome-extension://")))}hl(t){if(t.length>0){var e,n,i,r,s=(e=(n=t[0].stacktrace)==null?void 0:n.frames)!==null&&e!==void 0?e:[],o=s[s.length-1];return(i=o==null||(r=o.filename)==null?void 0:r.includes("posthog.com/static"))!==null&&i!==void 0&&i}return!1}al(t){return!j(t)&&D(t)}}},Qg=E({productTours:class{get Mr(){return this._instance.persistence}constructor(t){this.vl=null,this.cl=null,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(t.ok){var e=t.config;if("productTours"in e){var n,i;if(this.Mr&&this.Mr.register({[qa]:!!e.productTours}),!ko(this._instance))return!this.vl&&j((n=this.Mr)==null?void 0:n.props[vi])||rr.info("product tours disabled; stopping and clearing cached tours"),(i=this.vl)==null||i.stop(),this.vl=null,void this.clearCache();this.loadIfEnabled()}}}loadIfEnabled(){!this.vl&&ko(this._instance)&&this.ai((()=>this.fl()))}ai(t){var e,n;(e=T.__PosthogExtensions__)!=null&&e.generateProductTours?t():(n=T.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"product-tours",(i=>{i?rr.error("Could not load product tours script",i):t()}))}fl(){var t;!this.vl&&(t=T.__PosthogExtensions__)!=null&&t.generateProductTours&&(this.vl=T.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,e){if(e===void 0&&(e=!1),!D(this.cl)||e){var n=this.Mr;if(n){var i=n.props[vi];if(D(i)&&!e)return this.cl=i,void t(i,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/product_tours/?token="+this._instance.config.token),method:"GET",timestampMode:"query",callback:r=>{if(ko(this._instance)){var s=r.statusCode;if(s!==200||!r.json){var o="Product Tours API could not be loaded, status: "+s;return s===0?r.error||rr.warn(o):rr.error(o),void t([],{isLoaded:!1,error:o})}var a=D(r.json.product_tours)?r.json.product_tours:[];this.cl=a,n&&n.register({[vi]:a}),t(a,{isLoaded:!0})}else t([],{isLoaded:!0})}})}else t(this.cl,{isLoaded:!0})}getActiveProductTours(t){j(this.vl)?t([],{isLoaded:!1,error:"Product tours not loaded"}):this.vl.getActiveProductTours(t)}showProductTour(t){var e;(e=this.vl)==null||e.showTourById(t)}previewTour(t){this.vl?this.vl.previewTour(t):this.ai((()=>{var e;this.fl(),(e=this.vl)==null||e.previewTour(t)}))}dismissProductTour(){var t;(t=this.vl)==null||t.dismissTour("user_clicked_skip")}nextStep(){var t;(t=this.vl)==null||t.nextStep()}previousStep(){var t;(t=this.vl)==null||t.previousStep()}clearCache(){var t;this.cl=null,(t=this.Mr)==null||t.unregister(vi)}resetTour(t){var e;(e=this.vl)==null||e.resetTour(t)}resetAllTours(){var t;(t=this.vl)==null||t.resetAllTours()}cancelPendingTour(t){var e;(e=this.vl)==null||e.cancelPendingTour(t)}}},fs),em={siteApps:class{constructor(t){this.pl=0,this._instance=t,this.gl=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}ml(t,e){if(e){var n=this.globalsForEvent(e);this.gl.push(n),this.gl.length>1e3&&(this.gl=this.gl.slice(10))}}get siteAppLoaders(){var t;return(t=T._POSTHOG_REMOTE_CONFIG)==null||(t=t[this._instance.config.token])==null?void 0:t.siteApps}initialize(){if(this.isEnabled){var t=this._instance._addCaptureHook(this.ml.bind(this));this.yl=()=>{t(),this.gl=[],this.yl=void 0}}}globalsForEvent(t){var e,n,i,r,s,o,a;if(!t)throw new Error("Event payload is required");var l={},u=this._instance.get_property("$groups")||[],c=this._instance.get_property("$stored_group_properties")||{};for(var d of Object.entries(c)){var h=d[0];l[h]={id:u[h],type:h,properties:d[1]}}var f=t.$set_once,p=t.$set;return{event:E({},Du(t,Wg),{properties:E({},t.properties,p?{$set:E({},(e=(n=t.properties)==null?void 0:n.$set)!==null&&e!==void 0?e:{},p)}:{},f?{$set_once:E({},(i=(r=t.properties)==null?void 0:r.$set_once)!==null&&i!==void 0?i:{},f)}:{}),elements_chain:(s=(o=t.properties)==null?void 0:o.$elements_chain)!==null&&s!==void 0?s:"",distinct_id:(a=t.properties)==null?void 0:a.distinct_id}),person:{properties:this._instance.get_property("$stored_person_properties")},groups:l}}bl(t){var e,n=(e=t.tagName)==null?void 0:e.toLowerCase();return n==="style"&&this._instance.config.prepare_external_dependency_stylesheet?this._instance.config.prepare_external_dependency_stylesheet(t)||(ht.error("prepare_external_dependency_stylesheet returned null"),null):n==="script"&&this._instance.config.prepare_external_dependency_script?this._instance.config.prepare_external_dependency_script(t)||(ht.error("prepare_external_dependency_script returned null"),null):t}_l(){var t,e,n,i,r,s,o,a;if(!this._instance.config.prepare_external_dependency_stylesheet&&!this._instance.config.prepare_external_dependency_script)return()=>{};var l=C?.defaultView,u=l==null||(t=l.Node)==null?void 0:t.prototype;if(!l||!u)return()=>{};if(this.pl++,this.wl)return this.kl();var c=[],d=this,h=new WeakSet,f=(m,v,w)=>{if(m!=null&&m[v]){var b=m[v];m[v]=w(b),c.push((()=>{m[v]=b}))}},p=m=>{if(h.has(m))return m;var v=d.bl(m);return v&&h.add(v),v},g=m=>m.map((v=>typeof v=="string"?v:p(v))).filter((v=>!We(v)));return f(u,"appendChild",(m=>function(v){var w=p(v);return w?m.call(this,w):v})),f(u,"insertBefore",(m=>function(v,w){var b=p(v);return b?m.call(this,b,w):v})),f(u,"replaceChild",(m=>function(v,w){var b=p(v);return b?m.call(this,b,w):w})),[(e=l.Element)==null?void 0:e.prototype,(n=l.Document)==null?void 0:n.prototype,(i=l.DocumentFragment)==null?void 0:i.prototype].forEach((m=>{f(m,"append",(v=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];return v.apply(this,g(b))})),f(m,"prepend",(v=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];return v.apply(this,g(b))}))})),[(r=l.Element)==null?void 0:r.prototype,(s=l.CharacterData)==null?void 0:s.prototype,(o=l.DocumentType)==null?void 0:o.prototype].forEach((m=>{f(m,"before",(v=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];return v.apply(this,g(b))})),f(m,"after",(v=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];return v.apply(this,g(b))})),f(m,"replaceWith",(v=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];var A=g(b);return b.length&&!A.length?void 0:v.apply(this,A)}))})),f((a=l.Element)==null?void 0:a.prototype,"insertAdjacentElement",(m=>function(v,w){var b=p(w);return b?m.call(this,v,b):null})),this.wl=()=>{c.forEach((m=>m())),this.wl=void 0},this.kl()}kl(){var t=!1;return()=>{var e;t||(t=!0,this.pl--,this.pl===0&&((e=this.wl)==null||e.call(this)))}}xl(t,e){e===void 0&&(e=!0);var n=this._l();try{var i=t(n);return e&&n(),i}catch(r){throw n(),r}}setupSiteApp(t){var e=this.apps[t.id],n=()=>{var o;!e.errored&&this.gl.length&&(ht.info("Processing "+this.gl.length+" events for site app with id "+t.id),this.gl.forEach((a=>this.xl((()=>e.processEvent==null?void 0:e.processEvent(a))))),e.processedBuffer=!0),Object.values(this.apps).every((a=>a.processedBuffer||a.errored))&&((o=this.yl)==null||o.call(this))},i=!1,r=o=>{e.errored=!o,e.loaded=!0,ht.info("Site app with id "+t.id+" "+(o?"loaded":"errored")),i&&n()};try{var s=this.xl((o=>t.init({posthog:this._instance,callback(a){o(),r(a)}})),!1).processEvent;s&&(e.processEvent=s),i=!0}catch(o){ht.error(Vc+t.id,o),r(!1)}if(i&&e.loaded)try{n()}catch(o){ht.error("Error while processing buffered events PostHog app with config id "+t.id,o),e.errored=!0}}Sl(){var t=this.siteAppLoaders||[];for(var e of t)this.apps[e.id]={id:e.id,loaded:!1,errored:!1,processedBuffer:!1};for(var n of t)this.setupSiteApp(n)}Cl(t){var e=this;if(Object.keys(this.apps).length!==0){var n=this.globalsForEvent(t),i=function(s){try{e.xl((()=>s.processEvent==null?void 0:s.processEvent(n)))}catch(o){ht.error("Error while processing event "+t.event+" for site app "+s.id,o)}};for(var r of Object.values(this.apps))i(r)}}onRemoteConfig(t){var e,n,i,r=this;if((e=this.siteAppLoaders)!=null&&e.length)return this.isEnabled?(this.Sl(),void this._instance.on("eventCaptured",(l=>this.Cl(l)))):void ht.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.');if((n=this.yl)==null||n.call(this),t.ok){var s=t.config;if((i=s.siteApps)!=null&&i.length)if(this.isEnabled){var o=function(){var l,u=a.id,c=a.url;T["__$$ph_site_app_"+u]=r._instance,(l=T.__PosthogExtensions__)==null||l.loadSiteApp==null||l.loadSiteApp(r._instance,c,(d=>{if(d)return ht.error(Vc+u,d)}))};for(var a of s.siteApps)o()}else ht.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.')}}}},tm={tracingHeaders:class{constructor(t){this.Ml=void 0,this.Tl=void 0,this.El=void 0,this.Uo=()=>{var e,n,i=this.Il();i?(x(this.Ml)&&(this.Ml=(e=T.__PosthogExtensions__)==null||(e=e.tracingHeadersPatchFns)==null?void 0:e._patchXHR(i,(()=>this._instance.get_distinct_id()),this._instance.sessionManager)),x(this.Tl)&&(this.Tl=(n=T.__PosthogExtensions__)==null||(n=n.tracingHeadersPatchFns)==null?void 0:n._patchFetch(i,(()=>this._instance.get_distinct_id()),this._instance.sessionManager))):this.Qo()},this._instance=t}initialize(){this.startIfEnabledOrStop()}ai(t){var e,n;(e=T.__PosthogExtensions__)!=null&&e.tracingHeadersPatchFns?t():(n=T.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"tracing-headers",(i=>{if(i)return Ug.error("failed to load script",i);t()}))}Pl(){var t,e;return(t=(e=this._instance.config.tracing_headers)!==null&&e!==void 0?e:this._instance.config.addTracingHeaders)!==null&&t!==void 0?t:this._instance.config.__add_tracing_headers}Il(){var t=this.Pl();return D(t)?(D(this.El)?this.El.splice(0,this.El.length,...t):this.El=[...t],t.length>0?this.El:void 0):(D(this.El)&&this.El.splice(0),this.El=t||void 0,this.El)}Qo(){var t,e;(t=this.Ml)==null||t.call(this),(e=this.Tl)==null||e.call(this),this.Ml=void 0,this.Tl=void 0}startIfEnabledOrStop(){this.Il()?this.ai(this.Uo):this.Qo()}}},nm=E({surveys:class{get Ne(){return this._instance.config}constructor(t){this.Rl=void 0,this._surveyManager=null,this.Al=!1,this.Fl=[],this.Ll=null,this.Ol=null,this._instance=t,this._surveyEventReceiver=null}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this.Ne.disable_surveys){if(!t.ok)return Z.warn("Remote config unavailable. Not loading surveys.");var e=t.config.surveys;if(j(e))return Z.warn("Flags not loaded yet. Not loading surveys.");var n=D(e);this.Rl=n?e.length>0:e,Z.info("flags response received, isSurveysEnabled: "+this.Rl),this.loadIfEnabled()}}reset(){try{var t;(t=this._surveyEventReceiver)==null||t.reset(),localStorage.removeItem("lastSeenSurveyDate");for(var e=[],n=0;nlocalStorage.removeItem(r)))}catch{}}loadIfEnabled(){if(!this._surveyManager)if(this.Al)Z.info("Already initializing surveys, skipping...");else if(this.Ne.disable_surveys)Z.info(Gc);else if(this.Ne.cookieless_mode&&this._instance.consent.isOptedOut())Z.info("Not loading surveys in cookieless mode without consent.");else{var t=T?.__PosthogExtensions__;if(t){if(!x(this.Rl)||this.Ne.advanced_enable_surveys){var e=this.Rl||this.Ne.advanced_enable_surveys;this.Al=!0;try{var n=t.generateSurveys;if(n)return void this.Dl(n,e);var i=t.loadExternalDependency;if(!i)return void this.$l(Va);i(this._instance,"surveys",(r=>{r||!t.generateSurveys?this.$l("Could not load surveys script",r):this.Dl(t.generateSurveys,e)}))}catch(r){throw this.$l("Error initializing surveys",r),r}finally{this.Al=!1}}}else Z.error("PostHog Extensions not found.")}}Dl(t,e){this._surveyManager=t(this._instance,e),this._surveyEventReceiver=new Vg(this._instance),Z.info("Surveys loaded successfully"),this.Nl({isLoaded:!0})}$l(t,e){Z.error(t,e),this.Nl({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.Fl.push(t),this._surveyManager&&this.Nl({isLoaded:!0}),()=>{this.Fl=this.Fl.filter((e=>e!==t))}}getSurveys(t,e){if(e===void 0&&(e=!1),this.Ne.disable_surveys)return Z.info(Gc),t([]);var n,i=this._instance.get_property(Yo);if(i&&!e)return t(i,{isLoaded:!0}),void(this.ql()&&this.getSurveys((()=>{}),!0));typeof Promise<"u"&&this.Ll?this.Ll.then((r=>t(r.surveys,r.context))):(typeof Promise<"u"&&(this.Ll=new Promise((r=>{n=r}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/surveys/?token="+this.Ne.token),method:"GET",timestampMode:"query",timeout:this.Ne.surveys_request_timeout_ms,callback:r=>{var s;this.Ll=null;var o=r.statusCode;if(o!==200||!r.json){var a="Surveys API could not be loaded, status: "+o;o!==0?Z.error(a):r.error||Z.warn(a),this.Ol=Date.now();var l={isLoaded:!1,error:a};return t([],l),void(n==null||n({surveys:[],context:l}))}this.Ol=null;var u,c=r.json.surveys||[],d=c.filter((f=>(function(p){return!(!p.start_date||p.end_date)})(f)&&(mh(f)||(function(p){var g;return!((g=p.conditions)==null||(g=g.actions)==null||(g=g.values)==null||!g.length)})(f))));d.length>0&&((u=this._surveyEventReceiver)==null||u.register(d)),(s=this._instance.persistence)==null||s.register({[Yo]:c,[Lr]:Date.now()});var h={isLoaded:!0};t(c,h),n?.({surveys:c,context:h})}}))}ql(){return this.jl()&&!this.Ll&&!this.Bl()}jl(){var t=this._instance.get_property(Lr);return Se(t)&&Date.now()-t>3e5}Bl(){return Se(this.Ol)&&3e5>Date.now()-this.Ol}markSurveyAsSeen(t,e){var n,i={id:t,current_iteration:(n=e?.iteration)!==null&&n!==void 0?n:null};_h(i);try{localStorage.setItem("lastSeenSurveyDate",new Date().toISOString())}catch{}}Nl(t){for(var e of this.Fl)try{if(!t.isLoaded)return e([],t);this.getSurveys(e)}catch(n){Z.error("Error in survey callback",n)}}getActiveMatchingSurveys(t,e){if(e===void 0&&(e=!1),!j(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,e);Z.warn("init was not called")}Hl(t){var e=null;return this.getSurveys((n=>{var i;e=(i=n.find((r=>r.id===t)))!==null&&i!==void 0?i:null})),e}Ul(t){if(j(this._surveyManager))return{eligible:!1,reason:sr};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyEligibility(e):{eligible:!1,reason:"Survey not found"}}zl(t){if(j(this._surveyManager))return{eligible:!1,reason:sr};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyRenderability(e):{eligible:!1,reason:"Survey not found"}}canRenderSurvey(t){if(j(this._surveyManager))return Z.warn("init was not called"),{visible:!1,disabledReason:sr};var e=this.zl(t);return{visible:e.eligible,disabledReason:e.reason}}canRenderSurveyAsync(t,e){return j(this._surveyManager)?(Z.warn("init was not called"),Promise.resolve({visible:!1,disabledReason:sr})):new Promise((n=>{this.getSurveys((i=>{var r,s=(r=i.find((a=>a.id===t)))!==null&&r!==void 0?r:null;if(s){var o=this.zl(s);n({visible:o.eligible,disabledReason:o.reason})}else n({visible:!1,disabledReason:"Survey not found"})}),e)}))}renderSurvey(t,e,n){var i;if(j(this._surveyManager))Z.warn("init was not called");else{var r=typeof t=="string"?this.Hl(t):t;if(r!=null&&r.id)if(Ag.includes(r.type)){var s=C?.querySelector(e);if(s)return(i=r.appearance)!=null&&i.surveyPopupDelaySeconds?(Z.info("Rendering survey "+r.id+" with delay of "+r.appearance.surveyPopupDelaySeconds+" seconds"),void setTimeout((()=>{var o,a;Z.info("Rendering survey "+r.id+" with delay of "+((o=r.appearance)==null?void 0:o.surveyPopupDelaySeconds)+" seconds"),(a=this._surveyManager)==null||a.renderSurvey(r,s,n),Z.info("Survey "+r.id+" rendered")}),1e3*r.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(r,s,n);Z.warn("Survey element not found")}else Z.warn("Surveys of type "+r.type+" cannot be rendered in the app");else Z.warn("Survey not found")}}displaySurvey(t,e){var n;if(j(this._surveyManager))Z.warn("init was not called");else{var i=this.Hl(t);if(i){var r=i;if((n=i.appearance)!=null&&n.surveyPopupDelaySeconds&&e.ignoreDelay&&(r=E({},i,{appearance:E({},i.appearance,{surveyPopupDelaySeconds:0})})),e.displayType!==sa.Popover&&e.initialResponses&&Z.warn("initialResponses is only supported for popover surveys. prefill will not be applied."),e.ignoreConditions===!1){var s=this.Ul(i);if(!s.eligible)return void Z.warn("Survey is not eligible to be displayed: ",s.reason)}e.displayType!==sa.Inline?this._surveyManager.handlePopoverSurvey(r,e):this.renderSurvey(r,e.selector,e.properties)}else Z.warn("Survey not found")}}cancelPendingSurvey(t){j(this._surveyManager)?Z.warn("init was not called"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;(t=this._surveyManager)==null||t.handlePageUnload==null||t.handlePageUnload()}}},fs),im={toolbar:class{constructor(t){this.instance=t}Wl(t){T.ph_toolbar_state=t}Vl(){var t;return(t=T.ph_toolbar_state)!==null&&t!==void 0?t:0}initialize(){return this.maybeLoadToolbar()}maybeLoadToolbar(t,e,n){if(t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),na(this.instance.config)||!_||!C)return!1;t=t??_.location,n=n??_.history;try{if(!e){try{_.localStorage.setItem("test","test"),_.localStorage.removeItem("test")}catch{return!1}e=_?.localStorage}var i,r=Gg||Wr(t.hash,"__posthog")||Wr(t.hash,"state"),s=r?dc((()=>JSON.parse(atob(decodeURIComponent(r)))))||dc((()=>JSON.parse(decodeURIComponent(r)))):null;return s&&s.action==="ph_authorize"?((i=s).source="url",i&&Object.keys(i).length>0&&(s.desiredHash?t.hash=s.desiredHash:n?n.replaceState(n.state,"",t.pathname+t.search):t.hash="")):((i=JSON.parse(e.getItem(Kc)||"{}")).source="localstorage",delete i.userIntent),!(!i.token||this.instance.config.token!==i.token||(this.loadToolbar(i),0))}catch{return!1}}Zl(t){var e=T.ph_load_toolbar||T.ph_load_editor;!j(e)&&Ne(e)?e(t,this.instance):Yc.warn("No toolbar load function found")}loadToolbar(t){var e=!(C==null||!C.getElementById($d));if(!_||e)return!1;var n=this.instance.requestRouter.region==="custom"&&this.instance.config.advanced_disable_toolbar_metrics,i=E({token:this.instance.config.token},t,{apiURL:this.instance.requestRouter.endpointFor("ui")},n?{instrument:!1}:{});if(_.localStorage.setItem(Kc,JSON.stringify(E({},i,{source:void 0}))),this.Vl()===2)this.Zl(i);else if(this.Vl()===0){var r;this.Wl(1),(r=T.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this.instance,"toolbar",(s=>{if(s)return Yc.error("[Toolbar] Failed to load",s),void this.Wl(0);this.Wl(2),this.Zl(i)})),de(_,"turbolinks:load",(()=>{this.Wl(0),this.loadToolbar(i)}))}return!0}Gl(t){return this.loadToolbar(t)}maybeLoadEditor(t,e,n){return t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),this.maybeLoadToolbar(t,e,n)}}},rm=E({experiments:Re},fs),sm={conversations:class{constructor(t){this.Ql=void 0,this._conversationsManager=null,this.Kl=!1,this.Jl=null,this.Yl=!1,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this._instance.config.disable_conversations&&(this.Xl=t.ok,t.ok)){var e=t.config.conversations;j(e)||(at(e)?this.Ql=e:(this.Ql=e.enabled,this.Jl=e),this.loadIfEnabled())}}reset(){var t;(t=this._conversationsManager)==null||t.reset(),this._conversationsManager=null,this.Ql=void 0,this.Jl=null,this.Xl=void 0,this.Yl=!1}loadIfEnabled(){if(!(this._conversationsManager||this.Kl||this._instance.config.disable_conversations||na(this._instance.config)||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=T?.__PosthogExtensions__;if(t&&!x(this.Ql)&&this.Ql)if(this.Jl&&this.Jl.token){this.Kl=!0;try{var e=t.initConversations;if(e)return this.tu(e),void(this.Kl=!1);var n=t.loadExternalDependency;if(!n)return void this.eu(Va);n(this._instance,"conversations",(i=>{i||!t.initConversations?this.eu("Could not load conversations script",i):this.tu(t.initConversations),this.Kl=!1}))}catch(i){this.eu("Error initializing conversations",i),this.Kl=!1}}else Ze.error("Conversations enabled but missing token in remote config.")}}tu(t){if(this.Jl)try{this._conversationsManager=t(this.Jl,this._instance),this.Yl=!1,Ze.info("Conversations loaded successfully")}catch(e){this.eu("Error completing conversations initialization",e)}else Ze.error("Cannot complete initialization: remote config is null")}eu(t,e){Ze.error(t,e),this._conversationsManager=null,this.Kl=!1,this.Yl=!0}show(){this._conversationsManager?this._conversationsManager.show():Ze.warn("Conversations not loaded yet.")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return this.Ql===!0&&!We(this._conversationsManager)}getUnavailableReason(){return this.isAvailable()?null:this._instance.config.disable_conversations?"disabled_by_config":na(this._instance.config)?"disabled_for_toolbar":this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut()?"consent_opted_out":this.Xl===!1?"remote_config_failed":x(this.Ql)?this.Xl?"disabled_in_project":"remote_config_pending":this.Ql?j(this.Jl)||!this.Jl.token?"missing_token":T!=null&&T.__PosthogExtensions__?this.Kl?"initializing":this.Yl?"load_failed":"not_loaded":"extensions_unavailable":"disabled_in_project"}isVisible(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.isVisible())!==null&&t!==void 0&&t}sendMessage(t,e,n){var i=this;return ne((function*(){return i._conversationsManager?i._conversationsManager.sendMessage(t,e,n):(Ze.warn(dn),null)}))()}getMessages(t,e){var n=this;return ne((function*(){return n._conversationsManager?n._conversationsManager.getMessages(t,e):(Ze.warn(dn),null)}))()}markAsRead(t){var e=this;return ne((function*(){return e._conversationsManager?e._conversationsManager.markAsRead(t):(Ze.warn(dn),null)}))()}getTickets(t){var e=this;return ne((function*(){return e._conversationsManager?e._conversationsManager.getTickets(t):(Ze.warn(dn),null)}))()}requestRestoreLink(t){var e=this;return ne((function*(){return e._conversationsManager?e._conversationsManager.requestRestoreLink(t):(Ze.warn(dn),null)}))()}restoreFromToken(t){var e=this;return ne((function*(){return e._conversationsManager?e._conversationsManager.restoreFromToken(t):(Ze.warn(dn),null)}))()}restoreFromUrlToken(){var t=this;return ne((function*(){return t._conversationsManager?t._conversationsManager.restoreFromUrlToken():(Ze.warn(dn),null)}))()}getCurrentTicketId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getCurrentTicketId())!==null&&t!==void 0?t:null}getWidgetSessionId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getWidgetSessionId())!==null&&t!==void 0?t:null}Xn(){var t;(t=this._conversationsManager)==null||t.setIdentity()}ts(){var t;(t=this._conversationsManager)==null||t.clearIdentity()}}},om={logs:class{constructor(t){var e,n=this;this.iu=!1,this.ru=!1,this.rt=le("[logs]"),this.nu=E({},this.rt,{error(){for(var i=arguments.length,r=new Array(i),s=0;i>s;s++)r[s]=arguments[s];r.some(iu)||n.rt.error(...r)}}),this.tr=[],this.su=[],this.Sa=0,this.au=()=>{var i,r;this.Sa=0,(i=this.ou)==null||i.onReconnect(),(r=this.lu)==null||r.onReconnect()},this._instance=t,this._instance&&(e=this._instance.config.logs)!=null&&e.captureConsoleLogs&&(this.iu=!0),_&&de(_,"online",this.au)}uu(t,e,n,i){var r,s=(function(o,a){var l,u,c,d,h,f,p,g=(l=o?.flushIntervalMs)!==null&&l!==void 0?l:3e3,m=(u=o?.maxBufferSize)!==null&&u!==void 0?u:100,v=a!=null&&a.consoleCapture?void 0:(c=o?.maxLogsPerInterval)!==null&&c!==void 0?c:1e3,w=x(v)?Math.max(m,2048):Math.max(m,v),b=o?.resourceAttributes;return{serviceName:(d=(h=b?.["service.name"])!==null&&h!==void 0?h:o?.serviceName)!==null&&d!==void 0?d:a?.serviceNameDefault,serviceVersion:(f=b?.["service.version"])!==null&&f!==void 0?f:o?.serviceVersion,environment:(p=b?.["deployment.environment"])!==null&&p!==void 0?p:o?.environment,resourceAttributes:b,beforeSend:o?.beforeSend,flushIntervalMs:g,maxBufferSize:m,maxQueueSize:w,maxBatchRecordsPerPost:100,rateCapWindowMs:g,maxLogsPerInterval:v,backgroundFlushBudgetMs:0,terminationFlushBudgetMs:0}})((r=this._instance)==null||(r=r.config)==null?void 0:r.logs,n);return[new up(this.hu(t,e),s,this.nu,(()=>this.du()),(o=>o()),void 0,i),s]}vu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.ou||this.cu!==e){var n;(n=this.ou)==null||n.reset(),this.cu=e;var i=this.uu((()=>this.tr),(r=>{this.tr=r}));this.ou=i[0],this.fu=i[1]}return this.ou}pu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.lu||this.gu!==e){var n;(n=this.lu)==null||n.reset(),this.gu=e;var i=this.uu((()=>this.su),(r=>{this.su=r}),{serviceNameDefault:"posthog-browser-logs",consoleCapture:!0},nu);this.lu=i[0],this.mu=i[1]}return this.lu}initialize(){this.loadIfEnabled()}onRemoteConfig(t){var e;if(t.ok){var n=(e=t.config.logs)==null?void 0:e.captureConsoleLogs;!j(n)&&n&&(this.iu=!0,this.loadIfEnabled())}}reset(){var t,e;this.tr=[],(t=this.ou)==null||t.reset(),this.su=[],(e=this.lu)==null||e.reset(),this.Sa=0}captureLog(t){this.vu().captureLog(t)}he(t){this.pu().captureLog(t)}get logger(){return this.yu||(this.yu={trace:(t,e)=>this.captureLog({body:t,level:"trace",attributes:e}),debug:(t,e)=>this.captureLog({body:t,level:"debug",attributes:e}),info:(t,e)=>this.captureLog({body:t,level:"info",attributes:e}),warn:(t,e)=>this.captureLog({body:t,level:"warn",attributes:e}),error:(t,e)=>this.captureLog({body:t,level:"error",attributes:e}),fatal:(t,e)=>this.captureLog({body:t,level:"fatal",attributes:e})}),this.yu}flushLogs(t){t?this.bu(t):(this.ou&&this.ou.flush().catch((e=>this._u(e))),this.lu&&this.lu.flush().catch((e=>this._u(e))))}_u(t){iu(t)||this.rt.error("PostHog logs flush failed:",t)}loadIfEnabled(){if(this.iu&&!this.ru){var t=T?.__PosthogExtensions__;if(t){var e=t.loadExternalDependency;e?e(this._instance,"logs",(n=>{var i;n||(i=t.logs)==null||!i.initializeLogs?this.rt.error("Could not load logs script",n):(t.logs.initializeLogs(this._instance),this.ru=!0)})):this.rt.error(Va)}else this.rt.error("PostHog Extensions not found.")}}hu(t,e){var n=this._instance;return{get isDisabled(){return!1},get optedOut(){return!n.is_capturing()},getPersistedProperty:i=>i===Ft.LogsQueue?t():void 0,setPersistedProperty(i,r){var s;i===Ft.LogsQueue&&e((s=r)!==null&&s!==void 0?s:[])},Ot:i=>this.Ot(i),getLibraryId:()=>ee.LIB_NAME,getLibraryVersion:()=>ee.LIB_VERSION}}Ot(t){return new Promise((e=>{if(zd(this.Sa,3))e({kind:"fatal",error:Co(void 0,"logs endpoint is unreachable, dropping batch")});else{var n=!1,i=s=>{n||(n=!0,clearTimeout(r),e(s))},r=setTimeout((()=>{this.rt.warn("Logs request timed out before receiving a response"),i({kind:"retry-later",error:Co(void 0,"logs request timed out")})}),9e4);this._instance._send_request({method:"POST",url:this.wu(),data:t,compression:"best-available",batchKey:"logs",fireCallbackOnDrop:!0,callback:s=>{var o=s.statusCode;if(this.ku(o),o>=200&&300>o)i({kind:"ok"});else if(o===413)i({kind:"too-large"});else if(o!==0&&o!==429&&500>o)i({kind:"fatal",error:new Error("logs request failed with status "+o)});else{var a;o===0?(s.error||this.rt.warn("Logs request failed before receiving an HTTP response"),i({kind:"retry-later",error:Co(s.error,"logs request failed before receiving an HTTP response")})):i({kind:"retry-later",error:(a=s.error)!==null&&a!==void 0?a:new Error("logs request failed with status "+o)})}}})}}))}ku(t){(t!==0||this._instance.__loaded)&&(this.Sa=Vd(t,this.Sa,3,(()=>this.rt.warn("Log requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped sending logs; will try again when connectivity changes."))))}bu(t){this.tr.length>0&&this.xu(t,this.tr,this.fu,ee.LIB_NAME,(e=>{this.tr=e})),this.su.length>0&&this.xu(t,this.su,this.mu,nu,(e=>{this.su=e}))}xu(t,e,n,i,r){if(e.length!==0){var s=e.map((a=>a.record));r([]);var o=md(s,gd(n,ee.LIB_NAME,ee.LIB_VERSION),i,ee.LIB_VERSION);this._instance._send_request({method:"POST",url:this.wu(),data:o,compression:"best-available",batchKey:"logs",transport:t})}}wu(){return this._instance.requestRouter.endpointFor("api","/i/v1/logs")+"?token="+encodeURIComponent(this._instance.config.token)}du(){var t,e={};if(e.distinctId=this._instance.get_distinct_id(),this._instance.sessionManager){var n=this._instance.sessionManager.checkAndGetSessionAndWindowId(!0),i=n.windowId,r=n.sessionStartTimestamp,s=n.lastActivityTimestamp;e.sessionId=n.sessionId,e.windowId=i,j(r)||(e.sessionStartTimestamp=r),j(s)||(e.lastActivityTimestamp=s)}if(T!=null&&(t=T.location)!=null&&t.href&&(e.currentUrl=this._instance.config.disable_capture_url_hashes?Qt(T.location.href):T.location.href),this._instance.featureFlags){var o=this._instance.featureFlags.getFlags();o&&o.length>0&&(e.activeFeatureFlags=o)}return e}}},am={metrics:class{constructor(t){this.rt=le("[metrics]"),this._instance=t}initialize(){}vu(){var t,e,n=(t=this._instance)==null||(t=t.config)==null?void 0:t.metrics;return this.ou&&this.cu===n||((e=this.ou)==null||e.reset(),this.cu=n,this.ou=new dp(this.hu(),(function(i){var r,s,o,a,l,u=i?.resourceAttributes;return{serviceName:(r=u?.["service.name"])!==null&&r!==void 0?r:i?.serviceName,serviceVersion:(s=u?.["service.version"])!==null&&s!==void 0?s:i?.serviceVersion,environment:(o=u?.["deployment.environment"])!==null&&o!==void 0?o:i?.environment,resourceAttributes:u,beforeSend:i?.beforeSend,flushIntervalMs:(a=i?.flushIntervalMs)!==null&&a!==void 0?a:1e4,maxSeriesPerFlush:(l=i?.maxSeriesPerFlush)!==null&&l!==void 0?l:1e3}})(n),this.rt)),this.ou}count(t,e,n){e===void 0&&(e=1),this.vu().count(t,e,n)}gauge(t,e,n){this.vu().gauge(t,e,n)}histogram(t,e,n){this.vu().histogram(t,e,n)}flush(t){if(!this.ou)return Promise.resolve();if(t){var e=this.ou.drainWindow();return e&&this.Jt(e,t),Promise.resolve()}return this.ou.flush().catch((n=>this.rt.error("PostHog metrics flush failed:",n)))}reset(){var t;(t=this.ou)==null||t.reset()}hu(){var t=this._instance,e=this;return{get isDisabled(){return!1},get optedOut(){return!t.is_capturing()},Jt:n=>e.Jt(n),getLibraryId:()=>ee.LIB_NAME,getLibraryVersion:()=>ee.LIB_VERSION}}Jt(t,e){return new Promise((n=>{var i=!1,r=o=>{i||(i=!0,clearTimeout(s),n(o))},s=setTimeout((()=>r({kind:"retry-later",error:new Error("metrics request timed out")})),9e4);this._instance._send_request(E({method:"POST",url:this.Su(),data:t,compression:"best-available",batchKey:"metrics"},e&&{transport:e},{fireCallbackOnDrop:!0,callback(o){var a=o.statusCode;if(a>=200&&300>a)r({kind:"ok"});else if(a===413)r({kind:"too-large"});else if(a!==0&&a!==429&&500>a)r({kind:"fatal",error:new Error("metrics request failed with status "+a)});else{var l;r({kind:"retry-later",error:(l=o.error)!==null&&l!==void 0?l:new Error("metrics request failed with status "+a)})}}}))}))}Su(){return this._instance.requestRouter.endpointFor("api","/i/v1/metrics")+"?token="+encodeURIComponent(this._instance.config.token)}}},lm=E({},fs,Jg,Zg,Xg,Qg,em,nm,tm,im,rm,sm,om,am);ze.__defaultExtensionClasses=E({},lm);(function(){ee.SDK_DIST_CHANNEL="npm";var t=xi[Mn]=new ze;return(function(){function e(){e.done||(e.done=!0,wh=!1,te(xi,(function(n){n._dom_loaded()})))}C!=null&&C.addEventListener?C.readyState==="complete"?e():de(C,"DOMContentLoaded",e,{capture:!1}):_&&k.error("Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized")})(),t})();const cm=["a[href]","button:not([disabled])","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])"].join(",");let ot=null,fa=null,Eh="";const pa=new Map;function Sh(t){return[...t.querySelectorAll(cm)].filter(e=>!e.hidden&&e.getAttribute("aria-hidden")!=="true"&&e.getClientRects().length>0)}function um(t){for(const e of document.body.children)e===t||e.tagName==="SCRIPT"||(pa.set(e,{inert:e.inert,ariaHidden:e.getAttribute("aria-hidden")}),e.inert=!0,e.setAttribute("aria-hidden","true"))}function dm(){for(const[t,e]of pa)t.inert=e.inert,e.ariaHidden===null?t.removeAttribute("aria-hidden"):t.setAttribute("aria-hidden",e.ariaHidden);pa.clear()}function xh(t){return t?.dataset.modalDismissible!=="false"&&t?.getAttribute("aria-busy")!=="true"}function tt(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n)return!1;ot&&ot!==n&&ct(ot,{restoreFocus:!1,force:!0}),fa=e.trigger||document.activeElement,ot=n,Eh=document.body.style.overflow,um(n),document.body.style.overflow="hidden",n.classList.add("open"),n.setAttribute("aria-hidden","false");const i=n.querySelector(".modal-content");i&&(i.style.transform="scale(1) translateY(0)");const r=()=>{if(ot!==n)return;((e.initialFocus?n.querySelector(e.initialFocus):n.querySelector("[data-modal-initial-focus]"))||Sh(n)[0]||n.querySelector(".modal-content")||n).focus({preventScroll:!0})};return requestAnimationFrame(r),setTimeout(r,260),!0}function ct(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n||!e.force&&!xh(n))return!1;n.classList.remove("open"),n.setAttribute("aria-hidden","true"),dm(),document.body.style.overflow=Eh,ot=null;const i=fa;return fa=null,e.restoreFocus!==!1&&i?.isConnected&&i.focus({preventScroll:!0}),!0}function ru(t,e,n="Operation in progress"){const i=typeof t=="string"?document.getElementById(t):t;i&&(i.dataset.modalDismissible=e?"false":"true",i.setAttribute("aria-busy",String(!!e)),e?i.setAttribute("aria-label",n):i.removeAttribute("aria-label"))}function hm(t){if(!xh(t))return;const e=t.dataset.modalCloseHandler;e&&typeof window[e]=="function"?window[e]():ct(t)}document.addEventListener("keydown",t=>{if(!ot)return;if(t.key==="Escape"){t.preventDefault(),t.stopImmediatePropagation(),hm(ot);return}if(t.key!=="Tab"){t.stopPropagation();return}const e=Sh(ot);if(!e.length){t.preventDefault(),(ot.querySelector(".modal-content")||ot).focus();return}const n=e[0],i=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),n.focus())},!0);function fm(){document.querySelectorAll(".modal-overlay").forEach(t=>{t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-hidden",t.classList.contains("open")?"false":"true");const e=t.querySelector(".modal-content");e&&!e.hasAttribute("tabindex")&&(e.tabIndex=-1);const n=t.querySelector("h1, h2, h3");n&&(n.id||(n.id=`${t.id}-title`),t.setAttribute("aria-labelledby",n.id)),t.querySelectorAll(".modal-close").forEach(i=>{i.getAttribute("aria-label")||i.setAttribute("aria-label","Close dialog")})})}const kh="CodeFile",Ih="GeneratedCode",pm={CustomAction:"A",CustomWidget:"W",CustomFunction:"F",CustomClass:"C",CodeFile:"C"};function Zt(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function ga(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function gm(t={},e=0){const n=ga(t.artifactType||t.type||kh),i=ga(t.artifactName||t.name||t.fileName||`${Ih}-${e+1}`);return`${n||"artifact"}-${i||e+1}`}function Ch(t={},e=0){const n=Zt(t),i=n.artifactType||n.type||kh,r=n.artifactName||n.name||Ih;let s=n.fileName||r;return s.endsWith(".dart")||(s+=".dart"),{id:ga(n.id)||gm({...n,artifactType:i,artifactName:r,fileName:s},e),artifactType:i,artifactName:r,fileName:s,deployPath:n.deployPath||"",description:n.description||"",code:n.code||n.content||"",dependencies:Ah(n.dependencies),imports:Array.isArray(n.imports)?n.imports:[],publicApi:Array.isArray(n.publicApi)?n.publicApi:[],relationships:Ph(n.relationships),deployStatus:n.deployStatus||"pending",review:n.review||null,metadata:Zt(n.metadata),codeType:n.codeType||pm[i]||"O"}}function Ah(t){return t?Array.isArray(t)?t.map(e=>{if(typeof e=="string")return{name:e,version:null,inferred:!1};const n=Zt(e),i=n.name||n.package;return i?{name:i,version:n.version||null,versionRequired:!!(n.versionRequired||n.required),inferred:!!n.inferred,...n.reason?{reason:n.reason}:{}}:null}).filter(Boolean):Object.entries(Zt(t)).map(([e,n])=>({name:e,version:n||null,inferred:!1})):[]}function Ph(t){return t?(Array.isArray(t)?t:[t]).map(e=>{const n=Zt(e);return!n.from&&!n.to?null:{from:n.from||null,to:n.to||null,type:n.type||"uses",description:n.description||""}}).filter(Boolean):[]}function ma(t){if(typeof t!="string")return null;const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{const n=e.match(/```(?:json)?\s*([\s\S]*?)```/i);if(!n)return null;try{return JSON.parse(n[1].trim())}catch{return null}}}function Mi(t,e={}){const n=[],i=typeof t=="string"?ma(t):t,s=Zt(i||{});!i&&typeof t=="string"&&n.push("Structured bundle parse failed; using legacy single-artifact fallback.");const o=Array.isArray(s.artifacts)?s.artifacts:[{artifactType:s.artifactType||e.artifactType,artifactName:s.artifactName||e.artifactName,fileName:s.fileName||e.fileName,description:s.description,code:s.code||e.code||(typeof t=="string"?t:""),dependencies:s.dependencies||e.dependencies,relationships:s.relationships||e.relationships}];o.forEach((d,h)=>{!d?.artifactType&&!d?.type&&n.push(`Artifact ${h+1} has no artifactType; it will deploy as a standalone code file under lib/custom_code/ root.`)});const a=o.map((d,h)=>Ch(d,h)),l=new Map(o.map((d,h)=>[Zt(d).id,a[h]?.id]).filter(([d,h])=>d&&h)),u=d=>l.get(d)||d,c=Ph(s.relationships||e.relationships).map(d=>({...d,from:d.from?u(d.from):d.from,to:d.to?u(d.to):d.to}));return{schemaVersion:s.schemaVersion||e.schemaVersion||null,id:s.id||e.id||"bundle-current",title:s.title||s.name||e.title||"Generated artifact bundle",description:s.description||e.description||"",artifacts:a,dependencies:Ah(s.dependencies||e.dependencies),relationships:c,deployOrder:Array.isArray(s.deployOrder)?s.deployOrder.map(u):a.map(d=>d.id),warnings:[...n,...Array.isArray(s.warnings)?s.warnings:[]],metadata:Zt(s.metadata)}}function Kr(t){return Mi(t).artifacts[0]||Ch()}function jt(t){if(typeof t!="string")return t??"";const e=t.trim();if(!e)return"";try{return JSON.parse(e)}catch{return t}}function Gn(t){return JSON.stringify(t,null,2)}function mm(t){return Gn({task:"architect",userRequest:String(t??"")})}function vm(t){const e=jt(t);return e&&typeof e=="object"&&typeof e.task=="string"?Gn(e):Gn({task:"generate_bundle",bundleSpec:e})}function _m(t){return Gn({task:"review_bundle",generatedBundle:jt(t),outputRequirements:{bundleReview:["status","score","summary","manualActions","findings"],scoreRange:[0,100],eachArtifact:["id","review.status","review.findings"],manualActions:{definition:"Setup the developer must perform by hand in the FlutterFlow editor that FlutterFlow will NOT do for them.",exclude:["creating the Custom Action, Widget or Code File itself - deploying the code creates it","declaring parameters or return values FlutterFlow derives from the function signature","anything that resolves as a side effect of using the action or widget in the editor","generic advice such as testing, reviewing or rebuilding the app"],preferEmpty:"Return an empty array when nothing qualifies - an empty list is the expected result for most bundles."}}})}function el(t,e=null){const n={stage:t};return e!=null&&(n.bundle=jt(e)),n}function ym({bundleSpec:t,artifactBundle:e,bundleReview:n,artifactId:i,userFeedback:r}){return Gn({task:"regenerate_artifact",artifactId:i,bundleSpec:jt(t),artifactBundle:jt(e),bundleReview:jt(n),userFeedback:String(r)})}function Fh({bundleSpec:t,artifactBundle:e,bundleReview:n,userFeedback:i}){return Gn({task:"regenerate_bundle",bundleSpec:jt(t),artifactBundle:jt(e),bundleReview:jt(n),userFeedback:String(i??"")})}const su={csam:"child-safety content",dangerous:"dangerous content",harassment:"harassment",hate_speech:"hate speech",maliciousUrls:"a potentially malicious URL",malicious_uris:"a potentially malicious URL",pi_and_jailbreak:"prompt-injection or jailbreak instructions",promptInjection:"prompt-injection or jailbreak instructions",rai:"restricted content",sdp:"sensitive personal data",sexually_explicit:"sexually explicit content",virus_scan:"potentially malicious file content"},wm=["sanitizationResult","modelArmor","modelArmorResult","data","result","error"];function Ke(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function bm(t){return Ke(t)?typeof t.filterMatchState=="string"||typeof t.invocationResult=="string"||Array.isArray(t.matchedFilters)||Ke(t.filterSummary)||Ke(t.filterResults):!1}function Rh(t,e=0){if(!Ke(t)||e>3)return null;if(bm(t))return t;for(const n of wm){const i=t[n];if(Ke(i)){const r=Rh(i,e+1);if(r)return r}}return null}function Yr(t){return Array.isArray(t)?t.some(Yr):Ke(t)?t.matched===!0||t.matchState==="MATCH_FOUND"?!0:Object.values(t).some(Yr):!1}function va(t){return Array.isArray(t)?t.some(va):Ke(t)?typeof t.executionState=="string"&&t.executionState!=="EXECUTION_SUCCESS"?!0:Object.values(t).some(va):!1}function Th(t){return{csamFilterFilterResult:"csam",maliciousUriFilterResult:"malicious_uris",piAndJailbreakFilterResult:"pi_and_jailbreak",raiFilterResult:"rai",sdpFilterResult:"sdp",virusScanFilterResult:"virus_scan"}[t]||t}function Em(t,e){if(Ke(t))for(const[n,i]of Object.entries(t)){if(!Ke(i))continue;const r=Ke(i.categories)?i.categories:{},s=Object.entries(r).filter(([,o])=>Ke(o)&&o.matched===!0).map(([o])=>o);s.length>0?s.forEach(o=>e.add(o)):i.matched===!0&&e.add(Th(n))}}function Sm(t,e){if(!t)return;const n=Array.isArray(t)?t.flatMap(i=>Ke(i)?Object.entries(i):[]):Object.entries(t);for(const[i,r]of n){if(!Yr(r))continue;const s=Th(i),o=r?.raiFilterResult?.raiFilterTypeResults||(s==="rai"?r?.raiFilterTypeResults:null),a=Ke(o)?Object.entries(o).filter(([,l])=>Yr(l)).map(([l])=>l):[];a.length>0?a.forEach(l=>e.add(l)):e.add(s)}}function xm(t){return su[t]?su[t]:String(t).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/_/g," ").toLowerCase()}function ou(t){return t.length<=1?t[0]||"content that did not pass":t.length===2?`${t[0]} and ${t[1]}`:`${t.slice(0,-1).join(", ")}, and ${t.at(-1)}`}function km(t){const e=Rh(t);if(!e)return null;const n=new Set(Array.isArray(e.matchedFilters)?e.matchedFilters:[]);Em(e.filterSummary,n),Sm(e.filterResults,n);const i=e.blocked===!0||e.filterMatchState==="MATCH_FOUND"||n.size>0,r=e.invocationResult||null,s=va(e.filterSummary||e.filterResults);return!i&&!s&&!["PARTIAL","FAILURE"].includes(r)?null:{kind:i?"blocked":"unavailable",invocationResult:r,matchedFilters:[...n]}}function Im(t,e){const n=km(t);if(!n)return null;const i=[...new Set(n.matchedFilters.map(xm))],r=n.kind==="blocked",s=new Error(r?`Safety screening blocked this pipeline step for ${ou(i)}.`:"Safety screening could not be completed. Please try again.");return s.name="ModelArmorError",s.code=r?"MODEL_ARMOR_BLOCKED":"MODEL_ARMOR_UNAVAILABLE",s.isModelArmor=!0,s.pipelineStep=e,s.userTitle=r?"Request blocked for safety":"Safety check unavailable",s.userMessage=r?`The safety check detected ${ou(i)}. Edit your request to remove or rephrase the flagged content, then run the pipeline again.`:"The safety service did not finish all of its checks. Please wait a moment and run the pipeline again.",s.retryExplanation=r?"Trying another model would not change this safety decision.":"A fallback model was not attempted because safety screening must complete first.",s.matchedFilters=n.matchedFilters,s}function Cm(t){return String(t||"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"")}function au(t){const e=/^(import|export|part|library|class|enum|extension|typedef|mixin|abstract|const|final|var|late)\b/,n=[];for(const i of Cm(t).split(` -`)){if(!/^[A-Za-z_$]/.test(i)||e.test(i))continue;const r=i.match(/^[\w$<>,?\s[\]]+?\s([a-zA-Z_$][\w$]*)\s*\(/);r&&n.push(r[1])}return n}function tl(t,e){const n=t.replace(/\.dart$/,"");if(e==="W")return n.replace(/(^|_)(\w)/g,(i,r,s)=>s.toUpperCase());if(e==="A"){const i=n.replace(/(^|_)(\w)/g,(r,s,o)=>o.toUpperCase());return i.charAt(0).toLowerCase()+i.slice(1)}return e==="F"?"CustomFunctions":e==="C"?t.endsWith(".dart")?t:`${t}.dart`:n}async function lu(t){const e=new TextEncoder().encode(String(t||"")),n=await globalThis.crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n),i=>i.toString(16).padStart(2,"0")).join("")}async function Am(t,e=new Map){const n={},i=new Set;for(const[o,a]of t.entries()){if(a.type==="D"||a.type==="O")continue;const l=tl(o,a.type),u={old_identifier_name:l,new_identifier_name:l,type:a.type,is_deleted:!1,current_checksum:await lu(a.content)},c=e.get(a.path);if(c!==void 0&&(u.original_checksum=await lu(c)),n[o]=u,a.type==="F"){const d=au(a.content);(d.length>0?d:[a.functionName].filter(Boolean)).forEach(f=>i.add(f))}}const r=new Set(au(e.get("lib/flutter_flow/custom_functions.dart")||"")),s={functions_to_rename:[],functions_to_delete:[],functions_to_add:Array.from(i).filter(o=>!r.has(o))};return{fileMapContents:JSON.stringify(n),functionsMapContents:JSON.stringify(s)}}const Pm=new Set(["CustomWidget","CustomAction","CustomFunction","CustomClass","CodeFile"]),cu={CustomWidget:"custom_code/widgets/",CustomAction:"custom_code/actions/",CustomFunction:"flutter_flow/custom_functions.dart",CustomClass:"custom_code/",CodeFile:"custom_code/"},Fm=new Set(["void","dynamic","String","int","double","num","bool","Color","DateTime","DateTimeRange","LatLng","FFPlace","FFUploadedFile","DocumentReference","List"]),Rm=["Struct","Record"],Tm=[{id:"required-public-param",severity:"error",message:"CustomWidget constructor uses `required` on a parameter FlutterFlow can leave unset. FlutterFlow omits unset Define Parameters fields from the constructor call, so the widget will not compile when placed. Make the parameter optional and nullable (`this.value` with `final double? value`), or give it a constructor default (`this.value = 0.0`).",detect:t=>Ao(t).some(e=>/\brequired\s+this\.\w+/.test(e)),pos:"class W extends StatefulWidget { const W({required this.value}); final double value; }",neg:`class _P { const _P({required this.t}); final double t; } -class W extends StatefulWidget { const W({this.value}); final double? value; }`},{id:"non-nullable-public-field",severity:"error",message:"CustomWidget declares a non-nullable field with no constructor default. FlutterFlow omits unset Define Parameters fields, so the emitted call cannot supply it. Make the field nullable (`final double? value`) or give the parameter a default (`this.value = 0.0`).",detect:t=>Ao(t).some(e=>{const n=/^\s*final\s+(?:double|int|String|bool|Color|num)\s+(\w+)\s*;/gm;let i;for(;(i=n.exec(e))!==null;){const r=i[1];if(!(new RegExp(`this\\.${r}\\s*=(?!=)`).test(e)||new RegExp(`[:,]\\s*${r}\\s*=(?!=)`).test(e)))return!0}return!1}),pos:`class W extends StatefulWidget { - const W({required this.value}); - final double value; -}`,neg:`class _P { - const _P({required this.t}); - final double t; -} -class W extends StatefulWidget { - const W({this.value = 1.0}); - final double value; -}`},{id:"asset-without-anchor",severity:"warning",message:'CustomWidget calls Image.asset with a path arriving as a String parameter. An asset reaches the build only when a FlutterFlow widget NODE references it - a filename passed as a parameter does not count, so the image renders as a broken-image icon on device. "Download Unused Project Assets" does not fix it (FlutterFlow issues 522, 2271, 3799). Keep something in the UI referencing the file, or load it over the network instead.',detect:t=>/Image\.asset\s*\(/.test(t)&&/final\s+String\??\s+\w*[Pp]ath\b/.test(t),pos:`class W extends StatefulWidget { final String? imagePath; } -var x = Image.asset(widget.imagePath);`,neg:`class W extends StatefulWidget { final String? imagePath; } -var x = Image.network(widget.imagePath);`},{id:"unsupported-param-type",severity:"error",message:"CustomWidget exposes a Flutter data type FlutterFlow cannot express as a Define Parameter: TextStyle, BoxShadow, FontWeight, FontStyle, TextDirection, TextAlign, EdgeInsets, Offset, Alignment/AlignmentGeometry, Border, BorderRadius, BoxDecoration, BoxConstraints, BorderSide, Gradient, or ThemeData. FlutterFlow's supported data types (docs.flutterflow.io/resources/data-representation/data-types) are only int, double, bool, string, Color, Image, DateTime, Json, LatLng, and the FF objects, so this parameter cannot be configured in the editor and the widget will not place or compile. Expose primitives instead (color, fontSize as double?, fontWeight via a custom enum, doubles for spacing).",detect:t=>Ao(t).some(e=>/final\s+(TextStyle|BoxShadow|FontWeight|FontStyle|TextDirection|TextAlign|EdgeInsets|Offset|Alignment(?:Geometry)?|Border(?:Radius|Side)?|BoxDecoration|BoxConstraints|Gradient|LinearGradient|RadialGradient|ThemeData)\??\s+\w+\s*;/.test(e)),pos:`class W extends StatefulWidget { - const W({this.textStyle}); - final TextStyle? textStyle; - @override _S createState() => _S(); -} -class _S extends State { @override Widget build(BuildContext c) => const SizedBox(); }`,neg:`class W extends StatefulWidget { - const W({this.width}); - final double? width; - @override _S createState() => _S(); -} -class _S extends State { @override Widget build(BuildContext c) => Padding(padding: const EdgeInsets.all(8), child: const SizedBox()); }`}];function pt(t,e,n){return{artifactId:t.id,artifactName:t.artifactName,artifactType:t.artifactType,severity:e,message:n}}function Li(t){let e="",n=0;for(;n"&&(n--,n===0))return{inner:t.slice(e+1,i),end:i+1};return null}function Mm(t,e){const n=new RegExp(`class\\s+${e}\\b[^{]*\\{`).exec(t);if(!n)return null;let i=0;for(let r=n.index+n[0].length-1;rLm(t).usable);function Om(t=""){const e=Li(t);return Nm.filter(n=>n.detect(e)).map(({id:n,severity:i,message:r})=>({id:n,severity:i,message:r}))}function Bm(t){const e=[],n=t.matchAll(/\bFuture\b/g);for(const i of n){let r=i.index+6,s=null;const o=r;for(;ro;if(t[r]==="<"){const u=$m(t,r);if(!u||(s=u.inner.replace(/\s+/g," ").trim(),r=u.end,!/\s/.test(t[r]||"")))continue;for(;ruu(o.functionName)===i);if(r)return r;const s=o=>!o.functionName.startsWith("_");return n.find(s)||n[0]}function ps(t=""){return Array.from(Li(t).matchAll(/\b(?:class|enum)\s+([A-Za-z_]\w*)/g),e=>e[1])}function Dm(t="",e=""){return nl(t,e)?.returnType||null}function du(t){return String(t||"").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function jm(t,e){const n=ps(e);if(n.length===0)return null;const r=String(t||"").split("/").pop().replace(/\.dart$/,"");if(n.some(l=>du(l)===r)||n.length>1)return null;const[o]=n,a=`${du(o)}.dart`;return`File name "${t}" does not match declared class "${o}". FlutterFlow accepts this, but naming the file "${a}" keeps the Code File recognisable in the editor.`}function il(t){return String(t||"").replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}function Um(t,e,n=""){const i=nl(e,n)?.functionName;if(!i)return null;const r=String(t||"").split("/").pop(),s=tl(r,"A");if(s===i)return null;const o=`${il(i)}.dart`;return`File name "${r}" does not match Action "${i}". FlutterFlow derives the action from the file name, so it looks for "${s}" and reports Action "${s}" declaration not found. Rename the file to "${o}" - FlutterFlow puts an underscore before every capital - or rename the function to "${s}".`}function Hm(t="",e=""){return nl(t,e)!==null}function Wm(t,e=new Set){return(t?.match(/[A-Za-z_]\w*/g)||[]).filter(i=>Fm.has(i)?!1:!Rm.some(s=>i.endsWith(s))||e.has(i))}function qm(t,{functionName:e="",declaredTypes:n=new Set}={}){const i=Dm(t,e),r=Wm(i,n);if(r.length===0)return null;const[s]=r;let o;return n.has(s)?o=`uses Code File type "${s}", which FlutterFlow cannot process as an Action Return Value`:i===s?o="is not a FlutterFlow Action Return Value":o=`uses type "${s}", which is not a FlutterFlow Action Return Value`,`CustomAction return type "${i}" ${o}. Return JSON (Future) or an existing FlutterFlow Data Type (*Struct) instead.`}function zm(t,e={}){const n=[],i=t.fileName||"",r=t.code||"";if(Pm.has(t.artifactType)||n.push(pt(t,"error",`Unsupported artifact type "${t.artifactType}".`)),i.endsWith(".dart")||n.push(pt(t,"error","FlutterFlow custom code artifacts must use .dart files.")),!r.trim())return n.push(pt(t,"warning","Generated artifact has no Dart code yet.")),n;if(t.artifactType==="CustomWidget"){/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)||n.push(pt(t,"warning","CustomWidget code should declare a widget class extending StatelessWidget or StatefulWidget."));for(const s of Om(r))n.push(pt(t,s.severity,s.message))}if(t.artifactType==="CustomAction"&&!Hm(r,t.artifactName)&&n.push(pt(t,"warning","CustomAction code should expose an async Future function callable from FlutterFlow.")),t.artifactType==="CustomAction"){const s=e.declaredTypes||new Set(ps(r)),o=qm(r,{functionName:t.artifactName,declaredTypes:s});o&&n.push(pt(t,"error",o));const a=Um(i,r,t.artifactName);a&&n.push(pt(t,"error",a))}if(t.artifactType==="CustomFunction"&&/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)&&n.push(pt(t,"warning","CustomFunction should be a callable function, not a widget class.")),t.artifactType==="CustomClass"||t.artifactType==="CodeFile"){const s=jm(i,r);s&&n.push(pt(t,"info",s))}return n}function Vm(t){const e=Array.isArray(t?.artifacts)?t.artifacts:[],n=new Set(e.flatMap(s=>ps(s.code||""))),i=e.flatMap(s=>zm(s,{declaredTypes:n})),r=e.map(s=>({artifactId:s.id,fileName:s.fileName,pathHint:cu[s.artifactType]||cu.CodeFile}));return{valid:i.every(s=>s.severity!=="error"),findings:i,deployHints:r}}const hu="// DO NOT REMOVE OR MODIFY THE CODE ABOVE!";function fu(t){return(/^\s*import\s+['"]([^'"]+)['"]/.exec(t)||[])[1]||null}function Gm(t=""){const e=t.indexOf(hu);return e===-1?t:t.slice(e+hu.length).replace(/^\s*\n/,"")}const Km=/^\s*import\s+['"][^'"]+['"]\s*;\s*(?:\/\/.*)?$/;function Ym(t="",e=""){const n=Gm(t),i=new Set((e.match(/^\s*import .*$/gm)||[]).map(fu).filter(Boolean)),r=n.split(` -`).filter(s=>{const o=fu(s);return o===null||!i.has(o)?!0:!Km.test(s)}).join(` -`).replace(/^\s*\/\/ Automatic FlutterFlow imports\s*$/m,"").replace(/^\s*\n+/,"");return e+r}const Jm=new Set(["flutter","flutter_test","flutter_driver","flutter_localizations"]);function $h(t){let e="",n=0;for(;n{const i=n.name||n.package;if(!i||i==="flutter")return e;const r=n.versionRequired||n.required;return e[i]=r&&n.version||"",e},{})}function tv(t){const e=new Map,n=new Map,i=[];for(const r of t)e.has(r.fileName)?i.push(`Duplicate deploy file name "${r.fileName}" for artifacts "${e.get(r.fileName)}" and "${r.artifactId}".`):e.set(r.fileName,r.artifactId),n.has(r.path)?i.push(`Duplicate deploy path "${r.path}" for artifacts "${n.get(r.path)}" and "${r.artifactId}".`):n.set(r.path,r.artifactId);return i}function nv(t,e={}){const n=Array.isArray(t?.artifacts)?t.artifacts:[],r=(e.selectedArtifactIds||t?.deployOrder||n.map(f=>f.id)).map(f=>n.find(p=>p.id===f)).filter(Boolean),s=[...t?.warnings||[]];let o=[];r.forEach(f=>{const p=ev(f),g=f.fixedCode||f.code||"",m=f.codeType||Xm[f.artifactType]||Ve.OTHER;g.trim()||s.push(`${f.artifactName||f.id} has no generated code.`),o.push({artifactId:f.id,artifactName:f.artifactName,artifactType:f.artifactType,fileName:p,content:g,type:m,path:f.deployPath||Qm(p,m),deployPath:f.deployPath||"",deployMode:"customCodeSync"})});const a="lib/flutter_flow/custom_functions.dart",l=o.map((f,p)=>({entry:f,index:p})).filter(({entry:f})=>f.type===Ve.FUNCTION&&f.path===a);if(l.length>1){const f=l[0],p={...f.entry,artifactId:l.map(({entry:m})=>m.artifactId).join("+"),artifactName:f.entry.artifactName,content:l.map(({entry:m})=>`// ${m.artifactId} -${m.content}`).join(` - -`)},g=new Set(l.slice(1).map(({index:m})=>m));o=o.filter((m,v)=>!g.has(v)),o[f.index]=p}const u={...pu(t?.dependencies),...r.reduce((f,p)=>({...f,...pu(p.dependencies)}),{})},c={};r.forEach(f=>{rl(f.code||"").forEach(p=>{p in u||(c[p]="")})});const d={...c,...u},h=tv(o);return{bundleId:t?.id||"bundle-current",title:t?.title||"Generated artifact bundle",fileEntries:o,dependencies:d,relationships:t?.relationships||[],warnings:s,errors:h}}function iv(t){return String(t||"").match(/\bclass\s+([A-Z][A-Za-z0-9_]*)\b/)?.[1]}function rv(t){return String(t||"").split("/").pop().replace(/\.dart$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}function sv(t,e){const i=[rv(t),iv(e.content),e.artifactName].find(r=>/^[A-Z][A-Za-z0-9_]*$/.test(String(r||"")));if(!i)throw new Error(`Cannot derive a FlutterFlow custom class name for ${t}.`);return i}function ov(t,e=new Map){const n=[];for(const[i,r]of t.entries())r.type!=="C"||e.has(r.path)||n.push({artifactId:r.artifactId||i,className:sv(i,r),content:r.content,fileName:i,path:r.path});return n}function av(t,e){const n=new Set(e.map(i=>i.path));return new Map(Array.from(t.entries()).filter(([,i])=>!n.has(i.path)))}const gu={pass:0,warning:1,fail:2},lv=["manualActions"];function Je(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function Lt(...t){for(const e of t){if(typeof e=="string"&&e.trim())return e.trim();if(Array.isArray(e)&&e.length>0){const n=e.filter(i=>typeof i=="string").join(` -`);if(n)return n}}return""}function mt(t){return t==null?[]:Array.isArray(t)?t:[t]}function cv(t){const e=Je(t).value??t;if(e==null||typeof e=="string"&&e.trim()==="")return null;const n=Number(e);if(Number.isFinite(n))return mu(n);const i=String(t||"").match(/\bscore\b[^\d]{0,12}(\d{1,3})(?:\s*\/\s*100)?/i);return i?mu(Number(i[1])):null}function mu(t){return t>=0&&t<=100?t:null}function Qe(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function sl(t){const e=String(t||"").toLowerCase();return/(fail|error|critical|block|reject|invalid)/.test(e)?"fail":/(warn|attention|manual|partial|incomplete|concern)/.test(e)?"warning":/(pass|success|ready|approve|valid|clean|info|notice)/.test(e)?"pass":null}function _a(...t){return t.filter(Boolean).reduce((e,n)=>gu[n]>gu[e]?n:e,"pass")}function Mh(t,e="warning",n="review"){if(typeof t=="string")return{severity:e,message:t,suggestion:"",source:n};const i=Je(t),r=Lt(i.message,i.title,i.issue,i.description,i.summary);return r?{severity:sl(i.severity||i.status||i.level)||e,message:r,suggestion:Lt(i.suggestion,i.fix,i.recommendation,i.action),source:i.source||n}:null}function ya(t,e="review"){const n=Je(t);return[["findings","warning"],["issues","warning"],["criticalIssues","fail"],["errors","fail"],["warnings","warning"],["recommendations","warning"],["requiredFixes","fail"],["suggestions","warning"]].flatMap(([r,s])=>mt(n[r]).map(o=>Mh(o,s,e)).filter(Boolean))}function uv(t,e,n=null){if(typeof t=="string")return{id:`${n||"bundle"}-manual-${e+1}`,title:t,detail:"",location:"",timing:"unspecified",artifactId:n,source:"Code Review"};const i=Je(t),r=Lt(i.title,i.action,i.step,i.message,i.name,i.description);return r?{id:i.id||`${n||"bundle"}-manual-${e+1}`,title:r,detail:Lt(i.detail,i.instructions,i.description),location:Lt(i.location,i.flutterFlowPath,i.path),timing:Lt(i.timing,i.phase)||"unspecified",artifactId:n,source:Lt(i.source)||"Code Review"}:null}function wa(t,e=null){const n=Je(t);return lv.flatMap(i=>mt(n[i])).map((i,r)=>uv(i,r,e)).filter(Boolean)}function dv(t){let e=typeof t=="string"?ma(t):t;if(!e&&typeof t=="string")return{rawText:t,root:{}};const n=Je(e);typeof n.content=="string"&&(e=ma(n.content)||e);const i=Je(e),r=Je(i.reviewResult||i.codeReview||i.result);return{rawText:"",root:Object.keys(r).length?r:i}}function hv(t,e){const n=[e.id,e.fileName,e.artifactName].map(Qe);return t.find(i=>{const r=Je(i);return[r.id,r.fileName,r.artifactName,r.name].map(Qe).some(s=>s&&n.includes(s))})||null}function fv(t,e){return mt(t?.metadata?.compatibility?.deployHints).find(r=>Qe(r?.artifactId)===Qe(e.id)||Qe(r?.fileName)===Qe(e.fileName))?.pathHint||""}function pv(t,e){return mt(t?.relationships).filter(n=>Qe(n?.from)===Qe(e.id)||Qe(n?.to)===Qe(e.id))}function gv(t,e){return mt(t?.metadata?.compatibility?.findings).filter(n=>!n?.artifactId||Qe(n.artifactId)===Qe(e.id)).map(n=>Mh(n,"warning","Compatibility check")).filter(Boolean)}function mv(t,e,n,i){const r=hv(e,n),s=Je(r?.review||r||n.review),o=Object.keys(s).length>0,a=[...ya(s),...gv(t,n)],l=wa(s,n.id),u=sl(s.status||s.verdict||s.outcome||s.result),c=a.length?_a(...a.map(h=>h.severity)):null,d=_a(u,c,o?null:"warning");return{...n,index:i,status:d,statusReason:o?Lt(s.summary,s.overview,s.assessment,s.conclusion)||(a.length?`${a.length} review finding${a.length===1?"":"s"}`:"No file-level findings"):"No file-level verdict was returned",reviewComplete:o,findings:a,manualSteps:l,fixedSource:typeof s.fixedSource=="string"&&s.fixedSource.trim()?s.fixedSource.trim():null,pathHint:fv(t,n),relationships:pv(t,n)}}function vv({status:t,score:e,artifactPresentations:n,manualSteps:i}){const r=n.length;if(r===0&&i.length===0)return e==null?"Code review returned no overall summary and no score.":`Reviewed bundle with score ${e}/100.`;const s=n.reduce((a,l)=>(a[l.status]+=1,a),{pass:0,warning:0,fail:0}),o=[];return t&&o.push(`Overall verdict: ${t}.`),r&&o.push(`${r} artifact${r===1?"":"s"}: ${s.pass} pass, ${s.warning} warn, ${s.fail} fail.`),i.length&&o.push(`Do before deploy: ${i.map(a=>a.title).join("; ")}.`),e==null&&o.push("No numeric score (0-100) was returned."),o.join(" ")}function _v({bundle:t,reviewResult:e}){const n=Je(t),i=mt(n.artifacts),{root:r,rawText:s}=dv(e),o=[r.bundleReview,r.overallReview,r.overall,r.bundleSummary,r.summaryReview,r.review].map(Je).find(b=>Object.keys(b).length)||{},a=mt(r.artifacts||r.files||r.reviews),l=i.map((b,I)=>mv(n,a,b,I)),u=ya(r),d=[...ya(o),...u],h=[...wa(o),...wa(r),...l.flatMap(b=>b.manualSteps)].filter((b,I,A)=>A.findIndex(P=>P.title===b.title&&P.artifactId===b.artifactId)===I),f=sl(o.status||o.verdict||o.overallStatus||r.status||r.verdict||r.overallStatus||r.outcome),p=_a(f,...d.map(b=>b.severity),...l.map(b=>b.status)),g=o.score??r.score??r.overallScore??s,m=cv(g),v=Lt(o.headline,o.summary,o.executiveSummary,o.overview,o.assessment,o.conclusion,r.overallSummary,r.headline,r.summary,r.executiveSummary,r.overview,r.assessment,r.conclusion,s)||vv({status:p,score:m,artifactPresentations:l,manualSteps:h}),w=l.reduce((b,I)=>(b[I.status]+=1,b),{pass:0,warning:0,fail:0});return{title:n.title||"Generated artifact bundle",description:n.description||"",status:p,score:m,summary:v,findings:d,manualSteps:h,artifacts:l,counts:w,reviewCoverage:{reviewed:l.filter(b=>b.reviewComplete).length,total:l.length},deployOrder:mt(n.deployOrder),relationships:mt(n.relationships),warnings:mt(n.warnings),compatibility:Je(n.metadata?.compatibility)}}const yv=/^\uFEFF/;function di(t){let e=0,n=t.length;for(;ee&&!t[n-1].trim();)n--;return t.slice(e,n).join(` -`)}function wv(t){const e=String(t??"").replace(yv,"");if(!e.trim())return"";const n=e.split(` -`),i=c=>{const d=c.trim();return/^`{3,}[A-Za-z0-9+#_.-]*$/.test(d)?c.length-c.trimStart().length:-1};let r=0,s=-1;const o=[];{let c=0;for(let d=0;d=0&&(r++,s<0&&(s=d),o.push(c+h)),c+=n[d].length+1}}if(r===0)return di(n);{const c=ba(e);if(!c.error&&o.every(h=>_u(h,c.commentAndStringRanges)))return di(n)}if(r===1){const c=di(n.slice(0,s)),d=di(n.slice(s+1));return d.length>=c.length?d:c}const a=[];let l=null;for(let c=0;cc.length>0);return u.length===0?"":u.join(` - -`)}function bv(t){return String(t??"").replace(/\/\*[\s\S]*?\*\//g," ").replace(/\/\/[^\n]*/g,"").replace(/'''[\s\S]*?'''/g,'""').replace(/"""[\s\S]*?"""/g,'""').replace(/'(?:\\.|[^'\\\n])*'/g,'""').replace(/"(?:\\.|[^"\\\n])*"/g,'""')}function Lh(t){const e=bv(t);return Array.from(e.matchAll(/class\s+([A-Z]\w*)\s+extends\s+[A-Za-z_]\w*Widget\b/g),n=>n[1])}function Nh(t){return`${il(t)}.dart`}function Ev(t){return tl(t,"W")}const vu={"(":")","[":"]","{":"}"},Sv={")":"(","]":"[","}":"{"},xv=/[A-Za-z0-9_]/;function ba(t){const e=[{kind:"code",opener:null,openedLine:0}],n=[];let i=1,r=0;const s=(c,d)=>{(c===` -`||c==="\r"&&d!==` -`)&&i++};let o=null;const a=()=>{for(const c of e)(c.kind==="string"||c.kind==="block-comment"||c.kind==="line-comment")&&n.push({start:c.startIndex,end:t.length})};for(;r0?t[r-1]:"",p=r>1?t[r-2]:"",g=(f==="r"||f==="R")&&!xv.test(p);e.push({kind:"string",quote:c,triple:h,raw:g,startIndex:r,openedLine:i}),r+=h?3:1;continue}if(vu[c]){e.push({kind:"code",opener:c,openedLine:i}),r++;continue}if(Sv[c]){if(d.interpolation&&c==="}"){e.pop(),r++;continue}if(d.opener&&vu[d.opener]===c){e.pop(),r++;continue}return d.opener?(a(),{error:o??`line ${i}: "${c}" closes nothing - "${d.opener}" opened on line ${d.openedLine} is still open`,commentAndStringRanges:n}):(a(),{error:o??`line ${i}: unexpected "${c}" with no matching opener`,commentAndStringRanges:n})}s(c,t[r+1]),r++}a();let l=e.length-1;for(;l>0&&e[l].kind==="line-comment";)l--;let u=o;if(!u){const c=e[l];if(!(c.kind==="code"&&!c.opener&&!c.interpolation))if(c.kind==="string")u=`unclosed ${c.triple?"triple-quoted ":""}string starting on line ${c.openedLine} was never closed`;else if(c.kind==="block-comment")u=`unterminated /* comment starting on line ${c.openedLine}`;else if(c.interpolation){const d=e.findLast(f=>f.opener);u=`unclosed "\${" expression${d?` opened on line ${d.openedLine}`:""} was never closed`}else u=`"${c.opener}" opened on line ${c.openedLine} is never closed`}return{error:u,commentAndStringRanges:n}}function kv(t){return ba(String(t??"")).error}function _u(t,e){return e.some(({start:n,end:i})=>t>=n&&ttypeof n=="string"?n:n?.errorMessage).filter(Boolean);return e.length>0?e.join("; "):JSON.stringify(t)}return t&&typeof t=="object"?t.errorMessage||JSON.stringify(t):String(t??"")}const Iv=["gmail.com","googlemail.com","outlook.com","hotmail.com","live.com","msn.com"],Cv="MAGIC_LINK_SENT",Av="PLUS_ALIAS_REJECTED",Pv="Please enter your primary email address. Plus aliases (such as {email}) are not allowed for {domain} accounts.",gs={allowlistedDomains:Iv,successCode:Cv,validationCode:Av,messageTemplate:Pv},Fv=new Set(gs.allowlistedDomains),Rv=gs.successCode,_r=gs.validationCode;function ms(t){return typeof t=="string"?t.trim():""}function Tv(t){const e=ms(t),n=e.lastIndexOf("@");if(n<=0||n===e.length-1)return!1;const i=e.slice(0,n),r=e.slice(n+1).toLowerCase();return Fv.has(r)?i.includes("+"):!1}function $v(t,e){return gs.messageTemplate.replaceAll("{email}",t).replaceAll("{domain}",e)}function Bh(t){if(!Tv(t))return null;const e=ms(t),n=e.lastIndexOf("@"),i=e.slice(n+1).toLowerCase();return $v(e,i)}function Mv(t,e){return t?.code===_r?t.message||Bh(e)||"Please enter your primary email address.":t?.code===Rv||!t?.code?`Check your email — we sent a link to ${ms(e)}`:t.message||"Something went wrong. Please try again."}const Lv=/^dependencies\s*:\s*(?:#.*)?$/,Nv=/^(?:"([^"]+)"|'([^']+)'|([A-Za-z_][A-Za-z0-9_-]*))\s*:/;function vs(t){const e=t.match(Nv);return e?e[1]??e[2]??e[3]:null}function Ui(t){const e=t.trim();return e===""||e.startsWith("#")}function Xn(t){const e=t.match(/^(\s*)/);return e?e[1].length:0}function ol(t,e){const n=t.findIndex(s=>e.test(s));if(n===-1)return null;let i=n,r=null;for(let s=n+1;s=0.0.0"}`}function jv(t,e={}){const n=String(t||""),i=Object.entries(e).filter(([u])=>u&&u!=="flutter");if(i.length===0)return{yaml:n,added:[],alreadyPresent:[]};const r=n.split(` -`),s=new Set(jh(n)),o=[],a=[];for(const[u,c]of i)s.has(u)?a.push(u):(o.push([u,c]),s.add(u));if(o.length===0)return{yaml:n,added:[],alreadyPresent:a};const l=al(r);if(l){const u=o.map(([c,d])=>yu(l.childIndent,c,d));r.splice(l.endIndex,0,...u)}else r.length>0&&r[r.length-1].trim()!==""&&r.push(""),r.push("dependencies:"),o.forEach(([u,c])=>{r.push(yu(" ",u,c))});return{yaml:r.join(` -`),added:o.map(([u])=>u),alreadyPresent:a}}function Uv(t,e={}){const n=String(t||""),i=Object.entries(e).filter(([l])=>l&&l!=="flutter");if(i.length===0)return{yaml:n,overridden:[],skipped:[]};const r=n.split(` -`),s=ys(n),o=[],a=[];for(const[l,u]of i){const c=s.get(l);if(!c||!c.isScalar||!String(u||"").trim()){a.push(l);continue}const d=" ".repeat(Xn(r[c.lineIndex]));r[c.lineIndex]=`${d}${l}: ${Hh(String(u).trim())}${c.comment}`,o.push({name:l,from:c.constraint,to:u})}return{yaml:r.join(` -`),overridden:o,skipped:a}}function Wh(t){const e=String(t||""),n=[];return e.trim()?(/^name:\s*\S+/m.test(e)||n.push("pubspec.yaml missing name field"),al(e.split(` -`))||n.push("pubspec.yaml missing dependencies section"),jh(e).includes("flutter")||n.push("pubspec.yaml missing Flutter SDK dependency"),{valid:n.length===0,errors:n}):(n.push("pubspec.yaml is empty"),{valid:!1,errors:n})}const Hv=">=3.0.0 <4.0.0";function Ea(t){const e=String(t||"").trim(),n=e[0];return n!=="'"&&n!=='"'||e[e.length-1]!==n?e:e.slice(1,-1).replaceAll(`${n}${n}`,n)}function Wv(t=""){const e=Zm(t).filter(n=>!n.startsWith("dart:")&&!n.startsWith("package:"));return{selfContained:e.length===0,unresolvableImports:e}}function wu(t,e,n){const i=[];for(const[r,s]of t){if(s.isScalar){e[r]=Ea(s.constraint);continue}if(s.sourceKey==="sdk"){n.add(r);continue}if(s.sourceKey===null&&s.version){e[r]=Ea(s.version);continue}i.push(r)}return i}function qv(t){const e=new Set,n={},i={},r=wu(ys(t),n,e);r.push(...wu(Bv(t,"dependency_overrides"),i,e));const s=new Set([...Object.keys(n),...e]),{sdk:o}=Uh(t);return{sdkConstraint:Ea(o)||Hv,dependencies:n,overrides:i,sdkPackages:[...e].sort(),availablePackages:s,unrepresentable:r}}function zv(t,e,n){return e.length>0?`${t} imports ${e.join(", ")}, which FlutterFlow only generates once the app is built, so it could not be compiled before the deploy.`:`${t} imports ${n.join(", ")}, which your project's pubspec.yaml does not declare with a version constraint, so it could not be compiled before the deploy.`}function Vv(t,e){const{sdkConstraint:n,dependencies:i,overrides:r,sdkPackages:s,availablePackages:o,unrepresentable:a}=qv(e),l={sdkConstraint:n,dependencies:i,overrides:r,sdkPackages:s},u=[],c=[],d=a.map(h=>`Your project declares ${h} from a source that cannot be reproduced outside it, so the pre-deploy compile check runs against a scratch package graph that omits ${h}. Classes that do not import ${h} directly are still checked, but against that reduced graph, so their transitive package resolution may differ from your project's and the check is approximate for them.`);for(const h of t){const{className:f,content:p}=h,g=rl(p),m=g.filter(b=>a.includes(b));if(m.length>0){c.push({className:f,reason:`${f} was not compiled before deploying: it imports ${m.join(", ")}, which your project declares from a source that cannot be reproduced outside it, so package resolution could not be matched exactly.`});continue}const{unresolvableImports:v}=Wv(p),w=g.filter(b=>!o.has(b));if(v.length>0||w.length>0){c.push({className:f,reason:zv(f,v,w)});continue}u.push({fileName:`${il(f)}.dart`,content:p})}return{manifest:l,sources:u,skipped:c,approximate:d}}function bu(t,e){const n=`${t}${e}`.split(` -`),i=n.pop()??"",r=[];for(const s of n){const o=qh(s);o&&r.push(o)}return{events:r,buffer:i}}function Gv(t){const e=qh(t);return e?[e]:[]}function qh(t){const e=t.trim();if(!e)return null;try{const n=JSON.parse(e);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}async function Kv(t,e={}){const{onPhase:n,onLog:i}=e;let r=null,s="";const o=a=>{if(a.event==="phase"){a.message&&n&&n(a.message);return}if(a.event==="log"){a.message&&i&&i(a.message);return}r=a};if(t.body?.getReader){const a=t.body.getReader(),l=new TextDecoder;for(;;){const{done:u,value:c}=await a.read();if(u)break;const d=bu(s,l.decode(c,{stream:!0}));s=d.buffer,d.events.forEach(o)}}else{const a=bu("",await t.text());s=a.buffer,a.events.forEach(o)}return Gv(s).forEach(o),r?{...r,success:r.success===!0||r.success===void 0&&t.ok}:{success:!1,error:t.ok?"The FlutterFlow deploy runner closed the connection before it finished.":`FlutterFlow custom class provisioning failed (HTTP ${t.status}).`}}function Yv(){let t=document.getElementById("fx-grid");if(!t)return null;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),n=window.matchMedia("(pointer: none)");let i=t.getContext("webgl2",{alpha:!0,antialias:!1,depth:!1,stencil:!1,premultipliedAlpha:!0,powerPreference:"low-power"}),r=i?null:t.getContext("2d");if(!i&&!r)return null;const s='',o=`#version 300 es -in vec2 p; void main(){ gl_Position = vec4(p, 0.0, 1.0); }`;function a(){return["#version 300 es","precision highp float;","out vec4 o;","uniform vec2 res;","uniform vec2 design;","uniform vec2 mouse;","uniform float energy;","uniform float parallax;","uniform float t;","uniform vec3 ink;","uniform sampler2D mark;","uniform vec2 rot;","const float WARP_A = 0.0032;","void main(){"," vec2 px = gl_FragCoord.xy * (design / res);"," vec2 p = vec2(px.x, design.y - px.y);"," vec2 off = vec2(0.0, -parallax) + vec2(sin(t * 0.11), cos(t * 0.09)) * 7.0;"," vec2 g = p + off;"," vec2 gm = mouse + off;"," float base = min(design.x, design.y);"," float spacing = clamp(base / 10.0, 64.0, 118.0);"," vec2 rel = g - gm;"," float rho = length(rel) + 1e-5;"," vec2 dir = rel / rho;"," vec2 pw = gm + dir * (rho + WARP_A * rho * rho);"," vec2 cell = floor(pw / spacing);"," vec2 cw = (cell + 0.5) * spacing - gm;"," float Rc = length(cw) + 1e-5;"," float rhoC = (-1.0 + sqrt(1.0 + 4.0 * WARP_A * Rc)) / (2.0 * WARP_A);"," vec2 c = gm + (cw / Rc) * rhoC;"," float cellSize = spacing / (1.0 + 2.0 * WARP_A * rhoC);"," float sigma = spacing * 2.9;"," float f = exp(-(rhoC * rhoC) / (2.0 * sigma * sigma));"," float scale = mix(0.32, 1.42, f);"," float weight = smoothstep(0.06, 0.80, f);"," float hs = cellSize * 0.26 * scale;"," vec2 uv = (g - c) / hs;"," vec2 ruv = mat2(rot.x, rot.y, -rot.y, rot.x) * uv;"," float cov = 0.0;"," if (abs(ruv.x) <= 1.0 && abs(ruv.y) <= 1.0) cov = texture(mark, ruv * 0.5 + 0.5).a;"," float s = cov * weight * energy * 0.26;"," o = vec4(ink * s, s);","}"].join(` -`)}let l=null,u,c,d,h,f,p,g,m,v;function w(q,U){if(!i)return null;const L=i.createShader(q);return i.shaderSource(L,U),i.compileShader(L),i.getShaderParameter(L,i.COMPILE_STATUS)?L:(window.console&&console.warn("fx-grid shader: "+i.getShaderInfoLog(L)),null)}if(i){const q=w(i.VERTEX_SHADER,o),U=w(i.FRAGMENT_SHADER,a());if(q&&U&&(l=i.createProgram(),i.attachShader(l,q),i.attachShader(l,U),i.linkProgram(l),i.getProgramParameter(l,i.LINK_STATUS)||(window.console&&console.warn("fx-grid link: "+i.getProgramInfoLog(l)),l=null)),l){i.useProgram(l),i.bindBuffer(i.ARRAY_BUFFER,i.createBuffer()),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),i.STATIC_DRAW);const L=i.getAttribLocation(l,"p");i.enableVertexAttribArray(L),i.vertexAttribPointer(L,2,i.FLOAT,!1,0,0),u=i.getUniformLocation(l,"res"),c=i.getUniformLocation(l,"design"),d=i.getUniformLocation(l,"mouse"),h=i.getUniformLocation(l,"energy"),f=i.getUniformLocation(l,"parallax"),p=i.getUniformLocation(l,"t"),g=i.getUniformLocation(l,"ink"),m=i.getUniformLocation(l,"mark"),v=i.getUniformLocation(l,"rot"),i.enable(i.BLEND),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),i.clearColor(0,0,0,0)}else{i=null;const L=t.cloneNode(!1);if(t.parentNode.replaceChild(L,t),t=L,r=t.getContext("2d"),!r)return null}}function b(q){if(!q)return null;const U=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(q);if(U){let L=U[1];return L.length===3&&(L=L[0]+L[0]+L[1]+L[1]+L[2]+L[2]),[parseInt(L.slice(0,2),16)/255,parseInt(L.slice(2,4),16)/255,parseInt(L.slice(4,6),16)/255]}try{const L=document.createElement("canvas");L.width=1,L.height=1;const se=L.getContext("2d");se.fillStyle="rgb(9, 8, 7)";const ye=String(se.fillStyle);se.fillStyle=q;const Ce=String(se.fillStyle);if(Ce===ye)return null;const it=/^#([0-9a-f]{6})$/i.exec(Ce);if(it){const rt=it[1];return[parseInt(rt.slice(0,2),16)/255,parseInt(rt.slice(2,4),16)/255,parseInt(rt.slice(4,6),16)/255]}const kt=/rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/i.exec(Ce);if(kt)return[Number(kt[1])/255,Number(kt[2])/255,Number(kt[3])/255]}catch{}return null}function I(){let q="";try{const U=getComputedStyle(document.documentElement);q=(U.getPropertyValue("--fx-ink")||"").trim()||(U.getPropertyValue("--fg")||"").trim()}catch{}return b(q)||[.56,.68,.88]}const A=I();let P=1920,O=1080,S=960,F=540,R=960,M=540,$=.66,N=0,Y=-1e9,V=!1,H=0,J=0,fe=null,Ae=!1,ve=!1,xe=!1;const Fe=64,ie=15.2;let we=0,_e=0;const Le=.0032,ut=0,ce=.56,qe=.26,dt=.32,sn=.16,Pe=.349;let Ie=ut;function Et(){const q=t.getBoundingClientRect(),U=t.clientWidth,L=t.clientHeight;if(!q.width||!U||!L)return;const se=Math.min(window.devicePixelRatio||1,2),ye=Math.max(.2,Math.min(2,q.width/U*se)),Ce=Math.max(2,Math.round(U*ye)),it=Math.max(2,Math.round(L*ye));(Ce!==t.width||it!==t.height)&&(t.width=Ce,t.height=it,i&&i.viewport(0,0,Ce,it)),P=U,O=L,V||(S=R=P/2,F=M=O/2,V=!0)}function kn(q){!l||!Ae||!i||(i.uniform2f(u,t.width,t.height),i.uniform2f(c,P,O),i.uniform2f(d,S,F),i.uniform1f(h,$),i.uniform1f(f,N),i.uniform2f(v,Math.cos(Ie),Math.sin(Ie)),i.uniform1f(p,q),i.uniform3f(g,A[0],A[1],A[2]),i.clear(i.COLOR_BUFFER_BIT),i.drawArrays(i.TRIANGLES,0,3))}function je(q,U,L){const se=Math.max(0,Math.min(1,(L-q)/(U-q)));return se*se*(3-2*se)}function In(q){if(!fe||!r)return;const U=r;U.setTransform(1,0,0,1,0,0),U.clearRect(0,0,t.width,t.height);const L=t.width/P;U.setTransform(L,0,0,L,0,0),U.globalAlpha=1;const se=Math.min(P,O),ye=Math.max(64,Math.min(118,se/10)),Ce=ye*2.9,it=2*Ce*Ce,kt=Math.sin(q*.11)*7,rt=Math.cos(q*.09)*7-N,zi=S+kt,Vi=F+rt,qs=Ce*Math.sqrt(2*Math.log(1/.06)),ei=qs+Le*qs*qs+ye,Mf=Math.floor((zi-ei)/ye)-1,Lf=Math.ceil((zi+ei)/ye)+1,Nf=Math.floor((Vi-ei)/ye)-1,Of=Math.ceil((Vi+ei)/ye)+1;for(let zs=Nf;zs<=Of;zs++){const Bf=(zs+.5)*ye;for(let Vs=Mf;Vs<=Lf;Vs++){const Gs=(Vs+.5)*ye-zi,Ks=Bf-Vi,Ys=Math.sqrt(Gs*Gs+Ks*Ks)+1e-5;if(Ys>ei)continue;const Gi=(-1+Math.sqrt(1+4*Le*Ys))/(2*Le),Wl=Math.exp(-(Gi*Gi)/it),ql=je(.06,.8,Wl)*$*.26;if(ql<.004)continue;const Kt=ye/(1+2*Le*Gi)*.26*(.32+1.1*Wl),zl=Gi/Ys,Js=zi+Gs*zl,Zs=Vi+Ks*zl;Js<-Kt*1.6||Js>P+Kt*1.6||Zs<-Kt*1.6||Zs>O+Kt*1.6||(U.globalAlpha=ql,U.save(),U.translate(Js,Zs),U.rotate(Ie),U.drawImage(fe,-Kt,-Kt,Kt*2,Kt*2),U.restore())}}U.globalAlpha=1}function St(q){if(!ve)return;const U=J?Math.min(.05,(q-J)/1e3):.016;J=q;const se=q-Y>2400?.6:1;$+=(se-$)*Math.min(1,U*3.2);const ye=Math.min(.05,U);we+=((R-S)*Fe-we*ie)*ye,_e+=((M-F)*Fe-_e*ie)*ye,S+=we*ye,F+=_e*ye,N=(window.scrollY||window.pageYOffset||0)*.55;const Ce=q/1e3,it=S/(P||1)-.5,kt=F/(O||1)-.5;let rt=it*(it>=0?ce:qe)+kt*(kt>=0?dt:sn);rt>Pe?rt=Pe:rt<-Pe&&(rt=-Pe),Ie=ut+rt-N*6e-4,Et(),i?kn(Ce):In(Ce),H=requestAnimationFrame(St)}function xt(q){if(!ve)return;const U=t.getBoundingClientRect();!U.width||!P||!O||(R=(q.clientX-U.left)/U.width*P,M=(q.clientY-U.top)/U.height*O,Y=performance.now())}function nt(){ve||Ws||e.matches||n.matches||!xe||document.hidden||(ve=!0,J=0,H=requestAnimationFrame(St))}function Gt(){ve=!1,H&&(cancelAnimationFrame(H),H=0),J=0}function Qn(){e.matches?(Gt(),t.classList.remove("is-ready")):xe&&nt()}function Cn(){n.matches?Gt():xe&&nt()}function jl(){document.hidden?Gt():xe&&nt()}const Ul=new IntersectionObserver(q=>{xe=q[0]?.isIntersecting||!1,xe?nt():Gt()},{threshold:0});Ul.observe(t),window.addEventListener("pointermove",xt,{passive:!0,capture:!0}),window.addEventListener("resize",Et),e.addEventListener("change",Qn),n.addEventListener("change",Cn),document.addEventListener("visibilitychange",jl);function $f(){const q=(s.match(/\sd="([^"]+)"/)||[])[1],U=document.createElement("canvas");U.width=256,U.height=256;const L=U.getContext("2d");if(q&&window.Path2D){const se=Math.min(8.533333333333333,8.421052631578947);L.setTransform(se,0,0,se,se+(256-30*se)/2,-6.4*se),L.fillStyle="rgb(255,255,255)",L.fill(new Path2D(q),"evenodd"),L.setTransform(1,0,0,1,0,0)}try{const se=L.getImageData(0,0,256,256),ye=se.data;for(let Ce=3;Ceve}}const Jv=/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;function Ut(t){const e=String(t||"").trim().match(Jv);return e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),prerelease:e[4]?e[4].split("."):[]}:null}function Zv(t,e){if(t.length===0&&e.length===0)return 0;if(t.length===0)return 1;if(e.length===0)return-1;for(let n=0;n0)}function Qv(t){const e=Ut(t);return e?e.major>0?`${e.major+1}.0.0`:`0.${e.minor+1}.0`:null}function ll(t){let e=String(t??"").trim();if((e.startsWith("'")||e.startsWith('"'))&&(e=e.slice(1,-1).trim()),e===""||e==="any"||e==="*")return{min:null,minInclusive:!1,max:null,maxInclusive:!1};if(e.startsWith("^")){const o=e.slice(1).trim();return Ut(o)?{min:o,minInclusive:!0,max:Qv(o),maxInclusive:!1}:null}if(Ut(e))return{min:e,minInclusive:!0,max:e,maxInclusive:!0};const n={min:null,minInclusive:!1,max:null,maxInclusive:!1},i=/(>=|<=|>|<)\s*([0-9][0-9A-Za-z.+-]*)/g;let r=!1,s;for(;(s=i.exec(e))!==null;){const[,o,a]=s;if(!Ut(a))return null;r=!0,o===">="||o===">"?(n.min=a,n.minInclusive=o===">="):(n.max=a,n.maxInclusive=o==="<=")}return r?n:null}function Eu(t,e){const n=ll(t);if(!n||!Ut(e))return!1;if(n.min!==null){const i=Jr(e,n.min);if(i<0||i===0&&!n.minInclusive)return!1}if(n.max!==null){const i=Jr(e,n.max);if(i>0||i===0&&!n.maxInclusive)return!1}return!0}function e_(t,e){const n=ll(t);if(!n||!Ut(e))return!1;if(n.max===null)return!0;const i=Jr(n.max,e);return i>0?!0:i===0&&n.maxInclusive}function Tn(t){const e=ll(t);return e?e.min:null}const t_="https://pub.dev/api/packages/",n_=8e3;function i_(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:i=null}=e,r=Array.isArray(t?.versions)?t.versions:[];let s=null;for(const o of r){const a=o?.version;if(!a||o.retracted||Xv(a))continue;const l=o.pubspec?.environment||{};n&&l.sdk&&!Eu(l.sdk,n)||i&&l.flutter&&!Eu(l.flutter,i)||(!s||Jr(a,s)>0)&&(s=a)}return s?{version:s,constraint:`^${s}`}:null}async function r_(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:i=null,fetchImpl:r=fetch}=e;let s;try{const a=await r(`${t_}${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(n_)});if(!a.ok)return{name:t,constraint:null,version:null,error:a.status===404?`"${t}" was not found on pub.dev`:`pub.dev returned ${a.status} for "${t}"`};s=await a.json()}catch(a){return{name:t,constraint:null,version:null,error:`could not reach pub.dev for "${t}" (${a.message})`}}const o=i_(s,{dartSdkFloor:n,flutterSdkFloor:i});return o?{name:t,...o,error:null}:{name:t,constraint:null,version:null,error:n?`no published "${t}" release supports Dart ${n}`:`no published "${t}" release could be read`}}async function s_(t,e={}){const n=await Promise.all(t.map(i=>r_(i,e)));return new Map(n.map(({name:i,...r})=>[i,r]))}async function o_(t,e={},n={}){const{resolveVersions:i=s_}=n,r=Object.entries(e).filter(([c])=>c&&c!=="flutter"),s=Uh(t),o={dartSdkFloor:Tn(s.sdk),flutterSdkFloor:Tn(s.flutter)},a={additions:{},overrides:{},kept:[],warnings:[],sdk:o};if(r.length===0)return a;const l=ys(t),u=[];for(const[c,d]of r){const h=l.get(c);if(!h){u.push(c);continue}const f=Tn(d);if(!f){a.kept.push({name:c,constraint:h.constraint});continue}if(!h.isScalar){a.warnings.push(`"${c}" is declared in your project from a git, path, or SDK source, but the generated code needs at least ${f}. Left as-is — update it yourself if the build fails.`),a.kept.push({name:c,constraint:h.constraint});continue}if(e_(h.constraint,f)){a.kept.push({name:c,constraint:h.constraint});continue}a.overrides[c]=`^${f}`,a.warnings.push(`"${c}" was pinned to ${h.constraint} in your project, which cannot resolve the ${f} the generated code needs. Raising it to ^${f} — this changes a dependency the rest of your app also uses.`)}if(u.length>0){const c=await i(u,o);for(const d of u){const h=c.get(d);if(h?.constraint){a.additions[d]=h.constraint;continue}const f=e[d]||"";if(Tn(f)){a.additions[d]=`^${Tn(f)}`,a.warnings.push(`Could not confirm "${d}" version on pub.dev (${h?.error||"lookup failed"}). Using ^${Tn(f)} from the AI's recommendation — verify this is current.`);continue}a.additions[d]=">=0.0.0",a.warnings.push(`Could not determine a version for "${d}" (${h?.error||"lookup failed"}) and the AI supplied none. Added with a wide-open >=0.0.0 constraint — pin a concrete version in FlutterFlow before deploying.`)}}return a}const a_={"&":"&","<":"<",">":">",'"':""","'":"'"};function Ht(t){return String(t??"").replace(/[&<>"']/g,e=>a_[e])}function W(t){return t?Ht(t).replace(/\n/g,"
"):""}function Bt(t){return Ht(t).replace(/\r?\n/g," ")}function ws(t,e={}){const n=t?.pipelineStep;if(n!=null&&e[n]!=null)return e[n];const i=t?.message||"";return i.includes("Code Generator")?2:i.includes("Code Review")?3:1}function l_(t){if(!t)return{kind:"generic",title:"Generation failed",message:"An unknown error occurred. Please try again.",detail:"",canRetry:!0,canEdit:!0,canUpgrade:!1};if(t.isModelArmor){const n=t.code==="MODEL_ARMOR_BLOCKED";return{kind:"safety",title:t.userTitle||"Request blocked for safety",message:t.userMessage||t.message,detail:t.retryExplanation||"",canRetry:!n,canEdit:!0,canUpgrade:!1}}if(t.isUsageLimit)return{kind:"quota",title:"Monthly limit reached",message:t.message||"You've used all your generations for this period.",detail:"",canRetry:!1,canEdit:!1,canUpgrade:!0};const e=t.message||"";return/timed out after/i.test(e)?{kind:"timeout",title:"Request timed out",message:"The generation service took too long to respond.",detail:e,canRetry:!0,canEdit:!0,canUpgrade:!1}:/unreachable|failed to fetch|load failed|cors/i.test(e)?{kind:"network",title:"Connection problem",message:"We couldn't reach the generation service. Check your connection and try again.",detail:e,canRetry:!0,canEdit:!0,canUpgrade:!1}:{kind:"generic",title:"Generation failed",message:e||"An unexpected error occurred.",detail:"",canRetry:!0,canEdit:!0,canUpgrade:!1}}function c_(t){const e={"Integration Audit Report":"📋","Critical Issues":"❌",Warnings:"⚠️",Recommendations:"✅","Overall Score":"📊"};for(const[n,i]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return i;return"📄"}function u_(t){const e={critical:"❌",warning:"⚠️",recommendation:"✅",score:"📊",issue:"🔍",fix:"🔧"};for(const[n,i]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return i;return"📝"}function d_(t){return t.includes("class ")&&t.includes("extends ")||t.includes("StatelessWidget")||t.includes("StatefulWidget")||t.includes("import 'package:flutter/")?"dart":t.includes("def ")||t.includes("import ")||t.includes("print(")?"python":t.includes("function ")||t.includes("const ")||t.includes("console.")?"javascript":"dart"}function Kn(t){if(!t)return"";if(typeof t!="string")return String(t);const e=/```(?:\w+)?\n?([\s\S]*?)```/,n=t.match(e);return n?n[1].trim():t.trim()}function Su(t){return t=Ht(t),t=t.replace(/\*\*(.*?)\*\*/g,'$1'),t=t.replace(/\*(.*?)\*/g,'$1'),t=t.replace(/`(.*?)`/g,'$1'),t=t.replace(/\b(FAIL|ERROR|CRITICAL)\b/g,'$1'),t=t.replace(/\b(WARN|WARNING)\b/g,'$1'),t=t.replace(/\b(PASS|SUCCESS|OK)\b/g,'$1'),t}function zh(t,e="dart",n=globalThis.hljs){if(!t)return"";const i=Kn(t);try{return n.highlight(i,{language:e}).value}catch(r){console.warn("Syntax highlighting failed:",r);try{return n.highlight(i,{language:"json"}).value}catch{return Ht(i)}}}function bs(t,e={}){const{highlighter:n=globalThis.hljs}=e;let i='
';const r=String(t??"").split(` -`);let s=!1,o="";for(const a of r){if(a.startsWith("```")){if(s){const l=d_(o),u=zh(o.trim(),l,n);i+=`
-
${u}
-
`,o="",s=!1}else s=!0;continue}if(s){o+=a+` -`;continue}if(a.startsWith("# ")){const l=a.substring(2).trim();i+=`
-

- ${c_(l)} - ${Ht(l)} -

-
`;continue}if(a.startsWith("## ")){const l=a.substring(3).trim();i+=`
-

- ${u_(l)} - ${Ht(l)} -

-
`;continue}if(/^[-*+]\s+/.test(a)||/^\d+\.\s+/.test(a)){const l=a.replace(/^([-*+]|\d+\.)\s+/,"").trim();i+=`
- • - ${Su(l)} -
`;continue}a.trim()!==""&&(i+=`

${Su(a)}

`)}return i+="
",` -
-
-
- Live Audit Report -
- ${i} -
- `}const h_="https://ccc-ffai-runner-y5cyj3473a-uw.a.run.app/deployCustomClasses";const lt="https://4tgke4.buildship.run",Vh={professional:"price_1T2ldCKszA2slvDXatdeCpbI",power:"price_1T2le9KszA2slvDXR4mPvw7M"},Zr="ccc_auth_session",xu=new WeakSet;let G={email:null,sessionToken:null,isVerified:!1};function Yn(t={}){return{tier:"free",status:"none",periodEnd:null,isLoading:!1,isResolved:!1,error:null,...t}}let be=Yn({isResolved:!0});const f_=`${lt}/service/runpipeline`,p_="bs_user_id",g_="bs_identity_token",m_=`${lt}/authUserCheck`;let st={userId:null,token:null,status:null,resolved:!1};const Xr={free:2,professional:50,power:2e3},Qr="ccc_subscription",ku=3,v_=new Set(["active","trialing","paid"]),es="google/gemini-3.7-flash",yr=["anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta","openrouter/free","openrouter/deepseek/deepseek-v4-pro"],__={"google/gemini-3.7-flash":"Gemini 3.7 Flash","anthropic/claude-opus-5":"Claude Opus 5","openai/gpt-5.6-sol":"GPT-5.6 Sol","z-ai/glm-5.2":"GLM 5.2","moonshotai/kimi-k3":"Kimi K3","openrouter/auto-beta":"OpenRouter: Auto Router","openrouter/free":"OpenRouter: Free Models","openrouter/deepseek/deepseek-v4-pro":"DeepSeek v4 Pro"};function Jt(t){return __[t]||t}const y_=new Set(["google/gemini-3.7-flash","anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta"]);function Gh(t){return y_.has(t)}const Sa=4,Po=8*1024*1024,w_="https://4tgke4.buildship.run/service/runpipeline-image";let wt=[];function b_(t){return new Promise(e=>{const n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>e(null),n.readAsDataURL(t)})}async function E_(t){const e=new FormData;return e.append("file",t),(await fetch(w_,{method:"POST",body:e})).json()}function S_(t){if(Array.isArray(t)){const e=t[0];if(e&&typeof e=="object")for(const n of Object.keys(e)){if(n==="item"||n==="index")continue;const i=e[n];if(i&&typeof i=="object"){if(typeof i.file=="string")return i.file;if(typeof i.url=="string")return i.url}if(typeof i=="string")return i}return""}return typeof t=="string"?t:t&&typeof t=="object"&&(t.url||t.fileUrl||t.file_url||t.downloadUrl||t.imageUrl||t.image_url||t.file)||""}async function x_(t){const e=Array.from(t.target.files||[]);if(!e.length)return;const n=e.filter(l=>l.size>Po);n.length&&ke(`Skipped ${n.length} image(s) over the ${(Po/1024/1024).toFixed(0)} MB limit.`,"warning");const i=e.filter(l=>l.size<=Po);if(!i.length){t.target.value="";return}const r=Sa-wt.length,o=i.slice(0,r).map(async l=>{const u=await b_(l);if(!u)return null;let c="";try{c=S_(await E_(l))}catch{c=""}return{dataUrl:u,name:l.name,url:c}}),a=(await Promise.all(o)).filter(Boolean);t.target.value="",!(a.length&&!Gh(document.getElementById("code-generator-model")?.value))&&(wt.push(...a),i.length>r&&ke(`You can attach up to ${Sa} images.`,"info"),Es())}function k_(t){wt.splice(t,1),Es()}function Es(){const t=document.getElementById("prompt-image-thumbnails"),e=document.getElementById("prompt-image-btn-label");t&&(t.innerHTML="",wt.forEach((n,i)=>{const r=document.createElement("div");r.className="prompt-img-thumb",r.innerHTML=`Prompt image`,t.appendChild(r)}),e&&(e.textContent=wt.length>=Sa?"Image limit reached":"Add images"))}function Kh(){const t=document.getElementById("prompt-image-upload");if(!t)return;const e=document.getElementById("code-generator-model"),n=Gh(e?.value);t.classList.toggle("hidden",!n),!n&&wt.length&&(wt=[],Es())}const yn="ccc_usage",Yh="google/gemini-3.7-flash",Jh="google/gemini-3.7-flash",or="google/gemini-3.7-flash",ar={professional:11,power:49},xa={en_US:"USD",en_GB:"GBP",en_AU:"AUD",en_NZ:"NZD",en_CA:"CAD",en_IN:"INR",en_SG:"SGD",en_HK:"HKD",en_PH:"PHP",en_ZA:"ZAR",en:"USD",de:"EUR",fr:"EUR",es:"EUR",it:"EUR",nl:"EUR",pt_PT:"EUR",pt_BR:"BRL",pt:"BRL",ja:"JPY",ko:"KRW",zh_CN:"CNY",zh_TW:"TWD",zh:"CNY",th:"THB",vi:"VND",id:"IDR",ms_MY:"MYR",ms:"MYR",sv:"SEK",nb:"NOK",da:"DKK",pl:"PLN",cs:"CZK",hu:"HUF",ro:"RON",tr:"TRY",ar:"AED",he:"ILS",ru:"RUB",uk:"UAH"},wr={AUD:1,USD:.65,EUR:.6,GBP:.52,CAD:.88,NZD:1.08,JPY:97,KRW:870,INR:54,SGD:.87,HKD:5.08,BRL:3.18,CNY:4.7,TWD:20.5,THB:22.5,VND:16200,IDR:10200,MYR:2.88,SEK:6.8,NOK:6.95,DKK:4.48,PLN:2.6,CZK:15.2,HUF:238,RON:2.98,TRY:20.9,AED:2.39,ILS:2.38,PHP:36.4,ZAR:11.8,RUB:58,UAH:26.8,CHF:.57,MXN:11.1,ARS:580,CLP:610,COP:2700,PEN:2.44};let br={...wr};async function I_(){const t=new AbortController,e=setTimeout(()=>t.abort(),5e3);try{const n=await fetch("https://open.er-api.com/v6/latest/AUD",{signal:t.signal});if(!n.ok)return;const i=await n.json();if(i.result!=="success"||!i.rates)return;const r=i.rates,s={AUD:1},o=new Set([...Object.keys(wr),...Object.values(ka),...Object.values(xa)]);for(const a of o)a!=="AUD"&&(typeof r[a]=="number"&&r[a]>0?s[a]=r[a]:wr[a]&&(s[a]=wr[a]));br=s}catch{}finally{clearTimeout(e)}}const ka={"America/Sao_Paulo":"BRL","America/Fortaleza":"BRL","America/Recife":"BRL","America/Bahia":"BRL","America/Belem":"BRL","America/Manaus":"BRL","America/Cuiaba":"BRL","America/Campo_Grande":"BRL","America/Araguaina":"BRL","America/Noronha":"BRL","America/Rio_Branco":"BRL","America/Porto_Velho":"BRL","America/Boa_Vista":"BRL","America/Maceio":"BRL","America/Santarem":"BRL","America/Eirunepe":"BRL","Europe/London":"GBP","Europe/Paris":"EUR","Europe/Berlin":"EUR","Europe/Madrid":"EUR","Europe/Rome":"EUR","Europe/Amsterdam":"EUR","Europe/Brussels":"EUR","Europe/Vienna":"EUR","Europe/Lisbon":"EUR","Europe/Dublin":"EUR","Europe/Helsinki":"EUR","Europe/Athens":"EUR","Europe/Bucharest":"RON","Europe/Budapest":"HUF","Europe/Warsaw":"PLN","Europe/Prague":"CZK","Europe/Copenhagen":"DKK","Europe/Stockholm":"SEK","Europe/Oslo":"NOK","Europe/Zurich":"CHF","Europe/Istanbul":"TRY","Europe/Moscow":"RUB","Europe/Kiev":"UAH","Europe/Kyiv":"UAH","Asia/Tokyo":"JPY","Asia/Seoul":"KRW","Asia/Shanghai":"CNY","Asia/Taipei":"TWD","Asia/Hong_Kong":"HKD","Asia/Singapore":"SGD","Asia/Kolkata":"INR","Asia/Calcutta":"INR","Asia/Bangkok":"THB","Asia/Ho_Chi_Minh":"VND","Asia/Jakarta":"IDR","Asia/Kuala_Lumpur":"MYR","Asia/Dubai":"AED","Asia/Jerusalem":"ILS","Asia/Tel_Aviv":"ILS","Asia/Manila":"PHP","Pacific/Auckland":"NZD","Australia/Sydney":"AUD","Australia/Melbourne":"AUD","Australia/Brisbane":"AUD","Australia/Perth":"AUD","Australia/Adelaide":"AUD","Australia/Hobart":"AUD","Australia/Darwin":"AUD","Australia/Lord_Howe":"AUD","America/Toronto":"CAD","America/Vancouver":"CAD","America/Edmonton":"CAD","America/Winnipeg":"CAD","America/Halifax":"CAD","America/St_Johns":"CAD","America/Regina":"CAD","America/New_York":"USD","America/Chicago":"USD","America/Denver":"USD","America/Los_Angeles":"USD","America/Phoenix":"USD","America/Anchorage":"USD","Pacific/Honolulu":"USD","America/Mexico_City":"MXN","America/Cancun":"MXN","America/Tijuana":"MXN","America/Argentina/Buenos_Aires":"ARS","America/Santiago":"CLP","America/Bogota":"COP","America/Lima":"PEN","Africa/Johannesburg":"ZAR"};function Zh(){try{const s=Intl.DateTimeFormat().resolvedOptions().timeZone;if(s&&ka[s])return ka[s]}catch{}const e=(navigator.language||"en-US").replace("-","_"),n=xa[e];if(n)return n;const i=e.split("_")[0],r=xa[i];return r||"USD"}function lr(t,e){const n=br[e]??br.USD,i=t*n,r=Math.round(i*100)/100;try{return new Intl.NumberFormat("en-US",{style:"currency",currency:e,minimumFractionDigits:0,maximumFractionDigits:r>=100||r%1===0?0:2}).format(r)}catch{return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:2}).format(t*br.USD)}}const vt="ccc_api_key_",Dt="ccc_session_api_key_",bt="ccc_encryption_key",Ni="ccc_encryption_key_scope",C_="ccc_keystore",ts="keys",Oi="ccc_encryption_key_version";let Ia=null,ns=null,Bi=!1,is=!1,Iu=!1;class rs extends Error{constructor(){super("Secure browser key storage is unavailable."),this.name="CredentialStorageUnavailableError"}}function Cu(){if(Iu)return;Iu=!0;const t="Secure browser key storage is unavailable. Existing credentials were left untouched; new credentials will be available only in this tab session.";console.warn(t),document.body&&ke(t,"warning")}function Xh(){return localStorage.getItem(Oi)||""}function Ca(){return crypto.randomUUID?.()||ef(crypto.getRandomValues(new Uint8Array(16)))}function A_(){const t=Xh();if(t)return t;const e=Ca();return localStorage.setItem(Oi,e),e}function Jn(){Ia=null,ns=null,Bi=!1,is=!1}window.addEventListener("storage",t=>{t.key===Oi&&Jn()});function P_(){return new Promise((t,e)=>{const n=indexedDB.open(C_,1);n.onupgradeneeded=()=>{const i=n.result;i.objectStoreNames.contains(ts)||i.createObjectStore(ts)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}async function cl(t,e){const n=await P_();return new Promise((i,r)=>{const s=n.transaction(ts,t);let o;try{o=e(s.objectStore(ts))}catch(l){n.close(),r(l);return}let a;o.onsuccess=()=>{a=o.result},o.onerror=()=>r(o.error),s.oncomplete=()=>{n.close(),i(a)},s.onerror=()=>{n.close(),r(s.error||new Error("Encryption key transaction failed."))},s.onabort=()=>{n.close(),r(s.error||new Error("Encryption key transaction aborted."))}})}function F_(t){return t instanceof CryptoKey&&t.algorithm?.name==="AES-GCM"&&t.extractable===!1&&t.usages.includes("encrypt")&&t.usages.includes("decrypt")}async function R_(){const t=await cl("readonly",e=>e.get(bt));return F_(t)?t:null}async function Qh(t){await cl("readwrite",e=>e.put(t,bt))}async function T_(){Jn();try{await cl("readwrite",t=>t.delete(bt))}catch(t){console.warn("Could not delete the stored encryption key:",t)}}async function $_(){const t=sessionStorage.getItem(bt);if(!t)return null;const e=await crypto.subtle.importKey("jwk",JSON.parse(t),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await Qh(e),sessionStorage.removeItem(bt),sessionStorage.removeItem(Ni),localStorage.removeItem(vt+"salt"),e}async function Au(t){const e=sessionStorage.getItem(bt);if(e)return is=sessionStorage.getItem(Ni)!=="session",crypto.subtle.importKey("jwk",JSON.parse(e),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);if(!t)throw new rs;const n=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),i=await crypto.subtle.exportKey("jwk",n);return sessionStorage.setItem(bt,JSON.stringify(i)),sessionStorage.setItem(Ni,"session"),is=!1,crypto.subtle.importKey("jwk",i,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function M_(t){if(sessionStorage.getItem(Ni)==="session"&&sessionStorage.getItem(bt))return Cu(),Bi=!0,Au(t);try{const e=await R_();if(e)return e;const n=await $_();if(n)return n;const i=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await Qh(i),i}catch(e){return console.warn("IndexedDB encryption-key storage failed:",e),Cu(),Bi=!0,Au(t)}}async function ul(t={}){const{allowSessionFallbackCreation:e=!0}=t,n=A_();ns!==n&&Jn();const i=Ia||M_(e);Ia=i,ns=n;try{return await i}catch(r){throw Jn(),r}}async function L_(t){const e=await ul(),n=ns,i=new TextEncoder,r=crypto.getRandomValues(new Uint8Array(12)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:r},e,i.encode(t)),o=new Uint8Array(r.length+s.byteLength);return o.set(r),o.set(new Uint8Array(s),r.length),{ciphertext:ef(o),keyVersion:n,sessionFallback:Bi}}async function N_(t,e={}){const{isSessionCredential:n=!1}=e;try{const i=await ul({allowSessionFallbackCreation:!1});if(Bi&&!n&&!is)throw new rs;const r=O_(t),s=r.slice(0,12),o=r.slice(12),a=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},i,o);return new TextDecoder().decode(a)}catch(i){if(i instanceof rs)throw i;return console.error("Decryption failed:",i),null}}function ef(t){const e=new Uint8Array(t);let n="";for(let i=0;i0}let Di="",ss="",ki=null,Fu=0;async function dl(){sessionStorage.getItem(bt)&&await ul(),Di=await Me("flutterflow"),ss=await Me("flutterflow_project_id"),H_(),rn()}function hl(){const t=document.getElementById("api-keys-modal");tt(t),pl(),Di&&sf(Di)}function tf(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("api-keys-modal");e&&ct(e);const n=document.getElementById("walkthrough-modal");n&&(fl(),tt(n))}let Wt=1;function nf(){const t=document.querySelector(".wt-steps");return t?Array.from(t.querySelectorAll(".wt-step-card")):[]}function Ss(){const t=nf();t.length&&t.forEach((e,n)=>{const i=n+1;if(i===Wt){e.classList.remove("opacity-60","bg-gray-50","border-gray-200"),e.classList.add("bg-blue-50","border-blue-200");const r=e.querySelector("div:first-child");r&&(r.classList.remove("bg-gray-400"),r.classList.add("bg-blue-500"),r.innerHTML=i)}else if(i0&&Wt<=t&&(Wt++,Ss())}function D_(){const t=document.getElementById("walkthrough-modal");t&&(Wt=1,Ss(),tt(t))}function j_(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("walkthrough-modal");e&&ct(e);const n=document.getElementById("walkthrough-dont-show");n&&n.checked&&localStorage.setItem("hasSeenWalkthrough","true")}function rf(){if(G.isVerified&&Vt()&&be.tier!=="free")return;if(!localStorage.getItem("hasSeenWalkthrough")){const e=document.getElementById("walkthrough-modal");e&&(Wt=1,Ss(),tt(e))}}async function pl(){const t=document.getElementById("flutterflow-api-key-input");Di?(t.value="",t.placeholder="Key saved (enter new to replace)"):t.placeholder="Enter your FlutterFlow API key",U_()}function U_(){Ru("flutterflow","flutterflow-key-status"),Ru("flutterflow_project_id","flutterflow-project-status")}function Ru(t,e){const n=document.getElementById(e);if(!n)return;const i=n.querySelector(".key-status-dot"),r=n.querySelector("span");Ln(t)?(i.className="key-status-dot configured",r.className="text-green-600",r.textContent="User key configured"):(i.className="key-status-dot missing",r.className="text-gray-500",r.textContent="Not configured")}function rn(){const t=y.step2Result&&y.step2Result.length>0,e=document.getElementById("btn-deploy-to-ff");e&&e.classList.toggle("hidden",!t)}function H_(){const t=document.getElementById("api-keys-status");if(!t)return;const e=t.querySelectorAll(".key-status-dot"),n=["flutterflow"];e.forEach((i,r)=>{const s=n[r];s==="flutterflow"?Ln("flutterflow")&&Ln("flutterflow_project_id")?(i.className="key-status-dot configured",i.title="FlutterFlow (Fully configured)"):Ln("flutterflow")||Ln("flutterflow_project_id")?(i.className="key-status-dot env",i.title="FlutterFlow (Partially configured)"):(i.className="key-status-dot missing",i.title="FlutterFlow (Not configured)"):Ln(s)?(i.className="key-status-dot configured",i.title=s.charAt(0).toUpperCase()+s.slice(1)+" (User key)"):(i.className="key-status-dot missing",i.title=s.charAt(0).toUpperCase()+s.slice(1)+" (Not configured)")}),rn()}async function W_(){const t=document.getElementById("flutterflow-api-key-input"),e=document.getElementById("flutterflow-projects-select");t.value.trim()&&await Pu("flutterflow",t.value);const n=e?.value.trim()||"";if(n){if(!xs(n)){ke("The selected FlutterFlow project has an unexpected ID format.","error"),e.focus();return}await Pu("flutterflow_project_id",n)}await dl(),pl();const i=document.querySelector("#api-keys-modal .bg-blue-500"),r=i.textContent;i.textContent="Saved!",i.classList.remove("bg-blue-500","hover:bg-blue-600"),i.classList.add("bg-green-500"),setTimeout(()=>{i.textContent=r,i.classList.remove("bg-green-500"),i.classList.add("bg-blue-500","hover:bg-blue-600"),tf()},1e3)}async function q_(){if(!confirm("Are you sure you want to clear all stored API keys?"))return;localStorage.setItem(Oi,Ca()),Jn(),localStorage.removeItem(vt+"flutterflow"),localStorage.removeItem(vt+"flutterflow_project_id"),sessionStorage.removeItem(Dt+"flutterflow"),sessionStorage.removeItem(Dt+"flutterflow_project_id"),sessionStorage.removeItem(bt),sessionStorage.removeItem(Ni),localStorage.removeItem(vt+"salt"),await T_(),localStorage.setItem(Oi,Ca()),localStorage.removeItem(vt+"flutterflow"),localStorage.removeItem(vt+"flutterflow_project_id"),sessionStorage.removeItem(Dt+"flutterflow"),sessionStorage.removeItem(Dt+"flutterflow_project_id"),await dl();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML=''),pl()}function xs(t){return!t||t.trim().length<5||t.includes(" ")?!1:/^[a-zA-Z0-9-]+$/.test(t)}function z_(t,e){const n=document.getElementById(t);n&&(n.value?e?n.style.borderColor="#22c55e":n.style.borderColor="#ef4444":n.style.borderColor="")}function V_(){const t=document.getElementById("flutterflow-api-key-input");t&&(t.addEventListener("input",e=>{const n=e.target.value.trim().length>0;z_("flutterflow-api-key-input",n)}),t.addEventListener("blur",G_(async e=>{const n=e.target.value.trim();n&&await sf(n)},500)))}function G_(t,e){let n;return function(...r){const s=()=>{clearTimeout(n),t(...r)};clearTimeout(n),n=setTimeout(s,e)}}async function sf(t){const e=document.getElementById("flutterflow-projects-select"),n=document.getElementById("flutterflow-projects-error");if(!e){console.error("Projects dropdown element not found");return}e.innerHTML='',n&&n.classList.add("hidden");try{const r=await new Wi(t,"").listProjects();if(!r||r.length===0){e.innerHTML='';return}e.innerHTML='',r.forEach(s=>{const o=document.createElement("option");o.value=s.id||s.projectId||"",o.textContent=s.name||s.projectName||`Project ${s.id}`,e.appendChild(o)}),ss&&(e.value=ss)}catch(i){console.error("Failed to fetch projects:",i),e.innerHTML='',n&&(n.textContent=`Failed to load projects: ${i.message}`,n.classList.remove("hidden"))}}function K_(t){const e=document.getElementById(t),i=e.nextElementSibling.querySelector("svg");e.type==="password"?(e.type="text",i.innerHTML=` - - `):(e.type="password",i.innerHTML=` - - - `)}let y={step1Result:null,step2Result:null,step3Result:null,bundleSpec:null,artifactBundle:null,bundleReview:null,selectedArtifactId:null,resultsViewMode:"summary",currentStep:0,isRunning:!1,runId:0,submittedPrompt:"",submittedImages:[]};function Y_(){y.step1Result=null,y.step2Result=null,y.step3Result=null,y.bundleSpec=null,y.artifactBundle=null,y.bundleReview=null,y.selectedArtifactId=null,y.resultsViewMode="summary"}function J_(){y.bundleSpec=Mi(y.step1Result,{artifactType:"CustomWidget",artifactName:"GeneratedWidget"})}function ks(){const t=Kr(y.bundleSpec);y.artifactBundle=Mi(y.step2Result,{id:y.bundleSpec?.id,title:y.bundleSpec?.title,description:y.bundleSpec?.description,artifactType:t.artifactType,artifactName:t.artifactName,fileName:t.fileName,dependencies:t.dependencies,relationships:y.bundleSpec?.relationships,code:y.step2Result||""});const e=Vm(y.artifactBundle);y.artifactBundle={...y.artifactBundle,warnings:[...y.artifactBundle.warnings,...e.findings.map(n=>n.message)],metadata:{...y.artifactBundle.metadata,compatibility:e}},y.selectedArtifactId=Kr(y.artifactBundle).id}function Is(){const t=Mi(y.step3Result,{id:y.artifactBundle?.id,title:y.artifactBundle?.title}),e=new Map(t.artifacts.map(i=>[i.id,i.review])),n=new Map(t.artifacts.filter(i=>{const r=i.review;return r&&typeof r.fixedSource=="string"&&r.fixedSource.trim()}).map(i=>[i.id,i.review.fixedSource.trim()]));y.bundleReview=Mi({id:y.artifactBundle?.id,title:y.artifactBundle?.title,artifacts:y.artifactBundle?.artifacts?.map(i=>{const r=n.get(i.id)||null;return{...i,review:e.get(i.id)||i.review||y.step3Result||null,...r?{fixedCode:r}:{}}})||[],relationships:y.artifactBundle?.relationships,warnings:y.artifactBundle?.warnings})}function of(){const t=gl();return{artifactType:t.artifactType||"CustomWidget",artifactName:t.artifactName||"GeneratedWidget",fileName:t.fileName||""}}function gl(){const t=y.artifactBundle||y.bundleSpec||null;return(Array.isArray(t?.artifacts)?t.artifacts:[]).find(n=>n.id===y.selectedArtifactId)||Kr(t)}function ml(){return gl().code||y.step2Result||""}async function Z_(){try{await dl()}catch(t){return console.error("checkConnection: initializeApiKeys failed:",t),!1}return!0}const Er={production:"https://api.flutterflow.io/v2/",staging:"https://api.flutterflow.io/v2-staging/"};function X_(t,e){const n=e?.trim()?` (${e.trim().slice(0,200)})`:"";return t===401?`Your FlutterFlow API key was rejected (401 Unauthorized)${n}. Re-enter a current key under API Keys settings, then try again.`:`Listing FlutterFlow projects was denied (403)${n}. The key may be scoped to sync a single project without list permission - verify the key's access in FlutterFlow, re-enter it under API Keys settings, then retry.`}class Wi{constructor(e,n,i="main",r=Er.production){this.apiKey=e,this.baseUrl=r,this._projectId=n,this._branchName=i,this._endpoint=r}get projectId(){return this._projectId}get branchName(){return this._branchName==="main"?"":this._branchName}async exportProjectZip(){console.log(`Exporting code from FlutterFlow project: ${this.projectId}, branch: ${this.branchName||"main"}`);const e=[{project:{path:`projects/${this.projectId}`},...this.branchName?{branch_name:this.branchName}:{},export_as_module:!1,include_assets_map:!1,format:!1,export_as_debug:!1},{project_id:this.projectId,branch_name:this.branchName,include_assets:!1,export_as_module:!1}];let n=null;for(const i of e)try{const r=await fetch(`${this.baseUrl}exportCode`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(i)});if(!r.ok){const a=await r.text();n=new Error(`Export failed: ${r.status} - ${a}`);continue}const s=await r.json(),o=s?.value?.project_zip||s?.project_zip;if(!o){n=new Error("Export response did not include project source.");continue}return o}catch(r){n=r}throw n||new Error("Export failed for an unknown reason.")}async fetchProjectSource(){const e=await this.exportProjectZip(),n=await JSZip.loadAsync(e,{base64:!0}),i=Object.keys(n.files).filter(a=>!n.files[a].dir&&(a==="pubspec.yaml"||a.endsWith("/pubspec.yaml"))).sort((a,l)=>a.split("/").length-l.split("/").length)[0];if(!i)throw new Error("Export did not contain a pubspec.yaml.");const r=i.slice(0,i.length-12),s=new Map,o=Object.keys(n.files).filter(a=>{if(n.files[a].dir||!a.startsWith(r))return!1;const l=a.slice(r.length);return l==="lib/flutter_flow/custom_functions.dart"||l.startsWith("lib/custom_code/")&&l.endsWith(".dart")});return await Promise.all(o.map(async a=>{s.set(a.slice(r.length),await n.files[a].async("string"))})),{pubspecYaml:await n.files[i].async("string"),files:s}}async pushCodeWithRetry(e,n=3){const i=[Er.production,Er.staging],r=Math.max(0,i.indexOf(this._endpoint));for(let s=0;ssetTimeout(d,1e3*(s+1)));continue}return l}catch(l){console.warn(`Push to ${a} failed: ${l.message}, trying next...`),await new Promise(u=>setTimeout(u,1e3*(s+1)))}}throw new Error("All API endpoints failed after retries")}async pushCode(e){return this.pushCodeWithRetry(e)}parseProjectsResponse(e){if(e?.success&&typeof e.value=="string")try{const i=JSON.parse(e.value);if(i&&Array.isArray(i.entries))return i.entries.map(r=>({id:r.id,name:r.project?.name||r.id}))}catch(i){console.error("Failed to parse stringified project value:",i)}const n=e?.projects||e?.items||e?.entries||(Array.isArray(e)?e:[]);return Array.isArray(n)?n:[]}async listProjects(){console.log("Listing projects for API key");const e=[`${this.baseUrl}listProjects`,"https://api.flutterflow.io/v2/l/listProjects"];let n=0,i="";for(const r of e){const s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({project_type:"ALL",deserialize_response:!0})});if(s.ok)return r!==e[0]&&console.log(`listProjects answered on legacy path ${r}`),this.parseProjectsResponse(await s.json());if(n=s.status,i=await s.text(),console.warn(`listProjects via ${r} returned ${n}: ${i}`),s.status===401||s.status===403)throw new Error(X_(s.status,i));if(s.status!==404)throw new Error(`List projects failed: ${s.status} - ${i}`)}throw new Error(`List projects failed: ${n} - ${i}`)}}async function vl(t){const e=t.clone();let n;try{n=await t.json()}catch{const s=await e.text();if(!t.ok)return{success:!1,responseCode:t.status,errorMessage:s||`HTTP ${t.status}`,errorMap:new Map};throw new Error(`Invalid JSON response: ${s}`)}if(!t.ok){let r=n.message||`HTTP ${t.status}`,s=new Map;if(n.errors)s=new Map(Object.entries(n.errors));else if(!n.message&&typeof n=="object"){const o=Object.keys(n).filter(a=>a.endsWith(".dart")&&Array.isArray(n[a]));o.length>0&&(s=new Map(Object.entries(n)),r=o.flatMap(l=>n[l].map(u=>`${l}: ${u.errorMessage}`)).join(` -`)||`HTTP ${t.status}`)}return{success:!1,responseCode:t.status,errorMessage:r,errorMap:s}}let i={};if(n.value)try{i=typeof n.value=="string"?JSON.parse(n.value):n.value}catch(r){console.warn("Ignoring malformed push response value:",r)}return{success:!0,responseCode:t.status,errorMap:new Map(Object.entries(i))}}function _l(t,e){return{401:"Authentication failed. Please check your FlutterFlow API key.",403:"Access denied. You may not have permission to modify this project.",404:"Project not found. Please check your Project ID.",409:"Conflict detected. The project may have been modified elsewhere.",422:"Validation failed: Invalid request format",429:"Rate limit exceeded. Please try again in a few minutes.",500:"FlutterFlow server error. Please try again later.",503:"FlutterFlow service temporarily unavailable."}[t]||`FlutterFlow API error: ${`HTTP ${t}`}`}const z={ACTION:"A",WIDGET:"W",FUNCTION:"F",CODE_FILE:"C",DEPENDENCIES:"D",OTHER:"O"},af=/class\s+\w+\s+extends\s+(?:StatelessWidget|StatefulWidget)\b/,lf=/extends\s+State<\w+>/;function Q_(t,e=""){if(t==="pubspec.yaml")return z.DEPENDENCIES;if(!t.endsWith(".dart")||t.endsWith("index.dart"))return z.OTHER;if(t==="custom_functions.dart")return z.FUNCTION;if(e){const n=af.test(e),i=lf.test(e);if(n||i)return z.WIDGET;if(/^\s*Future(?:<[^>]+>)?\s+\w+\s*\(/m.test(e))return z.ACTION;if(e.match(/^\s*(String|int|double|bool|List|Map|dynamic|void)\s+\w+\s*\(/m))return z.FUNCTION}return z.CODE_FILE}function cf(t,e){switch(e){case z.ACTION:return`lib/custom_code/actions/${t}`;case z.WIDGET:return`lib/custom_code/widgets/${t}`;case z.FUNCTION:return"lib/flutter_flow/custom_functions.dart";case z.CODE_FILE:return`lib/custom_code/${t}`;case z.DEPENDENCIES:return"pubspec.yaml";case z.OTHER:return`lib/custom_code/${t}`;default:return t}}async function yl(t,e=new Map){return Am(t,e)}const Aa=new Map;function uf(t){return`${t.baseUrl}|${t.projectId}|${t.branchName}`}function Cs(t){Aa.delete(uf(t))}async function wl(t,e,n,i,r=""){const s=ov(e,n);if(s.length===0)return{remoteFiles:n,syncFileMap:e,unverified:[],approximate:[]};const o=Vv(s,r),a={...o.manifest,sources:o.sources},l=o.skipped.map(h=>h.reason);l.forEach(h=>console.warn(`[custom class deploy] ${h}`));const u=o.approximate;u.forEach(h=>console.warn(`[custom class deploy] ${h}`)),console.log(`Provisioning ${s.length} new FlutterFlow custom code file(s) before sync.`),$e.set("provision");const c=await fetch(h_,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t.apiKey,projectId:t.projectId,baseUrl:t.baseUrl,commitMessage:i,customClasses:s,verification:a,stream:!0})}),d=await Kv(c,{onPhase:h=>$e.setSubstatus(h),onLog:h=>console.log(`[custom class deploy] ${h}`)});if(!d.success){const h=d.details?` ${d.details}`:"";throw new Error(`${d.error||"FlutterFlow custom class provisioning failed."}${h}`)}return Cs(t),d.verificationSkipped&&(console.warn(`[custom class deploy] ${d.verificationSkipped}`),l.push(d.verificationSkipped)),{remoteFiles:n,syncFileMap:av(e,s),unverified:l,approximate:u}}async function bl(t,e={}){const n=uf(t);let i=Aa.get(n);if(i===void 0){try{i=await t.fetchProjectSource()}catch(l){throw new Error(`Could not read your project's pubspec.yaml (${l.message}). Deploy was stopped so your existing package dependencies aren't overwritten. Check your FlutterFlow API key and project, then try again.`)}const a=Wh(i.pubspecYaml);if(!a.valid)throw new Error(`Your project's pubspec.yaml could not be read reliably (${a.errors.join("; ")}). Deploy was stopped so your existing package dependencies aren't overwritten.`);Aa.set(n,i)}const r=await o_(i.pubspecYaml,e),s=Uv(i.pubspecYaml,r.overrides),o=jv(s.yaml,r.additions);return r.warnings.forEach(a=>console.warn(`[pubspec] ${a}`)),o.added.length>0&&console.log("Adding dependencies:",o.added.map(a=>`${a}: ${r.additions[a]||"any"}`).join(", "),r.sdk.dartSdkFloor?`(resolved for Dart ${r.sdk.dartSdkFloor})`:""),r.kept.forEach(({name:a,constraint:l})=>console.log(`Keeping your existing ${a}: ${l||"(non-version source)"}`)),{...o,overridden:s.overridden,warnings:r.warnings,remoteFiles:i.files}}function ey(t){const e=[],n=[];t.content.length>5e4&&n.push("Code file is large (>50KB). This may take longer to commit."),t.content.length>1e5&&e.push("Code file is too large (>100KB). Consider splitting into smaller components.");const i=t.content.split(` -`).length;i>500&&n.push(`Code has ${i} lines. Consider breaking it into smaller widgets.`),t.content.includes("setState")&&t.codeType===z.ACTION&&n.push("Using setState in a Custom Action may not work as expected. Consider using a Custom Widget."),t.content.includes("dynamic")&&!t.content.includes("?")&&n.push('Code uses "dynamic" types. Consider adding explicit types for better null safety.'),t.content.match(/Color\(0xFF[0-9A-Fa-f]{6}\)/)&&n.push("Code contains hardcoded colors. Consider using FlutterFlowTheme.of(context) for theme consistency.");const r=t.content.match(/print\s*\(/g);r&&r.length>3&&n.push(`Code contains ${r.length} print statements. Consider removing debug prints before committing.`);const s=kv(t.content);if(s&&e.push(`FlutterFlow cannot format this code - ${s}. Fix or regenerate before committing.`),t.codeType===z.WIDGET){const o=Lh(t.content),a=Ev(t.fileName);if(o.length===0)e.push("No public widget class found (must extend StatelessWidget or StatefulWidget).");else if(!o.includes(a)){const l=`${Nh(o[0])}`;e.push(`Widget class name "${o[0]}" does not match the file name "${t.fileName}". FlutterFlow derives the widget from the file name, so it will report "No widget ${a} found". Rename the file to "${l}" or the class to match before committing.`)}}return{canProceed:e.length===0,issues:e,warnings:n}}function df(t,e={}){const{artifactType:n="CustomWidget",artifactName:i="GeneratedCode",fileName:r}=e,s=wv(t);let o=r||i;if(n==="CustomFunction")o="custom_functions.dart";else if(n==="CustomWidget"){const u=Lh(s)[0],c=u?Nh(u):null;c&&o!==c?(console.warn(`Commit file name "${o}" does not match declared widget class "${u}"; renaming to "${c}" so FlutterFlow can find the widget.`),o=c):o.endsWith(".dart")||(o+=".dart")}else o.endsWith(".dart")||(o+=".dart");let a=z.CODE_FILE;switch(n){case"CustomAction":a=z.ACTION;break;case"CustomWidget":a=z.WIDGET;break;case"CustomFunction":a=z.FUNCTION;break;case"CustomClass":case"CodeFile":a=z.CODE_FILE;break}let l="";return a===z.WIDGET?l=`// Automatic FlutterFlow imports -import '/flutter_flow/flutter_flow_theme.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'package:flutter/material.dart'; -// Begin custom widget code -// DO NOT REMOVE OR MODIFY THE CODE ABOVE! - -`:a===z.ACTION?l=`// Automatic FlutterFlow imports -import '/flutter_flow/flutter_flow_theme.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'package:flutter/material.dart'; -// Begin custom action code -// DO NOT REMOVE OR MODIFY THE CODE ABOVE! - -`:a===z.FUNCTION&&(l=`// Automatic FlutterFlow imports -import 'dart:convert'; -import 'dart:math' as math; - -import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:intl/intl.dart'; -import 'package:timeago/timeago.dart' as timeago; -import '/flutter_flow/lat_lng.dart'; -import '/flutter_flow/place.dart'; -import '/flutter_flow/uploaded_file.dart'; - -`),{content:Ym(s,l),fileName:o,codeType:a,artifactType:n,artifactName:i}}function ty(t){const e={};for(const n of rl(t))e[n]="";return e}function ny(t,e={}){return{timestamp:new Date().toISOString(),artifactType:t.artifactType,artifactName:t.artifactName,codeType:t.codeType,fileName:t.fileName,generatedFrom:e.step1Result?"pipeline":"direct",model:e.selectedModel||"unknown",codeSize:t.content.length}}function iy(t,e,n,i=new Set,r=""){const s=[],o=af.test(e),a=lf.test(e);return n===z.WIDGET&&!o&&!a&&s.push("No widget class definition found (must extend StatelessWidget or StatefulWidget)"),{valid:s.length===0,errors:s}}function As(t){const e=[],n=[];if(!t||t.size===0)return e.push("No files to commit"),{valid:!1,errors:e,warnings:n};const i=new Set(Array.from(t.values()).flatMap(r=>ps(r.content||"")));for(const[r,s]of t.entries()){if((!s.content||s.content.trim().length===0)&&e.push(`File ${r} is empty`),s.content&&s.content.length>1e5&&n.push(`File ${r} is very large (>100KB)`),r.endsWith(".dart")){const o=iy(r,s.content,s.type,i,s.artifactName);o.valid||e.push(...o.errors.map(a=>`${r}: ${a}`))}if(r==="pubspec.yaml"){const o=Wh(s.content);o.valid||e.push(...o.errors)}}return{valid:e.length===0,errors:e,warnings:n}}const X={IDLE:"IDLE",PREPARING:"PREPARING",VALIDATING:"VALIDATING",PUSHING:"PUSHING",SUCCESS:"SUCCESS",ERROR:"ERROR"},Q={currentState:X.IDLE,startTime:null,endTime:null,error:null,result:null,filesProcessed:0,totalFiles:0,reset(){this.currentState=X.IDLE,this.startTime=null,this.endTime=null,this.error=null,this.result=null,this.filesProcessed=0,this.totalFiles=0},setState(t){if(!Object.values(X).includes(t)){console.error(`Invalid commit state: ${t}`);return}this.currentState=t,t===X.PREPARING&&(this.startTime=Date.now()),(t===X.SUCCESS||t===X.ERROR)&&(this.endTime=Date.now()),typeof window<"u"&&window.dispatchEvent&&window.dispatchEvent(new CustomEvent("commitStateChange",{detail:{state:t,commitState:this}})),console.log(`Commit state changed to: ${t}`)},setError(t){this.error=t,this.setState(X.ERROR)},setSuccess(t){this.result=t,this.setState(X.SUCCESS)},setProgress(t,e){this.filesProcessed=t,this.totalFiles=e},getElapsedTime(){return this.startTime?(this.endTime||Date.now())-this.startTime:null},isInProgress(){return this.currentState===X.PREPARING||this.currentState===X.VALIDATING||this.currentState===X.PUSHING}};async function ry(t,e,n={}){let{codeType:i="W"}=n;const{pubspecDeps:r={},artifactName:s=e}=n;i==="CustomWidget"&&(i=z.WIDGET),i==="CustomAction"&&(i=z.ACTION),i==="CustomFunction"&&(i=z.FUNCTION),i==="CustomClass"&&(i=z.CODE_FILE),i==="CodeFile"&&(i=z.CODE_FILE),Q.reset(),Q.setState(X.PREPARING);try{const o=await Me("flutterflow"),a=await Me("flutterflow_project_id");if(!o||!a)throw new Error("FlutterFlow credentials not configured. Please set your API key and Project ID in the API Keys settings.");if(!xs(a))throw new Error("Invalid FlutterFlow Project ID format.");const l=Hi(),u=new Wi(o,a,"main",l);Q.setState(X.VALIDATING);const c=new Map,d=i||Q_(e,t),h=cf(e,d);c.set(e,{artifactName:s,content:t,type:d,path:h}),Q.setProgress(0,c.size);const f=As(c);if(!f.valid)throw new Error(`Validation failed: -${f.errors.join(` -`)}`);const p=await bl(u,r),g=p.yaml,m=await wl(u,c,p.remoteFiles,`Provision ${s} custom class`,g),v=await yl(m.syncFileMap,m.remoteFiles),w=new Map(m.syncFileMap);w.set("pubspec.yaml",{content:g,type:"D",path:"pubspec.yaml"}),$e.set("package");const b=await El(w),I={project_id:a,zipped_custom_code:b,uid:`web_${Date.now()}`,branch_name:u.branchName,serialized_yaml:g,file_map:v.fileMapContents,functions_map:v.functionsMapContents};Q.setState(X.PUSHING),Q.setProgress(1,c.size),Cs(u),$e.set("push");const A=await u.pushCode(I),P=await vl(A);if(P.success)Q.setSuccess({fileCount:c.size,projectId:a,warnings:P.errorMap&&P.errorMap.size>0?Array.from(P.errorMap.entries()):[]});else{const O=P.errorMessage||_l(P.responseCode);throw new Error(O)}return{success:!0,message:`Successfully committed ${e} to FlutterFlow project ${a}`,addedDependencies:p.added,unverified:m.unverified,approximate:m.approximate,warnings:P.errorMap?Array.from(P.errorMap.entries()):[]}}catch(o){return console.error("Commit failed:",o),Q.setError(o),{success:!1,error:o.message,state:Q.currentState}}}async function El(t){const e=new JSZip;for(const[n,i]of t.entries())e.file(n,i.content);return e.generateAsync({type:"base64",compression:"DEFLATE",compressionOptions:{level:6}})}async function sy(t,e={}){const{artifactType:n,artifactName:i,fileName:r,pipelineResult:s}=e;console.log(`Starting commit for ${i} (${n})`);try{Q.setState(X.PREPARING);const o=df(t,{artifactType:n,artifactName:i,fileName:r}),a=ty(o.content);console.log("Detected dependencies:",a),Q.setState(X.VALIDATING);const l=await Me("flutterflow"),u=ki||await Me("flutterflow_project_id");if(!l)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!u)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!xs(u))throw new Error("Invalid FlutterFlow Project ID format.");const c=new Map;c.set(o.fileName,{artifactName:i,content:o.content,type:o.codeType,path:cf(o.fileName,o.codeType),functionName:o.codeType===z.FUNCTION?i:void 0}),Q.setProgress(0,c.size);const d=As(c);if(!d.valid)throw new Error(`File validation failed: -${d.errors.join(` -`)}`);d.warnings.length>0&&console.warn("Validation warnings:",d.warnings),Q.setState(X.PUSHING);const h=Hi(),f=new Wi(l,u,"main",h),p=await bl(f,a),g=p.yaml,m=await wl(f,c,p.remoteFiles,`Provision ${i} custom class`,g),v=await yl(m.syncFileMap,m.remoteFiles),w=new Map(m.syncFileMap);w.set("pubspec.yaml",{content:g,type:z.DEPENDENCIES,path:"pubspec.yaml"}),$e.set("package");const b=await El(w),I={project_id:u,zipped_custom_code:b,uid:`web_${Date.now()}`,branch_name:f.branchName,serialized_yaml:g,file_map:v.fileMapContents,functions_map:v.functionsMapContents};Q.setProgress(1,c.size),Cs(f),$e.set("push");const A=await f.pushCode(I),P=await vl(A);if(P.success){const O={...ny(o,s),projectId:u};return Q.setSuccess({...O,fileCount:c.size,warnings:P.errorMap?Array.from(P.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${o.fileName} to FlutterFlow`,metadata:O,addedDependencies:p.added,unverified:m.unverified,approximate:m.approximate,warnings:P.errorMap?Array.from(P.errorMap.entries()):[],elapsedTime:Q.getElapsedTime()}}else{const O=P.errorMessage||_l(P.responseCode),S=new Error(O);throw S.errorMap=P.errorMap,S}}catch(o){console.error("Commit execution failed:",o),Q.setError(o);let a=new Map;if(o.errorMap)a=o.errorMap;else if(o.message&&o.message.includes("{"))try{const l=o.message.match(/\{[\s\S]*\}/);if(l){const u=JSON.parse(l[0]);a=new Map(Object.entries(u))}}catch(l){console.warn("Failed to parse error map from commit response:",l)}return{success:!1,error:o.message,errorMap:a,state:Q.currentState,elapsedTime:Q.getElapsedTime()}}}async function oy(t,e={}){const{pipelineResult:n}=e;try{if(Q.setState(X.PREPARING),t.errors?.length>0)throw new Error(`Bundle validation failed: -${t.errors.join(` -`)}`);const i=new Map(t.fileEntries.map(I=>[I.fileName,{artifactId:I.artifactId,artifactName:I.artifactName,content:I.content,type:I.type,path:I.path,functionName:I.type===z.FUNCTION?I.artifactName:void 0}]));Q.setProgress(0,i.size);const r=As(i);if(!r.valid)throw new Error(`File validation failed: -${r.errors.join(` -`)}`);Q.setState(X.VALIDATING);const s=await Me("flutterflow"),o=ki||await Me("flutterflow_project_id");if(!s)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!o)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!xs(o))throw new Error("Invalid FlutterFlow Project ID format.");Q.setState(X.PUSHING);const a=Hi(),l=new Wi(s,o,"main",a),u=await bl(l,t.dependencies),c=u.yaml,d=await wl(l,i,u.remoteFiles,`Provision ${t.title} custom classes`,c),h=await yl(d.syncFileMap,d.remoteFiles),f=new Map(d.syncFileMap);f.set("pubspec.yaml",{content:c,type:z.DEPENDENCIES,path:"pubspec.yaml"}),$e.set("package");const p=await El(f),g={project_id:o,zipped_custom_code:p,uid:`web_${Date.now()}`,branch_name:l.branchName,serialized_yaml:c,file_map:h.fileMapContents,functions_map:h.functionsMapContents};Q.setProgress(1,i.size),Cs(l),$e.set("push");const m=await l.pushCode(g),v=await vl(m);if(v.success){const I={...n,artifactType:"Bundle",artifactName:t.title,fileName:`${t.fileEntries.length} artifacts`,codeSize:t.fileEntries.reduce((A,P)=>A+P.content.length,0),projectId:o};return Q.setSuccess({...I,fileCount:i.size,warnings:v.errorMap?Array.from(v.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${t.fileEntries.length} artifacts to FlutterFlow`,metadata:I,addedDependencies:u.added,unverified:d.unverified,approximate:d.approximate,warnings:v.errorMap?Array.from(v.errorMap.entries()):[],elapsedTime:Q.getElapsedTime()}}const w=v.errorMessage||_l(v.responseCode),b=new Error(w);throw b.errorMap=v.errorMap,b}catch(i){return console.error("Bundle commit execution failed:",i),Q.setError(i),{success:!1,error:i.message,errorMap:i.errorMap||new Map,state:Q.currentState,elapsedTime:Q.getElapsedTime()}}}async function ay(t,e=[]){const n=el("architect");try{return await ls("architect",Yh,mm(t),n,e)}catch(i){throw i.isModelArmor||i.isUsageLimit||i.isPipelineCancel?i:new Error(`Prompt Architect failed: ${i.message}`)}}async function Ps(t,e,n=[],i){const r=vm(t),s=el("generator",y.bundleSpec);try{return await ls("generator",e,r,s,n)}catch(o){if(o.isModelArmor||o.isUsageLimit||o.isPipelineCancel)throw o;if(e!==or){console.warn(`Code Generator failed with ${e}, retrying with fallback model:`,o.message),t0(e,or,i);try{return await ls("generator",or,r,s,n)}catch(a){throw a.isModelArmor||a.isUsageLimit||a.isPipelineCancel?a:new Error(`Code Generator failed: primary (${e}): ${o.message} | fallback (${or}): ${a.message}`)}}throw new Error(`Code Generator failed: ${o.message}`)}}async function Fs(t,e=null){const n={...el("review",y.artifactBundle||y.bundleSpec),architect_output:e};try{return await ls("review",Jh,_m(t),n)}catch(i){throw i.isModelArmor||i.isUsageLimit||i.isPipelineCancel?i:new Error(`Code Review failed: ${i.message}`)}}function Zn(t,e){const n=document.getElementById(`step${t}-item`),i=document.getElementById(`step${t}-status`);!n||!i||(n.classList.remove("active","completed","error"),i.classList.remove("running","completed","error"),e==="active"?(n.classList.add("active"),i.classList.add("running"),i.innerHTML=` - - `):e==="completed"?(n.classList.add("completed"),i.classList.add("completed"),i.innerHTML=` - - `):e==="error"?(n.classList.add("error"),i.classList.add("error"),i.innerHTML=` - - `):i.innerHTML=` - - `)}function Ee(t,e){const n=document.getElementById(`step${t}-loading`),i=document.getElementById(`step${t}-result`);e?(n.classList.remove("hidden"),i.classList.add("hidden"),Zn(t,"active")):(n.classList.add("hidden"),i.classList.remove("hidden"),Zn(t,"completed"))}function ly(t){const e=document.getElementById(`${t}-content`),n=document.getElementById(`${t}-chevron`);e.classList.contains("open")?(e.classList.remove("open"),n&&(n.style.transform="rotate(0deg)")):(e.classList.add("open"),n&&(n.style.transform="rotate(180deg)"))}function cy(t){De(parseInt(t.replace("step","")))}function De(t){for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-item`);a&&a.classList.remove("active")}const e=document.getElementById(`step${t}-item`);e&&e.classList.add("active"),Sn();const n=document.getElementById("ready-state");n&&n.classList.add("hidden");for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-content`);a&&a.classList.add("hidden")}const i=document.getElementById(`step${t}-content`);i&&i.classList.remove("hidden");const r=document.getElementById("stage-title"),s={1:"Prompt Architect",2:"Code Generator",3:"Code Review"};r&&(r.textContent=s[t]||"Active Workflow Stage")}function uy(t){const e=document.getElementById(t);if(!e)return;const n=e.dataset.raw||e.textContent;navigator.clipboard.writeText(n).then(()=>{const r=e.closest(".code-container")?.querySelector(".copy-btn");r&&(r.classList.add("copied"),r.innerHTML=' Copied!',setTimeout(()=>{r.classList.remove("copied"),r.innerHTML=' Copy'},2e3))}).catch(i=>{console.warn("Failed to copy to clipboard:",i)})}function Pa(t){const e=Fa(t);console.log(`Step 1 (Prompt Architect): ${Jt(Yh)}`),console.log(e!==t?`Step 2 (Code Generator): ${Jt(t)} → ${Jt(e)} (Free Tier fallback)`:`Step 2 (Code Generator): ${Jt(t)}`),console.log(`Step 3 (Code Review): ${Jt(Jh)}`)}async function hf(){if(console.log("runRefinement called"),y.isRunning)return;const t=document.getElementById("code-generator-model").value;y.isRunning=!0;const e=$s();Sl("standardRegenerate",y.step2Result,y.step1Result);const n=document.querySelectorAll(".btn-refine-action");n.forEach(i=>{i.disabled=!0,i.innerHTML=` - - - Refining...`});try{const i=gl(),r=ym({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,artifactId:i.id,userFeedback:"Fix the issues listed in the audit report."});Os({runId:e}),yt(2,e),De(2),Ee(2,!0);const s=await Ps(r,t,[],e);if(!me(e))return;y.step2Result=s,ks(),zt(2,e);const o=document.getElementById("step2-output"),a=Kn(y.step2Result);o.textContent=a,o.dataset.raw=a,Ee(2,!1),De(3),yt(3,e),Ee(3,!0);const l=await Fs(y.step2Result,y.step1Result);if(!me(e))return;y.step3Result=l,Is(),zt(3,e);const u=document.getElementById("step3-output");u.textContent=y.step3Result,Ee(3,!1),Us();const c=bs(y.step3Result);Hs(a,c)}catch(i){if(console.error("Refinement failed:",i),!me(e))return;const r=ws(i,{architect:2,generator:2,review:3});i.isUsageLimit&&qt(),De(r),Ee(r,!1),Bs(i,{stage:r,runId:e,retry:hf}),Zn(r,"error")}finally{n.forEach(i=>{i.disabled=!1,i.textContent="Refine & Regenerate"}),me(e)&&(y.isRunning=!1,rn())}}async function Sl(t,e,n){const i=`${lt}/connectFeedback`,r={type:t,code:e,input:n};try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!s.ok){const a=await s.text();return console.error(`callEndpoint failed: ${s.status} ${s.statusText}`,a),{success:!1,status:s.status,error:a}}const o=await s.json();return console.log("Telemetry success:",o),o}catch(s){return console.error("callEndpoint failed:",s),{success:!1,error:s.message}}}function dy(){const t=document.getElementById("ff-error-paste-input");t&&(t.value="")}async function ff(){const t=document.getElementById("ff-error-paste-input"),e=t?.value?.trim();if(!e){t?.focus(),t?.classList.add("ring-2","ring-red-400","border-red-300"),setTimeout(()=>t?.classList.remove("ring-2","ring-red-400","border-red-300"),2e3);return}if(!y.step2Result){ke("No generated code found. Please run the full pipeline first.","warning");return}if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const i=$s();Sl("flutterflowError",y.step2Result,e);const r=document.getElementById("btn-fix-from-errors");r&&(r.disabled=!0,r.innerHTML=` - - Fixing…`);try{const s=Fh({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:e});Ff(),Os({runId:i}),yt(2,i),De(2),Ee(2,!0);const o=await Ps(s,n,[],i);if(!me(i))return;y.step2Result=o,ks(),zt(2,i);const a=document.getElementById("step2-output"),l=Kn(y.step2Result);a.textContent=l,a.dataset.raw=l,Ee(2,!1),De(3),yt(3,i),Ee(3,!0);const u=await Fs(y.step2Result,y.step1Result);if(!me(i))return;y.step3Result=u,Is(),zt(3,i);const c=document.getElementById("step3-output");c.textContent=y.step3Result,Ee(3,!1),Us();const d=bs(y.step3Result);Hs(l,d),t&&(t.value="")}catch(s){if(console.error("Fix from errors failed:",s),!me(i))return;const o=ws(s,{architect:2,generator:2,review:3});s.isUsageLimit&&qt(),De(o),Ee(o,!1),Bs(s,{stage:o,runId:i,retry:ff}),Zn(o,"error")}finally{r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),me(i)&&(y.isRunning=!1,rn())}}async function os(){if(console.log("runThinkingPipeline called"),y.isRunning)return;localStorage.setItem("hasSeenWalkthrough","true");const t=document.getElementById("pipeline-input").value,e=document.getElementById("code-generator-model").value;if(!t.trim()){ke("Please describe your FlutterFlow widget first.","warning");return}y.isRunning=!0;const n=$s();try{if(!await Fy()||!me(n)||(await xy(),!me(n)))return;const i=Fa(e);t.length,Y_(),y.submittedPrompt=t,y.submittedImages=wt.slice(),Ma(!0),Pa(i),Sn();const r=document.getElementById("ready-state");r&&r.classList.add("hidden");const s=document.getElementById("paywall-exhausted");s&&s.classList.add("hidden"),Os({prompt:t,runId:n}),s0(),De(1),yt(1,n),Ee(1,!0);const o=wt.filter(m=>m.url).map(m=>({url:m.url})),a=await ay(t,o);if(!me(n))return;y.step1Result=a,J_(),zt(1,n);const l=document.getElementById("step1-output"),u=Kn(y.step1Result);l.textContent=u,l.dataset.raw=u,Ee(1,!1),De(2),yt(2,n),Ee(2,!0);const c=await Ps(y.step1Result,i,o,n);if(!me(n))return;y.step2Result=c,ks(),zt(2,n);const d=document.getElementById("step2-output"),h=Kn(y.step2Result);d.textContent=h,d.dataset.raw=h,Ee(2,!1),De(3),yt(3,n),Ee(3,!0);const f=await Fs(y.step2Result,y.step1Result);if(!me(n))return;y.step3Result=f,Is(),zt(3,n);const p=document.getElementById("step3-output");p.textContent=y.step3Result,Ee(3,!1),Us();const g=bs(y.step3Result);o0(),Hs(h,g)}catch(i){if(i.isPipelineCancel||console.error("Pipeline failed:",i),!me(n))return;const r=ws(i,{architect:1,generator:2,review:3});i.isUsageLimit?qt():(i.message,Fa(document.getElementById("code-generator-model").value),void 0),De(r),Ee(r,!1),Bs(i,{stage:r,runId:n}),Zn(r,"error")}finally{me(n)&&(y.isRunning=!1,Ma(!1),rn())}}function hy(){const t=document.getElementById("code-generator-model").value,e=[es,"anthropic/claude-opus-5","openai/gpt-5.6-sol"].filter(i=>i!==t),n=prompt(`Retry with different model? - -Current: ${t} - -Options: -1. ${e[0]} -2. ${e[1]} - -Enter 1 or 2:`);n==="1"?(document.getElementById("code-generator-model").value=e[0],os()):n==="2"&&(document.getElementById("code-generator-model").value=e[1],os())}async function fy(){const t=ml();if(!t){ke("No code to commit. Please run the pipeline first.","warning");return}const e=await Me("flutterflow"),n=await Me("flutterflow_project_id");if(!e||!n){ke("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),hl();return}if(y.artifactBundle?.artifacts?.length>1){await py();return}const{artifactType:i,artifactName:r,fileName:s}=of(),o=df(t,{artifactType:i,artifactName:r,fileName:s}),a=ey(o);if(!a.canProceed){ke(`Pre-commit checks failed: ${a.issues.join("; ")}`,"error");return}Fl(o,a,null,null)}async function py(){const t=await Me("flutterflow"),e=await Me("flutterflow_project_id");if(!t||!e){ke("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),hl();return}const n=nv(y.artifactBundle);if(n.errors.length>0){ke(`Bundle validation failed: ${n.errors.join("; ")}`,"error");return}const i=new Map(n.fileEntries.map(a=>[a.fileName,{content:a.content,type:a.type,path:a.path}])),r=As(i),s={canProceed:r.valid&&n.errors.length===0,issues:[...n.errors,...r.errors],warnings:[...n.warnings,...r.warnings]};if(!s.canProceed){ke(`Bundle validation failed: ${s.issues.join("; ")}`,"error");return}const o={content:n.fileEntries.map(a=>`// ${a.fileName} -${a.content}`).join(` - -`),fileName:`${n.fileEntries.length} files`,codeType:"bundle",artifactType:"Bundle",artifactName:n.title};Fl(o,s,n.dependencies,n)}function gy(t){let e=t.errorMap||new Map;!(e instanceof Map)&&typeof e=="object"&&(e=new Map(Object.entries(e)));let n=`
-

FlutterFlow Commit Failed

-

${W(t.error)}

`;if(e&&e.size>0){n+=`
-

Errors:

-
    `;for(const[r,s]of e.entries()){const o=Oh(s);n+=`
  • - ${W(r)}: ${W(o)} -
  • `}n+="
"}n+="
",n+=`
- -
`;const i=document.getElementById("step3-output");i&&(i.innerHTML=n,document.getElementById("btn-regenerate-from-error")?.addEventListener("click",()=>{pf(t.error,e)}))}async function pf(t,e){if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const i=$s(),r=document.getElementById("btn-regenerate-from-error");r&&(r.disabled=!0,r.innerHTML=` - - Fixing...`);try{let s=`The previous code had the following errors when committing to FlutterFlow: - -`;if(e&&e.size>0)for(const[f,p]of e.entries()){const g=Oh(p);s+=`File: ${f} -Error: ${g} - -`}else s+=`${t} -`;const o=Fh({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:s});Os({runId:i}),yt(2,i),De(2),Ee(2,!0);const a=await Ps(o,n,[],i);if(!me(i))return;y.step2Result=a,ks(),zt(2,i);const l=document.getElementById("step2-output"),u=Kn(y.step2Result);l.textContent=u,l.dataset.raw=u,Ee(2,!1),De(3),yt(3,i),Ee(3,!0);const c=await Fs(y.step2Result,y.step1Result);if(!me(i))return;y.step3Result=c,Is(),zt(3,i);const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ee(3,!1),Us();const h=bs(y.step3Result);Hs(u,h)}catch(s){if(console.error("Regeneration failed:",s),!me(i))return;const o=ws(s,{architect:2,generator:2,review:3});s.isUsageLimit&&qt(),De(o),Ee(o,!1),Bs(s,{stage:o,runId:i,retry:()=>pf(t,e)}),Zn(o,"error")}finally{r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),me(i)&&(y.isRunning=!1,rn())}}async function my(){const t=document.getElementById("ff-status-dot"),e=document.getElementById("ff-status-text");if(!t||!e)return;const n=await Me("flutterflow"),i=await Me("flutterflow_project_id");n&&i?(t.className="w-2 h-2 rounded-full bg-green-500",e.textContent="FlutterFlow credentials configured",e.className="text-green-600"):n||i?(t.className="w-2 h-2 rounded-full bg-yellow-500",e.textContent="FlutterFlow credentials incomplete",e.className="text-yellow-600"):(t.className="w-2 h-2 rounded-full bg-red-500",e.textContent="FlutterFlow credentials not configured",e.className="text-red-600")}async function vy(t){try{const e=await fetch(`${lt}/auth/send-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t})});if(!e.ok)throw new Error(`Failed to send magic link: HTTP ${e.status}`);return e.json()}catch(e){throw console.error("sendMagicLink failed:",{email:t,message:e.message,stack:e.stack}),e}}async function _y(t){try{const n=await(await fetch(`${lt}/auth/verify-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t})})).json();if(n.error||!n.email||!n.sessionToken)throw new Error(n.error||"Invalid or expired link");return n}catch(e){throw console.error("verifyMagicLink failed:",{message:e.message,stack:e.stack}),e}}async function yy(t){try{const e=await fetch(`${lt}/auth/refresh-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:t})});if(!e.ok)return console.error("refreshSession: non-OK response",{url:`${lt}/auth/refresh-session`,status:e.status}),null;const n=await e.json();return n.error||!n.email||!n.sessionToken?(console.warn("refreshSession: validation failed",{error:n.error,hasEmail:!!n.email,hasToken:!!n.sessionToken}),null):n}catch(e){return console.error("refreshSession: fetch failed",{url:`${lt}/auth/refresh-session`,message:e.message,stack:e.stack}),null}}function Tu(t,e){const n=gf(),i=(G.email||n.email)!==t;G.email=t,G.sessionToken=e,G.isVerified=!0,be=Yn({isLoading:!0}),localStorage.setItem(Zr,JSON.stringify({email:t,sessionToken:e})),i&&Pl()}function xl(){G.email=null,G.sessionToken=null,G.isVerified=!1,be=Yn({isResolved:!0}),localStorage.removeItem(Zr),localStorage.removeItem(Qr)}function gf(){try{const t=localStorage.getItem(Zr);if(!t)return{email:null,sessionToken:null};const e=JSON.parse(t);return!e.email||!e.sessionToken?{email:null,sessionToken:null}:e}catch(t){return console.warn("getStoredSession: failed to parse auth session:",t),localStorage.removeItem(Zr),{email:null,sessionToken:null}}}async function wy(){const e=new URLSearchParams(window.location.search).get("token");if(e){window.history.replaceState({},"",window.location.pathname+window.location.hash);try{const{email:n,sessionToken:i}=await _y(e);Tu(n,i)}catch(n){ke(n.message||"Sign-in link invalid or expired.","error")}}else{const{email:n,sessionToken:i}=gf();if(n&&i){const r=await yy(i);r?Tu(r.email,r.sessionToken):xl()}}Il()}function kl(){const t=document.getElementById("signin-modal");t&&tt(t)}function by(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("signin-modal");e&&ct(e)}async function Ey(){const t=document.getElementById("signin-email-input"),e=document.getElementById("signin-submit-btn"),n=document.getElementById("signin-message"),i=ms(t?.value);if(!i||!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(i)||i.length>254){n&&(n.textContent="Please enter a valid email address.");return}e&&(e.disabled=!0,e.textContent="Sending…");const s=Bh(i);n&&s&&(n.textContent=s);try{const o=await vy(i);t&&o?.code!==_r&&(t.value=""),n&&(n.textContent=Mv(o,i)),e&&(e.textContent=o?.code===_r?"Send Link":"Sent!"),e&&o?.code===_r&&(e.disabled=!1)}catch(o){console.error("handleMagicLinkRequest: sendMagicLink failed",{email:i,err:o}),n&&(n.textContent="Something went wrong. Please try again."),e&&(e.disabled=!1,e.textContent="Send Link")}}function Sy(){xl(),Pl(),Il(),Ts()}function Il(){const t=G.isVerified&&!!G.email,e=document.getElementById("auth-signedout"),n=document.getElementById("auth-signedin"),i=document.getElementById("auth-guest-usage");e&&e.classList.toggle("hidden",t),n&&n.classList.toggle("hidden",!t),i&&i.classList.toggle("hidden",t);const r=document.getElementById("auth-user-email");r&&(r.textContent=G.email||""),Ty(),Ts()}async function mf(){try{if(typeof FingerprintJS>"u"){console.warn("resolveIdentity: FingerprintJS not loaded, skipping");return}const e=await(await FingerprintJS.load()).get(),n=e.visitorId,i=await fetch(m_,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fingerprint:e.visitorId,cookie_id:n})});if(!i.ok)throw new Error(`Identity check HTTP ${i.status}`);const r=await i.json();if(st.userId=r.user_id,st.token=r.identity_token||null,st.status=r.status,st.resolved=!0,sessionStorage.setItem(p_,r.user_id),st.token&&sessionStorage.setItem(g_,st.token),r.usage_count!==void 0){const s=tn(),a=(r.usage_month||s)===s?r.usage_count:0;localStorage.setItem(yn,JSON.stringify({count:a,month:s})),qt()}console.log(`Identity resolved: ${r.status} (${r.user_id.slice(0,8)}...) usage: ${r.usage_count??"n/a"}`)}catch(t){console.error("resolveIdentity failed:",t)}}let Fo=null;function xy(t=5e3){return st.resolved?Promise.resolve():(Fo||(Fo=mf().catch(e=>{console.warn("ensureIdentityReady: identity resolution failed",e)})),Promise.race([Fo,new Promise(e=>setTimeout(e,t))]))}function vf(){const t=tn();try{const e=localStorage.getItem(yn);return e?JSON.parse(e):{count:0,month:t}}catch(e){return console.warn("getUsageData: failed to parse usage storage",{key:yn,month:t,err:e}),localStorage.removeItem(yn),{count:0,month:t}}}function tn(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function Rs(){const t=vf();return t.month!==tn()?{count:0,month:tn()}:t}function ky(){const e={count:Rs().count+1,month:tn()};return localStorage.setItem(yn,JSON.stringify(e)),e}function qi(){return!!be.isLoading}function Vt(){return!!be.isResolved}function Iy(t){if(!t)return null;const e=String(t).toLowerCase().replace(/[^a-z0-9]+/g,"_");return e==="pro"||e==="professional_plan"?"professional":e==="power_developer"||e==="power_plan"?"power":Object.prototype.hasOwnProperty.call(Xr,e)?e:null}function Cy(t){return t&&Object.entries(Vh).find(([,e])=>e===t)?.[0]||null}function cr(...t){return t.find(e=>e!=null&&e!=="")}function Ay(...t){return t.find(e=>e&&typeof e=="object")||{}}function Py(t){const e=t.data&&typeof t.data=="object"?t.data:t,n=Ay(e.subscription,e.stripeSubscription,e.currentSubscription,e.customer?.subscriptions?.data?.[0],e.subscriptions?.data?.[0],e.subscriptions?.[0]),i=e.metadata||n.metadata||e.customer?.metadata||{},r=cr(e.priceId,e.price_id,e.stripePriceId,e.stripe_price_id,n.priceId,n.price_id,n.plan?.id,n.price?.id,n.items?.data?.[0]?.price?.id,n.items?.[0]?.price?.id,n.lines?.data?.[0]?.price?.id),s=cr(e.status,e.subscriptionStatus,e.subscription_status,n.status,"none"),o=Iy(cr(e.tier,e.plan,e.planId,e.plan_id,e.subscriptionTier,e.subscription_tier,e.product,e.productName,n.tier,n.plan,i.tier,i.plan)),a=v_.has(String(s).toLowerCase()),l=e.active===!0||e.isSubscribed===!0||e.subscribed===!0||e.hasSubscription===!0,u=o||Cy(r)||(a||l?"professional":"free");return Yn({tier:u,status:s,periodEnd:cr(e.periodEnd,e.currentPeriodEnd,e.current_period_end,n.current_period_end,n.periodEnd,null),isResolved:!0})}function Cl(){return Xr[be.tier]??Xr.free}async function Fy(){if(G.isVerified&&(!Vt()||qi())&&(await yf({force:!0}),Ts()),G.isVerified&&!Vt())return ke("Could not verify your subscription. Please refresh or try Manage billing.","error"),!1;const{count:t}=Rs(),e=Cl();if(t>=e)return _f(t,e,{openModal:!0}),!1;const n=Math.floor(e*.8);if(t>=n){const i=e-t;ke(`${i} run${i===1?"":"s"} remaining this month.`,"warning")}return!0}function $u(){const t=document.getElementById("paywall-exhausted");t&&t.classList.add("hidden")}function _f(t,e,n={}){nn(!0);const i=document.getElementById("walkthrough-modal");i&&ct(i,{restoreFocus:!1});const r=document.getElementById("ready-state");r&&r.classList.add("hidden");const s=document.getElementById("preview-frame-container");s&&(s.style.display="none");const o=document.getElementById("main-stage-container");o&&o.classList.add("visible");const a=document.getElementById("results-view");a&&a.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar");const l=document.getElementById("pipeline-progress");l&&l.classList.remove("visible");const u=document.getElementById("paywall-exhausted");if(!u){ke(`You've used all ${e} runs for this month. Upgrade to continue.`,"error"),ji();return}const c=document.getElementById("paywall-exhausted-text");if(c){const h=be.tier;h==="free"?c.textContent=`You've used all ${e} free generations this month. Upgrade to Pro for 50 generations/month and access to all AI models.`:c.textContent=`You've used all ${e} generations this month on your ${h} plan. Your limit resets next month.`}const d=document.getElementById("paywall-signin-btn");d&&d.classList.toggle("hidden",G.isVerified),u.classList.remove("hidden"),n.openModal&&ji()}function Fa(t){return be.tier==="free"&&yr.includes(t)?es:t}function Ry(){const t=document.getElementById("code-options-content"),e=document.getElementById("code-generator-model");if(!t||!e)return;const n=be.tier,r=!(G.isVerified&&!Vt())&&n==="free";Array.from(e.options).forEach(o=>{const a=Jt(o.value),l=yr.includes(o.value);o.textContent=l&&r?`${a} (PRO)`:a,o.disabled=!1}),r&&yr.includes(e.value)&&(e.value=es),e.disabled=!1,xu.has(e)||(e.addEventListener("change",()=>{Vt()&&be.tier==="free"&&yr.includes(e.value)&&(e.value=es,ji()),Pa(e.value),Kh()}),xu.add(e));let s=document.getElementById("model-selector-free-notice");r?(s||(s=document.createElement("p"),s.id="model-selector-free-notice",s.className="text-xs text-gray-400 mt-1",t.appendChild(s)),s.innerHTML='Free plan — Gemini only. '):s&&s.remove(),Pa(e.value)}function Al(){const t=G.isVerified&&!!G.email,e=t&&qi(),n=!t||Vt(),i=Rs(),r=n?i.count:0,s=n?Cl():0,o=Math.max(0,s-r),a=`${r} / ${s} runs this month`,l={free:"Free",professional:"Pro",power:"Power"},u=n?be.tier||"free":null,c=document.getElementById("topbar-credits-count");c&&(e?c.textContent="…":n?c.textContent=String(o):c.textContent="—");const d=document.getElementById("credits-balance");d&&(e?d.textContent="Checking plan…":n?d.textContent=a:d.textContent="Plan check failed");const h=document.getElementById("usage-dialog-tier");h&&(e?h.textContent="Checking…":n?h.textContent=l[u]||"Free":h.textContent="Unavailable");const f=document.getElementById("usage-dialog-status");f&&(e?f.textContent="Verifying your subscription…":n?f.textContent="Runs reset at the start of each month.":f.textContent="Could not verify your subscription. Try again or sign out.");const p=document.getElementById("usage-counter");if(p)if(e&&t)p.textContent="Checking plan…",p.className="text-xs text-gray-500";else if(!n&&t)p.textContent="Plan check failed",p.className="text-xs text-red-600 font-medium";else{p.textContent=a;const g=s>0?r/s:0;p.className=g>=1?"text-xs text-red-600 font-medium":g>=.8?"text-xs text-yellow-600 font-medium":"text-xs text-gray-500"}if(!t){const g=document.getElementById("guest-usage-text");if(g){const m=vf(),v=m.month===tn()?m.count??0:0;g.textContent=`${v} / ${Xr.free} generations used`}}}function qt(){if(Al(),G.isVerified&&(qi()||!Vt())){$u();return}const{count:t}=Rs(),e=Cl();t>=e&&!y.isRunning?_f(t,e):$u()}function Ty(){Al()}async function yf(t={}){const e=t.force===!0;if(!G.isVerified||!G.sessionToken){be=Yn({isResolved:!0});return}be={...be,isLoading:!0,error:null};const n=localStorage.getItem(Qr);if(!e&&n)try{const{data:i,email:r,ts:s,version:o}=JSON.parse(n);if(o===ku&&r===G.email&&Date.now()-s<300*1e3){be={...i,isLoading:!1,isResolved:i.isResolved!==!1};return}}catch(i){console.warn("Failed to parse subscription cache:",i,"| raw value:",n)}try{const r=await(await fetch(`${lt}/stripe/get-subscription`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:G.sessionToken,user_id:st.userId})})).json();if(r.error){if(["unauthorized","invalid session","expired session"].some(o=>String(r.error).toLowerCase().includes(o))){xl(),Il();return}be=Yn({isResolved:!1,error:r.error});return}be=Py(r),localStorage.setItem(Qr,JSON.stringify({version:ku,data:be,email:G.email,ts:Date.now()}))}catch(i){console.error("fetchSubscription failed:",i),be={...be,isLoading:!1,isResolved:!1,error:i.message}}}function Pl(){localStorage.removeItem(Qr)}async function $y(t){if(!G.isVerified||!G.sessionToken){wf(),kl();return}if(!Vh[t]){ke("Invalid plan selected.","error");return}const e=document.getElementById(`checkout-btn-${t}`);e&&(e.disabled=!0,e.textContent="Redirecting…");try{const i=await(await fetch(`${lt}/stripe/create-checkout-session-intl`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tierId:t,sessionToken:G.sessionToken,currency:Zh()})})).json();if(i.error||!i.url)throw new Error(i.error||"Failed to create checkout session");const{url:r}=i;window.location.href=r}catch(n){console.error("startCheckout failed:",n),e&&(e.disabled=!1,e.textContent="Subscribe"),ke("Could not start checkout. Please try again.","error")}}async function My(t){if(!G.isVerified||!G.sessionToken){kl();return}const e=t||document.getElementById("manage-billing-btn"),n=e?e.textContent:"";e&&(e.disabled=!0,e.textContent="Loading…");try{const r=await(await fetch(`${lt}/stripe/create-portal-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:G.sessionToken})})).json();if(r.error||!r.url)throw new Error(r.error||"Failed to open billing portal");const{url:s}=r;window.location.href=s}catch(i){console.error("openCustomerPortal failed:",i),e&&(e.disabled=!1,e.textContent=n),ke("Could not open billing portal. Please try again.","error")}}const as=new Set;function Ly(){as.forEach(t=>t.abort()),as.clear()}async function ls(t,e,n,i={},r=[]){const o=new AbortController;as.add(o);let a=!1;const l=setTimeout(()=>{a=!0,o.abort()},12e4);try{const u=await fetch(f_,{method:"POST",headers:{"Content-Type":"application/json",...st.token?{Authorization:`Bearer ${st.token}`}:{}},signal:o.signal,body:JSON.stringify({user_id:st.userId,step:t,model:e,prompt:n,images:r,context:i})}),c=await u.text();let d={};try{d=c?JSON.parse(c):{}}catch{d={}}if(u.status===429){d.serverCount!==void 0&&(localStorage.setItem(yn,JSON.stringify({count:d.serverCount,month:tn()})),qt());const p=new Error(d.message||"Monthly usage limit reached. Upgrade to continue.");throw p.isUsageLimit=!0,p.pipelineStep=t,p}const h=Im(d,t);if(h)throw h;if(console.log(`[BuildShip] ${t} response keys:`,Object.keys(d),"content type:",typeof d.content),!u.ok)throw new Error(`${d.message||d.error||"BuildShip pipeline error"} (HTTP ${u.status})`);if(t==="generator")if(d.usage_status==="success"&&Number.isFinite(d.usage_count)){const p=tn();(d.usage_month||p)===p&&(localStorage.setItem(yn,JSON.stringify({count:d.usage_count,month:p})),qt())}else ky(),qt();let f=d.output||d.content;if(!f){const p=c?` (body: ${c.slice(0,120)})`:"";throw new Error(`BuildShip returned no output for step "${t}"${p}`)}return Array.isArray(f)&&(f=f.map(p=>typeof p=="string"?p:p.text||"").join("")),typeof f!="string"&&(f=JSON.stringify(f)),f}catch(u){if(u.name==="AbortError"){if(a)throw new Error(`BuildShip ${t} timed out after ${12e4/1e3}s`);const c=new Error(`BuildShip ${t} request cancelled`);throw c.isPipelineCancel=!0,c}throw u instanceof TypeError?new Error(`BuildShip unreachable: ${u.message}`):u}finally{clearTimeout(l),as.delete(o)}}function Ny(){const e=new URLSearchParams(window.location.search).get("checkout");e==="success"?(window.history.replaceState({},"",window.location.pathname+window.location.hash),Pl(),ke("Subscription active! Welcome aboard.","success")):e==="cancel"&&(window.history.replaceState({},"",window.location.pathname+window.location.hash),ke("Checkout cancelled.","info"))}function Ts(){const t=G.isVerified&&!!G.email,e=be.tier,n=t&&qi(),i=!t||Vt(),r=document.getElementById("subscription-tier-badge");if(r){const a={free:"Free",professional:"Professional",power:"Power Developer"},l={free:"bg-gray-100 text-gray-600",professional:"bg-indigo-100 text-indigo-700",power:"bg-purple-100 text-purple-700",unresolved:"bg-red-50 text-red-600"};r.textContent=n?"Checking…":i?a[e]||"Free":"Plan unavailable",r.className=`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${i?l[e]||l.free:l.unresolved}`}const s=document.getElementById("upgrade-prompt");s&&s.classList.toggle("hidden",!t||n||!i||e!=="free");const o=document.getElementById("manage-billing-btn");o&&o.classList.toggle("hidden",!t||n||i&&e==="free"),Oy(i?e:null),Ry(),Kh(),qt(),Rf()}function Oy(t){const e=["bg-gray-100","text-gray-500","cursor-default"];Object.entries({professional:{btnId:"checkout-btn-professional",defaultText:"Subscribe"},power:{btnId:"checkout-btn-power",defaultText:"Subscribe"}}).forEach(([r,{btnId:s,defaultText:o}])=>{const a=document.getElementById(s);a&&(r===t?(a.disabled=!0,a.textContent="Current plan",a.classList.add(...e)):(a.disabled=!1,a.textContent=o,a.classList.remove(...e)))});const i=document.getElementById("free-tier-current");i&&i.classList.toggle("hidden",t!=="free")}function Ra(){const t=Zh(),e=document.getElementById("pro-price"),n=document.getElementById("power-price"),i=document.getElementById("plans-pro-price"),r=document.getElementById("plans-power-price"),s=document.getElementById("pro-price-note"),o=document.getElementById("power-price-note"),a=document.getElementById("plans-pro-price-note"),l=document.getElementById("plans-power-price-note");e&&(e.textContent=lr(ar.professional,t)),n&&(n.textContent=lr(ar.power,t)),i&&(i.textContent=lr(ar.professional,t)),r&&(r.textContent=lr(ar.power,t));const u="billed monthly";s&&(s.textContent=u),o&&(o.textContent=u),a&&(a.textContent=u),l&&(l.textContent=u)}function ji(){Ra();const t=document.getElementById("pricing-modal");t&&tt(t),I_().then(()=>Ra())}function wf(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("pricing-modal");e&&ct(e)}function ke(t,e="info"){const n={success:"bg-green-600 text-white",error:"bg-red-600 text-white",warning:"bg-amber-500 text-white",info:"bg-gray-800 text-white"},i=document.createElement("div");i.className=`fixed bottom-6 left-1/2 -translate-x-1/2 px-5 py-3 rounded-lg text-sm font-medium shadow-lg z-50 transition-opacity duration-300 ${n[e]||n.info}`,i.textContent=t,document.body.appendChild(i),setTimeout(()=>{i.style.opacity="0",setTimeout(()=>i.remove(),300)},3500)}document.addEventListener("DOMContentLoaded",async()=>{fm(),hljs.configure({tabReplace:" ",classPrefix:"hljs-"}),By(),window.__heroField=Yv(),await wy(),Ny(),await yf(),Ts(),Ra(),await Z_(),V_();const t=document.getElementById("flutterflow-endpoint-select");if(t){const n=Hi();t.value=n}rf(),mf();const e=document.getElementById("pipeline-input");e&&(e.addEventListener("input",()=>{Wt===2&&e.value.trim().length>0&&(fl(),Ss())}),e.addEventListener("blur",()=>{const n=document.getElementById("walkthrough-modal");Wt===2&&n&&tt(n)}),e.addEventListener("keydown",n=>{if(n.key==="Tab"){const i=document.getElementById("walkthrough-modal");Wt===2&&i&&setTimeout(()=>{tt(i)},100)}})),window.addEventListener("commitStateChange",n=>{const{state:i}=n.detail;i===X.PREPARING||i===X.VALIDATING||i===X.PUSHING?($e.phaseId||Ef(),Lu(i)):(i===X.SUCCESS||i===X.ERROR)&&(Lu(i),setTimeout(cs,1e3))}),y0(),Dl()});function By(){const t=document.getElementById("preview-frame-container");t&&(t.style.display="")}function Dy(){const t=document.getElementById("welcome-video-player");t&&(t.addEventListener("click",Sn),document.addEventListener("keydown",Sn))}function Sn(){const t=document.getElementById("preview-frame-container"),e=document.getElementById("main-stage-container"),n=document.getElementById("ready-state");t&&(t.style.display="none"),e&&e.classList.add("visible"),n&&n.classList.remove("hidden");const i=document.getElementById("welcome-video-player");i&&i.removeEventListener("click",Sn),document.removeEventListener("keydown",Sn),rf()}let Ii=null;async function jy(){const t=document.getElementById("confirm-project-select");if(!t)return;const e=++Fu,n=()=>e===Fu,i=await Me("flutterflow"),r=await Me("flutterflow_project_id");if(n()){if(!i){t.innerHTML='',t.disabled=!0;return}t.disabled=!1,t.innerHTML='';try{const o=await new Wi(i,"").listProjects();if(!n())return;if(!o||o.length===0){t.innerHTML='';return}t.innerHTML='',o.forEach(a=>{const l=document.createElement("option");l.value=a.id||a.projectId||"",l.textContent=a.name||a.projectName||`Project ${a.id}`,t.appendChild(l)}),r&&(t.value=r)}catch(s){if(!n())return;console.error("Failed to load projects for deploy:",s),t.innerHTML=''}}}function Uy(){return document.getElementById("confirm-project-select")?.value?.trim()||null}function Fl(t,e,n,i=null){Ii={codeInfo:t,checks:e,deps:n,bundlePlan:i},document.getElementById("confirm-file-name").textContent=t.fileName,document.getElementById("confirm-artifact-type").textContent=t.artifactType,document.getElementById("confirm-file-size").textContent=`${(t.content.length/1024).toFixed(1)} KB`,document.getElementById("confirm-line-count").textContent=i?`${i.fileEntries.length} files`:t.content.split(` -`).length,jy();const r=document.getElementById("confirm-deps-list"),s=document.getElementById("confirm-deps-section");n&&Object.keys(n).length>0?(r.innerHTML=Object.entries(n).map(([u,c])=>{const d=c?`at least ${Ht(c)}`:"version resolved from your project";return`
  • • ${Ht(u)}: ${d}
  • `}).join(""),s.classList.remove("hidden")):s.classList.add("hidden");const o=document.getElementById("confirm-warnings-list"),a=document.getElementById("confirm-warnings-section");e.warnings&&e.warnings.length>0?(o.innerHTML=e.warnings.map(u=>`
  • • ${Ht(u)}
  • `).join(""),a.classList.remove("hidden")):a.classList.add("hidden"),document.getElementById("confirm-code-preview").textContent=t.content,document.getElementById("code-preview-content").classList.add("hidden"),document.getElementById("code-preview-chevron").style.transform="rotate(0deg)";const l=document.getElementById("commit-confirm-modal");l&&tt(l)}function bf(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-confirm-modal");e&&ct(e),Ii=null}function Hy(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-success-modal");e&&ct(e);const n=["success-message","success-project-id","success-file-name","success-artifact-type","success-time","success-size"];for(const s of n){const o=document.getElementById(s);o&&(o.textContent="")}const i=document.getElementById("success-warnings-section");i&&i.classList.add("hidden");const r=document.getElementById("success-warnings-list");r&&(r.innerHTML="")}function Ta(t){const e=(m,v)=>{const w=document.getElementById(m);w&&(w.textContent=v||"")},n=t.metadata?.fileName||"",i=t.metadata?.projectId||"",r=t.metadata?.artifactType||"",s=t.elapsedTime?`${(t.elapsedTime/1e3).toFixed(1)}s`:"",o=t.metadata?.codeSize?`${(t.metadata.codeSize/1024).toFixed(1)} KB`:"";e("success-message",t.message||"Code committed successfully!"),e("success-project-id",i),e("success-file-name",n),e("success-artifact-type",r),e("success-time",s),e("success-size",o);const a=t.addedDependencies||[],l=document.getElementById("success-deps-row");l&&l.classList.toggle("hidden",a.length===0),e("success-deps",a.join(", "));const u=document.getElementById("success-open-ff-link");u&&i&&(u.href=`https://app.flutterflow.io/project/${i}`);const c=document.getElementById("success-warnings-section"),d=document.getElementById("success-warnings-list"),h=t.unverified||[],f=t.approximate||[],p=t.warnings||[];(p.length>0||h.length>0||f.length>0)&&c&&d&&(d.innerHTML=[...h.map(m=>`
  • Not verified before deploying: ${W(String(m))}
  • `),...f.map(m=>`
  • Verified approximately: ${W(String(m))}
  • `),...p.map(([m,v])=>`
  • ${W(m)}: ${W(String(v))}
  • `)].join(""),c.classList.remove("hidden"));const g=document.getElementById("commit-success-modal");g&&tt(g)}function $a(t){cs(),gy(t)}function Wy(){const t=document.getElementById("code-preview-content"),e=document.getElementById("code-preview-chevron");t.classList.contains("hidden")?(t.classList.remove("hidden"),e.style.transform="rotate(90deg)"):(t.classList.add("hidden"),e.style.transform="rotate(0deg)")}const Mu={prepare:{message:"Preparing your code...",start:4,end:14},validate:{message:"Checking FlutterFlow credentials...",start:14,end:22},project:{message:"Reading your FlutterFlow project...",start:22,end:40},provision:{message:"Creating custom classes in FlutterFlow...",start:40,end:82},package:{message:"Packaging files for upload...",start:82,end:88},push:{message:"Pushing to FlutterFlow...",start:88,end:97},done:{message:"Complete!",start:100,end:100}},qy=[{after:0,text:"Starting a FlutterFlow build runner..."},{after:12,text:"Preparing the FlutterFlow AI workspace..."},{after:35,text:"Uploading your custom classes..."},{after:60,text:"FlutterFlow is applying the changes..."},{after:100,text:"Still working — this can take a couple of minutes..."}],$e={sequence:[],phaseId:null,phaseStartedAt:null,timer:null,substatus:null,liveSubstatus:!1,start({withProvisioning:t=!1}={}){this.sequence=["prepare","validate","project"],t&&this.sequence.push("provision"),this.sequence.push("package","push","done");const e=document.getElementById("commit-progress-overlay");e&&(ru(e,!0,"Deploying to FlutterFlow"),tt(e)),this.set("prepare")},set(t,e=null){if(!(!Mu[t]||t===this.phaseId)){if(!this.sequence.includes(t)){const n=this.sequence.indexOf("package");this.sequence.splice(n===-1?this.sequence.length:n,0,t)}this.phaseId=t,this.phaseStartedAt=Date.now(),this.substatus=e,this.liveSubstatus=!1,this.render(),this.timer&&clearInterval(this.timer),t!=="done"&&(this.timer=setInterval(()=>this.render(),500))}},setSubstatus(t){t&&(this.liveSubstatus=!0,this.substatus=t,this.render())},render(){const t=Mu[this.phaseId];if(!t)return;const e=(Date.now()-this.phaseStartedAt)/1e3,n=t.start+(t.end-t.start)*(1-Math.exp(-e/25));if(this.phaseId==="provision"&&!this.liveSubstatus){const o=qy.filter(a=>e>=a.after).pop();o&&(this.substatus=o.text)}const i=this.sequence.indexOf(this.phaseId),s=[`Step ${i===-1?1:i+1} of ${this.sequence.length}`];e>=5&&s.push(zy(e)),Sf(this.phaseId==="done"?100:n,t.message,s.join(" · "),this.substatus)},stop(){this.timer&&clearInterval(this.timer),this.timer=null,this.phaseId=null;const t=document.getElementById("commit-progress-overlay");t&&(ru(t,!1),ct(t,{force:!0,restoreFocus:!1}))}};function zy(t){const e=Math.floor(t);return e<60?`${e}s elapsed`:`${Math.floor(e/60)}m ${String(e%60).padStart(2,"0")}s elapsed`}function Ef(t){$e.start(t)}function cs(){$e.stop()}function Sf(t,e,n,i=null){const r=document.getElementById("commit-progress-bar"),s=document.getElementById("progress-message"),o=document.getElementById("progress-detail"),a=document.getElementById("progress-substatus");r&&(r.style.width=`${Math.round(t*10)/10}%`),s&&(s.textContent=e),o&&(o.textContent=n),a&&(a.textContent=i||"",a.classList.toggle("hidden",!i))}function Lu(t){const e={[X.PREPARING]:"prepare",[X.VALIDATING]:"validate",[X.PUSHING]:"project",[X.SUCCESS]:"done"};if(t===X.ERROR){$e.timer&&clearInterval($e.timer),$e.timer=null,Sf(100,"Failed","Error occurred");return}const n=e[t];n&&$e.set(n)}function Vy(t){return t.bundlePlan?t.bundlePlan.fileEntries.some(e=>e.type===z.CODE_FILE):t.codeInfo?.codeType===z.CODE_FILE}async function Gy(){if(!Ii){console.error("No pending commit data");return}const t=Ii;if(Ii=null,ki=Uy(),bf(),Ef({withProvisioning:Vy(t)}),t.bundlePlan){const o=await oy(t.bundlePlan,{pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});ki=null,cs(),o.success?Ta(o):$a(o);return}const{codeInfo:e}=t,{artifactType:n,artifactName:i,fileName:r}=of(),s=await sy(e.content,{artifactType:n,artifactName:i,fileName:r,pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});ki=null,cs(),s.success?Ta(s):$a(s)}window.runThinkingPipeline=os;window.toggleStep=cy;window.toggleSection=ly;window.selectWorkflowStep=De;window.copyCode=uy;window.retryWithDifferentModel=hy;window.openApiKeysModal=hl;window.closeApiKeysModal=tf;window.closeWalkthroughModal=j_;window.openWalkthroughModal=D_;window.advanceWalkthrough=fl;window.commitToFlutterFlow=ry;function Ky(){const t=document.getElementById("pipeline-input");t&&t.focus()}function Yy(){const t=document.getElementById("advanced-settings");t&&(t.open=!0);const e=document.getElementById("code-generator-model");e&&(e.scrollIntoView({behavior:"smooth",block:"center"}),e.focus(),e.click())}window.focusPromptInput=Ky;window.openModelSelector=Yy;window.handlePromptImageSelect=x_;window.removePromptImage=k_;window.saveApiKeys=W_;window.clearAllApiKeys=q_;window.toggleKeyVisibility=K_;window.handleWelcomeVideoEnd=Dy;window.dismissWelcomeVideo=Sn;window.initiateCommitToFlutterFlow=fy;window.updateFlutterFlowCredentialStatus=my;window.openCommitConfirmModal=Fl;window.closeCommitConfirmModal=bf;window.closeCommitSuccessModal=Hy;window.showCommitSuccessModal=Ta;window.showCommitFailureModal=$a;window.toggleCodePreview=Wy;window.confirmCommitToFlutterFlow=Gy;window.runRefinement=hf;window.regenerateFromPastedErrors=ff;window.clearErrorInput=dy;window.setFlutterFlowEndpoint=B_;window.getFlutterFlowEndpoint=Hi;window.commitProgress=$e;window.openSignInModal=kl;window.closeSignInModal=by;window.handleMagicLinkRequest=Ey;window.handleSignOut=Sy;window.startCheckout=$y;window.openCustomerPortal=My;window.openPricingModal=ji;window.closePricingModal=wf;let Sr=null,xf=null,xn={1:"pending",2:"pending",3:"pending"},Rl=1,Tl=null;const $l={1:"Prompt Architect",2:"Code Generator",3:"Code Review"},Jy={1:"Understanding your prompt",2:"Generating Dart code",3:"Running the code audit"},Zy={1:"Prompt understood",2:"Dart code generated",3:"Code audit complete"};function $s(){return y.runId+=1,y.runId}function me(t){return t===void 0||t===y.runId}function Xy(){y.runId+=1}function Ml(t){return document.getElementById(`pdot-${t}`)}function Ma(t){const e=document.getElementById("btn-run-pipeline")||document.getElementById("hero-send");e&&(e.disabled=t,e.classList.toggle("is-busy",t),t?e.setAttribute("aria-busy","true"):e.removeAttribute("aria-busy"))}function Ms(t){const e=document.getElementById("pipeline-progress");e&&(e.dataset.runState=t)}function wn(t,e){xn[t]=e;const n=Ml(t);if(!n)return;n.dataset.state=e,n.disabled=e==="pending"||e==="skipped";const i=$l[t],r={pending:"not started",active:"in progress",done:"complete",failed:"failed",skipped:"not run"};n.setAttribute("aria-label",`Step ${t} of 3, ${i}: ${r[e]||e}`),e==="active"?n.setAttribute("aria-current","step"):n.removeAttribute("aria-current")}function Qy(){return[1,2,3].filter(t=>xn[t]==="done").length}function Ls(){const t=document.getElementById("pipeline-progress-fill");t&&(t.style.width=`${Qy()/3*100}%`);const e=document.getElementById("progress-stage-count");e&&(e.textContent=`Step ${Rl} of 3`)}function Ns(t,{done:e=!1}={}){const n=document.getElementById("progress-title-text"),i=document.getElementById("progress-substep-text"),r=xn[t],s=e||r==="done";if(n&&(n.textContent=s?Zy[t]:Jy[t]),i){const o=s?" — complete":r==="failed"?" — stopped":"";i.textContent=`Step ${t} of 3 — ${$l[t]}${o}`}}function e0(t){xn[t]==="pending"||xn[t]==="skipped"||(Tl=t,[1,2,3].forEach(e=>{const n=Ml(e);n&&n.setAttribute("aria-pressed",String(e===t))}),Ns(t))}function Ll(){Tl=null,[1,2,3].forEach(t=>{const e=Ml(t);e&&e.removeAttribute("aria-pressed")})}function kf(t){const e=document.getElementById("pipeline-note");e&&(e.textContent=t||"",e.hidden=!t)}function t0(t,e,n){me(n)&&kf(`${Jt(t)} did not answer. Continuing on ${Jt(e)}.`)}function Nl(){const t=document.getElementById("pipeline-failure");if(!t)return;t.hidden=!0;const e=document.getElementById("pipeline-failure-actions");e&&e.replaceChildren()}const n0=1120;function i0(){const t=getComputedStyle(document.documentElement).getPropertyValue("--t-morph").trim(),e=Number.parseFloat(t);return Number.isFinite(e)&&e>0?e:n0}let jn=null,xr=null;function r0(){return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches===!0}function Xt(){if(xr){try{xr.cancel()}catch{}xr=null}jn&&(jn.remove(),jn=null),window.removeEventListener("resize",Xt)}function If(t,e){if(Xt(),r0()||!t||!e||!document.body||typeof Element.prototype.animate!="function")return;const n=t.getBoundingClientRect(),i=e.getBoundingClientRect();if(!n.width||!n.height||!i.width||!i.height)return;const r=document.createElement("div");r.className="composer-morph",r.setAttribute("aria-hidden","true"),r.style.cssText=`left:${i.left}px;top:${i.top}px;width:${i.width}px;height:${i.height}px;opacity:0;`,document.body.appendChild(r);const s=n.left+n.width/2-(i.left+i.width/2),o=n.top+n.height/2-(i.top+i.height/2),a=n.width/i.width,l=n.height/i.height,u=`translate(${s}px,${o}px) scale(${a},${l})`,c=r.animate([{transform:u,opacity:0,offset:0,easing:"cubic-bezier(.2,0,0,1)"},{transform:u,opacity:1,offset:.14,easing:"cubic-bezier(.4,0,.2,1)"},{transform:`translate(${s}px,${o}px) scale(${a*.93},${l*.93})`,opacity:1,offset:.28,easing:"cubic-bezier(.32,1.38,.5,1)"},{transform:"translate(0px,0px) scale(1,1)",opacity:1,offset:1}],{duration:i0(),fill:"both"});jn=r,xr=c,window.addEventListener("resize",Xt),c.onfinish=()=>{if(jn!==r)return;const d=r.animate([{opacity:1},{opacity:0}],{duration:260,fill:"forwards"});d.onfinish=()=>{jn===r&&Xt()}}}function s0(){const e=document.getElementById("composer")?.getBoundingClientRect();e&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{If({getBoundingClientRect:()=>e},document.getElementById("main-stage-container"))})})}function o0(){If(document.getElementById("pipeline-progress"),document.getElementById("main-stage-container"))}window.addEventListener("hashchange",Xt);window.addEventListener("popstate",Xt);function Os(t={}){const{prompt:e=null,runId:n}=t;if(!me(n))return;js(),nn(!0);const i=document.getElementById("pipeline-progress"),r=document.getElementById("results-view"),s=document.getElementById("ready-state");if(s&&s.classList.add("hidden"),r&&r.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),i&&i.classList.add("visible"),Ms("running"),e!==null){const a=document.getElementById("pipeline-submitted-prompt");a&&(a.textContent=e)}xf=Date.now();const o=document.getElementById("progress-elapsed");o&&(o.textContent="0s"),xn={1:"pending",2:"pending",3:"pending"},Ll(),Nl(),kf(""),[1,2,3].forEach(a=>wn(a,"pending")),yt(1,n),a0()}function yt(t,e){me(e)&&(Rl=t,Ll(),[1,2,3].forEach(n=>{n===t?wn(n,"active"):nt&&wn(n,"pending")}),Ns(t),Ls())}function zt(t,e){me(e)&&(wn(t,"done"),Tl===null&&Ns(t,{done:!0}),Ls())}function Bs(t,{stage:e=1,runId:n,retry:i=Cf}={}){if(!me(n))return;Ds(),js(),Xt(),Ms("failed"),nn(!0);const r=document.getElementById("pipeline-progress");r&&r.classList.add("visible");const s=document.getElementById("results-view");s&&s.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),wn(e,"failed"),[1,2,3].forEach(p=>{p>e&&wn(p,"pending")}),Rl=e,Ll(),Ns(e),Ls();const o=l_(t),a=document.getElementById("pipeline-failure"),l=document.getElementById("pipeline-failure-title"),u=document.getElementById("pipeline-failure-message"),c=document.getElementById("pipeline-failure-hint"),d=document.getElementById("pipeline-failure-actions");if(!a||!l||!u||!d)return;if(a.dataset.kind=o.kind,l.textContent=`${$l[e]}: ${o.title}`,u.textContent=o.message,c){const p=o.detail&&o.detail!==o.message?o.detail:"";c.textContent=p,c.hidden=!p}d.replaceChildren();const h=[o.canUpgrade&&{id:"upgrade",label:"View plans",variant:"primary",onClick:()=>ji()},o.canRetry&&{id:"retry",label:"Retry",variant:o.canUpgrade?"secondary":"primary",onClick:i},o.canEdit&&{id:"edit",label:"Edit prompt",variant:"secondary",onClick:La}].filter(Boolean);!o.canEdit&&!o.canRetry&&h.push({id:"edit",label:"Back to prompt",variant:"secondary",onClick:La}),h.forEach(p=>{const g=document.createElement("button");g.type="button",g.textContent=p.label,g.dataset.action=p.id,g.dataset.variant=p.variant,g.addEventListener("click",p.onClick),d.appendChild(g)}),a.hidden=!1;const f=d.querySelector("button");f&&f.focus({preventScroll:!0})}function La(){Xy(),Ly(),y.isRunning=!1,Ma(!1),rn(),Ms("settled"),Xt(),Ds(),js(),Nl();const t=document.getElementById("pipeline-progress");t&&t.classList.remove("visible"),nn(!1);const e=document.getElementById("pipeline-input");e&&(y.submittedPrompt&&(e.value=y.submittedPrompt),e.focus({preventScroll:!0}),e.setSelectionRange(e.value.length,e.value.length))}function Cf(){const t=document.getElementById("pipeline-input");t&&y.submittedPrompt&&(t.value=y.submittedPrompt),wt=y.submittedImages.slice(),Es(),Nl(),os()}function a0(){Ds(),Sr=setInterval(()=>{const t=(Date.now()-xf)/1e3,e=document.getElementById("progress-elapsed");e&&(e.textContent=`${Math.floor(t)}s`)},250)}function Ds(){Sr&&(clearInterval(Sr),Sr=null)}let Ci=null;function js(){Ci&&(clearTimeout(Ci),Ci=null)}function Us(){Ds(),js(),Ms("settled"),Ls();const t=document.getElementById("pipeline-progress-fill");Ci=setTimeout(()=>{Ci=null;const e=document.getElementById("pipeline-progress");e&&e.classList.remove("visible"),t&&(t.style.width="0%")},400)}function bn(t,e=""){const n={pass:'',warning:'',fail:'',info:''};return``}function Af(t){return{pass:"Passed review",warning:"Needs attention",fail:"Blocking issues"}[t]||"Needs attention"}function l0(){return _v({bundle:y.artifactBundle,reviewResult:y.step3Result})}function c0(t){return` -
    - ${bn(t.severity)} -
    -
    ${W(t.message)}
    - ${t.suggestion?`
    ${W(t.suggestion)}
    `:""} - ${W(t.source)} -
    -
    - `}function u0(t){return` -
  • -
    - ${W(t.title)} - ${t.detail&&t.detail!==t.title?`

    ${W(t.detail)}

    `:""} -
    -
  • - `}function d0(t){const e=document.getElementById("results-summary-detail"),n=document.getElementById("results-title");if(!e)return;n&&(n.textContent=t.title);const i=t.score,r=i==null?"neutral":i>=80?"pass":i>=60?"warning":"fail",s=i==null?"":i>=80?"Strong":i>=60?"Needs work":"High risk",o=t.findings.length?` -
      - ${t.findings.map(u=>` -
    • - ${bn(u.severity)} - - ${W(u.message)} - ${u.suggestion?`${W(u.suggestion)}`:""} - -
    • - `).join("")} -
    - `:"",a=t.warnings.length?` -
    -

    ${bn("warning")} Bundle

    -
      - ${t.warnings.map(u=>`
    • ${W(u)}
    • `).join("")} -
    -
    - `:"",l=t.manualSteps.length?` -
    -

    ${bn("info")} Complete in FlutterFlow

    -

    For your information — these don't block the deploy. Finish them by hand in the FlutterFlow editor once the code is pushed.

    -
      - ${t.manualSteps.map(u=>` -
    • - ${W(u.title)} - ${u.detail&&u.detail!==u.title?`${W(u.detail)}`:""} -
    • - `).join("")} -
    -
    - `:"";e.innerHTML=` -
    -
    -

    ${W(t.summary)}

    - ${o} - ${a} - ${l} -
    -
    - -
    - Is the generated code correct? -
    - - -
    -
    -
    -
    - `}function h0(t){const e=t.artifacts.find(l=>l.id===y.selectedArtifactId)||t.artifacts[0];if(!e)return"";const n={pass:{icon:"pass",message:"No file-specific issues were found."},warning:{icon:"warning",message:"This file needs attention, but Code Review did not return a specific finding."},fail:{icon:"fail",message:"This file is blocked, but Code Review did not return a specific finding."}}[e.status],i=e.findings.length?e.findings.map(c0).join(""):`
    ${bn(n.icon)} ${W(n.message)}
    `,r=e.dependencies?.length?e.dependencies.map(l=>` -
  • ${W(l.name)}${l.version?` ${W(l.version)}`:""}${l.reason?`

    ${W(l.reason)}

    `:""}
  • - `).join(""):'
  • No external packages
  • ',s=e.imports?.length?e.imports.map(l=>`${W(l)}`).join(""):'No imports returned',o=e.publicApi?.length?e.publicApi.map(l=>`${W(l)}`).join(""):'No public API signature returned',a=e.relationships.length?e.relationships.map(l=>` -
  • ${W(l.from||"Bundle")} ${W(l.type)} ${W(l.to||"Bundle")}${l.description?`

    ${W(l.description)}

    `:""}
  • - `).join(""):'
  • No relationships for this file
  • ';return` -
    -
    - ${bn(e.status)} ${W(Af(e.status))} -

    ${W(e.artifactName)}

    - ${e.description?`

    ${W(e.description)}

    `:""} -
    -
    - ${W(e.artifactType)} - ${W(e.fileName)} -
    -
    -
    -

    Code Review findings

    - ${i} -
    - ${e.manualSteps.length?` -
    -

    Manual FlutterFlow steps for this file

    -
      ${e.manualSteps.map(u0).join("")}
    -
    - `:""} -
    - File details -
    -
    -

    Dependencies

    -
      ${r}
    -
    -
    -

    Deployment

    -
    -
    Status
    ${W(e.deployStatus||"pending")}
    -
    Order
    ${e.index+1} of ${t.artifacts.length}
    -
    Path hint
    ${W(e.pathHint||"Not returned")}
    -
    -
    -
    -
    -

    Public API

    -
    ${o}
    -
    -
    -

    Imports

    -
    ${s}
    -
    -
    -

    Relationships

    -
      ${a}
    -
    -
    - `}function f0(t){const e=document.getElementById("bundle-strip"),n=document.getElementById("results-summary-tab"),i=document.getElementById("artifact-tabs"),r=document.getElementById("results-file-count");if(n){const s=y.resultsViewMode==="summary";n.classList.toggle("active",s),n.setAttribute("role","tab"),n.setAttribute("aria-selected",String(s)),n.setAttribute("aria-controls","results-summary-detail"),n.tabIndex=s?0:-1}if(i&&(i.setAttribute("role","tablist"),i.setAttribute("aria-label","Artifacts in this bundle")),!t.artifacts.length){r&&(r.textContent="0 files"),e&&e.classList.remove("visible"),i&&(i.innerHTML=""),Nu();return}if(r){const s=t.artifacts.length;r.textContent=`${s} ${s===1?"file":"files"}`}i&&(i.innerHTML=t.artifacts.map(s=>{const o=y.resultsViewMode==="file"&&s.id===y.selectedArtifactId;return` - - `}).join(""),i.onclick=s=>{const o=s.target.closest(".artifact-tab");o?.dataset?.artifactId&&Bl(o.dataset.artifactId)},Nu()),e&&e.classList.add("visible")}function Nu(){const t=document.getElementById("bundle-strip");!t||t.dataset.tabKeyboard==="bound"||(t.dataset.tabKeyboard="bound",t.addEventListener("keydown",e=>{if(e.defaultPrevented)return;const n=[document.getElementById("results-summary-tab"),...Array.from(document.querySelectorAll("#artifact-tabs .artifact-tab"))].filter(Boolean);if(!n.length||!n.includes(document.activeElement))return;let i=-1;const r=n.indexOf(document.activeElement);if(e.key==="ArrowRight")i=(r+1)%n.length;else if(e.key==="ArrowLeft")i=(r-1+n.length)%n.length;else if(e.key==="Home")i=0;else if(e.key==="End")i=n.length-1;else return;e.preventDefault();const s=n[i];if(!s)return;if(s.id==="results-summary-tab")Pf();else{const a=s.dataset.artifactId;a&&Bl(a)}const o=s.id==="results-summary-tab"?document.getElementById("results-summary-tab"):document.querySelector(`#artifact-tabs .artifact-tab[data-artifact-id="${s.dataset.artifactId}"]`);o&&o.focus()}))}function Ol(){document.body.classList.add("results-fullscreen"),document.body.classList.add("results-with-sidebar");const t=document.getElementById("results-view"),e=document.getElementById("results-code-output"),n=document.getElementById("results-audit-output"),i=document.getElementById("results-summary-detail"),r=document.getElementById("artifact-results-split"),s=l0(),o=ml();if(i&&(i.setAttribute("role","tabpanel"),i.setAttribute("aria-labelledby","results-summary-tab")),r){r.setAttribute("role","tabpanel");const a=s?.artifacts?.find(l=>l.id===y.selectedArtifactId);r.setAttribute("aria-labelledby",a?`artifact-tab-${a.id}`:"results-summary-tab")}if(d0(s),f0(s),e&&(e.textContent=""),e){const a=zh(o);e.innerHTML=a}n&&(n.innerHTML=h0(s)),i&&i.classList.toggle("hidden",y.resultsViewMode!=="summary"),r&&r.classList.toggle("hidden",y.resultsViewMode!=="file"),t&&t.classList.add("visible")}function Hs(t,e){nn(!0),y.selectedArtifactId||(y.selectedArtifactId=Kr(y.artifactBundle).id),y.resultsViewMode="summary",document.body.classList.add("results-fullscreen");const n=document.getElementById("step3-output");n&&(n.textContent=""),Ol(),rn();const i=document.getElementById("btn-feedback-up"),r=document.getElementById("btn-feedback-down");i&&(i.className="feedback-btn"),r&&(r.className="feedback-btn")}function Bl(t){y.selectedArtifactId=t,y.resultsViewMode="file",Ol()}function Pf(){y.resultsViewMode="summary",Ol()}function p0(){const t=document.getElementById("btn-copy-results"),e=document.getElementById("results-copy-status"),n=ml(),i=(r,s)=>{e&&(e.textContent=r,e.classList.toggle("ok",!!s),e.classList.toggle("fail",!s))};if(!navigator.clipboard?.writeText){i("Copying isn't supported in this browser.",!1);return}navigator.clipboard.writeText(n).then(()=>{if(i("Copied to clipboard",!0),t){t.classList.add("copied");const r=t.querySelector("span");if(r){const s=r.textContent;r.textContent="Copied!",setTimeout(()=>{t.classList.remove("copied"),r.textContent=s},2e3)}}}).catch(()=>{i("Clipboard permission was denied. Select the code to copy it manually.",!1)})}function g0(t){const e=document.getElementById("btn-feedback-up"),n=document.getElementById("btn-feedback-down");t==="up"?(e.classList.toggle("active-up"),n.classList.remove("active-down")):(n.classList.toggle("active-down"),e.classList.remove("active-up")),Sl(t==="up"?"thumbsUp":"thumbsDown",y.step2Result,y.step1Result)}function m0(){const t=document.getElementById("error-input-panel");if(t){t.classList.remove("hidden"),t.style.display="flex";const e=document.getElementById("ff-error-paste-input");e&&setTimeout(()=>e.focus(),100)}}function Ff(){const t=document.getElementById("error-input-panel");t&&(t.classList.add("hidden"),t.style.display="none")}function nn(t){const e=document.getElementById("generation-stage");e&&(t?(e.hidden=!1,e.inert=!1,requestAnimationFrame(()=>e.classList.add("is-active"))):(e.classList.remove("is-active"),e.inert=!0,setTimeout(()=>{e.classList.contains("is-active")||(e.hidden=!0)},260)))}function Rf(){const t=G.isVerified&&!!G.email,e=be.tier||"free",n=t&&qi(),i=!t||Vt(),s=n?"Checking…":i?{free:"Free",professional:"Pro",power:"Power"}[e]||"Free":"—",o=document.getElementById("topbar-plan");o&&(o.textContent=s);const a=document.getElementById("topbar-avatar");a&&(a.textContent=(G.email||"?")[0].toUpperCase()),Al();const l=document.getElementById("plans-free-current");l&&l.classList.toggle("hidden",e!=="free"||!i);const u=document.getElementById("plans-checkout-btn-professional");if(u){const d=e==="professional"&&i;u.disabled=d,u.textContent=d?"Current plan":"Subscribe"}const c=document.getElementById("plans-checkout-btn-power");if(c){const d=e==="power"&&i;c.disabled=d,c.textContent=d?"Current plan":"Subscribe"}}function v0(){Rf();const t=document.getElementById("credits-modal");t&&tt(t)}function _0(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("credits-modal");e&&ct(e)}function Tf(t,e=!0,n=!0){if(t=["home","account","plans"].includes(t)?t:"home",document.querySelectorAll(".view[data-view]").forEach(r=>{r.dataset.view===t?(r.hidden=!1,r.removeAttribute("inert"),requestAnimationFrame(()=>{r.classList.add("is-active"),n&&r.focus({preventScroll:!0})})):(r.classList.remove("is-active"),r.setAttribute("inert","true"),setTimeout(()=>{r.classList.contains("is-active")||(r.hidden=!0)},260))}),t!=="home")nn(!1);else{const r=document.getElementById("main-stage-container");r&&r.classList.contains("visible")&&nn(!0)}if(document.querySelectorAll(".nav-link[data-view]").forEach(r=>{const s=r.dataset.view===t;r.setAttribute("aria-current",s?"page":null),s||r.removeAttribute("aria-current")}),e){const r=t==="home"?"":`#${t}`;window.location.hash!==r&&window.history.pushState({view:t},"",r||"#")}}let Ou=!1;function Dl(){const t=window.location.hash.replace(/^#/,"");Tf(t||"home",!1,Ou),Ou=!0}window.addEventListener("popstate",t=>{Dl()});window.addEventListener("hashchange",()=>{Dl()});function y0(){const t=document.querySelectorAll("#example-chips .chip"),e=document.getElementById("pipeline-input");t.forEach(n=>{n.addEventListener("click",()=>{e&&(e.value=n.dataset.prompt||""),e?.focus()})})}window.copyResultsCode=p0;window.selectArtifact=Bl;window.selectResultsSummary=Pf;window.submitResultsFeedback=g0;window.showErrorInputPanel=m0;window.hideErrorInputPanel=Ff;window.setGenerationStageVisible=nn;window.switchView=Tf;window.selectPipelineStage=e0;window.editPipelinePrompt=La;window.retryPipelineRun=Cf;window.openCreditsModal=v0;window.closeCreditsModal=_0; diff --git a/dist/assets/index-D6csqwUm.js b/dist/assets/index-D6csqwUm.js deleted file mode 100644 index 869b2fe..0000000 --- a/dist/assets/index-D6csqwUm.js +++ /dev/null @@ -1,320 +0,0 @@ -(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();var v=typeof window<"u"?window:void 0,we=typeof globalThis<"u"?globalThis:v,ke=we?.navigator,C=we?.document,re=we?.location,Yo=we?.fetch,Ws=we!=null&&we.XMLHttpRequest&&"withCredentials"in new we.XMLHttpRequest?we.XMLHttpRequest:void 0,Ja=we?.AbortController,Fh=we?.CompressionStream,Fe=ke?.userAgent;function jc(){return!(!v||v.navigator.onLine===!1)}var Tn=typeof globalThis<"u"?globalThis:v;Tn&&typeof self>"u"&&(Tn.self=Tn),Tn&&typeof File>"u"&&(Tn.File=function(){});var $=v??{},Y={DEBUG:!1,LIB_VERSION:"0.5.0",LIB_NAME:"browser-common"};function Ya(t,e,n,r,i,s,o){try{var a=t[s](o),l=a.value}catch(u){return void n(u)}a.done?e(l):Promise.resolve(l).then(r,i)}function X(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var s=t.apply(e,n);function o(l){Ya(s,r,i,o,a,"next",l)}function a(l){Ya(s,r,i,o,a,"throw",l)}o(void 0)}))}}function E(){return E=Object.assign?Object.assign.bind():function(t){for(var e=1;arguments.length>e;e++){var n=arguments[e];for(var r in n)({}).hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},E.apply(null,arguments)}function Uc(t,e){if(t==null)return{};var n={};for(var r in t)if({}.hasOwnProperty.call(t,r)){if(e.indexOf(r)!==-1)continue;n[r]=t[r]}return n}var Za=t=>{if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}};function Xa(t){return typeof t=="string"||t}function Qa(t){return typeof t=="string"?t:void 0}var Nn,Ph=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$referring_domain","utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid","gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],pt=(function(t){return t.AnonymousId="anonymous_id",t.DistinctId="distinct_id",t.Props="props",t.EnablePersonProcessing="enable_person_processing",t.PersonMode="person_mode",t.FeatureFlagDetails="feature_flag_details",t.FeatureFlags="feature_flags",t.FeatureFlagPayloads="feature_flag_payloads",t.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",t.BootstrapFeatureFlags="bootstrap_feature_flags",t.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",t.OverrideFeatureFlags="override_feature_flags",t.Queue="queue",t.AiQueue="ai_queue",t.LogsQueue="logs_queue",t.OptedOut="opted_out",t.SessionId="session_id",t.SessionStartTimestamp="session_start_timestamp",t.SessionLastTimestamp="session_timestamp",t.PersonProperties="person_properties",t.GroupProperties="group_properties",t.InstalledAppBuild="installed_app_build",t.InstalledAppVersion="installed_app_version",t.SessionReplay="session_replay",t.PushRegistered="push_registered",t.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",t.SurveyLastSeenDate="survey_last_seen_date",t.SurveysSeen="surveys_seen",t.Surveys="surveys",t.RemoteConfig="remote_config",t.FlagsEndpointWasHit="flags_endpoint_was_hit",t.DeviceId="device_id",t})({}),el=(function(t){return t.GZipJS="gzip-js",t.Base64="base64",t})({}),$h=["$snapshot","$pageview","$pageleave","$set","survey dismissed","survey sent","survey shown","$identify","$groupidentify","$create_alias","$$client_ingestion_warning","$web_experiment_applied","$feature_enrollment_update","$feature_flag_called"],Rh=["token"],Hc="NativeGzipValidationError",zs=t=>t.length>=2&&t[0]===31&&t[1]===139,tl=(t,e)=>t===el.GZipJS||e===el.GZipJS||e==="gzip",nl=t=>!(!t||typeof t!="object")&&("name"in t?String(t.name):"")==="NotReadableError",Ir=t=>{var e=new Error("Native gzip produced invalid output: "+t);throw e.name=Hc,e},Th=(function(){var t=X((function*(e,n){18>e.size&&Ir("too-short");var r=new Uint8Array(yield e.slice(0,10).arrayBuffer());zs(r)&&r[2]===8||Ir("invalid-header");var i=new DataView(yield e.slice(e.size-8).arrayBuffer());i.getUint32(0,!0)!==(o=>{for(var a=(()=>{if(Nn)return Nn;Nn=[];for(var c=0;256>c;c++){for(var d=c,h=0;8>h;h++)d=1&d?3988292384^d>>>1:d>>>1;Nn[c]=d>>>0}return Nn})(),l=4294967295,u=0;o.length>u;u++)l=a[255&(l^o[u])]^l>>>8;return(4294967295^l)>>>0})(n)&&Ir("invalid-crc");var s=n.length>>>0;i.getUint32(4,!0)!==s&&Ir("invalid-size")}));return function(e,n){return t.apply(this,arguments)}})();function qs(){return qs=X((function*(t,e,n){e===void 0&&(e=!0);try{var r=new TextEncoder().encode(t),i=new globalThis.CompressionStream("gzip"),s=i.writable.getWriter(),o=s.write(r).then((()=>s.close())).catch((function(){var u=X((function*(c){try{yield s.abort(c)}catch{}throw c}));return function(c){return u.apply(this,arguments)}})()),a=new Response(i.readable).blob(),l=(yield Promise.all([a,o]))[0];return yield Th(l,r),l}catch(u){if(n!=null&&n.rethrow)throw u;return e&&console.error("Failed to gzip compress data",u),null}})),qs.apply(this,arguments)}var Nh=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],rl=function(t,e){if(e===void 0&&(e=[]),!t)return!1;var n=t.toLowerCase();return Nh.concat(e).some((r=>{var i=r.toLowerCase();return n.indexOf(i)!==-1}))};function M(t,e){return t.indexOf(e)!==-1}var Oi=function(t){return t.trim()},Vs=function(t){return t.replace(/^\$/,"")};function Wc(t){var e,n=[];return(e=JSON.stringify(t,(function(r,i){if(typeof i=="bigint")return i.toString();if(typeof i!="function"&&typeof i!="symbol"){if(i instanceof Error)return{name:i.name,message:i.message,stack:i.stack};if(i&&typeof i=="object"){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.includes(i))return"[Circular]";n.push(i)}return i}})))!==null&&e!==void 0?e:"null"}var zc=Object.prototype,qc=zc.hasOwnProperty,Bi=zc.toString,L=Array.isArray||function(t){return Bi.call(t)==="[object Array]"},Se=t=>typeof t=="function",te=t=>t===Object(t)&&!L(t),yt=t=>{if(te(t)){for(var e in t)if(qc.call(t,e))return!1;return!0}return!1},x=t=>t===void 0,W=t=>Bi.call(t)=="[object String]",Gs=t=>W(t)&&t.trim().length===0,$e=t=>t===null,B=t=>x(t)||$e(t),he=t=>Bi.call(t)=="[object Number]"&&t==t,dt=t=>he(t)&&t>0,Ye=t=>Bi.call(t)==="[object Boolean]",Mh=t=>t instanceof FormData,Lh=t=>M($h,t),Oh=t=>M(Rh,t);function Vc(t){return t===null||typeof t!="object"}function ei(t,e){return{}.toString.call(t)==="[object "+e+"]"}function Zo(t){return typeof Event<"u"&&Gc(t,Event)}function Gc(t,e){try{return t instanceof e}catch{return!1}}var Bh=[!0,"true",1,"1","yes"],cs=t=>M(Bh,t),Dh=[!1,"false",0,"0","no"];function ot(t,e,n,r,i){return e>n&&(r.warn("min cannot be greater than max."),e=n),he(t)?t>n?(r.warn(" cannot be greater than max: "+n+". Using max value instead."),n):e>t?(r.warn(" cannot be less than min: "+e+". Using min value instead."),e):t:(r.warn(" must be a number. using max or fallback. max: "+n+", fallback: "+i),ot(i||n,e,n,r))}class jh{constructor(e){this.tt={},this.et=e.et,this.it=ot(e.bucketSize,0,100,e.rt),this.nt=ot(e.refillRate,0,this.it,e.rt),this.st=ot(e.refillInterval,0,864e5,e.rt)}ot(e,n){var r=Math.floor((n-e.lastAccess)/this.st);r>0&&(e.tokens=Math.min(e.tokens+r*this.nt,this.it),e.lastAccess=e.lastAccess+r*this.st)}consumeRateLimit(e){var n,r=Date.now(),i=String(e),s=this.tt[i];return s?this.ot(s,r):this.tt[i]=s={tokens:this.it,lastAccess:r},s.tokens===0||(s.tokens--,s.tokens===0&&((n=this.et)==null||n.call(this,e)),s.tokens===0)}stop(){this.tt={}}}var Oe="Mobile",ti="iOS",wt="Android",_n="Tablet",Kc=wt+" "+_n,Jc="iPad",Yc="Apple",Zc=Yc+" Watch",Zn="Safari",yn="BlackBerry",Xc="Samsung",Qc=Xc+"Browser",eu=Xc+" Internet",Yt="Chrome",Uh=Yt+" OS",tu=Yt+" "+ti,Xo="Internet Explorer",nu=Xo+" "+Oe,Qo="Opera",Hh=Qo+" Mini",ea="Edge",ru="Microsoft "+ea,gn="Firefox",iu=gn+" "+ti,or="Nintendo",ar="PlayStation",mn="Xbox",su=wt+" "+Oe,ou=Oe+" "+Zn,zn="Windows",Ks=zn+" Phone",il="Nokia",Js="Ouya",au="Generic",Wh=au+" "+Oe.toLowerCase(),lu=au+" "+_n.toLowerCase(),Ys="Konqueror",cu="Oculus Browser",ni="Vivaldi",uu="Yandex",ri="Whale",Zs="DuckDuckGo",du="Pale Moon",ii="Waterfox",Xn="Brave",hu="Google Search App",le="(\\d+(\\.\\d+)?)",us=new RegExp("Version/"+le),zh=new RegExp(mn,"i"),qh=new RegExp(ar+" \\w+","i"),Vh=new RegExp(or+" \\w+","i"),ta=new RegExp(yn+"|PlayBook|BB10","i"),Gh={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},pu=function(t,e,n,r){e=e||"";var i=(function(s){return s!=null&&s.brave?Xn:null})(n);return i||(r!=null&&r.detectGoogleSearchApp&&M(t,"GSA/")?hu:M(t," OPR/")&&M(t,"Mini")?Hh:M(t," OPR/")?Qo:ta.test(t)?yn:M(t,"IE"+Oe)||M(t,"WPDesktop")?nu:M(t,"OculusBrowser")?cu:M(t,Qc)?eu:M(t,ea)||M(t,"Edg/")?ru:M(t,ni+"/")?ni:M(t,"YaBrowser/")?uu:M(t,ri+"/")?ri:M(t,Zs+"/")||M(t,"Ddg/")?Zs:M(t,"FBIOS")?"Facebook "+Oe:M(t,"UCWEB")||M(t,"UCBrowser")?"UC Browser":M(t,"CriOS")?tu:M(t,"CrMo")||M(t,Yt)?Yt:M(t,wt)&&M(t,Zn)?su:M(t,"FxiOS")?iu:M(t.toLowerCase(),Ys.toLowerCase())?Ys:M(t,Xn+"/")?Xn:((s,o)=>o&&M(o,Yc)||(function(a){return M(a,Zn)&&!M(a,Yt)&&!M(a,wt)})(s))(t,e)?M(t,Oe)?ou:Zn:M(t,"PaleMoon/")?du:M(t,ii+"/")?ii:M(t,gn)?gn:M(t,"MSIE")||M(t,"Trident/")?Xo:M(t,"Gecko")?gn:"")},Kh={[nu]:[new RegExp("rv:"+le)],[ru]:[new RegExp(ea+"?\\/"+le)],[Yt]:[new RegExp("("+Yt+"|CrMo)\\/"+le)],[tu]:[new RegExp("CriOS\\/"+le)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+le)],[Zn]:[us],[ou]:[us],[Qo]:[new RegExp("(Opera|OPR)\\/"+le)],[gn]:[new RegExp(gn+"\\/"+le)],[iu]:[new RegExp("FxiOS\\/"+le)],[Ys]:[new RegExp("Konqueror[:/]?"+le,"i")],[yn]:[new RegExp(yn+" "+le),us],[su]:[new RegExp("android\\s"+le,"i")],[eu]:[new RegExp(Qc+"\\/"+le)],[cu]:[new RegExp("OculusBrowser\\/"+le)],[ni]:[new RegExp(ni+"\\/"+le)],[uu]:[new RegExp("YaBrowser\\/"+le)],[ri]:[new RegExp(ri+"\\/"+le)],[Xn]:[new RegExp(Xn+"\\/"+le)],[Zs]:[new RegExp("(DuckDuckGo|Ddg)\\/"+le)],[du]:[new RegExp("PaleMoon\\/"+le)],[ii]:[new RegExp(ii+"\\/"+le)],[hu]:[new RegExp("GSA\\/"+le)],[Xo]:[new RegExp("(rv:|MSIE )"+le)],Mozilla:[new RegExp("rv:"+le)]},Jh=function(t,e,n,r){var i=pu(t,e,n,r),s=Kh[i];if(x(s))return null;for(var o=0;s.length>o;o++){var a=t.match(s[o]);if(a)return parseFloat(a[a.length-2])}return null},sl=[[new RegExp(mn+"; "+mn+" (.*?)[);]","i"),t=>[mn,t&&t[1]||""]],[new RegExp(or,"i"),[or,""]],[new RegExp(ar,"i"),[ar,""]],[ta,[yn,""]],[new RegExp(zn,"i"),(t,e)=>{if(/Phone/.test(e)||/WPDesktop/.test(e))return[Ks,""];if(new RegExp(Oe).test(e)&&!/IEMobile\b/.test(e))return[zn+" "+Oe,""];var n=/Windows NT ([0-9.]+)/i.exec(e);if(n&&n[1]){var r=Gh[n[1]]||"";return/arm/i.test(e)&&(r="RT"),[zn,r]}return[zn,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,t=>t&&t[3]?[ti,[t[3],t[4],t[5]||"0"].join(".")]:[ti,""]],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,t=>{var e="";return t&&t.length>=3&&(e=x(t[2])?t[3]:t[2]),["watchOS",e]}],[new RegExp("("+wt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+wt+")","i"),t=>t&&t[2]?[wt,[t[2],t[3],t[4]||"0"].join(".")]:[wt,""]],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,t=>{var e=["Mac OS X",""];return t&&t[1]&&(e[1]=[t[1],t[2],t[3]||"0"].join(".")),e}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Uh,""]],[/Linux|debian/i,["Linux",""]]],ol=function(t){return Vh.test(t)?or:qh.test(t)?ar:zh.test(t)?mn:new RegExp(Js,"i").test(t)?Js:new RegExp("("+Ks+"|WPDesktop)","i").test(t)?Ks:/iPad/.test(t)?Jc:/iPod/.test(t)?"iPod Touch":/iPhone/.test(t)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(t)?Zc:ta.test(t)?yn:/(kobo)\s(ereader|touch)/i.test(t)?"Kobo":new RegExp(il,"i").test(t)?il:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(t)||/(kf[a-z]+)( bui|\)).+silk\//i.test(t)?"Kindle Fire":/(Android|ZTE)/i.test(t)?new RegExp(Oe).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?wt:Kc:new RegExp("(pda|"+Oe+")","i").test(t)?Wh:new RegExp(_n,"i").test(t)&&!new RegExp(_n+" pc","i").test(t)?lu:""},Yh=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function al(t,e){return typeof(n=t)=="string"&&Yh.test(n)?t:e();var n}function Pt(t){return t&&t.split("#")[0]}function na(t,e){var n=setTimeout(t,e);return n?.unref&&n?.unref(),n}function ll(t,e,n){return fu.apply(this,arguments)}function fu(){return(fu=X((function*(t,e,n){var r;try{return yield Promise.race([t,new Promise(((i,s)=>{r=na((()=>{try{n?.(),i()}catch(o){s(o)}}),e)}))])}finally{clearTimeout(r)}}))).apply(this,arguments)}var Zh=t=>t instanceof Error,gu={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},Xh=gu.info;function mu(t){if(Ye(t))return{boolValue:t};if(typeof t=="number")return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if(typeof t=="string")return{stringValue:t};if(L(t))return{arrayValue:{values:t.map((e=>mu(e)))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}function si(t){var e=[];for(var n in t){var r=t[n];$e(r)||x(r)||e.push({key:n,value:mu(r)})}return e}function Qh(t,e){var n=gu[t.level||"info"]||Xh,r=n.text,i=n.number,s=String(Date.now())+"000000",o={};e.distinctId&&(o.posthogDistinctId=e.distinctId),e.sessionId&&(o.sessionId=e.sessionId),e.windowId&&(o["window.id"]=e.windowId),B(e.sessionStartTimestamp)||(o.sessionStartTimestamp=String(e.sessionStartTimestamp)),B(e.lastActivityTimestamp)||(o.lastActivityTimestamp=String(e.lastActivityTimestamp)),e.currentUrl&&(o["url.full"]=e.currentUrl),e.screenName&&(o["screen.name"]=e.screenName),e.appState&&(o["app.state"]=e.appState),e.activeFeatureFlags&&e.activeFeatureFlags.length>0&&(o.feature_flags=e.activeFeatureFlags);var a=E({},o,t.attributes||{}),l={timeUnixNano:s,observedTimeUnixNano:s,severityNumber:i,severityText:r,body:{stringValue:t.body},attributes:si(a)};return t.trace_id&&(l.traceId=t.trace_id),t.span_id&&(l.spanId=t.span_id),x(t.trace_flags)||(l.flags=t.trace_flags),l}function vu(t,e,n){return E({},t.resourceAttributes,{"service.name":t.serviceName||"unknown_service"},t.environment&&{"deployment.environment":t.environment},t.serviceVersion&&{"service.version":t.serviceVersion},{"telemetry.sdk.name":e,"telemetry.sdk.version":n})}function _u(t,e,n,r){return{resourceLogs:[{resource:{attributes:si(e)},scopeLogs:[{scope:{name:n,version:r},logRecords:t}]}]}}let ep=class{constructor(t,e,n,r,i,s,o){var a;s===void 0&&(s=()=>Promise.resolve()),this._instance=t,this.Ne=e,this.rt=n,this.ut=r,this.ht=i,this.dt=s,this.vt=o,this.ct=null,this.ft=0,this.yt=0,this.bt=0,this._t=0,this.wt=!1,this.kt=e.maxBufferSize,this.xt=Math.max((a=e.maxQueueSize)!==null&&a!==void 0?a:e.maxBufferSize,e.maxBufferSize),this.St=e.flushIntervalMs,this.Ct=e.maxBatchRecordsPerPost,this.Mt=e.rateCapWindowMs,this.Tt=e.maxLogsPerInterval}reset(){this.Et(),this.ct=null,this.bt=0,this._t=0,this.wt=!1,this.ft=0,this.yt=0,this.Ct=this.Ne.maxBatchRecordsPerPost}onReconnect(){this.yt=0,this.It()}captureLog(t){if(!this._instance.isDisabled&&!this._instance.optedOut&&t!=null&&t.body){var e=this.Pt(t);if(e!==null)if(e.body){if(this.Rt()){var n={record:Qh(e,this.ut())};this.ht((()=>this.At(n)))}}else this.rt.info("Log was rejected in beforeSend function")}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=L(e)?e:[e],r=t;for(var i of n)try{var s=i(r);if(!s)return this.rt.info("Log was rejected in beforeSend function"),null;r=s}catch(o){return this.rt.error("Error in beforeSend function for log:",o),null}return r}Rt(){if(this.Tt===void 0)return!0;var t=Date.now(),e=t-this.bt;return this.Mt>e&&e>=0||(this.bt=t,this._t=0,this.wt=!1),this.Tt>this._t?(this._t++,!0):(this.wt||(this.rt.warn("captureLog dropping logs: exceeded "+this.Tt+" logs per "+this.Mt+"ms"),this.wt=!0),!1)}flush(){var t=this;return X((function*(){if(!t._instance.isDisabled)return t.ct||(t.ct=t.Ft().finally((()=>{t.ct=null}))),t.ct}))()}Ft(){var t=this;return X((function*(){var e;t.Et();var n=(e=t._instance.getPersistedProperty(pt.LogsQueue))!==null&&e!==void 0?e:[];if(n.length!==0)for(var r=n.length,i=0;n.length>0&&r>i;){var s,o;t.ft=0;var a=Math.min(n.length,t.Ct),l=n.slice(0,a),u=_u(l.map((d=>d.record)),t.Lt(),(s=t.vt)!==null&&s!==void 0?s:t._instance.getLibraryId(),t._instance.getLibraryVersion()),c=yield t._instance.Ot(u);if(c.kind==="too-large"&&l.length>1)t.Ct=Math.max(1,Math.floor(l.length/2)),t.rt.warn("Received 413 when sending logs batch of size "+l.length+", reducing batch size to "+t.Ct);else if(c.kind==="retry-later"||(c.kind==="too-large"?t.rt.warn("Dropping a single log record after 413 with batch size 1 — the record is larger than the server cap and cannot be split further."):c.kind==="ok"&&t.Ne.maxBatchRecordsPerPost>t.Ct&&(t.Ct=Math.min(t.Ne.maxBatchRecordsPerPost,t.Ct+1)),yield t.Dt(l.length),n=(o=t._instance.getPersistedProperty(pt.LogsQueue))!==null&&o!==void 0?o:[],i+=l.length,c.kind==="fatal"))throw c.error}}))()}Dt(t){var e=this;return X((function*(){var n,r=Math.max(0,t-e.ft),i=(n=e._instance.getPersistedProperty(pt.LogsQueue))!==null&&n!==void 0?n:[];e._instance.setPersistedProperty(pt.LogsQueue,i.slice(r)),yield e.dt()}))()}Lt(){return vu(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion())}At(t){var e;if(!this._instance.optedOut){var n=(e=this._instance.getPersistedProperty(pt.LogsQueue))!==null&&e!==void 0?e:[];this.xt>n.length||(n.shift(),this.ft++,this.rt.info("Logs queue is full, dropping oldest record.")),n.push(t),this._instance.setPersistedProperty(pt.LogsQueue,n),this.kt>n.length?this.$t():this.It()}}$t(t){t===void 0&&(t=this.St),this.Nt||(this.Nt=na((()=>{this.Nt=void 0,this.It()}),t))}qt(){var t=Math.min(Math.max(0,this.yt-1),6);return this.St*Math.pow(2,t)}jt(){var t=this._instance.getPersistedProperty(pt.LogsQueue);return!!t&&t.length>0}shutdown(t){var e=this;return X((function*(){e.Et();var n=e.flush().catch((()=>{}));t!==void 0?yield ll(n,t):yield n}))()}flushWithTimeout(t){var e=this;return X((function*(){var n=e.flush();yield ll(n,t,(()=>{n.catch((()=>{}))}))}))()}It(){this.flush().then((()=>{this.yt=0}),(t=>{this.yt++,this.rt.error("PostHog logs flush failed:",t)})).finally((()=>{!this._instance.isDisabled&&this.jt()&&this.$t(this.qt())}))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}};var ds=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function cl(t){return String(t)+"000000"}function ul(t,e,n,r){var i="";return r&&(i=Object.keys(r).sort().map((s=>JSON.stringify(s)+":"+JSON.stringify(r[s]))).join(",")),t+"\0"+e+"\0"+(n??"")+"\0"+i}let tp=class{constructor(t,e,n){this._instance=t,this.Ne=e,this.rt=n,this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Wt=0}count(t,e,n){e===void 0&&(e=1),this.Vt({name:t,type:"count",value:e,unit:n?.unit,attributes:n?.attributes})}gauge(t,e,n){this.Vt({name:t,type:"gauge",value:e,unit:n?.unit,attributes:n?.attributes})}histogram(t,e,n){this.Vt({name:t,type:"histogram",value:e,unit:n?.unit,attributes:n?.attributes})}flush(){var t=this,e=this.ct,n=(function(){var i=X((function*(){e&&(yield e.catch((()=>{}))),yield t.Zt()}));return function(){return i.apply(this,arguments)}})(),r=n().finally((()=>{this.ct===r&&(this.ct=null)}));return this.ct=r,r}drainWindow(){if(this.Bt.size===0)return null;var t=this.Bt;return this.Bt=new Map,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Gt(t)}reset(){this.Wt++,this.Et(),this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set}Vt(t){if(!this._instance.isDisabled&&!this._instance.optedOut){var e=this.Pt(t);if(e!==null)if(e.name&&typeof e.name=="string")if(typeof e.value=="number"&&Number.isFinite(e.value))if(e.type==="count"&&0>e.value)this.rt.warn("Dropping count '"+e.name+"': counters are monotonic, value must be >= 0");else{var n,r;try{n=e.attributes?E({},e.attributes):void 0,r=ul(e.type,e.name,e.unit,n)}catch(o){return void this.rt.warn("Dropping metric '"+e.name+"': attributes could not be serialized",o)}var i=this.Bt.get(r);if(!i){if(!this.Qt())return;i={name:e.name,type:e.type,unit:e.unit,attributes:n,windowStartMs:Date.now()},this.Bt.set(r,i)}var s=this.Ut.get(e.name);s===void 0?this.Ut.set(e.name,e.type):s===e.type||this.zt.has(e.name)||(this.zt.add(e.name),this.rt.warn("Metric name '"+e.name+"' is already used as a "+s+"; recording it as a "+e.type+" too will blend both series in charts. Use a distinct name.")),this.Kt(i,e.value),this.$t()}else this.rt.warn("Dropping metric '"+e.name+"': value must be a finite number");else this.rt.warn("Dropping metric with empty name")}}Qt(){return this.Ne.maxSeriesPerFlush>this.Bt.size||(this.Ht||(this.Ht=!0,this.rt.warn("Metric series cap reached ("+this.Ne.maxSeriesPerFlush+" per flush window); dropping new series until the next flush. Reduce attribute cardinality.")),!1)}Kt(t,e){var n;switch(t.type){case"count":t.total=((n=t.total)!==null&&n!==void 0?n:0)+e;break;case"gauge":t.last=e;break;case"histogram":t.hist||(t.hist={count:0,sum:0,min:e,max:e,bucketCounts:new Array(ds.length+1).fill(0)});var r=t.hist;r.count+=1,r.sum+=e,r.min=Math.min(r.min,e),r.max=Math.max(r.max,e),r.bucketCounts[(function(i,s){for(var o=0;s.length>o;o++)if(s[o]>=i)return o;return s.length})(e,ds)]+=1}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=L(e)?e:[e],r=t;for(var i of n)try{var s=i(r);if(!s)return this.rt.info("Metric was rejected in beforeSend function"),null;r=s}catch(o){return this.rt.error("Error in beforeSend function for metric:",o),null}return r}$t(){this.Nt||(this.Nt=na((()=>{this.Nt=void 0,this.flush().catch((t=>{this.rt.error("Metrics flush failed:",t)}))}),this.Ne.flushIntervalMs))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}Zt(){var t=this;return X((function*(){if(t.Bt.size!==0){var e=t.Bt;t.Bt=new Map,t.Ht=!1,t.Ut=new Map,t.zt=new Set;var n=t.Wt,r=yield t._instance.Jt(t.Gt(e));if(n===t.Wt)switch(r.kind){case"ok":return;case"retry-later":return t.Yt(e),void t.$t();case"too-large":return void t.rt.warn("Metrics batch exceeded the server size limit and was dropped");case"fatal":return void t.rt.error("Failed to send metrics batch:",r.error)}}}))()}Gt(t){return e=this.Xt(t),n=(function(s,o,a){return E({},s.resourceAttributes,{"service.name":s.serviceName||"unknown_service"},s.environment&&{"deployment.environment":s.environment},s.serviceVersion&&{"service.version":s.serviceVersion},{"telemetry.sdk.name":o,"telemetry.sdk.version":a})})(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion()),r=this._instance.getLibraryId(),i=this._instance.getLibraryVersion(),{resourceMetrics:[{resource:{attributes:si(n)},scopeMetrics:[{scope:{name:r,version:i},metrics:e}]}]};var e,n,r,i}Xt(t){var e=cl(Date.now()),n=new Map;for(var r of t.values()){var i,s=ul(r.type,r.name,r.unit,void 0),o=n.get(s);o||(o=E({name:r.name},r.unit&&{unit:r.unit}),r.type==="count"?o.sum={aggregationTemporality:1,isMonotonic:!0,dataPoints:[]}:r.type==="gauge"?o.gauge={dataPoints:[]}:o.histogram={aggregationTemporality:1,dataPoints:[]},n.set(s,o));var a=si((i=r.attributes)!==null&&i!==void 0?i:{}),l=cl(r.windowStartMs);if(r.type==="count"){var u,c={attributes:a,startTimeUnixNano:l,timeUnixNano:e,asDouble:(u=r.total)!==null&&u!==void 0?u:0};o.sum.dataPoints.push(c)}else if(r.type==="gauge"){var d,h={attributes:a,timeUnixNano:e,asDouble:(d=r.last)!==null&&d!==void 0?d:0};o.gauge.dataPoints.push(h)}else r.hist&&o.histogram.dataPoints.push({attributes:a,startTimeUnixNano:l,timeUnixNano:e,count:r.hist.count,sum:r.hist.sum,min:r.hist.min,max:r.hist.max,bucketCounts:r.hist.bucketCounts,explicitBounds:ds})}return Array.from(n.values())}Yt(t){var e,n;for(var r of t){var i=r[0],s=r[1],o=this.Bt.get(i);if(o)switch(o.windowStartMs=Math.min(o.windowStartMs,s.windowStartMs),o.type){case"count":o.total=((e=o.total)!==null&&e!==void 0?e:0)+((n=s.total)!==null&&n!==void 0?n:0);break;case"gauge":break;case"histogram":if(s.hist)if(o.hist){o.hist.count+=s.hist.count,o.hist.sum+=s.hist.sum,o.hist.min=Math.min(o.hist.min,s.hist.min),o.hist.max=Math.max(o.hist.max,s.hist.max);for(var a=0;o.hist.bucketCounts.length>a;a++)o.hist.bucketCounts[a]+=s.hist.bucketCounts[a]}else o.hist=s.hist}else this.Qt()&&this.Bt.set(i,s)}}};var Cr,dl,hs;function np(t){var e=globalThis._posthogChunkIds;if(e){var n=Object.keys(e);return hs&&n.length===dl||(dl=n.length,hs=n.reduce(((r,i)=>{Cr||(Cr={});var s=Cr[i];if(s)r[s[0]]=s[1];else for(var o=t(i),a=o.length-1;a>=0;a--){var l=o[a],u=l?.filename,c=e[i];if(u&&c){r[u]=c,Cr[i]=[u,c];break}}return r}),{})),hs}}class rp{constructor(e,n,r){r===void 0&&(r=[]),this.coercers=e,this.stackParser=n,this.modifiers=r}buildFromUnknown(e,n){n===void 0&&(n={});var r=n&&n.mechanism||{handled:!0,type:"generic"},i=this.buildCoercingContext(r,n,0).apply(e),s=this.buildParsingContext(n),o=this.parseStacktrace(i,s);return{$exception_list:this.convertToExceptionList(o,r),$exception_level:"error"}}modifyFrames(e){var n=this;return X((function*(){for(var r of e)r.stacktrace&&r.stacktrace.frames&&L(r.stacktrace.frames)&&(r.stacktrace.frames=yield n.applyModifiers(r.stacktrace.frames));return e}))()}coerceFallback(e){var n;return{type:"Error",value:"Unknown error",stack:(n=e.syntheticException)==null?void 0:n.stack,synthetic:!0}}parseStacktrace(e,n){var r,i;return e.cause!=null&&(r=this.parseStacktrace(e.cause,n)),e.stack!=""&&e.stack!=null&&(i=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?n.skipFirstLines:0),n.chunkIdMap)),E({},e,{cause:r,stack:i})}applyChunkIds(e,n){return e.map((r=>(r.filename&&n&&(r.chunk_id=n[r.filename]),r)))}applyCoercers(e,n){for(var r of this.coercers)if(r.match(e))return r.coerce(e,n);return this.coerceFallback(n)}applyModifiers(e){var n=this;return X((function*(){var r=e;for(var i of n.modifiers)r=yield i(r);return r}))()}convertToExceptionList(e,n){var r,i,s,o={type:e.type,value:e.value,mechanism:{type:(r=n.type)!==null&&r!==void 0?r:"generic",handled:(i=n.handled)===null||i===void 0||i,synthetic:(s=e.synthetic)!==null&&s!==void 0&&s}};e.stack&&(o.stacktrace={type:"raw",frames:e.stack});var a=[o];return e.cause!=null&&a.push(...this.convertToExceptionList(e.cause,E({},n,{handled:!0}))),a}buildParsingContext(e){var n;return{chunkIdMap:np(this.stackParser),skipFirstLines:(n=e.skipFirstLines)!==null&&n!==void 0?n:1}}buildCoercingContext(e,n,r){r===void 0&&(r=0);var i=(s,o)=>{if(4>=o){var a=this.buildCoercingContext(e,n,o);return this.applyCoercers(s,a)}};return E({},n,{syntheticException:r==0?n.syntheticException:void 0,mechanism:e,apply:s=>i(s,r),next:s=>i(s,r+1)})}}var wn="?";function Xs(t,e,n,r,i){var s={platform:t,filename:e,function:n===""?wn:n,in_app:!0};return x(r)||(s.lineno=r),x(i)||(s.colno=i),s}var yu=(t,e)=>{var n=t.indexOf("safari-extension")!==-1,r=t.indexOf("safari-web-extension")!==-1;return n||r?[t.indexOf("@")!==-1?t.split("@")[0]:wn,n?"safari-extension:"+e:"safari-web-extension:"+e]:[t,e]},ip=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,sp=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,op=/\((\S*)(?::(\d+))(?::(\d+))\)/,ap=(t,e)=>{var n=ip.exec(t);if(n)return Xs(e,n[1],wn,+n[2],+n[3]);var r=sp.exec(t);if(r){if(r[2]&&r[2].indexOf("eval")===0){var i=op.exec(r[2]);i&&(r[2]=i[1],r[3]=i[2],r[4]=i[3])}var s=yu(r[1]||wn,r[2]);return Xs(e,s[1],s[0],r[3]?+r[3]:void 0,r[4]?+r[4]:void 0)}},lp=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,cp=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,up=(t,e)=>{var n=lp.exec(t);if(n){if(n[3]&&n[3].indexOf(" > eval")>-1){var r=cp.exec(n[3]);r&&(n[1]=n[1]||"eval",n[3]=r[1],n[4]=r[2],n[5]="")}var i=n[3],s=n[1]||wn,o=yu(s,i);return Xs(e,i=o[1],s=o[0],n[4]?+n[4]:void 0,n[5]?+n[5]:void 0)}},hl=/\(error: (.*)\)/;class dp{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,n){var r=W(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:r?e.stack:void 0,cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){var n=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?n+": "+e.message:n}isDOMException(e){return ei(e,"DOMException")}isDOMError(e){return ei(e,"DOMError")}}class hp{match(e){return(function(n){switch({}.toString.call(n)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object DOMError]":case"[object WebAssembly.Exception]":return!0;default:return Gc(n,Error)}})(e)}coerce(e,n){return{type:this.getType(e),value:this.getMessage(e,n),stack:this.getStack(e),cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,n){var r=e.message;return String(r.error&&typeof r.error.message=="string"?r.error.message:r)}getStack(e){return e.stacktrace||e.stack||void 0}}class pp{constructor(){}match(e){return!!ei(e,"ErrorEvent")&&(e.error!=null||this.fe(e))}coerce(e,n){var r;if(e.error!=null)return n.apply(e.error);var i=n.apply(e.message);return E({},i,{stack:(r=this.pe(e))!==null&&r!==void 0?r:i.stack,synthetic:!0})}fe(e){return W(e.message)&&e.message.length>0}pe(e){var n=e;if(W(n.filename)&&n.filename.length>0){var r,i,s=(r=n.lineno)!==null&&r!==void 0?r:0,o=(i=n.colno)!==null&&i!==void 0?i:0;return`Error - at `+n.filename+":"+s+":"+o}}}var fp=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class gp{match(e){return typeof e=="string"}coerce(e,n){var r,i=this.getInfos(e),s=i[0],o=i[1];return{type:s??"Error",value:o??e,stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}}getInfos(e){var n="Error",r=e,i=e.match(fp);return i&&(n=i[1],r=i[2]),[n,r]}}var mp=["fatal","error","warning","log","info","debug"];function wu(t,e){e===void 0&&(e=40);var n=Object.keys(t);if(n.sort(),!n.length)return"[object has no keys]";for(var r=n.length;r>0;r--){var i=n.slice(0,r).join(", ");if(e>=i.length)return r===n.length?i:i.length>e?i.slice(0,e)+"...":i}return""}class vp{match(e){return typeof e=="object"&&e!==null}coerce(e,n){var r,i,s=this.getErrorPropertyFromObject(e);return s?n.apply(s):{type:this.getType(e),value:this.getValue(e),stack:(r=this.getStack(e))!==null&&r!==void 0?r:(i=n.syntheticException)==null?void 0:i.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return Zo(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){var n="'"+e.name+"' captured as exception";return"message"in e&&typeof e.message=="string"&&(n+=" with message: '"+e.message+"'"),n}if("message"in e&&typeof e.message=="string")return e.message;var r=this.getObjectClassName(e);return(r&&r!=="Object"?"'"+r+"'":"Object")+" captured as exception with keys: "+wu(e)}isSeverityLevel(e){return W(e)&&!Gs(e)&&mp.indexOf(e)>=0}getStack(e){try{return W(e.stacktrace)&&e.stacktrace.length>0?e.stacktrace:W(e.stack)&&e.stack.length>0?e.stack:void 0}catch{return}}getErrorPropertyFromObject(e){for(var n in e)if({}.hasOwnProperty.call(e,n)){var r=e[n];if(Zh(r))return r}}getObjectClassName(e){try{var n=Object.getPrototypeOf(e);return n?n.constructor.name:void 0}catch{return}}}class _p{match(e){return Zo(e)}coerce(e,n){var r,i=e.constructor.name;return{type:i,value:i+" captured as exception with keys: "+wu(e),stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}}}class yp{match(e){return Vc(e)}coerce(e,n){var r;return{type:"Error",value:"Primitive value captured as exception: "+String(e),stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}}}class wp{match(e){return ei(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!Zo(e))return!1;try{var n=e.detail;return n!=null&&typeof n=="object"&&"reason"in n}catch{return!1}}coerce(e,n){var r,i=this.getUnhandledRejectionReason(e);return Vc(i)?{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(i),stack:(r=n.syntheticException)==null?void 0:r.stack,synthetic:!0}:n.apply(i)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}var oi="$message",ai="$timestamp",bp=new Set([oi,ai]),ps={enabled:!0,max_bytes:32768};function li(t){var e;return t?{enabled:(e=t.enabled)!==null&&e!==void 0?e:ps.enabled,max_bytes:Sp(t.max_bytes,ps.max_bytes)}:E({},ps)}class Ep{constructor(e){this.Ke=[],this.Je=0,this.Ne=li(e)}setConfig(e){this.Ne=li(e),this.Xe()}add(e){var n=(function(i){var s;try{s=Wc(i)}catch{return}try{var o=JSON.parse(s);if(!te(o))return;var a=o,l=a[oi],u=a[ai];return!W(l)||l.trim().length===0||!W(u)&&!he(u)?void 0:{step:a,json:s}}catch{return}})(e);if(n){var r=(function(i){if(typeof TextEncoder<"u")return new TextEncoder().encode(i).length;for(var s=encodeURIComponent(i),o=0,a=0;s.length>a;a++)s[a]==="%"?(o+=1,a+=2):o+=1;return o})(n.json);r>this.Ne.max_bytes||(this.Ke.push({step:n.step,bytes:r}),this.Je+=r,this.Xe())}}getAttachable(){return this.Ke.map((e=>e.step))}clear(){this.Ke=[],this.Je=0}size(){return this.Ke.length}Xe(){for(;this.Je>this.Ne.max_bytes&&this.Ke.length>0;){var e=this.Ke.shift();e&&(this.Je-=e.bytes)}}}function Sp(t,e){if(!he(t)||t===1/0||t===-1/0)return e;var n=Math.floor(t);return 0>n?e:n}var bu=function(t,e){var n=(e===void 0?{}:e).debugEnabled,r={k(i){if(v&&(Y.DEBUG||v.POSTHOG_DEBUG||n)&&!x(v.console)&&v.console){for(var s=("__rrweb_original__"in v.console[i])?v.console[i].__rrweb_original__:v.console[i],o=arguments.length,a=new Array(o>1?o-1:0),l=1;o>l;l++)a[l-1]=arguments[l];s(t,...a)}},debug(){for(var i=arguments.length,s=new Array(i),o=0;i>o;o++)s[o]=arguments[o];r.k("debug",...s)},info(){for(var i=arguments.length,s=new Array(i),o=0;i>o;o++)s[o]=arguments[o];r.k("log",...s)},warn(){for(var i=arguments.length,s=new Array(i),o=0;i>o;o++)s[o]=arguments[o];r.k("warn",...s)},error(){for(var i=arguments.length,s=new Array(i),o=0;i>o;o++)s[o]=arguments[o];r.k("error",...s)},critical(){for(var i=arguments.length,s=new Array(i),o=0;i>o;o++)s[o]=arguments[o];console.error(t,...s)},uninitializedWarning(i){r.error("You must initialize PostHog before calling "+i)},createLogger:(i,s)=>bu(t+" "+i,s)};return r},k=bu("[PostHog.js]"),ne=k.createLogger,xp=ne("[ExternalScriptsLoader]"),fs=(t,e,n)=>{if(t.config.disable_external_dependency_loading)return xp.warn(e+" was requested but loading of external scripts is disabled."),n("Loading of external scripts is disabled");var r=C?.querySelectorAll("script");if(r){for(var i,s=function(){if(r[o].src===e){var l=r[o];return l.__posthog_loading_callback_fired?{v:n()}:(l.addEventListener("load",(u=>{l.__posthog_loading_callback_fired=!0,n(void 0,u)})),l.onerror=u=>n(u),{v:void 0})}},o=0;r.length>o;o++)if(i=s())return i.v}var a=()=>{if(!C)return n("document not found");var l=C.createElement("script");if(l.type="text/javascript",l.crossOrigin="anonymous",l.src=e,l.onload=d=>{l.__posthog_loading_callback_fired=!0,n(void 0,d)},l.onerror=d=>n(d),t.config.prepare_external_dependency_script&&(l=t.config.prepare_external_dependency_script(l)),!l)return n("prepare_external_dependency_script returned null");if(t.config.external_scripts_inject_target==="head")C.head.appendChild(l);else{var u,c=C.querySelectorAll("body > script");c.length>0?(u=c[0].parentNode)==null||u.insertBefore(l,c[0]):C.body.appendChild(l)}};C!=null&&C.body?a():C?.addEventListener("DOMContentLoaded",a)};$.__PosthogExtensions__=$.__PosthogExtensions__||{},$.__PosthogExtensions__.loadExternalDependency=(t,e,n)=>{if(e!=="remote-config"){var r;if(t.config.strict_script_versioning)r=t.requestRouter.endpointFor("assets","/static/"+t.version+"/"+e+".js");else{var i="/static/"+e+".js?v="+t.version;if(e==="toolbar"){var s=3e5;i=i+"&t="+Math.floor(Date.now()/s)*s}r=t.requestRouter.endpointFor("assets",i)}fs(t,r,n)}else{var o=t.requestRouter.endpointFor("assets","/array/"+t.config.token+"/config.js");fs(t,o,n)}},$.__PosthogExtensions__.loadSiteApp=(t,e,n)=>{var r=t.requestRouter.endpointFor("api",e);fs(t,r,n)};Y.DEBUG=!1,Y.LIB_VERSION="1.415.7",Y.LIB_NAME="web";var Eu="$people_distinct_id",lr="$device_id",gs="$device_model",qn="__alias",Vn="__timers",Qs="$autocapture_disabled_server_side",eo="$heatmaps_enabled_server_side",to="$exception_capture_enabled_server_side",no="$error_tracking_suppression_rules",ro="$error_tracking_capture_extension_exceptions",io="$web_vitals_enabled_server_side",ra="$dead_clicks_enabled_server_side",ia="$product_tours_enabled_server_side",so="$web_vitals_allowed_metrics",Jt="$session_recording_remote_config",Su="$replay_sample_rate",xu="$replay_override_sampling",ku="$replay_override_linked_flag",Iu="$replay_override_url_trigger",Cu="$replay_override_event_trigger",hn="$sesid",sa="$session_is_sampled",Wt="$enabled_feature_flags",Gn="$active_feature_flags",Ur="$early_access_features",oo="$feature_flag_details",Kn="$feature_flag_payloads",Hr="$feature_flag_request_id",ci="$minimal_flag_called_events",rt="$override_feature_flags",zt="$override_feature_flag_payloads",ht="$stored_person_properties",qt="$stored_group_properties",ao="$surveys",ui="$surveys_loaded_at",lo="$surveys_activated",Wr="$surveys_activated_session",zr="$surveys_activated_timestamps",Jn="ph_product_tours",Gt="$flag_call_reported",Yn="$flag_call_reported_session_id",qr="$feature_flag_errors",Qn="$feature_flag_evaluated_at",He="$user_state",co="$client_session_props",uo="$capture_rate_limit",ho="$initial_campaign_params",po="$initial_referrer_info",di="$initial_person_info",hi="$epp",Ar="$posthog_cookieless",Au="$cookieless_mode",Fu="$sdk_debug_extensions_init_method",Pu="$sdk_debug_extensions_init_time_ms",$u="$sdk_debug_recording_script_not_loaded",oa="PostHog loadExternalDependency extension not found.",Vt="on_reject",gt="always",rn="anonymous",Ot="identified",fo="identified_only",pi="visibilitychange",fi="beforeunload",cn="$pageview",ms="$pageleave",vs="$identify",pl="$groupidentify";function Fr(t,e){L(t)&&t.forEach(e)}function Z(t,e){if(!B(t))if(L(t))t.forEach(e);else if(Mh(t))t.forEach(((r,i)=>e(r,i)));else for(var n in t)qc.call(t,n)&&e(t[n],n)}var ee=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];for(var i of n)for(var s in i)i[s]!==void 0&&(t[s]=i[s]);return t};function Vr(t){for(var e=Object.keys(t),n=e.length,r=new Array(n);n--;)r[n]=[e[n],t[e[n]]];return r}var fl=function(t){try{return t()}catch{return}},kp=function(t){return function(){try{for(var e=arguments.length,n=new Array(e),r=0;e>r;r++)n[r]=arguments[r];return t.apply(this,n)}catch(i){k.critical("Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A."),k.critical(i)}}},aa=function(t){var e={};return Z(t,(function(n,r){(W(n)&&n.length>0||he(n))&&(e[r]=n)})),e},Ip=["herokuapp.com","vercel.app","netlify.app"];function Cp(t){var e=t?.hostname;if(!W(e))return!1;var n=e.split(".").slice(-2).join(".");for(var r of Ip)if(n===r)return!1;return!0}function ie(t,e,n,r){var i=r??{},s=i.capture,o=i.passive;t?.addEventListener(e,n,{capture:s!==void 0&&s,passive:o===void 0||o})}function go(t){return t.name==="ph_toolbar_internal"}var Ru=t=>{if(C){try{for(var e=t+"=",n=C.cookie.split(";").filter((s=>s.length)),r=0;n.length>r;r++){for(var i=n[r];i.charAt(0)==" ";)i=i.substring(1,i.length);if(i.indexOf(e)===0)return decodeURIComponent(i.substring(e.length,i.length))}}catch{}return null}};Math.trunc||(Math.trunc=function(t){return 0>t?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return he(t)&&isFinite(t)&&Math.floor(t)===t});class gi{constructor(e){if(this.bytes=e,e.length!==16)throw new TypeError("not 128-bit length")}static fromFieldsV7(e,n,r,i){if(!Number.isInteger(e)||!Number.isInteger(n)||!Number.isInteger(r)||!Number.isInteger(i)||0>e||0>n||0>r||0>i||e>0xffffffffffff||n>4095||r>1073741823||i>4294967295)throw new RangeError("invalid field value");var s=new Uint8Array(16);return s[0]=e/Math.pow(2,40),s[1]=e/Math.pow(2,32),s[2]=e/Math.pow(2,24),s[3]=e/Math.pow(2,16),s[4]=e/256,s[5]=e,s[6]=112|n>>>8,s[7]=n,s[8]=128|r>>>24,s[9]=r>>>16,s[10]=r>>>8,s[11]=r,s[12]=i>>>24,s[13]=i>>>16,s[14]=i>>>8,s[15]=i,new gi(s)}toString(){for(var e="",n=0;this.bytes.length>n;n++)e=e+(this.bytes[n]>>>4).toString(16)+(15&this.bytes[n]).toString(16),n!==3&&n!==5&&n!==7&&n!==9||(e+="-");if(e.length!==36)throw new Error("Invalid UUIDv7 was generated");return e}clone(){return new gi(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(var n=0;16>n;n++){var r=this.bytes[n]-e.bytes[n];if(r!==0)return Math.sign(r)}return 0}}class Ap{generate(){var e=this.generateOrAbort();if(!x(e))return e;this.S=0;var n=this.generateOrAbort();if(x(n))throw new Error("Could not generate UUID after timestamp reset");return n}generateOrAbort(){var e=Date.now();if(e>this.S)this.S=e,this.C();else{if(this.S>=e+1e4)return;this.I++,this.I>4398046511103&&(this.S++,this.C())}return gi.fromFieldsV7(this.S,Math.trunc(this.I/Math.pow(2,30)),this.I&Math.pow(2,30)-1,this.A.nextUint32())}C(){this.I=1024*this.A.nextUint32()+(1023&this.A.nextUint32())}constructor(){this.S=0,this.I=0,this.A=new Fp}}var gl,Tu=t=>{if(typeof UUIDV7_DENY_WEAK_RNG<"u"&&UUIDV7_DENY_WEAK_RNG)throw new Error("no cryptographically strong RNG available");for(var e=0;t.length>e;e++)t[e]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};v&&!x(v.crypto)&&crypto.getRandomValues&&(Tu=t=>crypto.getRandomValues(t));class Fp{nextUint32(){return this.R.length>this.O||(Tu(this.R),this.O=0),this.R[this.O++]}constructor(){this.R=new Uint32Array(8),this.O=1/0}}var ft=()=>Pp().toString(),Pp=()=>(gl||(gl=new Ap)).generate(),Mn="",$p=/[a-z0-9][a-z0-9-]+\.[a-z]{2,}$/i,mt={N:()=>!!C,j(t){k.error("cookieStore error: "+t)},P:Ru,H(t){var e;try{e=JSON.parse(mt.P(t))||{}}catch{}return e},F(t,e,n,r,i){if(!C)return!1;try{var s="",o="",a=(function(c,d){if(d){var h=(function(f,g){if(g===void 0&&(g=C),Mn)return Mn;if(!g||["localhost","127.0.0.1"].includes(f))return"";for(var m=f.split("."),_=Math.min(m.length,8),w="dmn_chk_"+ft();!Mn&&_--;){var b=m.slice(_).join("."),I=w+"=1;domain=."+b+";path=/";g.cookie=I+";max-age=3",g.cookie.includes(w)&&(g.cookie=I+";max-age=0",Mn=b)}return Mn})(c);if(!h){var p=(f=>{var g=f.match($p);return g?g[0]:""})(c);p!==h&&k.info("Warning: cookie subdomain discovery mismatch",p,h),h=p}return h?"; domain=."+h:""}return""})(C.location.hostname,r);if(n){var l=new Date;l.setTime(l.getTime()+864e5*n),s="; expires="+l.toUTCString()}i&&(o="; secure");var u=t+"="+encodeURIComponent(JSON.stringify(e))+s+"; SameSite=Lax; path=/"+a+o;return u.length>3686.4&&k.warn("cookieStore warning: large cookie, len="+u.length),C.cookie=u,!0}catch{return!1}},q(t,e){if(C!=null&&C.cookie)try{mt.F(t,"",-1,e)}catch{return}}},_s=null,Q={N(){if(!$e(_s))return _s;var t=!0;if(x(v))t=!1;else try{var e="__mplssupport__";Q.F(e,"xyz"),Q.P(e)!=='"xyz"'&&(t=!1),Q.q(e)}catch{t=!1}return t||k.error("localStorage unsupported; falling back to cookie store"),_s=t,t},j(t){k.error("localStorage error: "+t)},P(t){try{return v?.localStorage.getItem(t)}catch(e){Q.j(e)}return null},H(t){try{return JSON.parse(Q.P(t))||{}}catch{}return null},F(t,e){try{return v?.localStorage.setItem(t,JSON.stringify(e)),!0}catch(n){Q.j(n)}return!1},q(t){try{v?.localStorage.removeItem(t)}catch(e){Q.j(e)}}},Rp=[lr,"distinct_id",hn,sa,hi,di,He],Pr={},Tp={N:()=>!0,j(t){k.error("memoryStorage error: "+t)},P:t=>Pr[t]||null,H:t=>Pr[t]||null,F:(t,e)=>(Pr[t]=e,!0),q(t){delete Pr[t]}},Bt=null,ce={N(){if(!$e(Bt))return Bt;if(Bt=!0,x(v))Bt=!1;else try{var t="__support__";ce.F(t,"xyz"),ce.P(t)!=='"xyz"'&&(Bt=!1),ce.q(t)}catch{Bt=!1}return Bt},j(t){k.error("sessionStorage error: ",t)},P(t){try{return v?.sessionStorage.getItem(t)}catch(e){ce.j(e)}return null},H(t){try{return JSON.parse(ce.P(t))||null}catch{}return null},F(t,e){try{return v?.sessionStorage.setItem(t,JSON.stringify(e)),!0}catch(n){ce.j(n)}return!1},q(t){try{v?.sessionStorage.removeItem(t)}catch(e){ce.j(e)}}};class Np{constructor(e){this._instance=e}get Ne(){return this._instance.config}get consent(){return this.ti()?0:this.ei}isOptedOut(){return this.Ne.cookieless_mode===gt||this.isRejected()||this.consent===-1&&this.Ne.cookieless_mode===Vt}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===0}isRejected(){return this.consent===0||this.consent===-1&&this.Ne.opt_out_capturing_by_default}optInOut(e){this.ii.F(this.ri,e?1:0,this.Ne.cookie_expiration,this.Ne.cross_subdomain_cookie,this.Ne.secure_cookie)}reset(){this.ii.q(this.ri,this.Ne.cross_subdomain_cookie)}get ri(){var e=this._instance.config,n=e.token,r=e.opt_out_capturing_cookie_prefix;return e.consent_persistence_name||(r?r+n:"__ph_opt_in_out_"+n)}get ei(){var e=this.ii.P(this.ri);return cs(e)?1:M(Dh,e)?0:-1}get ii(){var e=this.Ne.opt_out_capturing_persistence_type,n=e==="localStorage"?Q:mt;if(!this.ni||this.ni!==n){this.ni=n;var r=e==="localStorage"?mt:Q;r.P(this.ri)&&(this.ni.P(this.ri)||this.optInOut(cs(r.P(this.ri))),r.q(this.ri,this.Ne.cross_subdomain_cookie))}return this.ni}ti(){return!!this.Ne.respect_dnt&&[ke?.doNotTrack,ke?.msDoNotTrack,$.doNotTrack].some((e=>cs(e)))}}function Nu(t,e){var n,r=t==null||(n=t.config)==null?void 0:n.get_current_url;if(!Se(r))return e;try{var i=r(e);return W(i)&&i?i:e}catch(s){return k.error("Error in get_current_url, falling back to window.location.href",s),e}}var Mu="__POSTHOG_TOOLBAR__",Mp=1,Lp=3,Op=11;function ml(t){return t instanceof Element&&(t.id===Mu||!(t.closest==null||!t.closest(".toolbar-global-fade-container")))}function $t(t){return!!t&&t.nodeType===Mp}function Me(t,e){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===e.toLowerCase()}function Lu(t){return!!t&&t.nodeType===Lp}function Ou(t){return!!t&&t.nodeType===Op&&$t(t.host)}var Bu=1e3;function la(t){return t?Oi(t).split(/\s+/):[]}function vl(t,e){var n=(function(r){var i,s=v==null||(i=v.location)==null?void 0:i.href;return x(s)?void 0:Nu(r,s)})(e);return!!(n&&t&&t.some((r=>n.match(r))))}function mi(t){var e="";switch(typeof t.className){case"string":e=t.className;break;case"object":e=(t.className&&"baseVal"in t.className?t.className.baseVal:null)||t.getAttribute("class")||"";break;default:e=""}return la(e)}function Du(t){return B(t)?null:Oi(t).split(/(\s+)/).filter((e=>er(e))).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)}function cr(t){var e="";return vo(t)&&!Wu(t)&&t.childNodes&&t.childNodes.length&&Z(t.childNodes,(function(n){var r;Lu(n)&&n.textContent&&(e+=(r=Du(n.textContent))!==null&&r!==void 0?r:"")})),Oi(e)}function ys(t){var e;return x(t.target)?t.srcElement||null:(e=t.target)!=null&&e.shadowRoot?t.composedPath()[0]||null:t.target||null}var ca=["a","button","form","input","select","textarea","label"];function mo(t,e){if(x(e))return!0;var n,r=function(s){if(e.some((o=>(function(a,l){var u=a.matches||a.matchesSelector||a.msMatchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.oMatchesSelector;try{return!!u&&u.call(a,l)}catch{return!1}})(s,o))))return{v:!0}};for(var i of t)if(n=r(i))return n.v;return!1}function ju(t){var e=t.parentNode;return!(!e||!$t(e))&&e}var Bp=[".ph-no-autocapture","[data-ph-no-autocapture]"],Uu=["next","previous","prev",">","<"],Dp=[...Uu,"+","-","−","–"],_l=(t,e)=>/[a-z0-9]/i.test(e)?t.includes(e):t===e,yl=[".ph-no-rageclick",".ph-no-capture"],jp=["","text","search","email","password","url","tel","number"];function wl(t,e){if(!v||ua(t))return!1;var n,r,i,s,o;if(Ye(e)?(n=!!e&&yl,r=void 0,i=!1):(n=(s=e?.css_selector_ignorelist)!==null&&s!==void 0?s:yl,r=e?.content_ignorelist,i=(o=e?.ignore_text_selection)!==null&&o!==void 0&&o),n===!1||i&&(function(l){return!(!l||!$t(l))&&(!!Me(l,"textarea")||(Me(l,"input")?M(jp,(l.getAttribute("type")||"").toLowerCase()):(function(u){if(u.isContentEditable)return!0;var c=u.getAttribute==null?void 0:u.getAttribute("contenteditable");return c==="true"||c===""})(l)))})(t))return!1;var a=Hu(t,!1).targetElementList;return!(function(l,u){if(l===!1||x(l))return!1;var c;if(l===!0)c=Uu;else{if(!L(l))return!1;if(l.length>10)return k.error("[PostHog] content_ignorelist array cannot exceed 10 items. Use css_selector_ignorelist for more complex matching."),!1;c=l.map((d=>d.toLowerCase()))}return u.some((d=>{var h=d.safeText,p=d.ariaLabel;return c.some((f=>_l(h,f)||_l(p,f)))}))})(r,a.map((l=>{var u;return{safeText:cr(l).toLowerCase(),ariaLabel:((u=l.getAttribute("aria-label"))==null?void 0:u.toLowerCase().trim())||""}})))&&!mo(a,n)}var ua=t=>!t||Me(t,"html")||!$t(t),Hu=(t,e)=>{if(!v||ua(t))return{parentIsUsefulElement:!1,targetElementList:[]};for(var n=!1,r=[t],i=t;i.parentNode&&!Me(i,"body");)if(Ou(i.parentNode))r.push(i.parentNode.host),i=i.parentNode.host;else{var s=ju(i);if(!s)break;if(e||ca.indexOf(s.tagName.toLowerCase())>-1)n=!0;else try{var o=v.getComputedStyle(s);o&&o.getPropertyValue("cursor")==="pointer"&&(n=!0)}catch{}r.push(s),i=s}return{parentIsUsefulElement:n,targetElementList:r}};function vo(t){for(var e=new Set,n=0,r=t;r.parentNode&&!Me(r,"body");r=r.parentNode){if(n++>=Bu||e.has(r))return!1;e.add(r);var i=mi(r);if(M(i,"ph-sensitive")||M(i,"ph-no-capture"))return!1}if(M(mi(t),"ph-include"))return!0;var s=t.type||"";if(W(s))switch(s.toLowerCase()){case"hidden":case"password":return!1}var o=t.name||t.id||"";return!W(o)||!/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(o.replace(/[^a-zA-Z0-9]/g,""))}function Wu(t){return!!(Me(t,"input")&&!["button","checkbox","submit","reset"].includes(t.type)||Me(t,"select")||Me(t,"textarea")||t.getAttribute("contenteditable")==="true")}var bl=new RegExp("^(?:(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}))$"),El=/(^|[^0-9A-Za-z_])([0-9][0-9 -]*[0-9])(?=$|[^0-9A-Za-z_])/g,Up=[16,15,14,13],Hp=new RegExp("^(\\d{3}-?\\d{2}-?\\d{4})$"),Sl=new RegExp("(^|[^0-9])((?!000|666)[0-9]{3}-?(?!00)[0-9]{2}-?(?!0000)[0-9]{4})(?=$|([^0-9]))","g"),xl=/[0-9A-Za-z_]/;function Wp(t){for(var e=0,n=!1,r=t.length-1;r>=0;r--){var i=t.charCodeAt(r)-48;n&&(i*=2)>9&&(i-=9),e+=i,n=!n}return e%10==0}function er(t,e){if(e===void 0&&(e=!0),B(t))return!1;if(W(t)){t=Oi(t);var n=e?bl.test((t||"").replace(/[- ]/g,"")):(function(i){var s;for(El.lastIndex=0;s=El.exec(i);){var o=s[2];if(o)for(var a=o.replace(/[- ]/g,""),l=0;a.length>l;l++)for(var u of Up){var c=l+u;if(a.length>=c){var d=a.slice(l,c);if(bl.test(d)&&Wp(d))return!0}}}return!1})(t);if(n)return!1;var r=e?Hp.test(t):(function(i){var s;for(Sl.lastIndex=0;s=Sl.exec(i);){var o=s[1],a=s[3];if(!(o&&a&&xl.test(o)&&xl.test(a)))return!0}return!1})(t);if(r)return!1}return!0}function kl(t){var e=cr(t);return er(e=(e+" "+zu(t)).trim())?e:""}function zu(t){var e="";return t&&t.childNodes&&t.childNodes.length&&Z(t.childNodes,(function(n){var r;if(n&&((r=n.tagName)==null?void 0:r.toLowerCase())==="span")try{var i=cr(n);e=(e+" "+i).trim(),n.childNodes&&n.childNodes.length&&(e=(e+" "+zu(n)).trim())}catch(s){k.error("[AutoCapture]",s)}})),e}function Il(t){return t.replace(/"|\\"/g,'\\"')}function zp(t){var e=t.attr__class;if(e)return L(e)?e:la(e)}var $r=ne("[Dead Clicks]"),qp=()=>!0,Vp=t=>{var e,n=!((e=t.instance.persistence)==null||!e.get_property(ra)),r=t.instance.config.capture_dead_clicks;return Ye(r)?r:!!te(r)||n};class Cl{get lazyLoadedDeadClicksAutocapture(){return this.si}constructor(e,n,r){this.instance=e,this.isEnabled=n,this.onCapture=r,this.startIfEnabledOrStop()}onRemoteConfig(e){if(e.ok){var n=e.config;"captureDeadClicks"in n&&(this.instance.persistence&&this.instance.persistence.register({[ra]:n.captureDeadClicks}),this.startIfEnabledOrStop())}}startIfEnabledOrStop(){this.isEnabled(this)?this.ai((()=>{this.oi()})):this.stop()}ai(e){var n,r;(n=$.__PosthogExtensions__)!=null&&n.initDeadClicksAutocapture?e():(r=$.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this.instance,"dead-clicks-autocapture",(i=>{i?$r.error("failed to load script",i):e()}))}oi(){var e;if(C){if(!this.si&&(e=$.__PosthogExtensions__)!=null&&e.initDeadClicksAutocapture){var n=te(this.instance.config.capture_dead_clicks)?E({},this.instance.config.capture_dead_clicks):{};n.__onCapture=this.onCapture,this.onCapture&&(n.capture_dead_swipes=!1),this.si=$.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,n),this.si.start(C),$r.info("starting...")}}else $r.error("`document` not found. Cannot start.")}stop(){this.si&&(this.si.stop(),this.si=void 0,$r.info("stopping..."))}}var ws=ne("[SegmentIntegration]"),qu="posthog-js";function Vu(t,e){var n=e===void 0?{}:e,r=n.organization,i=n.projectId,s=n.prefix,o=n.severityAllowList,a=o===void 0?["error"]:o,l=n.sendExceptionsToPostHog,u=l===void 0||l;return c=>{var d,h,p,f,g;if(a!=="*"&&!a.includes(c.level)||!t.__loaded)return c;c.tags||(c.tags={});var m=t.requestRouter.endpointFor("ui","/project/"+t.config.token+"/person/"+t.get_distinct_id());c.tags["PostHog Person URL"]=m,t.sessionRecordingStarted()&&(c.tags["PostHog Recording URL"]=t.get_session_replay_url({withTimestamp:!0}));var _,w=((d=c.exception)==null?void 0:d.values)||[],b=w.map((A=>E({},A,{stacktrace:A.stacktrace?E({},A.stacktrace,{type:"raw",frames:(A.stacktrace.frames||[]).map((F=>E({},F,{platform:"web:javascript"})))}):void 0}))),I={$exception_message:((h=w[0])==null?void 0:h.value)||c.message,$exception_type:(p=w[0])==null?void 0:p.type,$exception_level:c.level,$exception_list:b,$sentry_event_id:c.event_id,$sentry_exception:c.exception,$sentry_exception_message:((f=w[0])==null?void 0:f.value)||c.message,$sentry_exception_type:(g=w[0])==null?void 0:g.type,$sentry_tags:c.tags};return r&&i&&(I.$sentry_url=(s||"https://sentry.io/organizations/")+r+"/issues/?project="+i+"&query="+c.event_id),u&&((_=t.exceptions)==null||_.sendExceptionEvent(I)),c}}class Gp{constructor(e,n,r,i,s,o){this.name=qu,this.setupOnce=function(a){a(Vu(e,{organization:n,projectId:r,prefix:i,severityAllowList:s,sendExceptionsToPostHog:o==null||o}))}}}class Al{constructor(e){this.li=(n,r,i)=>{i&&(i.noSessionId||i.activityTimeout||i.sessionPastMaximumLength||i.crossTabAdoption)&&(k.info("[PageViewManager] Session rotated, clearing pageview state",{sessionId:n,changeReason:i}),this.ui=void 0,this._instance.scrollManager.resetContext())},this._instance=e,this.hi()}hi(){var e;this.di=(e=this._instance.sessionManager)==null?void 0:e.onSessionId(this.li)}destroy(){var e;(e=this.di)==null||e.call(this),this.di=void 0}doPageView(e,n){var r,i=this.vi(e,n);return this.ui={pathname:(r=v?.location.pathname)!==null&&r!==void 0?r:"",pageViewId:n,timestamp:e},this._instance.scrollManager.resetContext(),i}doPageLeave(e){var n;return this.vi(e,(n=this.ui)==null?void 0:n.pageViewId)}doEvent(){var e;return{$pageview_id:(e=this.ui)==null?void 0:e.pageViewId}}vi(e,n){var r=this.ui;if(!r)return{$pageview_id:n};var i={$pageview_id:n,$prev_pageview_id:r.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var o=s.maxScrollHeight,a=s.lastScrollY,l=s.maxScrollY,u=s.maxContentHeight,c=s.lastContentY,d=s.maxContentY;if(!(x(o)||x(a)||x(l)||x(u)||x(c)||x(d))){o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),c=Math.ceil(c),d=Math.ceil(d);var h=o>1?ot(a/o,0,1,k):1,p=o>1?ot(l/o,0,1,k):1,f=u>1?ot(c/u,0,1,k):1,g=u>1?ot(d/u,0,1,k):1;i=ee(i,{$prev_pageview_last_scroll:a,$prev_pageview_last_scroll_percentage:h,$prev_pageview_max_scroll:l,$prev_pageview_max_scroll_percentage:p,$prev_pageview_last_content:c,$prev_pageview_last_content_percentage:f,$prev_pageview_max_content:d,$prev_pageview_max_content_percentage:g})}}return r.pathname&&(i.$prev_pageview_pathname=r.pathname),r.timestamp&&(i.$prev_pageview_duration=(e.getTime()-r.timestamp.getTime())/1e3),i}}var bs=["flags","surveys"],Kp={[Eu]:{exposure:"hidden"},[qn]:{exposure:"hidden"},__cmpns:{exposure:"hidden"},[Vn]:{exposure:"hidden"},[Qs]:{exposure:"event"},[eo]:{exposure:"hidden"},[to]:{exposure:"event"},[no]:{exposure:"hidden"},[ro]:{exposure:"event"},[io]:{exposure:"event"},[ra]:{exposure:"event"},[ia]:{exposure:"hidden"},[so]:{exposure:"event"},[Jt]:{exposure:"hidden"},$session_recording_enabled_server_side:{exposure:"hidden"},[hn]:{exposure:"hidden"},[sa]:{exposure:"event"},[Su]:{exposure:"event",shouldSkipFromEventProperties:t=>$e(t)},$session_past_minimum_duration:{exposure:"event"},$session_recording_url_trigger_activated_session:{exposure:"event"},$session_recording_event_trigger_activated_session:{exposure:"event"},$debug_first_full_snapshot_timestamp:{exposure:"event"},$sess_rec_flush_size:{exposure:"hidden"},[Wt]:{exposure:"hidden",storageGroup:"flags"},[Gn]:{exposure:"hidden",storageGroup:"flags"},[Ur]:{exposure:"hidden"},[oo]:{exposure:"hidden",storageGroup:"flags"},[Kn]:{exposure:"hidden",storageGroup:"flags"},[Hr]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[ci]:{exposure:"hidden",storageGroup:"flags"},[rt]:{exposure:"hidden"},[zt]:{exposure:"hidden"},[ht]:{exposure:"hidden"},[qt]:{exposure:"hidden"},[ao]:{exposure:"hidden",storageGroup:"surveys"},[ui]:{exposure:"hidden",storageGroup:"surveys",volatile:!0},[lo]:{exposure:"event"},[Wr]:{exposure:"hidden"},[zr]:{exposure:"hidden"},[Jn]:{exposure:"hidden"},$product_tours_activated:{exposure:"hidden"},$product_tours_activated_session:{exposure:"hidden"},$conversations_widget_session_id:{exposure:"event"},$conversations_ticket_id:{exposure:"event"},$conversations_widget_state:{exposure:"event"},$conversations_user_traits:{exposure:"event"},[Gt]:{exposure:"hidden"},[Yn]:{exposure:"hidden"},[qr]:{exposure:"hidden"},[Qn]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[He]:{exposure:"hidden"},[co]:{exposure:"hidden"},[uo]:{exposure:"hidden"},[ho]:{exposure:"hidden"},[po]:{exposure:"hidden"},[di]:{exposure:"hidden"},[hi]:{exposure:"hidden"},[xu]:{exposure:"event"},[ku]:{exposure:"event"},[Iu]:{exposure:"event"},[Cu]:{exposure:"event"},[Fu]:{exposure:"event"},[Pu]:{exposure:"event"},[$u]:{exposure:"event"},$sdk_debug_replay_event_trigger_status:{exposure:"event"},$sdk_debug_replay_linked_flag_trigger_status:{exposure:"event"},$sdk_debug_replay_matched_recording_trigger_groups:{exposure:"event"},$sdk_debug_replay_remote_trigger_matching_config:{exposure:"event"},$sdk_debug_replay_trigger_groups_count:{exposure:"event"},$sdk_debug_replay_url_trigger_status:{exposure:"event"},$session_recording_start_reason:{exposure:"event"}},Jp=[["$posthog_sr_group_event_trigger_",{exposure:"hidden"}],["$posthog_sr_group_url_trigger_",{exposure:"hidden"}],["$posthog_sr_group_sampling_",{exposure:"hidden"}]],Dt=t=>{var e=Kp[t];if(e)return e;for(var n of Jp){var r=n[1];if(t.indexOf(n[0])===0)return r}},pn=(t,e)=>{try{return JSON.stringify(t,((n,r)=>typeof r=="bigint"?r.toString():r),e)}catch{return Wc(t)}},vi=t=>{var e=C?.createElement("a");return x(e)?null:(e.href=t,e)},bn=function(t,e){for(var n,r=((t.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),i=0;r.length>i;i++){var s=r[i].split("=");if(s[0]===e){n=s;break}}if(!L(n)||2>n.length)return"";var o=n[1];try{o=decodeURIComponent(o)}catch{k.error("Skipping decoding for malformed query param: "+o)}return o.replace(/\+/g," ")},ur=function(t,e,n){if(!t||!e||!e.length)return t;for(var r=t.split("#"),i=r[1],s=(r[0]||"").split("?"),o=s[1],a=s[0],l=(o||"").split("&"),u=[],c=0;l.length>c;c++){var d=l[c].split("=");L(d)&&(e.includes(d[0])?u.push(d[0]+"="+n):u.push(l[c]))}var h=a;return o!=null&&(h+="?"+u.join("&")),i!=null&&(h+="#"+i),h},_i=function(t,e){var n=t.match(new RegExp(e+"=([^&]*)"));return n?n[1]:null},Gu=(t,e)=>t>=e&&jc(),Ku=(t,e,n,r)=>{if(t===0){if(jc()){var i=e+1;return i===n&&r(),i}return e}return 0},Rr="https?://(.*)",En=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],Yp=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid",...En],dr="",Zp=["li_fat_id"];function Ju(t,e,n){if(!C)return{};var r,i=e?[...En,...n||[]]:[],s=Yu(ur(C.URL,i,dr),t),o=(r={},Z(Zp,(function(a){var l=Ru(a);r[a]=l||null})),r);return ee(o,s)}function Yu(t,e){var n=Yp.concat(e||[]),r={};return Z(n,(function(i){var s=bn(t,i);r[i]=s||null})),r}function Zu(t){var e=(function(s){return s?s.search(Rr+"google.([^/?]*)")===0?"google":s.search(Rr+"bing.com")===0?"bing":s.search(Rr+"yahoo.com")===0?"yahoo":s.search(Rr+"duckduckgo.com")===0?"duckduckgo":null:null})(t),n=e!="yahoo"?"q":"p",r={};if(!$e(e)){r.$search_engine=e;var i=C?bn(C.referrer,n):"";i.length&&(r.ph_keyword=i)}return r}function Fl(){return navigator.language||navigator.userLanguage}var yi="$direct";function Xu(){return C?.referrer||yi}function Qu(t,e,n){n===void 0&&(n=!1);var r=t?[...En,...e||[]]:[],i=n?Pt(re?.href):re?.href,s=i?.substring(0,1e3);return{r:Xu().substring(0,1e3),u:s?ur(s,r,dr):void 0}}function ed(t,e){var n;e===void 0&&(e=!1);var r=t.r,i=t.u,s=e?Pt(i):i,o={$referrer:r,$referring_domain:r==null?void 0:r==yi?yi:(n=vi(r))==null?void 0:n.host};if(s){o.$current_url=s;var a=vi(s);o.$host=a?.host,o.$pathname=a?.pathname;var l=Yu(s);ee(o,l)}if(r){var u=Zu(r);ee(o,u)}return o}function td(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function Xp(){try{return new Date().getTimezoneOffset()}catch{return}}var Qp={flags:Qn,surveys:ui},ef=["cookie","localstorage","localstorage+cookie","sessionstorage","memory"],sn="main";class Es{constructor(e,n,r){if(r===void 0&&(r=!0),this.ci={},this.fi=!1,this.pi=!1,this.Ne=e,this.gi=r,this.props={},this.mi=void 0,this.yi=(s=>{var o="";return s.token&&(o=s.token.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ")),s.persistence_name?"ph_"+s.persistence_name:"ph_"+o+"_posthog"})(e),this.ii=this.bi(e),this.pi=this.wi(e),this.load(),e.debug&&k.info("Persistence loaded",e.persistence,E({},this.props)),this.update_config(e,e,n),this.save(),v){var i=()=>this.flush();ie(v,"beforeunload",i,{capture:!1}),ie(v,"pagehide",i,{capture:!1})}}ki(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return he(n)&&n>0?n:0}isDisabled(){return!!this.xi}bi(e){ef.indexOf(e.persistence.toLowerCase())===-1&&(k.critical("Unknown persistence type "+e.persistence+"; falling back to localStorage+cookie"),e.persistence="localStorage+cookie");var n,r=(function(o,a){o===void 0&&(o=[]),a===void 0&&(a=!1);var l=[...Rp,...o];return E({},Q,{H(u){try{var c={};try{c=mt.H(u)||{}}catch{}var d,h=JSON.parse(Q.P(u)||"{}");if(a){var p={};for(var f in c){var g=c[f];$e(g)||g===""||(p[f]=g)}d=ee(h,p)}else d=ee(c,h);return Q.F(u,d),d}catch{}return null},F(u,c,d,h,p,f){var g=Q.F(u,c,void 0,void 0,f);try{var m={};l.forEach((_=>{c[_]&&(m[_]=c[_])})),Object.keys(m).length&&mt.F(u,m,d,h,p,f)}catch(_){Q.j(_)}return g},q(u,c){try{v?.localStorage.removeItem(u),mt.q(u,c)}catch(d){Q.j(d)}}})})(e.cookie_persisted_properties||[],e.__preview_cookie_wins_on_conflict||!1),i=!1,s=e.persistence.toLowerCase();return s==="localstorage"&&Q.N()?(n=Q,i=!0):s==="localstorage+cookie"&&r.N()?(n=r,i=!0):s==="sessionstorage"&&ce.N()?n=ce:s==="memory"?n=Tp:s==="cookie"?n=mt:r.N()?(n=r,i=!0):n=mt,this.fi=i,n}Si(e){return this.yi+"__"+e}wi(e){return this.fi&&!!e.split_storage}properties(){var e={};return Z(this.props,((n,r)=>{var i=Dt(r);if(!i||i.exposure==="event"){if(i!=null&&i.shouldSkipFromEventProperties!=null&&i.shouldSkipFromEventProperties(n))return;e[r]=n}})),e}load(){if(!this.xi){var e=this.ii.H(this.yi);e&&(this.props=ee({},e)),this.pi&&this.Ci()}}Ci(){for(var e of bs){var n=Q.H(this.Si(e));if(n&&!yt(n)){var r=this.Mi(e);r.persisted=!0,this.Ti(e)||(r.fingerprint=this.Ei(n,e)),this.Ii(e,n)||ee(this.props,n)}}}Ti(e){return Object.keys(this.props).some((n=>{var r;return((r=Dt(n))==null?void 0:r.storageGroup)===e}))}Ii(e,n){var r=Qp[e];if(!r)return!1;var i=n[r],s=this.props[r];return he(i)&&he(s)&&s>i}refreshKey(e){var n;if(!this.xi){var r=this.pi?(n=Dt(e))==null?void 0:n.storageGroup:void 0,i=r?Q.H(this.Si(r)):this.ii.H(this.yi);if(i&&e in i)this.Pi(e,i[e]);else{if(r){var s=this.ii.H(this.yi);if(s&&e in s)return void this.Pi(e,s[e])}this.Ri(e)}}}save(){if(!this.xi){var e=this.ki();e>0?x(this.Ai)&&(this.Ai=setTimeout((()=>{this.Ai=void 0,this.Fi()}),e)):this.Fi()}}flush(){x(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0,this.Fi())}Fi(){this.xi||(this.pi?this.Li():this.Oi(this.ii,this.yi,this.props,sn))}Li(){var e=this.Di(),n=e.main,r=e.groups;for(var i of(this.Oi(this.ii,this.yi,n,sn),bs)){var s,o=r[i];(!yt(o)||(s=this.ci[i])!=null&&s.persisted)&&this.Oi(Q,this.Si(i),o,i)}}Di(){var e={},n={flags:{},surveys:{}};return Z(this.props,((r,i)=>{var s,o=(s=Dt(i))==null?void 0:s.storageGroup;o?n[o][i]=r:e[i]=r})),{main:e,groups:n}}Ei(e,n){if(n===sn)return JSON.stringify(e)+"|"+this.$i+"|"+this.Ni+"|"+this.qi;var r={};return Z(e,((i,s)=>{var o;r[s]=(o=Dt(s))!=null&&o.volatile?"__volatile__":i})),JSON.stringify(r)}Oi(e,n,r,i){var s=this.Mi(i);if(i===sn||s.dirty||x(s.fingerprint)){var o;try{if((o=this.Ei(r,i))===s.fingerprint)return void(s.dirty=!1)}catch{o=void 0}e.F(n,r,this.$i,this.Ni,this.qi,this.Ne.debug)?(s.dirty=!1,i!==sn&&(s.persisted=!0),x(o)||(s.fingerprint=o)):this.Ne.debug&&k.warn('failed to persist storage entry "'+n+'"; will retry on next save')}}remove(e){var n=(e===void 0?{}:e).keepGroupEntries,r=n!==void 0&&n;if(x(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0),this.ii.q(this.yi,!1),this.ii.q(this.yi,!0),!r&&this.gi)for(var i of bs)Q.q(this.Si(i));r?delete this.ci[sn]:this.ci={}}clear(){this.remove(),this.props={}}register_once(e,n,r){if(te(e)){x(n)&&(n="None"),this.$i=x(r)?this.ji:r;var i=!1;if(Z(e,((s,o)=>{this.props.hasOwnProperty(o)&&this.props[o]!==n||(this.Pi(o,s),i=!0)})),i)return this.save(),!0}return!1}register(e,n){if(te(e)){this.$i=x(n)?this.ji:n;var r=!1;if(Z(e,((i,s)=>{e.hasOwnProperty(s)&&(this.props[s]!==i||te(i)||L(i))&&(this.Pi(s,i),r=!0)})),r)return this.save(),!0}return!1}unregister(e){var n=typeof e=="string"?[e]:e,r=!1;for(var i of n)i in this.props&&(this.Ri(i),r=!0);r&&this.save()}update_campaign_params(){var e=C?.URL;if(e!==this.mi){var n=Ju(this.Ne.custom_campaign_params,this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties);yt(aa(n))||this.register(n),this.mi=e}}update_search_keyword(){var e;this.register((e=C?.referrer)?Zu(e):{})}update_referrer_info(){var e;this.register_once({$referrer:Xu(),$referring_domain:C!=null&&C.referrer&&((e=vi(C.referrer))==null?void 0:e.host)||yi},void 0)}set_initial_person_info(){this.props[ho]||this.props[po]||this.register_once({[di]:Qu(this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties,this.Ne.disable_capture_url_hashes)},void 0)}get_initial_props(){var e={};Z([po,ho],(i=>{var s=this.props[i];s&&Z(s,(function(o,a){e["$initial_"+Vs(a)]=o}))}));var n=this.props[di];if(n){var r=(function(i,s){s===void 0&&(s=!1);var o=ed(i,s),a={};return Z(o,(function(l,u){a["$initial_"+Vs(u)]=l})),a})(n,this.Ne.disable_capture_url_hashes);ee(e,r)}return e}safe_merge(e){return Z(this.props,(function(n,r){r in e||(e[r]=n)})),e}update_config(e,n,r){this.ji=this.$i=e.cookie_expiration,this.set_disabled(e.disable_persistence||!!r),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie);var i=e.persistence!==n.persistence||!((l,u)=>{if(l.length!==u.length)return!1;var c=[...l].sort(),d=[...u].sort();return c.every(((h,p)=>h===d[p]))})(e.cookie_persisted_properties||[],n.cookie_persisted_properties||[]),s=i?this.bi(e):this.ii,o=this.wi(e);if(i||o!==this.pi){var a=this.props;this.clear(),this.ii=s,this.pi=o,this.props=a,this.save()}}set_disabled(e){this.xi=e,this.xi?this.remove():this.save()}set_cross_subdomain(e){e!==this.Ni&&(this.Ni=e,this.remove({keepGroupEntries:!0}),this.save())}set_secure(e){e!==this.qi&&(this.qi=e,this.remove({keepGroupEntries:!0}),this.save())}set_event_timer(e,n){var r=this.props[Vn]||{};r[e]=n,this.Pi(Vn,r),this.save()}remove_event_timer(e){var n=this.props[Vn]||{},r=n[e];return x(r)||(delete n[e],this.Pi(Vn,n),this.save()),r}get_property(e){return this.props[e]}set_property(e,n){this.Pi(e,n),this.save()}Pi(e,n){var r;this.props[e]=n,(r=Dt(e))!=null&&r.volatile||this.Bi(e)}Ri(e){delete this.props[e],this.Bi(e)}Bi(e){var n,r=(n=Dt(e))==null?void 0:n.storageGroup;r&&(this.Mi(r).dirty=!0)}Mi(e){return this.ci[e]||(this.ci[e]={})}}function Tr(t){var e=!0;return{dispose(){if(e){e=!1;var n=t();n&&Se(n.then)&&n.then(void 0,(()=>{}))}}}}var xe={GZipJS:"gzip-js",Base64:"base64"},Ln={Activation:"events",Cancellation:"cancelEvents"},Ss={Popover:"popover",API:"api",Widget:"widget"},vt={SHOWN:"survey shown",DISMISSED:"survey dismissed",SENT:"survey sent"},xs={SURVEY_ID:"$survey_id",SURVEY_ITERATION:"$survey_iteration",SURVEY_LAST_SEEN_DATE:"$survey_last_seen_date"},_o={Popover:"popover",Inline:"inline"},tf={SHOWN:"product tour shown"},Pl={TOUR_LAST_SEEN_DATE:"$product_tour_last_seen_date",TOUR_TYPE:"$product_tour_type"},$l=ne("[RateLimiter]");class nf{constructor(e){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=n=>{var r=n.text;if(r&&r.length)try{(JSON.parse(r).quota_limited||[]).forEach((i=>{$l.info((i||"events")+" is quota limited."),this.serverLimits[i]=new Date().getTime()+6e4}))}catch(i){return void $l.warn('could not rate limit - continuing. Error: "'+i?.message+'"',{text:r})}},this.instance=e,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var e;return((e=this.instance.config.rate_limiting)==null?void 0:e.events_per_second)||10}get captureEventsBurstLimit(){var e;return Math.max(((e=this.instance.config.rate_limiting)==null?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(e){var n,r,i;e===void 0&&(e=!1);var s=this.captureEventsBurstLimit,o=this.captureEventsPerSecond,a=new Date().getTime(),l=(n=(r=this.instance.persistence)==null?void 0:r.get_property(uo))!==null&&n!==void 0?n:{tokens:s,last:a};l.tokens+=(a-l.last)/1e3*o,l.last=a,l.tokens>s&&(l.tokens=s);var u=1>l.tokens;if(u||e||(l.tokens=Math.max(0,l.tokens-1)),u&&!e){var c=(he(l.dropped)?l.dropped:0)+1;l.dropped=c,!this.lastEventRateLimited&&this.Hi(c)&&(l.dropped=0)}return this.lastEventRateLimited=u,(i=this.instance.persistence)==null||i.set_property(uo,l),{isRateLimited:u,remainingTokens:l.tokens}}Ui(e){var n=this.instance.config.property_denylist;return!L(n)||!n.includes(e)}zi(){var e;if(this.Ui("$current_url")&&this.Ui("$pathname")&&re!=null&&re.pathname)return""+((e=re.origin)!==null&&e!==void 0?e:"")+re.pathname}Hi(e){var n,r,i=this.captureEventsBurstLimit,s=this.captureEventsPerSecond,o=this.zi(),a=this.Ui("$session_id")?(n=(r=this.instance).get_session_id)==null?void 0:n.call(r):void 0,l=[e+" event(s) dropped since the last warning",o?"triggered on "+o:void 0,a?"session "+a:void 0].filter(Boolean).join(", ");return!!this.instance.capture("$$client_ingestion_warning",{$$client_ingestion_warning_message:"posthog-js client rate limited: "+l+". Config is set to "+s+" events per second and "+i+" events burst limit."},{skip_client_rate_limiting:!0})}isServerRateLimited(e){var n=this.serverLimits[e||"events"]||!1;return n!==!1&&new Date().getTime()e(this.remoteConfig))):e()}Vi(e){this._instance._send_request({method:"GET",url:this._instance.requestRouter.endpointFor("assets","/array/"+this._instance.config.token+"/config"),callback:e})}load(){try{if(this.remoteConfig)return Ct.info("Using preloaded remote config",this.remoteConfig),this.Zi(this.remoteConfig),void this.Gi();if(this._instance.Qi())return void Ct.warn("Remote config is disabled. Falling back to local config.");this.Wi((e=>{if(!e)return Ct.info("No config found after loading remote JS config. Falling back to JSON."),void this.Vi((n=>{this.Zi(n.json,n),this.Gi()}));this.Zi(e),this.Gi()}))}catch(e){Ct.error("Error loading remote config",e),this.Zi()}}stop(){this.Ki&&(clearInterval(this.Ki),this.Ki=void 0)}refresh(){!this._instance.Qi()&&C&&C.visibilityState!=="hidden"&&this._instance.reloadFeatureFlags()}Gi(){var e;if(!this.Ki){var n=(e=this._instance.config.remote_config_refresh_interval_ms)!==null&&e!==void 0?e:3e5;n!==0&&(this.Ki=setInterval((()=>{this.refresh()}),n))}}Zi(e,n){!e&&n&&(n.statusCode===0?n.error||Ct.warn("Failed to fetch remote config from PostHog."):Ct.error("Failed to fetch remote config from PostHog."));try{this._instance.Zi(e?{ok:!0,config:e}:{ok:!1})}catch(i){Ct.error("Error applying remote config",i)}if(e?.hasFeatureFlags!==!1&&!this._instance.config.advanced_disable_feature_flags_on_first_load)try{var r;(r=this._instance.featureFlags)==null||r.ensureFlagsLoaded()}catch(i){Ct.error("Error loading feature flags",i)}}}var qe=Uint8Array,Pe=Uint16Array,Sn=Uint32Array,da=new qe([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),ha=new qe([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),Rl=new qe([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),rd=function(t,e){for(var n=new Pe(31),r=0;31>r;++r)n[r]=e+=1<r;++r)for(var s=n[r];n[r+1]>s;++s)i[s]=s-n[r]<<5|r;return[n,i]},id=rd(da,2),yo=id[1];id[0][28]=258,yo[258]=28;for(var Tl=rd(ha,0)[1],sd=new Pe(32768),se=0;32768>se;++se){var on=(43690&se)>>>1|(21845&se)<<1;sd[se]=((65280&(on=(61680&(on=(52428&on)>>>2|(13107&on)<<2))>>>4|(3855&on)<<4))>>>8|(255&on)<<8)>>>1}var tr=function(t,e,n){for(var r=t.length,i=0,s=new Pe(e);r>i;++i)++s[t[i]-1];var o,a=new Pe(e);for(i=0;e>i;++i)a[i]=a[i-1]+s[i-1]<<1;for(o=new Pe(r),i=0;r>i;++i)o[i]=sd[a[t[i]-1]++]>>>15-t[i];return o},Xt=new qe(288);for(se=0;144>se;++se)Xt[se]=8;for(se=144;256>se;++se)Xt[se]=9;for(se=256;280>se;++se)Xt[se]=7;for(se=280;288>se;++se)Xt[se]=8;var wi=new qe(32);for(se=0;32>se;++se)wi[se]=5;var rf=tr(Xt,9),sf=tr(wi,5),od=function(t){return(t/8>>0)+(7&t&&1)},ad=function(t,e,n){(n==null||n>t.length)&&(n=t.length);var r=new(t instanceof Pe?Pe:t instanceof Sn?Sn:qe)(n-e);return r.set(t.subarray(e,n)),r},ct=function(t,e,n){var r=e/8>>0;t[r]|=n<<=7&e,t[r+1]|=n>>>8},On=function(t,e,n){var r=e/8>>0;t[r]|=n<<=7&e,t[r+1]|=n>>>8,t[r+2]|=n>>>16},ks=function(t,e){for(var n=[],r=0;t.length>r;++r)t[r]&&n.push({s:r,f:t[r]});var i=n.length,s=n.slice();if(!i)return[new qe(0),0];if(i==1){var o=new qe(n[0].s+1);return o[n[0].s]=1,[o,1]}n.sort((function(A,F){return A.f-F.f})),n.push({s:-1,f:25001});var a=n[0],l=n[1],u=0,c=1,d=2;for(n[0]={s:-1,f:a.f+l.f,l:a,r:l};c!=i-1;)a=n[n[d].f>n[u].f?u++:d++],l=n[u!=c&&n[d].f>n[u].f?u++:d++],n[c++]={s:-1,f:a.f+l.f,l:a,r:l};var h=s[0].s;for(r=1;i>r;++r)s[r].s>h&&(h=s[r].s);var p=new Pe(h+1),f=wo(n[c-1],p,0);if(f>e){r=0;var g=0,m=f-e,_=1<r;++r){var w=s[r].s;if(e>=p[w])break;g+=_-(1<>>=m;g>0;){var b=s[r].s;e>p[b]?g-=1<=0&&g;--r){var I=s[r].s;p[I]==e&&(--p[I],++g)}f=e}return[new qe(p),f]},wo=function(t,e,n){return t.s==-1?Math.max(wo(t.l,e,n+1),wo(t.r,e,n+1)):e[t.s]=n},Nl=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new Pe(++e),r=0,i=t[0],s=1,o=function(l){n[r++]=l},a=1;e>=a;++a)if(t[a]==i&&a!=e)++s;else{if(!i&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(i),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(i);s=1,i=t[a]}return[n.subarray(0,r),e]},Bn=function(t,e){for(var n=0,r=0;e.length>r;++r)n+=t[r]*e[r];return n},bo=function(t,e,n){var r=n.length,i=od(e+2);t[i]=255&r,t[i+1]=r>>>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var s=0;r>s;++s)t[i+s+4]=n[s];return 8*(i+4+r)},Ml=function(t,e,n,r,i,s,o,a,l,u,c){ct(e,c++,n),++i[256];for(var d=ks(i,15),h=d[0],p=d[1],f=ks(s,15),g=f[0],m=f[1],_=Nl(h),w=_[0],b=_[1],I=Nl(g),A=I[0],F=I[1],j=new Pe(19),S=0;w.length>S;++S)j[31&w[S]]++;for(S=0;A.length>S;++S)j[31&A[S]]++;for(var P=ks(j,7),R=P[0],N=P[1],T=19;T>4&&!R[Rl[T-1]];--T);var O,J,q,H,oe=u+5<<3,fe=Bn(i,Xt)+Bn(s,wi)+o,Ie=Bn(i,h)+Bn(s,g)+o+14+3*T+Bn(j,R)+(2*j[16]+3*j[17]+7*j[18]);if(fe>=oe&&Ie>=oe)return bo(e,c,t.subarray(l,l+u));if(ct(e,c,1+(fe>Ie)),c+=2,fe>Ie){O=tr(h,p),J=h,q=tr(g,m),H=g;var _e=tr(R,N);for(ct(e,c,b-257),ct(e,c+5,F-1),ct(e,c+10,T-4),c+=14,S=0;T>S;++S)ct(e,c+3*S,R[Rl[S]]);c+=3*T;for(var Ce=[w,A],Re=0;2>Re;++Re){var ae=Ce[Re];for(S=0;ae.length>S;++S)ct(e,c,_e[me=31&ae[S]]),c+=R[me],me>15&&(ct(e,c,ae[S]>>>5&127),c+=ae[S]>>>12)}}else O=rf,J=Xt,q=sf,H=wi;for(S=0;a>S;++S)if(r[S]>255){var me;On(e,c,O[257+(me=r[S]>>>18&31)]),c+=J[me+257],me>7&&(ct(e,c,r[S]>>>23&31),c+=da[me]);var ge=31&r[S];On(e,c,q[ge]),c+=H[ge],ge>3&&(On(e,c,r[S]>>>5&8191),c+=ha[ge])}else On(e,c,O[r[S]]),c+=J[r[S]];return On(e,c,O[256]),c+J[256]},of=new Sn([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),af=(function(){for(var t=new Sn(256),e=0;256>e;++e){for(var n=e,r=9;--r;)n=(1&n&&3988292384)^n>>>1;t[e]=n}return t})(),Is=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8};function lf(t,e){e===void 0&&(e={});var n=(function(){var d=4294967295;return{p(h){for(var p=d,f=0;h.length>f;++f)p=af[255&p^h[f]]^p>>>8;d=p},d(){return 4294967295^d}}})(),r=t.length;n.p(t);var i,s,o,a,l,u=(a=10+((i=e).filename&&i.filename.length+1||0),l=8,(function(d,h,p,f,g,m){var _=d.length,w=new qe(f+_+5*(1+Math.floor(_/7e3))+g),b=w.subarray(f,w.length-g),I=0;if(!h||8>_)for(var A=0;_>=A;A+=65535){var F=A+65535;_>F?I=bo(b,I,d.subarray(A,F)):(b[A]=!0,I=bo(b,I,d.subarray(A,_)))}else{for(var j=of[h-1],S=j>>>13,P=8191&j,R=(1<A;++A){var me=q(A),ge=32767&A,Qe=T[me];if(N[ge]=Qe,T[me]=ge,A>=Re){var Lt=_-A;if((Ie>7e3||Ce>24576)&&Lt>423){I=Ml(d,b,0,H,oe,fe,_e,Ce,ae,A-ae,I),Ce=Ie=_e=0,ae=A;for(var de=0;286>de;++de)oe[de]=0;for(de=0;30>de;++de)fe[de]=0}var Ge=2,It=0,$n=P,De=ge-Qe&32767;if(Lt>2&&me==q(A-De))for(var Ae=Math.min(S,Lt)-1,Sr=Math.min(32767,A),xr=Math.min(258,Lt);Sr>=De&&--$n&&ge!=Qe;){if(d[A+Ge]==d[A+Ge-De]){for(var je=0;xr>je&&d[A+je]==d[A+je-De];++je);if(je>Ge){if(Ge=je,It=De,je>Ae)break;var kr=Math.min(De,je-2),tn=0;for(de=0;kr>de;++de){var nn=A-De+de+32768&32767,Rn=nn-N[nn]+32768&32767;Rn>tn&&(tn=Rn,Qe=nn)}}}De+=(ge=Qe)-(Qe=N[ge])+32768&32767}if(It){H[Ce++]=268435456|yo[Ge]<<18|Tl[It];var Ga=31&yo[Ge],Ka=31&Tl[It];_e+=da[Ga]+ha[Ka],++oe[257+Ga],++fe[Ka],Re=A+Ge,++Ie}else H[Ce++]=d[A],++oe[d[A]]}}I=Ml(d,b,!0,H,oe,fe,_e,Ce,ae,A-ae,I)}return ad(w,0,f+od(I)+g)})(s=t,(o=e).level==null?6:o.level,o.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):12+o.mem,a,l)),c=u.length;return(function(d,h){var p=h.filename;if(d[0]=31,d[1]=139,d[2]=8,d[8]=2>h.level?4:h.level==9?2:0,d[9]=3,h.mtime!=0&&Is(d,4,Math.floor(new Date(h.mtime||Date.now())/1e3)),p){d[3]=8;for(var f=0;p.length>=f;++f)d[f+10]=p.charCodeAt(f)}})(u,e),Is(u,c-8,n.d()),Is(u,c-4,r),u}var cf=!!Ws||!!Yo,ld="text/plain",Gr=!1,cd=(t,e)=>{var n=t.split("#"),r=n[1],i=n[0].split("?"),s=i[0],o=i[1];if(!o)return t;var a=o.split("&").filter((l=>l.split("=")[0]!==e)).join("&");return s+(a?"?"+a:"")+(r?"#"+r:"")},Di=function(t,e,n){var r;n===void 0&&(n=!0);var i=t.split("?"),s=i[0],o=i[1],a=E({},e),l=(r=o?.split("&").map((c=>{var d,h=c.split("="),p=h[0],f=n&&(d=a[p])!==null&&d!==void 0?d:h[1];return delete a[p],p+"="+f})))!==null&&r!==void 0?r:[],u=(function(c,d){var h,p;d===void 0&&(d="&");var f=[];return Z(c,(function(g,m){x(g)||x(m)||m==="undefined"||(h=encodeURIComponent((_=>_ instanceof File)(g)?g.name:g.toString()),p=encodeURIComponent(m),f[f.length]=p+"="+h)})),f.join(d)})(a);return u&&l.push(u),l.length>0?s+"?"+l.join("&"):s},Cs=t=>{if(t.Ji)return t.Ji;var e=t.data,n=t.compression;if(e){if(n===xe.GZipJS){var r=lf((function(a,l){var u=a.length;if(typeof TextEncoder<"u")return new TextEncoder().encode(a);for(var c=new qe(a.length+(a.length>>>1)),d=0,h=function(m){c[d++]=m},p=0;u>p;++p){if(d+5>c.length){var f=new qe(d+8+(u-p<<1));f.set(c),c=f}var g=a.charCodeAt(p);128>g?h(g):2048>g?(h(192|g>>>6),h(128|63&g)):g>55295&&57344>g?(h(240|(g=65536+(1047552&g)|1023&a.charCodeAt(++p))>>>18),h(128|g>>>12&63),h(128|g>>>6&63),h(128|63&g)):(h(224|g>>>12),h(128|g>>>6&63),h(128|63&g))}return ad(c,0,d)})(pn(e)),{mtime:0});return{contentType:ld,body:r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength),estimatedSize:r.byteLength}}if(n===xe.Base64){var i=(function(a){return a&&btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,((l,u)=>String.fromCharCode(parseInt(u,16)))))})(pn(e)),s=(a=>"data="+encodeURIComponent(typeof a=="string"?a:pn(a)))(i);return{contentType:"application/x-www-form-urlencoded",body:s,estimatedSize:new Blob([s]).size}}var o=pn(e);return{contentType:"application/json",body:o,estimatedSize:new Blob([o]).size}}},ud=t=>{var e,n,r=()=>t.transport==="sendBeacon"?{url:Di(t.url,{compression:xe.Base64}),encodedBody:Cs(E({},t,{compression:xe.Base64,Ji:void 0}))}:{url:cd(t.url,"compression"),encodedBody:Cs(E({},t,{compression:void 0,Ji:void 0}))};try{e=Cs(t)}catch(i){if(tl(t.compression,bn(t.url,"compression")))return k.error("Failed to gzip request body, sending uncompressed payload",i),r();throw i}return e&&tl(t.compression,bn(t.url,"compression"))&&!((n=e.body)instanceof ArrayBuffer?zs(new Uint8Array(n)):ArrayBuffer.isView(n)&&zs(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)))?(Gr=!0,r()):{url:t.url,encodedBody:e}},dd=t=>{try{return ud(t)}catch(e){return k.error(e),void(t.callback==null||t.callback({statusCode:0,error:e}))}},uf=(function(){var t=X((function*(e){var n=pn(e.data),r=yield(function(s,o,a){return qs.apply(this,arguments)})(n,Y.DEBUG,{rethrow:!0});if(!r)return e;var i=yield r.arrayBuffer();return E({},e,{Ji:{contentType:ld,body:i,estimatedSize:i.byteLength}})}));return function(e){return t.apply(this,arguments)}})(),df=/Failed to fetch|NetworkError|Load failed/i,hd=t=>t?.name==="TypeError"&&df.test(t?.message||""),pd=t=>{var e=dd(t);if(e){var n=e.url,r=e.encodedBody,i=r??{},s=i.contentType,o=i.body,a=i.estimatedSize,l=new Headers;Z(t.headers,(function(f,g){l.append(g,f)})),s&&l.append("Content-Type",s);var u=null,c=!1;if(Ja){var d=new Ja;u={signal:d.signal,timeout:setTimeout((()=>{var f,g;c=!0,d.abort((f=t.timeout,(g=new Error("PostHog request timed out"+(f?" after "+f+"ms":""))).name="AbortError",g))}),t.timeout)}}var h=f=>{c&&f?.name==="AbortError"||hd(f)?k.warn(f):k.error(f),t.callback==null||t.callback({statusCode:0,error:f})};try{var p;Yo(n,E({method:t?.method||"GET",headers:l,keepalive:t.method==="POST"&&!t.Yi&&52428.8>(a||0),body:o,signal:(p=u)==null?void 0:p.signal},t.fetchOptions)).then((f=>f.text().then((g=>{var m={statusCode:f.status,text:g};if(f.status===200)try{m.json=JSON.parse(g)}catch(_){k.error(_)}t.callback==null||t.callback(m)})))).catch(h).finally((()=>u?clearTimeout(u.timeout):null))}catch(f){u&&clearTimeout(u.timeout),h(f)}}},Eo=t=>{try{var e,n=ud(t),r=n.url,i=n.encodedBody,s=i??{},o=s.body,a=s.estimatedSize;if(!o)return;var l=o instanceof Blob?o:new Blob([o],{type:s.contentType});if(ke.sendBeacon(r,l))return;var u=L(t.data)?t.data:(e=t.data)==null?void 0:e.batch;if(L(u)&&u.length>1&&(a??0)>16384){var c=Math.ceil(u.length/2),d=h=>L(t.data)?h:E({},t.data,{batch:h});return Eo(E({},t,{data:d(u.slice(0,c))})),void Eo(E({},t,{data:d(u.slice(c))}))}k.warn("Beacon of ~"+(a??0)+" bytes was rejected by the browser, falling back to fetch"),pd(E({},t,{Yi:!0}))}catch(h){k.warn("Beacon send failed",h)}},Ll=(t,e,n,r)=>{var i=r==="query"?e==="POST"?"sent_at":"_":void 0;return Di(n===xe.GZipJS?cd(t,"compression"):t,E({},i?{[i]:Date.now().toString()}:{},n===xe.GZipJS?{}:{compression:n}))},Kr=[];Yo&&Kr.push({transport:"fetch",method:pd}),Ws&&Kr.push({transport:"XHR",method(t){var e=dd(t);if(e){var n=new Ws,r=e.encodedBody;n.open(t.method||"GET",e.url,!0);var i=r??{},s=i.contentType,o=i.body;Z(t.headers,(function(a,l){n.setRequestHeader(l,a)})),s&&n.setRequestHeader("Content-Type",s),t.timeout&&(n.timeout=t.timeout),n.onreadystatechange=()=>{if(n.readyState===4){var a={statusCode:n.status,text:n.responseText};if(n.status===200)try{a.json=JSON.parse(n.responseText)}catch{}t.callback==null||t.callback(a)}},n.send(o)}}}),ke!=null&&ke.sendBeacon&&Kr.push({transport:"sendBeacon",method:Eo});var So=3e3;class hf{constructor(e,n){this.Xi=!0,this.tr=[],this.er=ot(n?.flush_interval_ms||So,250,5e3,k.createLogger("flush interval"),So),this.ir=e}enqueue(e){this.tr.push(e),this.rr||this.nr()}unload(){this.sr();var e=this.tr.length>0?this.ar():{},n=Object.values(e);[...n.filter((r=>r.url.indexOf("/e")===0)),...n.filter((r=>r.url.indexOf("/e")!==0))].map((r=>{this.lr(E({},r,{transport:"sendBeacon"}))}))}enable(){this.Xi=!1,this.nr()}nr(){var e=this;this.Xi||(this.rr=setTimeout((()=>{if(this.sr(),this.tr.length>0){var n=this.ar(),r=function(){var s=n[i],o=new Date().getTime();s.data&&L(s.data)&&Z(s.data,(a=>{a.offset=Math.abs(a.timestamp-o),delete a.timestamp})),e.lr(s)};for(var i in n)r()}}),this.er))}lr(e){try{this.ir(e)}catch(n){k.error(n)}}sr(){clearTimeout(this.rr),this.rr=void 0}ar(){var e={};return Z(this.tr,(n=>{var r,i=n,s=(i?i.batchKey:null)||i.url;x(e[s])&&(e[s]=E({},i,{data:[]})),(r=e[s].data)==null||r.push(i.data)})),this.tr=[],e}}var pf=["retriesPerformedSoFar"];class ff{constructor(e){this.ur=!1,this.hr=3e3,this.tr=[],this._instance=e,this.tr=[],this.dr=!0,!x(v)&&"onLine"in v.navigator&&(this.dr=v.navigator.onLine,this.vr=()=>{this.dr=!0,this.cr()},this.pr=()=>{this.dr=!1},ie(v,"online",this.vr),ie(v,"offline",this.pr))}get length(){return this.tr.length}retriableRequest(e){var n=e.retriesPerformedSoFar,r=Uc(e,pf);dt(n)&&(r.url=Di(r.url,{retry_count:n})),this._instance._send_request(E({},r,{callback:i=>{if(i.statusCode!==200&&(400>i.statusCode||i.statusCode>=500)){if((i.statusCode===0?3:10)>(n??0))return void this.At(E({retriesPerformedSoFar:n},r));i.statusCode===0&&k.warn("Request failed before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped retrying after "+(n??0)+" retries.")}r.callback==null||r.callback(i)}}))}At(e){var n=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=n+1;var r=(function(o){var a=3e3*Math.pow(2,o),l=a/2,u=Math.min(18e5,a),c=Math.random()-.5;return Math.ceil(u+c*(u-l))})(n),i=Date.now()+r;this.tr.push({retryAt:i,requestOptions:e});var s="Enqueued failed request for retry in "+r;navigator.onLine||(s+=" (Browser is offline)"),k.warn(s),this.ur||(this.ur=!0,this.gr())}gr(){if(this.mr&&clearTimeout(this.mr),this.tr.length===0)return this.ur=!1,void(this.mr=void 0);this.mr=setTimeout((()=>{this.dr&&this.tr.length>0&&this.cr(),this.gr()}),this.hr)}cr(){var e=Date.now(),n=[],r=this.tr.filter((s=>e>s.retryAt||(n.push(s),!1)));if(this.tr=n,r.length>0)for(var i of r)this.retriableRequest(i.requestOptions)}unload(){for(var e of(this.mr&&(clearTimeout(this.mr),this.mr=void 0),this.ur=!1,x(v)||(this.vr&&(v.removeEventListener("online",this.vr),this.vr=void 0),this.pr&&(v.removeEventListener("offline",this.pr),this.pr=void 0)),this.tr)){var n=e.requestOptions;try{this._instance._send_request(E({},n,{transport:"sendBeacon"}))}catch(r){k.error(r)}}this.tr=[]}}class gf{constructor(e){this.yr=()=>{var n,r,i,s;this.br||(this.br={});var o=this.scrollElement(),a=this.scrollY(),l=o?Math.max(0,o.scrollHeight-o.clientHeight):0,u=a+(o?.clientHeight||0),c=o?.scrollHeight||0;this.br.lastScrollY=Math.ceil(a),this.br.maxScrollY=Math.max(a,(n=this.br.maxScrollY)!==null&&n!==void 0?n:0),this.br.maxScrollHeight=Math.max(l,(r=this.br.maxScrollHeight)!==null&&r!==void 0?r:0),this.br.lastContentY=u,this.br.maxContentY=Math.max(u,(i=this.br.maxContentY)!==null&&i!==void 0?i:0),this.br.maxContentHeight=Math.max(c,(s=this.br.maxContentHeight)!==null&&s!==void 0?s:0)},this._instance=e}get _r(){return this._instance.config.scroll_root_selector}getContext(){return this.br}resetContext(){var e=this.br;return setTimeout(this.yr,0),e}startMeasuringScrollPosition(){ie(v,"scroll",this.yr,{capture:!0}),ie(v,"scrollend",this.yr,{capture:!0}),ie(v,"resize",this.yr)}scrollElement(){if(!this._r)return v?.document.documentElement;var e=L(this._r)?this._r:[this._r];for(var n of e){var r=v?.document.querySelector(n);if(r)return r}}wr(e){var n=e==="y"?"scrollTop":"scrollLeft";if(this._r){var r=this.scrollElement();return r&&r[n]||0}return v?e==="y"?v.scrollY||v.pageYOffset||v.document.documentElement.scrollTop||0:v.scrollX||v.pageXOffset||v.document.documentElement.scrollLeft||0:0}scrollY(){return this.wr("y")}scrollX(){return this.wr("x")}}var mf=t=>Qu(t?.config.mask_personal_data_properties,t?.config.custom_personal_data_properties,t?.config.disable_capture_url_hashes);class Ol{constructor(e,n,r,i){this.kr=s=>{var o=this.Sr();if(!o||o.sessionId!==s){var a={sessionId:s,props:this.Cr(this._instance)};this.Mr.register({[co]:a})}},this._instance=e,this.Tr=n,this.Mr=r,this.Cr=i||mf,this.Tr.onSessionId(this.kr)}Sr(){return this.Mr.props[co]}getSetOnceProps(){var e,n=(e=this.Sr())==null?void 0:e.props;return n?"r"in n?ed(n,this._instance.config.disable_capture_url_hashes):{$referring_domain:n.referringDomain,$pathname:n.initialPathName,utm_source:n.utm_source,utm_campaign:n.utm_campaign,utm_medium:n.utm_medium,utm_content:n.utm_content,utm_term:n.utm_term}:{}}getSessionProps(){var e={};return Z(aa(this.getSetOnceProps()),((n,r)=>{r==="$current_url"&&(r="url"),e["$session_entry_"+Vs(r)]=n})),e}}class pa{on(e,n){return this.Er[e]||(this.Er[e]=[]),this.Er[e].push(n),()=>{this.Er[e]=this.Er[e].filter((r=>r!==n))}}emit(e,n){for(var r of this.Er[e]||[])r(n);for(var i of this.Er["*"]||[])i(e,n)}constructor(){this.Er={}}}var Dn=ne("[SessionId]");class Bl{on(e,n){return this.Ir.on(e,n)}constructor(e,n,r){var i;if(this.Pr=null,this.Rr=[],this.Ar=void 0,this.Fr=!1,this.Ir=new pa,this.Lr=(u,c)=>!(!dt(u)||!dt(c))&&Math.abs(u-c)>this.sessionTimeoutMs,!e.persistence)throw new Error("SessionIdManager requires a PostHogPersistence instance");if(e.config.cookieless_mode===gt)throw new Error('SessionIdManager cannot be used with cookieless_mode="always"');this.Ne=e.config,this.Mr=e.persistence,this.Or=void 0,this.Dr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.$r=n||ft,this.Nr=r||ft;var s=this.Ne.persistence_name||this.Ne.token;if(this._sessionTimeoutMs=1e3*ot(this.Ne.session_idle_timeout_seconds||1800,60,36e3,Dn.createLogger("session_idle_timeout_seconds"),1800),e.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.qr(),this.jr="ph_"+s+"_window_id",this.Br="ph_"+s+"_primary_window_exists",this.Hr()){var o=ce.H(this.jr),a=ce.H(this.Br);o&&!a?this.Or=o:ce.q(this.jr),ce.F(this.Br,!0)}if((i=this.Ne.bootstrap)!=null&&i.sessionID)try{var l=(u=>{var c=this.Ne.bootstrap.sessionID.replace(/-/g,"");if(c.length!==32)throw new Error("Not a valid UUID");if(c[12]!=="7")throw new Error("Not a UUIDv7");return parseInt(c.substring(0,12),16)})();this.Ur(this.Ne.bootstrap.sessionID,new Date().getTime(),l)}catch(u){Dn.error("Invalid sessionID in bootstrap",u)}this.zr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(e){return x(this.Rr)&&(this.Rr=[]),this.Rr.push(e),this.Dr&&e(this.Dr,this.Or),()=>{this.Rr=this.Rr.filter((n=>n!==e))}}Hr(){return this.Ne.persistence!=="memory"&&!this.Mr.xi&&ce.N()}Wr(e){e!==this.Or&&(this.Or=e,this.Hr()&&ce.F(this.jr,e))}Vr(){return this.Or?this.Or:this.Hr()?ce.H(this.jr):null}Zr(e){var n=this.Pr;return!$e(n)&&!$e(e)&&5e3>Math.abs(e-n)}Ur(e,n,r){var i=n!==this._sessionActivityTimestamp,s=!(e!==this.Dr||r!==this._sessionStartTimestamp);this._sessionStartTimestamp=r,this._sessionActivityTimestamp=n,this.Dr=e,s&&!i||s&&this.Zr(n)||(this.Pr=n,this.Mr.register({[hn]:[n,e,r]}))}Gr(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return dt(n)&&n>0}Qr(){this.Gr()?this.Mr.refreshKey(hn):(this.Mr.flush(),this.Mr.load())}Kr(){var e;if(!$e(this._sessionActivityTimestamp)&&this._sessionActivityTimestamp!==this.Pr){this.Qr();var n=this.Jr();n[1]===this.Dr&&n[2]===this._sessionStartTimestamp&&(this.Pr=this._sessionActivityTimestamp,this.Mr.register({[hn]:[this._sessionActivityTimestamp,(e=this.Dr)!==null&&e!==void 0?e:null,this._sessionStartTimestamp]}),this.Mr.flush())}}Yr(){var e=this.Jr()[0],n=dt(e)?e:0,r=dt(this._sessionActivityTimestamp)?this._sessionActivityTimestamp:0;return Math.max(n,r)}Xr(e){return this.Qr(),this.Lr(e,this.Yr())}Jr(){var e=this.Mr.props[hn];return L(e)&&e.length===2&&e.push(e[0]),e||[0,null,0]}resetSessionId(){this.Pr=null,clearTimeout(this.tn),this.tn=void 0,this.Ur(null,null,null)}destroy(){this.Fr=!0,this.Kr(),clearTimeout(this.tn),this.tn=void 0,this.Ar&&v&&(v.removeEventListener(fi,this.Ar,{capture:!1}),this.Ar=void 0),this.Rr=[]}zr(){this.Ar=()=>{this.Kr(),this.Hr()&&ce.q(this.Br)},ie(v,fi,this.Ar,{capture:!1})}checkAndGetSessionAndWindowId(e,n){if(e===void 0&&(e=!1),n===void 0&&(n=null),this.Ne.cookieless_mode===gt)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode="always"');var r=n||new Date().getTime(),i=this.Jr(),s=i[1],o=i[2],a=this.Yr(),l=this.Vr(),u=dt(o)&&Math.abs(r-o)>864e5,c=!1,d=!1,h=!s,p=s,f=!h&&!e&&this.Lr(r,a);if(f){(f=this.Xr(r))||Dn.info("cross-tab refresh kept the session alive",{sessionId:s});var g=this.Jr();s=g[1],o=g[2]}h||f||u?(s=this.$r(),l=this.Nr(),Dn.info("new session ID generated",{sessionId:s,windowId:l,changeReason:{noSessionId:h,activityTimeout:f,sessionPastMaximumLength:u}}),o=r,c=!0):(l||(l=this.Nr(),c=!0),(d=s!==p)&&(Dn.info("adopted cross-tab session id",{sessionId:s,windowId:l}),c=!0));var m=dt(a)&&e&&!u?a:r,_=dt(o)?o:new Date().getTime();this.Wr(l),this.Ur(s,m,_),e||this.qr();var w={noSessionId:h,activityTimeout:f,sessionPastMaximumLength:u,crossTabAdoption:d};return c&&this.Rr.forEach((b=>b(s,l,w))),{sessionId:s,windowId:l,sessionStartTimestamp:_,changeReason:c?w:void 0,lastActivityTimestamp:a}}qr(){this.Fr||(clearTimeout(this.tn),this.tn=setTimeout((()=>{if(!this.Fr)if(this.Xr(new Date().getTime())){var e=this.Dr;this.resetSessionId(),this.Ir.emit("forcedIdleReset",{idleSessionId:e})}else this.qr()}),1.1*this.sessionTimeoutMs))}}var fd=function(t,e){if(!t)return!1;var n=t.userAgent;if(n&&rl(n,e))return!0;try{var r=t?.userAgentData;if(r!=null&&r.brands&&r.brands.some((i=>rl(i?.brand,e))))return!0}catch{}return!!t.webdriver};function gd(){return(gd=X((function*(){var t=ke?.userAgentData;if(t!=null&&t.getHighEntropyValues)try{var e=yield t.getHighEntropyValues(["model"]),n=e?.model;return W(n)&&n.length>0?n:void 0}catch(r){return void k.info("Unable to resolve $device_model from userAgentData.getHighEntropyValues",r)}}))).apply(this,arguments)}var bi=function(t,e){if(!(function(n){try{new RegExp(n)}catch{return!1}return!0})(e))return!1;try{return new RegExp(e).test(t)}catch{return!1}};function As(t,e,n){return pn({distinct_id:t,userPropertiesToSet:e,userPropertiesToSetOnce:n})}var md={exact:(t,e)=>e.some((n=>t.some((r=>n===r)))),is_not:(t,e)=>e.every((n=>t.every((r=>n!==r)))),regex:(t,e)=>e.some((n=>t.some((r=>bi(n,r))))),not_regex:(t,e)=>e.every((n=>t.every((r=>!bi(n,r))))),icontains:(t,e)=>e.map(Nr).some((n=>t.map(Nr).some((r=>n.includes(r))))),not_icontains:(t,e)=>e.map(Nr).every((n=>t.map(Nr).every((r=>!n.includes(r))))),gt:(t,e)=>e.some((n=>{var r=parseFloat(n);return!isNaN(r)&&t.some((i=>r>parseFloat(i)))})),lt:(t,e)=>e.some((n=>{var r=parseFloat(n);return!isNaN(r)&&t.some((i=>rt.toLowerCase();function vd(t,e){return!t||Object.entries(t).every((n=>{var r=n[1],i=e?.[n[0]];if(x(i)||$e(i))return!1;var s=[String(i)],o=md[r.operator];return!!o&&o(r.values,s)}))}var xo="custom",Dl="i.posthog.com",vf=/^\/static\//;class _f{constructor(e){this.en={},this.instance=e}get apiHost(){var e=this.instance.config.api_host.trim().replace(/\/$/,"");return e==="https://app.posthog.com"?"https://us.i.posthog.com":e}get flagsApiHost(){var e=this.instance.config.flags_api_host;return e?e.trim().replace(/\/$/,""):this.apiHost}get uiHost(){var e,n=(e=this.instance.config.ui_host)==null?void 0:e.replace(/\/$/,"");return n||(n=this.apiHost.replace("."+Dl,".posthog.com")),n==="https://app.posthog.com"?"https://us.posthog.com":n}get region(){return this.en[this.apiHost]||(this.en[this.apiHost]=/https:\/\/(app|us|us-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"us":/https:\/\/(eu|eu-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"eu":xo),this.en[this.apiHost]}rn(e){if(vf.test(e)){var n=this.instance.config.asset_host;if(typeof n=="string")return n.trim().replace(/\/$/,"")||void 0}}endpointFor(e,n){if(n===void 0&&(n=""),n&&(n=n[0]==="/"?n:"/"+n),e==="ui")return this.uiHost+n;if(e==="flags")return this.flagsApiHost+n;if(e==="assets"){var r=this.rn(n);if(r)return""+r+n}if(this.region===xo)return this.apiHost+n;var i=Dl+n;switch(e){case"assets":return"https://"+this.region+"-assets."+i;case"api":return"https://"+this.region+"."+i}}}function _d(t){var e;return!((e=t.conditions)==null||(e=e.events)==null||(e=e.values)==null||!e.length)}var V=ne("[Surveys]"),yd="seenSurvey_",wd=t=>{try{var e=(n=>((r,i)=>""+yd+(function(s){return s.current_iteration&&s.current_iteration>0?s.id+"_"+s.current_iteration:s.id})(i))(0,n))(t);if(localStorage.getItem(e))return;localStorage.setItem(e,"true")}catch(n){V.error("Failed to persist survey seen state",n)}},yf=[Ss.Popover,Ss.Widget,Ss.API],wf={ignoreConditions:!1,ignoreDelay:!1,displayType:_o.Popover},bf=ne("[PostHog ExternalIntegrations]"),Ef={intercom:"intercom-integration",crispChat:"crisp-chat-integration"};class Sf{constructor(e){this._instance=e}ai(e,n){var r;(r=$.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this._instance,e,(i=>{if(i)return bf.error("failed to load script",i);n()}))}startIfEnabledOrStop(){var e=this,n=function(){var s,o,a,l=r[0],u=r[1];!u||(s=$.__PosthogExtensions__)!=null&&(s=s.integrations)!=null&&s[l]||e.ai(Ef[l],(()=>{var c;(c=$.__PosthogExtensions__)==null||(c=c.integrations)==null||(c=c[l])==null||c.start(e._instance)})),!u&&(o=$.__PosthogExtensions__)!=null&&(o=o.integrations)!=null&&o[l]&&((a=$.__PosthogExtensions__)==null||(a=a.integrations)==null||(a=a[l])==null||a.stop())};for(var r of Object.entries((i=this._instance.config.integrations)!==null&&i!==void 0?i:{})){var i;n()}}}class xf{constructor(e,n){this.rt=e,this.nn=n,this.sn=new Map,this.an=!1}add(e){var n=this;return X((function*(){if(n.an)throw new Error("Cannot add an extension to a disposed ExtensionRuntime");if(n.sn.has(e.name))throw new Error('Browser extension "'+e.name+'" is already registered');n.sn.set(e.name,e);try{var r=e.setup(n.nn);r&&(yield r)}catch(s){var i=n.sn.get(e.name)===e;i&&n.sn.delete(e.name),n.rt.error('Failed to set up browser extension "'+e.name+'"',s),i&&n.ln(e)}}))()}dispose(){if(!this.an){this.an=!0;var e=Array.from(this.sn.values()).reverse();for(var n of(this.sn.clear(),e))this.ln(n)}}ln(e){try{var n=e.dispose==null?void 0:e.dispose();n&&Se(n.then)&&n.then(void 0,(r=>{this.rt.error('Failed to dispose browser extension "'+e.name+'"',r)}))}catch(r){this.rt.error('Failed to dispose browser extension "'+e.name+'"',r)}}}class kf{constructor(e){this._instance=e}initialize(){}get(e){var n=this._instance.persistence;if(typeof e=="string")return n?.get_property(e);var r={};for(var i of e){var s=n?.get_property(i);x(s)||(r[i]=s)}return r}set(e,n){var r;(r=this._instance.persistence)==null||r.register(typeof e=="string"?{[e]:n}:e)}remove(e){var n;(n=this._instance.persistence)==null||n.unregister(e)}}var jl="extensionsRemoteConfig";class If{constructor(e){this.an=!1,this.instance=e,this.rt=k,this.un=e.hn,this.kv=new kf(e),this.onEvent=n=>Tr(this.instance.on("eventCaptured",(r=>{try{n({event:r.event,properties:r.properties})}catch(i){this.rt.error("Browser extension event listener failed",i)}}))),this.onRemoteConfig=n=>{if(this.an)return Tr((()=>{}));var r=s=>{try{n(s)}catch(o){this.rt.error("Browser extension remote config listener failed",o)}},i=this.instance.dn.on(jl,r);return this.un&&r(this.un),Tr(i)},this.vn=new xf(k.createLogger("[BrowserExtensions]"),this)}get logger(){return this.rt}get distinctId(){return this.instance.get_distinct_id()}get anonymousId(){var e;return(e=this.instance.get_property(lr))!==null&&e!==void 0?e:this.distinctId}get deviceId(){var e=this.instance.get_property(lr);return typeof e=="string"?e:void 0}get library(){return{name:Y.LIB_NAME,version:Y.LIB_VERSION}}get initialPersonProperties(){var e,n;return(e=(n=this.instance.persistence)==null?void 0:n.get_initial_props())!==null&&e!==void 0?e:{}}get groups(){return this.instance.getGroups()}get session(){try{var e,n,r,i,s=(e=this.instance.sessionManager)==null?void 0:e.checkAndGetSessionAndWindowId(!0);return{sessionId:(n=s?.sessionId)!==null&&n!==void 0?n:"",windowId:(r=s?.windowId)!==null&&r!==void 0?r:"",sessionStartTimestamp:(i=s?.sessionStartTimestamp)!==null&&i!==void 0?i:0}}catch{return{sessionId:"",windowId:"",sessionStartTimestamp:0}}}get projectToken(){return this.instance.config.token}add(e){return this.vn.add(e)}capture(e,n,r){var i=this;return X((function*(){r?i.instance.capture(e,n,{timestamp:r.timestamp,uuid:r.uuid,$set:r.set,$set_once:r.setOnce}):i.instance.capture(e,n)}))()}registerDynamicEventProperties(e){return Tr(this.instance.cn(e))}handleRemoteConfig(e){this.an||(this.un=e,this.instance.dn.emit(jl,e))}sendRequest(e,n){var r=this;return X((function*(){var i;n===void 0&&(n={});var s=r.instance.requestRouter.endpointFor((i=n.target)!==null&&i!==void 0?i:"api",e),o={method:n.method,url:n.query?Di(s,n.query):s,data:n.body,headers:n.headers,timeout:n.timeoutMs,fireCallbackOnDrop:!0,transport:n.transport,compression:n.compression,timestampMode:n.sentAt};return n.transport==="sendBeacon"?(r.instance._send_request(o),{statusCode:202}):new Promise((a=>{o.callback=a,r.instance._send_request(o)}))}))()}dispose(){this.an||(this.an=!0,this.vn.dispose())}}var nr={},Fs=0,Ei=()=>{},Ul='Consent opt in/out is not valid with cookieless_mode="always" and will be ignored',jn="Surveys module not available",Hl="sanitize_properties is deprecated. Use before_send instead",bd="Invalid value for property_denylist config: ",Cf=["token","distinct_id",Au],un="posthog",Ed=!cf&&Fe?.indexOf("MSIE")===-1&&Fe?.indexOf("Mozilla")===-1,Ps=t=>{var e;return E({api_host:"https://us.i.posthog.com",flags_api_host:null,ui_host:null,asset_host:null,token:"",autocapture:!0,cross_subdomain_cookie:Cp(C?.location),persistence:"localStorage+cookie",persistence_name:"",cookie_persisted_properties:[],loaded:Ei,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:"if_capture_pageview",defaults:t??"unset",__preview_deferred_init_extensions:!1,__preview_external_dependency_versioned_paths:!1,__preview_cookie_wins_on_conflict:!1,debug:re&&W(re?.search)&&re.search.indexOf("__posthog_debug=true")!==-1||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!1,disableDeviceModel:!1,disable_external_dependency_loading:!1,strict_script_versioning:!1,enable_recording_console_log:void 0,secure_cookie:(v==null||(e=v.location)==null?void 0:e.protocol)==="https:",ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:"localStorage",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_feature_flags_dedup_per_session:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error(n){k.error("Bad HTTP status: "+n.statusCode+" "+n.text)},get_device_id:n=>n,capture_performance:void 0,name:"posthog",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:fo,before_send:void 0,get_current_url:void 0,request_queue_config:{flush_interval_ms:So},error_tracking:{},_onCapture:Ei},(n=>({rageclick:n&&n>="2026-05-30"?{content_ignorelist:Dp,ignore_text_selection:!0}:!n||"2025-11-30">n||{content_ignorelist:!0},capture_pageview:!n||"2025-05-24">n||"history_change",session_recording:n&&n>="2026-06-25"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6},streamNetworkBody:!0}:n&&n>="2026-05-30"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6}}:n&&n>="2025-11-30"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:n&&n>="2026-01-30"?"head":"body",internal_or_test_user_hostname:n&&n>="2026-01-30"?/^(localhost|127\.0\.0\.1)$/:void 0,persistence_save_debounce_ms:n&&n>="2026-05-30"?250:0,split_storage:!(!n||"2026-05-30">n),detect_google_search_app:!(!n||"2026-05-30">n),disable_capture_url_hashes:!(!n||"2026-06-25">n)}))(t))},Af=[["process_person","person_profiles"],["xhr_headers","request_headers"],["cookie_name","persistence_name"],["disable_cookie","disable_persistence"],["__preview_disable_beacon","disable_beacon"],["store_google","save_campaign_params"],["verbose","debug"]],Wl=t=>{var e={};for(var n of Af){var r=n[0],i=n[1];x(t[r])||(e[i]=t[r])}var s=ee({},e,t),o=t.__preview_external_dependency_versioned_paths;return x(o)||(x(t.strict_script_versioning)&&(s.strict_script_versioning=!!o),W(o)&&x(t.asset_host)&&(s.asset_host=o)),L(t.property_blacklist)&&(x(t.property_denylist)?s.property_denylist=t.property_blacklist:L(t.property_denylist)?s.property_denylist=[...t.property_blacklist,...t.property_denylist]:k.error(bd+t.property_denylist)),s};class Ff{constructor(){this.__forceAllowLocalhost=!1}get fn(){return this.__forceAllowLocalhost}set fn(e){k.error("WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`"),this.__forceAllowLocalhost=e}}class Te{pn(e,n){if(e){var r=this.sn.indexOf(e);r!==-1&&this.sn.splice(r,1)}return this.sn.push(n),n.initialize==null||n.initialize(),n}gn(){return this.config.cookieless_mode===gt||this.config.cookieless_mode===Vt&&this.consent.isRejected()}get decideEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}get flagsEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}constructor(){var e;this.webPerformance=new Ff,this.mn=!1,this.version=Y.LIB_VERSION,this.yn=new Set,this.bn="",this.dn=new pa,this.sn=[],this._n=[],this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=Ps(),this.SentryIntegration=Gp,this.sentryIntegration=r=>(function(i,s){var o=Vu(i,s);return{name:qu,processEvent:a=>o(a)}})(this,r),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint="/e/",this.wn=!1,this.kn=null,this.xn=null,this.Sn=null,this.scrollManager=new gf(this),this.pageViewManager=new Al(this),this.rateLimiter=new nf(this),this.requestRouter=new _f(this),this.consent=new Np(this),this.externalIntegrations=new Sf(this);var n=(e=Te.__defaultExtensionClasses)!==null&&e!==void 0?e:{};this.featureFlags=n.featureFlags&&new n.featureFlags(this),this.toolbar=n.toolbar&&new n.toolbar(this),this.surveys=n.surveys&&new n.surveys(this),this.conversations=n.conversations&&new n.conversations(this),this.logs=n.logs&&new n.logs(this),this.metrics=n.metrics&&new n.metrics(this),this.experiments=n.experiments&&new n.experiments(this),this.exceptions=n.exceptions&&new n.exceptions(this),this.people={set:(r,i,s)=>{var o=W(r)?{[r]:i}:r;this.setPersonProperties(o),s?.({})},set_once:(r,i,s)=>{var o=W(r)?{[r]:i}:r;this.setPersonProperties(void 0,o),s?.({})}},this.on("eventCaptured",(r=>k.info('send "'+r?.event+'"',r)))}init(e,n,r){if(r&&r!==un){var i,s=(i=nr[r])!==null&&i!==void 0?i:new Te;return s._init(e,n,r),nr[r]=s,nr[un][r]=s,s}return this._init(e,n,r)}_init(e,n,r){var i,s;n===void 0&&(n={});var o,a=W(e)?e.trim():"";if(!a)return k.critical("PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()"),this;if(this.__loaded)return a!==((o=this.config)==null?void 0:o.token)?console.warn("[PostHog.js]","You have already initialized PostHog with a different project token! Re-initializing is a no-op, so events will keep going to the project this instance was initialized with. To capture into a second project, load PostHog once, then initialize a named instance after the SDK has loaded, e.g. posthog.init('"+a+"', { ... }, 'project2')"):console.warn("[PostHog.js]","You have already initialized PostHog! Re-initializing is a no-op"),this;this.__loaded=!0,this.config=Ps(n.defaults),n.debug=this.Cn(n.debug),this.Mn=n,this.Tn=[],n.person_profiles?this.xn=n.person_profiles:n.process_person&&(this.xn=n.process_person);var l=Ps(n.defaults),u=Wl(n),c=ee({},l,u,{name:r,token:a});te(l.rageclick)&&te(u.rageclick)&&(c.rageclick=ee({},l.rageclick,u.rageclick)),te(l.session_recording)&&te(u.session_recording)&&(c.session_recording=ee({},l.session_recording,u.session_recording)),this.set_config(c),this.config.on_xhr_error&&k.error("on_xhr_error is deprecated. Use on_request_error instead"),this.compression=n.disable_compression?void 0:xe.GZipJS;var d=this.En();if(this.persistence=new Es(this.config,d),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new Es(E({},this.config,{persistence:"sessionStorage"}),d,!1),this.bn="ph_"+(this.config.persistence_name||this.config.token)+"_session_registered_properties",this.config.persistence!=="memory"&&!d&&ce.N()){var h=ce.H(this.bn);L(h)&&h.forEach((F=>{W(F)&&this.yn.add(F)}))}else ce.q(this.bn);var p=E({},this.persistence.props),f=E({},this.sessionPersistence.props);this.register({$initialization_time:new Date().toISOString()}),this.In=new hf((F=>this.Pn(F)),this.config.request_queue_config),this.Rn=new ff(this),this.__request_queue=[];var g=this.gn();if(g||(this.sessionManager=new Bl(this),this.sessionPropsManager=new Ol(this,this.sessionManager,this.persistence),this.sessionManager.onSessionId(((F,j,S)=>{(S!=null&&S.activityTimeout||S!=null&&S.sessionPastMaximumLength||S!=null&&S.crossTabAdoption)&&this.An()}))),this.Fn(),this.config.__preview_deferred_init_extensions?(k.info("Deferring extension initialization to improve startup performance"),setTimeout((()=>{this.Ln(g)}),0)):(k.info("Initializing extensions synchronously"),this.Ln(g)),Y.DEBUG=Y.DEBUG||this.config.debug,Y.DEBUG&&k.info("Starting in debug mode",{this:this,config:n,thisC:E({},this.config),p,s:f}),!this.config.identity_distinct_id||(i=n.bootstrap)!=null&&i.distinctID||(n.bootstrap=E({},n.bootstrap,{distinctID:this.config.identity_distinct_id,isIdentifiedID:!0})),((s=n.bootstrap)==null?void 0:s.distinctID)!==void 0){var m=n.bootstrap.distinctID,_=this.get_distinct_id(),w=this.persistence.get_property(He);if(n.bootstrap.isIdentifiedID&&_!=null&&_!==m&&w===rn)this.identify(m);else if(n.bootstrap.isIdentifiedID&&_!=null&&_!==m&&w===Ot)k.warn("Bootstrap distinctID differs from an already-identified user. The existing identity is preserved. Call reset() before reinitializing if you intend to switch users.");else{var b=this.config.get_device_id(ft()),I=n.bootstrap.isIdentifiedID?b:m;this.persistence.set_property(He,n.bootstrap.isIdentifiedID?Ot:rn),this.register({distinct_id:m,$device_id:I})}}if(g)this.register_once({distinct_id:Ar,$device_id:null},"");else if(!this.get_distinct_id()){var A=this.config.get_device_id(ft());this.register_once({distinct_id:A,$device_id:A},""),this.persistence.set_property(He,rn)}return ie(v,"onpagehide"in self?"pagehide":"unload",this._handle_unload.bind(this),{passive:!1}),n.segment?(function(F,j){var S=F.config.segment;if(!S)return j();(function(P,R){var N=P.config.segment;if(!N)return R();var T=J=>{var q=()=>J.anonymousId()||ft();P.config.get_device_id=q,J.id()&&(P.register({distinct_id:J.id(),$device_id:q()}),P.persistence.set_property(He,Ot)),R()},O=N.user();"then"in O&&Se(O.then)?O.then(T):T(O)})(F,(()=>{S.register((P=>{typeof Promise<"u"&&Promise.resolve||ws.warn("This browser does not have Promise support, and can not use the segment integration");var R=(N,T)=>{if(!T)return N;N.event.userId||N.event.anonymousId===P.get_distinct_id()||(ws.info("No userId set, resetting PostHog"),P.reset()),N.event.userId&&N.event.userId!==P.get_distinct_id()&&(ws.info("UserId set, identifying with PostHog"),P.identify(N.event.userId));var O=P.calculateEventProperties(T,N.event.properties);return N.event.properties=Object.assign({},O,N.event.properties),N};return{name:"PostHog JS",type:"enrichment",version:"1.0.0",isLoaded:()=>!0,load:()=>Promise.resolve(),track:N=>R(N,N.event.event),page:N=>R(N,cn),identify:N=>R(N,vs),screen:N=>R(N,"$screen")}})(F)).then((()=>{j()}))}))})(this,(()=>this.On())):this.On(),Se(this.config._onCapture)&&this.config._onCapture!==Ei&&(k.warn("onCapture is deprecated. Please use `before_send` instead"),this.on("eventCaptured",(F=>this.config._onCapture(F.event,F)))),this.config.ip&&k.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or "Discard IP data" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this.config.disableDeviceModel||(function(){return gd.apply(this,arguments)})().then((F=>{F&&this.register({[gs]:F})})).catch(Ei),this}Fn(){var e,n,r,i,s,o,a=(e=(n=this.config.__extensionClasses)==null?void 0:n.featureFlags)!==null&&e!==void 0?e:(r=Te.__defaultExtensionClasses)==null?void 0:r.featureFlags;a&&(this.featureFlags&&this.featureFlags instanceof a||((i=this.Dn)==null||i.call(this),this.Dn=void 0,this.featureFlags=new a(this)),Se(this.featureFlags.onReloading)&&Se(this.featureFlags.setup)?this.Dn||(this.Dn=this.featureFlags.onReloading((()=>{this.dn.emit("featureFlagsReloading",!0)})),this.$n().add(this.featureFlags)):(s=(o=this.featureFlags).initialize)==null||s.call(o))}Ln(e){var n,r,i,s,o,a,l,u=performance.now(),c=E({},Te.__defaultExtensionClasses,this.config.__extensionClasses),d=[];c.exceptions&&this.sn.push(this.exceptions=(n=this.exceptions)!==null&&n!==void 0?n:new c.exceptions(this)),c.historyAutocapture&&this.sn.push(this.historyAutocapture=new c.historyAutocapture(this)),c.tracingHeaders&&this.sn.push(this.tracingHeaders=new c.tracingHeaders(this)),c.siteApps&&this.sn.push(this.siteApps=new c.siteApps(this)),c.sessionRecording&&!e&&this.sn.push(this.sessionRecording=new c.sessionRecording(this)),this.config.disable_scroll_properties||d.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),c.autocapture&&this.sn.push(this.autocapture=new c.autocapture(this)),c.surveys&&this.sn.push(this.surveys=(r=this.surveys)!==null&&r!==void 0?r:new c.surveys(this)),c.logs&&this.sn.push(this.logs=(i=this.logs)!==null&&i!==void 0?i:new c.logs(this)),c.metrics&&this.sn.push(this.metrics=(s=this.metrics)!==null&&s!==void 0?s:new c.metrics(this)),c.conversations&&this.sn.push(this.conversations=(o=this.conversations)!==null&&o!==void 0?o:new c.conversations(this)),c.productTours&&this.sn.push(this.productTours=new c.productTours(this)),c.heatmaps&&this.sn.push(this.heatmaps=new c.heatmaps(this)),c.webVitalsAutocapture&&this.sn.push(this.webVitalsAutocapture=new c.webVitalsAutocapture(this)),c.exceptionObserver&&this.sn.push(this.exceptionObserver=new c.exceptionObserver(this)),c.deadClicksAutocapture&&this.sn.push(this.deadClicksAutocapture=new c.deadClicksAutocapture(this,Vp)),c.toolbar&&this.sn.push(this.toolbar=(a=this.toolbar)!==null&&a!==void 0?a:new c.toolbar(this)),c.experiments&&this.sn.push(this.experiments=(l=this.experiments)!==null&&l!==void 0?l:new c.experiments(this)),this.sn.forEach((h=>{h.initialize&&d.push((()=>{h.initialize==null||h.initialize()}))})),d.push((()=>{if(this.Nn){var h=this.Nn;this.Nn=void 0,this.sn.forEach((p=>p.onRemoteConfig==null?void 0:p.onRemoteConfig(h)))}})),this.qn(d,u)}qn(e,n){for(;e.length>0;){if(this.config.__preview_deferred_init_extensions&&performance.now()-n>=30&&e.length>0)return void setTimeout((()=>{this.qn(e,n)}),0);var r=e.shift();if(r)try{r()}catch(s){k.error("Error initializing extension:",s)}}var i=Math.round(performance.now()-n);this.register_for_session({[Fu]:this.config.__preview_deferred_init_extensions?"deferred":"synchronous",[Pu]:i}),this.config.__preview_deferred_init_extensions&&k.info("PostHog extensions initialized ("+i+"ms)")}Zi(e){var n;if(!C||!C.body)return k.info("document not ready yet, trying again in 500 milliseconds..."),void setTimeout((()=>{this.Zi(e)}),500);if(this.config.__preview_deferred_init_extensions&&(this.Nn=e),this.hn=e,this.compression=void 0,e.ok){var r,i=e.config;i.supportedCompression&&!this.config.disable_compression&&(this.compression=M(i.supportedCompression,xe.GZipJS)?xe.GZipJS:M(i.supportedCompression,xe.Base64)?xe.Base64:void 0),(r=i.analytics)!=null&&r.endpoint&&(this.analyticsDefaultEndpoint=i.analytics.endpoint)}this.set_config({person_profiles:this.xn?this.xn:fo}),(n=this.jn)==null||n.handleRemoteConfig(e),this.sn.forEach((s=>s.onRemoteConfig==null?void 0:s.onRemoteConfig(e)))}On(){try{this.config.loaded(this)}catch(r){k.critical("`loaded` function failed",r)}if(this.Bn(),this.config.internal_or_test_user_hostname&&re!=null&&re.hostname){var e=re.hostname,n=this.config.internal_or_test_user_hostname;(typeof n=="string"?e===n:n.test(e))&&this.setInternalOrTestUser()}this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||this.gn())&&this.Hn()}),1),this.Un=new nd(this),this.Un.load()}Bn(){var e;this.is_capturing()&&this.config.request_batching&&((e=this.In)==null||e.enable())}_dom_loaded(){this.is_capturing()&&Fr(this.__request_queue,(e=>this.Pn(e))),this.__request_queue=[],this.Bn()}_handle_unload(){var e,n,r,i,s;(e=this.surveys)==null||e.handlePageUnload==null||e.handlePageUnload(),(n=this.metrics)==null||n.flush("sendBeacon"),this.config.request_batching?(this.zn()&&this.capture(ms),(r=this.logs)==null||r.flushLogs("sendBeacon"),(i=this.In)==null||i.unload(),(s=this.Rn)==null||s.unload()):this.zn()&&this.capture(ms,null,{transport:"sendBeacon"})}_send_request(e){this.__loaded?Ed?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)?e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:429})):(e.transport=e.transport||this.config.api_transport,e.headers=E({},this.config.request_headers,e.headers),e.compression=e.compression==="best-available"?this.compression:e.compression,(x(this.config.disable_beacon)?this.config.__preview_disable_beacon:this.config.disable_beacon)&&(e.disableTransport=["sendBeacon"]),e.fetchOptions=e.fetchOptions||this.config.fetch_options,(n=>{var r,i,s,o=E({},n);o.timeout=o.timeout||6e4;var a,l,u,c,d,h=(r=o.transport)!==null&&r!==void 0?r:"fetch";h==="sendBeacon"&&x(o.compression)&&o.data&&(o.compression=xe.Base64),o.method==="POST"&&o.data&&(o.timestampMode==="capture-body"?o.data={api_key:(l=(d=(c=L(a=o.data)?a:[a])[0])==null||(u=d.properties)==null?void 0:u.token)!==null&&l!==void 0?l:d?.token,batch:c,sent_at:new Date().toISOString()}:o.timestampMode==="body"&&(o.data=(function(m,_){return _===void 0&&(_=new Date().toISOString()),L(m)?m.map((w=>E({},w,{sent_at:_}))):E({},m,{sent_at:_})})(o.data))),o.url=Ll(o.url,o.method,o.compression,o.timestampMode);var p=Kr.filter((m=>!o.disableTransport||!m.transport||!o.disableTransport.includes(m.transport))),f=(i=(s=(function(m,_){for(var w=0;m.length>w;w++)if(m[w].transport===h)return m[w]})(p))==null?void 0:s.method)!==null&&i!==void 0?i:p[0].method;if(!f)throw new Error("No available transport method");var g=m=>{try{f(m)}catch(_){hd(_)?k.warn(_):k.error(_),o.callback==null||o.callback({statusCode:0,error:_})}};h!=="sendBeacon"&&o.data&&o.compression===xe.GZipJS&&Fh&&typeof Promise<"u"&&!Gr?uf(o).then((m=>{g(m)})).catch((m=>{if(nl(m))return Gr=!0,void g(E({},o,{compression:void 0,url:Ll(n.url,n.method,void 0,n.timestampMode)}));(_=>{if(!_||typeof _!="object")return!1;var w="name"in _?String(_.name):"";return nl(_)||w===Hc})(m)&&(Gr=!0),g(o)})):f(o)})(E({},e,{callback:n=>{var r,i;this.rateLimiter.checkForLimiting(n),400>n.statusCode||(r=(i=this.config).on_request_error)==null||r.call(i,n),e.callback==null||e.callback(n)}}))):e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:0}))}Pn(e){this.Rn?this.Rn.retriableRequest(e):this._send_request(e)}_execute_array(e){Fs++;try{var n,r=[],i=[],s=[];Fr(e,(a=>{if(a)if(L(n=a[0]))s.push(a);else if(Se(a))try{a.call(this)}catch(l){k.error("Error executing queued PostHog call",a,l)}else L(a)&&n==="alias"?r.push(a):L(a)&&n.indexOf("capture")!==-1&&Se(this[n])?s.push(a):i.push(a)}));var o=function(a,l){Fr(a,(function(u){try{if(L(u[0])){var c=l;Z(u,(function(d){c=c[d[0]].apply(c,d.slice(1))}))}else l[u[0]].apply(l,u.slice(1))}catch(d){k.error("Error executing queued PostHog call",u,d)}}))};o(r,this),o(i,this),o(s,this)}finally{Fs--}}push(e){if(Fs>0&&L(e)&&W(e[0])){var n=Te.prototype[e[0]];Se(n)&&n.apply(this,e.slice(1))}else this._execute_array([e])}capture(e,n,r){var i,s,o,a,l;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.In){if(this.is_capturing())if(!x(e)&&W(e)){var u=!this.config.opt_out_useragent_filter&&this._is_bot();if(!u||this.config.__preview_capture_bot_pageviews){var c=r!=null&&r.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(c==null||!c.isRateLimited){n!=null&&n.$current_url&&!W(n?.$current_url)&&(k.error("Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value."),n==null||delete n.$current_url),e!=="$exception"||r!=null&&r.Wn||k.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var d=new Date,h=r?.timestamp||d,p=al(r?.uuid,ft),f={uuid:p,event:e,properties:this.calculateEventProperties(e,n||{},h,p)};e===cn&&this.config.__preview_capture_bot_pageviews&&u&&(f.event="$bot_pageview",f.properties.$browser_type="bot"),c&&(f.properties.$lib_rate_limit_remaining_tokens=c.remainingTokens);var g=e==="$feature_flag_called"&&f.properties.$feature_flag_has_experiment===!1&&this.get_property(ci)===!0;r?.$set&&!g&&(f.$set=r?.$set);var m=r?.$unset;m&&(f.$unset=m);var _,w,b,I=g?void 0:this.Vn(r?.$set_once,e!==pl,e===vs);if(I&&(f.$set_once=I),r!=null&&r._noTruncate||(s=this.config.properties_string_max_length,o=f,a=T=>W(T)?T.slice(0,s):T,l=new Set,f=(function T(O,J){if(O!==Object(O))return a?a(O):O;if(!l.has(O)){var q;if(l.add(O),L(O))q=[],Fr(O,(oe=>{q.push(T(oe))}));else{var H={};Z(O,((oe,fe)=>{l.has(oe)||(H[fe]=T(oe))})),q=H}return q}})(o)),f.timestamp=h,x(r?.timestamp)||(f.properties.$event_time_override_provided=!0,f.properties.$event_time_override_system_time=d),g&&(f.properties=(function(T,O){O===void 0&&(O=[]);var J={},q=H=>{T[H]!==void 0&&(J[H]=T[H])};return Ph.forEach(q),O.forEach(q),J})(f.properties,Cf)),e===vt.DISMISSED||e===vt.SENT){var A=n?.[xs.SURVEY_ID],F=n?.[xs.SURVEY_ITERATION];wd({id:A,current_iteration:F}),f.$set=E({},f.$set,{[(_={id:A,current_iteration:F},w=e===vt.SENT?"responded":"dismissed",b="$survey_"+w+"/"+_.id,_.current_iteration&&_.current_iteration>0&&(b="$survey_"+w+"/"+_.id+"/"+_.current_iteration),b)]:!0})}else e===vt.SHOWN&&(f.$set=E({},f.$set,{[xs.SURVEY_LAST_SEEN_DATE]:new Date().toISOString()}));if(e===tf.SHOWN){var j=n?.[Pl.TOUR_TYPE];j&&(f.$set=E({},f.$set,{[Pl.TOUR_LAST_SEEN_DATE+"/"+j]:new Date().toISOString()}))}var S=E({},f.properties.$set,f.$set);if(yt(S)||this.setPersonPropertiesForFlags(S),!B(this.config.before_send)){var P=this.Pt(f);if(!P)return;(f=P).uuid=al(f.uuid,ft)}this.dn.emit("eventCaptured",f);var R=(i=r?._url)!==null&&i!==void 0?i:this.requestRouter.endpointFor("api",this.analyticsDefaultEndpoint),N={method:"POST",url:R,data:f,compression:"best-available",timestampMode:r?._batchKey==="recordings"||/\/s\/(?:\?|$)/.test(R)?"body":"capture-body",batchKey:r?._batchKey,transport:r?.transport};return!this.config.request_batching||r&&(r==null||!r._batchKey)||r!=null&&r.send_instantly?this.Pn(N):this.In.enqueue(N),f}k.critical("This capture call is ignored due to client rate limiting.")}}else k.error("No event name provided to posthog.capture")}else k.uninitializedWarning("posthog.capture")}_addCaptureHook(e){return this.on("eventCaptured",(n=>e(n.event,n)))}$n(){var e;return(e=this.jn)!==null&&e!==void 0?e:this.jn=new If(this)}cn(e){this._n.push(e);var n=!0;return()=>{if(n){n=!1;var r=this._n.indexOf(e);r!==-1&&this._n.splice(r,1)}}}calculateEventProperties(e,n,r,i,s){if(r=r||new Date,!this.persistence||!this.sessionPersistence)return n;var o=s?void 0:this.persistence.remove_event_timer(e),a=E({},n);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,this.gn()&&(a[Au]=!0),e==="$snapshot"){var l=E({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!W(a.distinct_id)&&!he(a.distinct_id)||Gs(a.distinct_id))&&k.error("Invalid distinct_id for replay event. This indicates a bug in your implementation"),a}var u,c=(function(A,F,j,S){var P,R,N,T;if(S===void 0&&(S=!1),!Fe)return{};var O,J=A?[...En,...F||[]]:[],q=(function(xr){for(var je=0;sl.length>je;je++){var kr=sl[je],tn=kr[1],nn=kr[0].exec(xr),Rn=nn&&(Se(tn)?tn(nn,xr):tn);if(Rn)return Rn}return["",""]})(Fe),H=q[0],oe=q[1],fe=(O=typeof navigator<"u"?navigator:void 0)!=null&&O.brave?{brave:!0}:{},Ie={};x(j)||(Ie.detectGoogleSearchApp=j);var _e={},Ce=(P=navigator)==null||(P=P.userAgentData)==null?void 0:P.platform,Re=(R=navigator)==null?void 0:R.maxTouchPoints,ae=v==null||(N=v.screen)==null?void 0:N.width,me=v==null||(T=v.screen)==null?void 0:T.height,ge=v?.devicePixelRatio;x(Ce)||(_e.userAgentDataPlatform=Ce),x(Re)||(_e.maxTouchPoints=Re),x(ae)||(_e.screenWidth=ae),x(me)||(_e.screenHeight=me),x(ge)||(_e.devicePixelRatio=ge);var Qe,Lt,de,Ge,It,$n,De,Ae,Sr=ee(aa({$os:H,$os_version:oe,$browser:pu(Fe,navigator.vendor,fe,Ie),$device:ol(Fe),$device_type:(Lt=Fe,de=_e,Ae=ol(Lt),Ae===Jc||Ae===Kc||Ae==="Kobo"||Ae==="Kindle Fire"||Ae===lu?_n:Ae===or||Ae===mn||Ae===ar||Ae===Js?"Console":Ae===Zc?"Wearable":Ae?Oe:de?.userAgentDataPlatform==="Android"&&((Ge=de?.maxTouchPoints)!==null&&Ge!==void 0?Ge:0)>0?600>Math.min((It=de?.screenWidth)!==null&&It!==void 0?It:0,($n=de?.screenHeight)!==null&&$n!==void 0?$n:0)/((De=de?.devicePixelRatio)!==null&&De!==void 0?De:1)?Oe:_n:"Desktop"),$timezone:td(),$timezone_offset:Xp()}),{$current_url:ur(S?Pt(re?.href):re?.href,J,dr),$host:re?.host,$pathname:re?.pathname,$raw_user_agent:Fe.length>1e3?Fe.substring(0,997)+"...":Fe,$browser_version:Jh(Fe,navigator.vendor,fe,Ie),$browser_language:Fl(),$browser_language_prefix:(Qe=Fl(),typeof Qe=="string"?Qe.split("-")[0]:void 0),$screen_height:v?.screen.height,$screen_width:v?.screen.width,$viewport_height:v?.innerHeight,$viewport_width:v?.innerWidth,$lib:Y.LIB_NAME,$lib_version:Y.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3});return Y.SDK_DIST_CHANNEL&&(Sr.$sdk_dist_channel=Y.SDK_DIST_CHANNEL),Sr})(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties,this.config.detect_google_search_app,this.config.disable_capture_url_hashes);if(this.sessionManager){var d=this.sessionManager.checkAndGetSessionAndWindowId(s,r.getTime()),h=d.windowId;a.$session_id=d.sessionId,a.$window_id=h}this.sessionPropsManager&&ee(a,this.sessionPropsManager.getSessionProps());try{var p;this.sessionRecording&&ee(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=(p=this.Rn)==null?void 0:p.length}catch(A){a.$sdk_debug_error_capturing_properties=String(A)}if(this.requestRouter.region===xo&&(a.$lib_custom_api_host=this.config.api_host),u=e!==cn||s?e!==ms||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(r):this.pageViewManager.doPageView(r,i),a=ee(a,u),e===cn&&C&&(a.title=C.title),!x(o)){var f=r.getTime()-o;a.$duration=parseFloat((f/1e3).toFixed(3))}Fe&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?"bot":"browser");var g=this.persistence.properties(),m=this.sessionPersistence.properties();Z(["$referrer","$referring_domain"],(A=>{A in g&&delete m[A]}));var _={};if(this._n.length>0)for(var w of this._n.slice())try{ee(_,w())}catch(A){k.error("Failed to produce browser extension event properties",A)}(a=ee({},c,g,m,E({},_,a))).$is_identified=this._isIdentified(),L(this.config.property_denylist)?Z(this.config.property_denylist,(function(A){delete a[A]})):k.error(bd+this.config.property_denylist+" or property_blacklist config: "+this.config.property_blacklist);var b=this.config.sanitize_properties;b&&(k.error(Hl),a=b(a,e));var I=this.Zn();return a.$process_person_profile=I,I&&!s&&this.Gn("_calculate_event_properties"),a}Vn(e,n,r){var i;if(n===void 0&&(n=!0),r===void 0&&(r=!1),!this.persistence||!this.Zn()||this.mn&&!r)return e;var s=this.persistence.get_initial_props(),o=(i=this.sessionPropsManager)==null?void 0:i.getSetOnceProps(),a=ee({},s,o||{},e||{}),l=this.config.sanitize_properties;return l&&(k.error(Hl),a=l(a,"$set_once")),n&&(this.mn=!0),yt(a)?void 0:a}register(e,n){var r;(r=this.persistence)==null||r.register(e,n)}register_once(e,n,r){var i;(i=this.persistence)==null||i.register_once(e,n,r)}register_for_session(e){var n;(n=this.sessionPersistence)==null||n.register(e),Object.keys(e).forEach((r=>this.yn.add(r))),this.Qn()}unregister(e){var n;(n=this.persistence)==null||n.unregister(e)}unregister_for_session(e){var n;(n=this.sessionPersistence)==null||n.unregister(e),this.yn.delete(e),this.Qn()}Kn(e,n){this.register({[e]:n})}An(){this.yn.forEach((e=>{var n;(n=this.sessionPersistence)==null||n.unregister(e)})),this.yn.clear(),this.Qn()}Qn(){var e;if(this.bn)if(this.config.persistence==="memory"||(e=this.sessionPersistence)!=null&&e.xi||!ce.N())ce.q(this.bn);else{var n=[];this.yn.forEach((r=>n.push(r))),n.length>0?ce.F(this.bn,n):ce.q(this.bn)}}getFeatureFlag(e,n){var r;return(r=this.featureFlags)==null?void 0:r.getFeatureFlag(e,n)}getFeatureFlagPayload(e){var n;return(n=this.featureFlags)==null?void 0:n.getFeatureFlagPayload(e)}getFeatureFlagResult(e,n){var r;return(r=this.featureFlags)==null?void 0:r.getFeatureFlagResult(e,n)}getAllFeatureFlags(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.getAllFeatureFlags())!==null&&e!==void 0?e:[]}isFeatureEnabled(e,n){var r,i;return(r=(i=this.featureFlags)==null?void 0:i.isFeatureEnabled(e,n))!==null&&r!==void 0?r:n?.defaultValue}reloadFeatureFlags(){var e;(e=this.featureFlags)==null||e.reloadFeatureFlags()}updateFlags(e,n,r){var i;(i=this.featureFlags)==null||i.updateFlags(e,n,r)}updateEarlyAccessFeatureEnrollment(e,n,r){var i;(i=this.featureFlags)==null||i.updateEarlyAccessFeatureEnrollment(e,n,r)}getEarlyAccessFeatures(e,n,r){var i;return n===void 0&&(n=!1),(i=this.featureFlags)==null?void 0:i.getEarlyAccessFeatures(e,n,r)}on(e,n){return this.dn.on(e,n)}onFeatureFlags(e){return this.featureFlags?this.featureFlags.onFeatureFlags(e):(e([],{},{errorsLoading:!0}),()=>{})}onSurveysLoaded(e){return this.surveys?this.surveys.onSurveysLoaded(e):(e([],{isLoaded:!1,error:jn}),()=>{})}onSessionId(e){var n,r;return(n=(r=this.sessionManager)==null?void 0:r.onSessionId(e))!==null&&n!==void 0?n:()=>{}}getSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getSurveys(e,n):e([],{isLoaded:!1,error:jn})}getActiveMatchingSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getActiveMatchingSurveys(e,n):e([],{isLoaded:!1,error:jn})}renderSurvey(e,n){var r;(r=this.surveys)==null||r.renderSurvey(e,n)}displaySurvey(e,n){var r;n===void 0&&(n=wf),(r=this.surveys)==null||r.displaySurvey(e,n)}cancelPendingSurvey(e){var n;(n=this.surveys)==null||n.cancelPendingSurvey(e)}canRenderSurvey(e){var n,r;return(n=(r=this.surveys)==null?void 0:r.canRenderSurvey(e))!==null&&n!==void 0?n:{visible:!1,disabledReason:jn}}canRenderSurveyAsync(e,n){var r,i;return n===void 0&&(n=!1),(r=(i=this.surveys)==null?void 0:i.canRenderSurveyAsync(e,n))!==null&&r!==void 0?r:Promise.resolve({visible:!1,disabledReason:jn})}Jn(e){return!e||Gs(e)?(k.critical("Unique user id has not been set in posthog.identify"),!1):e===Ar?(k.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.'),!1):!["distinct_id","distinctid"].includes(e.toLowerCase())&&!["undefined","null"].includes(e.toLowerCase())||(k.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'),!1)}identify(e,n,r){if(!this.__loaded||!this.persistence)return k.uninitializedWarning("posthog.identify");if(he(e)&&(e=e.toString(),k.warn("The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.")),this.Jn(e)&&this.Gn("posthog.identify")){var i=this.get_distinct_id();this.register({$user_id:e}),this.get_property(lr)||this.register_once({$had_persisted_distinct_id:!0,$device_id:i},""),e!==i&&e!==this.get_property(qn)&&(this.unregister(qn),this.register({distinct_id:e}));var s,o=(this.persistence.get_property(He)||rn)===rn,a=e!==i,l=!a&&o;if(a&&o)this.persistence.set_property(He,Ot),this.setPersonPropertiesForFlags({$set:n||{},$set_once:r||{}},!1),this.capture(vs,{distinct_id:e,$anon_distinct_id:i},{$set:n||{},$set_once:r||{}}),this.Sn=As(e,n,r),(s=this.featureFlags)==null||s.setAnonymousDistinctId(i);else if(l){this.persistence.set_property(He,Ot);var u=n||{},c=r||{};this.setPersonPropertiesForFlags({$set:u,$set_once:c},!1),this.capture("$set",{$set:u,$set_once:c}),this.Sn=As(e,n,r)}else(n||r)&&this.setPersonProperties(n,r);a?(this.reloadFeatureFlags(),this.featureFlags?this.featureFlags.resetFlagCallReported():this.unregister(Gt)):l&&(n||r)&&this.reloadFeatureFlags()}}setPersonProperties(e,n){if((e||n)&&this.Gn("posthog.setPersonProperties")){var r=As(this.get_distinct_id(),e,n);this.Sn!==r?(this.setPersonPropertiesForFlags({$set:e||{},$set_once:n||{}},!0),this.capture("$set",{$set:e||{},$set_once:n||{}}),this.Sn=r):k.info("A duplicate setPersonProperties call was made with the same properties. It has been ignored.")}}unsetPersonProperties(e){var n,r=(L(e)?e:[e]).filter((i=>W(i)&&i.length>0));r.length!==0&&this.Gn("posthog.unsetPersonProperties")&&((n=this.featureFlags)==null||n.unsetPersonPropertiesForFlags(r,!0),this.capture("$set",{$unset:r}),this.Sn=null)}group(e,n,r){if(e&&n){var i=this.getGroups(),s=i[e]!==n;if(s&&this.resetGroupPropertiesForFlags(e),this.register({$groups:E({},i,{[e]:n})}),s||r){var o={$group_type:e,$group_key:n};r&&(o.$group_set=r),this.capture(pl,o)}r&&this.setGroupPropertiesForFlags({[e]:r}),s&&!r&&this.reloadFeatureFlags()}else k.error("posthog.group requires a group type and group key")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(e,n){var r;n===void 0&&(n=!0),(r=this.featureFlags)==null||r.setPersonPropertiesForFlags(e,n)}resetPersonPropertiesForFlags(e){var n;e===void 0&&(e=!0),(n=this.featureFlags)==null||n.resetPersonPropertiesForFlags(e)}setGroupPropertiesForFlags(e,n){var r;n===void 0&&(n=!0),this.Gn("posthog.setGroupPropertiesForFlags")&&((r=this.featureFlags)==null||r.setGroupPropertiesForFlags(e,n))}resetGroupPropertiesForFlags(e){var n;(n=this.featureFlags)==null||n.resetGroupPropertiesForFlags(e)}reset(e){this.Yn(e)}Yn(e,n){var r,i,s,o,a,l,u,c,d,h;if(n===void 0&&(n=!1),k.info("reset"),!this.__loaded)return k.uninitializedWarning("posthog.reset");var p,f=this.get_property(lr),g=this.get_property(gs),m=this.get_property(Jt),_=this.is_capturing();if(this.consent.reset(),n||!_||this.is_capturing()||console.warn("[PostHog.js]","reset() cleared the stored consent, and capturing is now off because of `opt_out_capturing_by_default`. Call opt_in_capturing() again, and prefer calling reset() before opting in rather than after."),(r=this.persistence)==null||r.clear(),(i=this.sessionPersistence)==null||i.clear(),this.yn.clear(),this.Qn(),x(m)||(p=this.persistence)==null||p.register({[Jt]:m}),(s=this.surveys)==null||s.reset(),(o=this.Un)==null||o.stop(),(a=this.featureFlags)==null||a.reset(),(l=this.conversations)==null||l.reset(),(u=this.logs)==null||u.reset(),(c=this.metrics)==null||c.reset(),(d=this.persistence)==null||d.set_property(He,rn),(h=this.sessionManager)==null||h.resetSessionId(),this.Sn=null,this.config.cookieless_mode===gt)this.register_once({distinct_id:Ar,$device_id:null},"");else{var w=this.config.get_device_id(ft());this.register_once({distinct_id:w,$device_id:e?w:f},""),e||x(g)||this.register({[gs]:g})}this.register({$last_posthog_reset:new Date().toISOString()},1),delete this.config.identity_distinct_id,delete this.config.identity_hash,this.reloadFeatureFlags()}shutdown(e){var n=this;return X((function*(){var r,i,s,o,a,l,u;if(n.__loaded){(r=n.Un)==null||r.stop(),(i=n.jn)==null||i.dispose(),(s=n.sessionRecording)==null||s.dispose(),(o=n.logs)==null||o.flushLogs("sendBeacon"),(a=n.metrics)==null||a.flush("sendBeacon"),(l=n.In)==null||l.unload(),(u=n.Rn)==null||u.unload();try{var c;(c=n.featureFlags)==null||c.destroy()}catch(d){k.error("Error while destroying feature flags",d)}}else k.uninitializedWarning("posthog.shutdown")}))()}setIdentity(e,n){var r;this.config.identity_distinct_id=e,this.config.identity_hash=n,this.alias(e),(r=this.conversations)==null||r.Xn()}clearIdentity(){var e;delete this.config.identity_distinct_id,delete this.config.identity_hash,(e=this.conversations)==null||e.ts()}get_distinct_id(){return this.get_property("distinct_id")}getGroups(){return this.get_property("$groups")||{}}get_session_id(){var e,n;return(e=(n=this.sessionManager)==null?void 0:n.checkAndGetSessionAndWindowId(!0).sessionId)!==null&&e!==void 0?e:""}get_session_replay_url(e){if(!this.sessionManager)return"";var n=this.sessionManager.checkAndGetSessionAndWindowId(!0),r=n.sessionStartTimestamp,i=this.requestRouter.endpointFor("ui","/project/"+this.config.token+"/replay/"+n.sessionId);if(e!=null&&e.withTimestamp&&r){var s,o=(s=e.timestampLookBack)!==null&&s!==void 0?s:10;if(!r)return i;i+="?t="+Math.max(Math.floor((new Date().getTime()-r)/1e3)-o,0)}return i}alias(e,n){return e===this.get_property(Eu)?(k.critical("Attempting to create alias for existing People user - aborting."),-2):this.Gn("posthog.alias")?(x(n)&&(n=this.get_distinct_id()),e!==n?(this.Kn(qn,e),this.capture("$create_alias",{alias:e,distinct_id:n})):(k.warn("alias matches current distinct_id - skipping api call."),this.identify(e),-1)):void 0}set_config(e){var n=E({},this.config);if(te(e)){var r,i,s,o,a,l,u,c,d,h,p,f;ee(this.config,Wl(e));var g=this.En();(r=this.persistence)==null||r.update_config(this.config,n,g),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new Es(E({},this.config,{persistence:"sessionStorage"}),g,!1);var m=this.Cn(this.config.debug);Ye(m)&&(this.config.debug=m),Ye(this.config.debug)&&(this.config.debug?(Y.DEBUG=!0,Q.N()&&Q.F("ph_debug",!0),k.info("set_config",{config:e,oldConfig:n,newConfig:E({},this.config)})):(Y.DEBUG=!1,Q.N()&&Q.q("ph_debug"))),(i=this.featureFlags)==null||i.updateConfig==null||i.updateConfig(this.config,this.Qi()),(s=this.exceptionObserver)==null||s.onConfigChange(),(o=this.exceptions)==null||o.onConfigChange(),(a=this.sessionRecording)==null||a.startIfEnabledOrStop(),(l=this.tracingHeaders)==null||l.startIfEnabledOrStop(),(u=this.autocapture)==null||u.startIfEnabled(),(c=this.heatmaps)==null||c.startIfEnabled(),(d=this.exceptionObserver)==null||d.startIfEnabledOrStop(),(h=this.deadClicksAutocapture)==null||h.startIfEnabledOrStop(),(p=this.surveys)==null||p.loadIfEnabled(),this.es(),(f=this.externalIntegrations)==null||f.startIfEnabledOrStop()}}_overrideSDKInfo(e,n){Y.LIB_NAME=e,Y.LIB_VERSION=n}startSessionRecording(e){var n,r,i,s,o,a=e===!0,l={sampling:a||!(e==null||!e.sampling),linked_flag:a||!(e==null||!e.linked_flag),url_trigger:a||!(e==null||!e.url_trigger),event_trigger:a||!(e==null||!e.event_trigger)};Object.values(l).some(Boolean)&&((n=this.sessionManager)==null||n.checkAndGetSessionAndWindowId(),l.sampling&&((r=this.sessionRecording)==null||r.overrideSampling()),l.linked_flag&&((i=this.sessionRecording)==null||i.overrideLinkedFlag()),l.url_trigger&&((s=this.sessionRecording)==null||s.overrideTrigger("url")),l.event_trigger&&((o=this.sessionRecording)==null||o.overrideTrigger("event"))),this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var e;return!((e=this.sessionRecording)==null||!e.started)}captureException(e,n){if(this.exceptions){var r=new Error("PostHog syntheticException"),i=this.exceptions.buildProperties(e,{handled:!0,syntheticException:r});return this.exceptions.sendExceptionEvent(E({},i,n))}}addExceptionStep(e,n){var r;(r=this.exceptions)==null||r.addExceptionStep(e,n)}captureLog(e){var n;(n=this.logs)==null||n.captureLog(e)}get logger(){var e,n;return(e=(n=this.logs)==null?void 0:n.logger)!==null&&e!==void 0?e:Te.rs}startExceptionAutocapture(e){this.set_config({capture_exceptions:e==null||e})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(e){var n,r;return(n=(r=this.toolbar)==null?void 0:r.loadToolbar(e))!==null&&n!==void 0&&n}get_property(e){var n;return(n=this.persistence)==null?void 0:n.props[e]}getSessionProperty(e){var n;return(n=this.sessionPersistence)==null?void 0:n.props[e]}toString(){var e,n=(e=this.config.name)!==null&&e!==void 0?e:un;return n!==un&&(n=un+"."+n),n}_isIdentified(){var e,n;return((e=this.persistence)==null?void 0:e.get_property(He))===Ot||((n=this.sessionPersistence)==null?void 0:n.get_property(He))===Ot}Zn(){var e,n;return!(this.config.person_profiles==="never"||this.config.person_profiles===fo&&!this._isIdentified()&&yt(this.getGroups())&&((e=this.persistence)==null||(e=e.props)==null||!e[qn])&&((n=this.persistence)==null||(n=n.props)==null||!n[hi]))}zn(){return this.config.capture_pageleave===!0||this.config.capture_pageleave==="if_capture_pageview"&&(this.config.capture_pageview===!0||this.config.capture_pageview==="history_change")}createPersonProfile(){this.Zn()||this.Gn("posthog.createPersonProfile")&&this.setPersonProperties({},{})}setInternalOrTestUser(){this.Gn("posthog.setInternalOrTestUser")&&this.setPersonProperties({$internal_or_test_user:!0})}Gn(e){return this.config.person_profiles==="never"?(k.error(e+' was called, but process_person is set to "never". This call will be ignored.'),!1):(this.Kn(hi,!0),!0)}En(){if(this.config.cookieless_mode==="always")return!0;var e=this.consent.isOptedOut();return this.config.disable_persistence||e&&!(!this.config.opt_out_persistence_by_default&&this.config.cookieless_mode!==Vt)}es(){var e,n,r,i,s=this.En();return((e=this.persistence)==null?void 0:e.xi)!==s&&((r=this.persistence)==null||r.set_disabled(s)),((n=this.sessionPersistence)==null?void 0:n.xi)!==s&&((i=this.sessionPersistence)==null||i.set_disabled(s)),s&&(this.yn.clear(),this.Qn()),s}opt_in_capturing(e){var n;if(this.config.cookieless_mode!==gt){if(this.gn()){var r,i,s,o,a;this.Yn(!0,!0),(r=this.sessionManager)==null||r.destroy(),(i=this.pageViewManager)==null||i.destroy(),this.sessionManager=new Bl(this),this.pageViewManager=new Al(this),this.persistence&&(this.sessionPropsManager=new Ol(this,this.sessionManager,this.persistence));var l,u=(s=(o=this.config.__extensionClasses)==null?void 0:o.sessionRecording)!==null&&s!==void 0?s:(a=Te.__defaultExtensionClasses)==null?void 0:a.sessionRecording;u&&(this.sessionRecording=this.pn(this.sessionRecording,new u(this)),this.hn&&((l=this.sessionRecording)==null||l.onRemoteConfig==null||l.onRemoteConfig(this.hn)))}var c,d;this.consent.optInOut(!0),this.es(),this.Bn(),(n=this.sessionRecording)==null||n.startIfEnabledOrStop(),this.config.cookieless_mode==Vt&&((c=this.surveys)==null||c.loadIfEnabled()),(x(e?.captureEventName)||e!=null&&e.captureEventName)&&this.capture((d=e?.captureEventName)!==null&&d!==void 0?d:"$opt_in",e?.captureProperties,{send_instantly:!0}),this.config.capture_pageview&&this.Hn()}else k.warn(Ul)}opt_out_capturing(){var e,n,r;this.config.cookieless_mode!==gt?(this.config.cookieless_mode===Vt&&this.consent.isOptedIn()&&this.Yn(!0,!0),this.consent.optInOut(!1),this.es(),this.config.cookieless_mode===Vt&&(this.register({distinct_id:Ar,$device_id:null}),(e=this.sessionRecording)==null||e.stopRecording(),this.sessionRecording=void 0,(n=this.sessionManager)==null||n.destroy(),(r=this.pageViewManager)==null||r.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,this.config.capture_pageview&&this.Hn(),this.Bn())):k.warn(Ul)}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var e=this.consent.consent;return e===1?"granted":e===0?"denied":"pending"}is_capturing(){return this.config.cookieless_mode===gt||(this.config.cookieless_mode===Vt?this.consent.isRejected()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.es()}_is_bot(){return ke?fd(ke,this.config.custom_blocked_useragents):void 0}Hn(){C&&(C.visibilityState==="visible"?this.wn||(this.wn=!0,this.capture(cn,{title:C.title},{send_instantly:!0}),this.kn&&(C.removeEventListener(pi,this.kn),this.kn=null)):this.kn||(this.kn=this.Hn.bind(this),ie(C,pi,this.kn)))}debug(e){e===!1?(v?.console.log("You've disabled debug mode."),this.set_config({debug:!1})):(v?.console.log("You're now in debug mode. All calls to PostHog will be logged in your console.\nYou can disable this with `posthog.debug(false)`."),this.set_config({debug:!0}))}Qi(){var e=this.Mn||{};return"advanced_disable_flags"in e?!!e.advanced_disable_flags:this.config.advanced_disable_flags!==!1?!!this.config.advanced_disable_flags:this.config.advanced_disable_decide===!0?(k.warn("Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version."),!0):(function(n,r,i,s,o){var a=r in n&&!B(n[r]),l=i in n&&!B(n[i]);return a?n[r]:!!l&&(o&&o.warn("Config field '"+i+"' is deprecated. Please use '"+r+"' instead. The old field will be removed in a future major version."),n[i])})(e,"advanced_disable_flags","advanced_disable_decide",0,k)}Pt(e){var n;if(B(this.config.before_send))return e;var r=Object.keys((n=e.properties)!==null&&n!==void 0?n:{}).filter(Oh),i=L(this.config.before_send)?this.config.before_send:[this.config.before_send],s=e;for(var o of i){if(s=o(s),B(s)){var a="Event '"+e.event+"' was rejected in beforeSend function";return Lh(e.event)?k.warn(a+". This can cause unexpected behavior."):k.info(a),null}s.properties&&!yt(s.properties)||k.warn("Event '"+e.event+"' has no properties after beforeSend function, this is likely an error.")}for(var l of r)if(s.properties&&B(s.properties[l]))return k.warn("Event '"+e.event+"' had its '"+l+"' property removed in a beforeSend function. This property is required for ingestion, so the event will be dropped."),null;return s}getPageViewId(){var e;return(e=this.pageViewManager.ui)==null?void 0:e.pageViewId}captureTraceFeedback(e,n){this.capture("$ai_feedback",{$ai_trace_id:String(e),$ai_feedback_text:n})}captureTraceMetric(e,n,r){this.capture("$ai_metric",{$ai_trace_id:String(e),$ai_metric_name:n,$ai_metric_value:String(r)})}Cn(e){var n=Ye(e)&&!e,r=Q.N()&&Q.P("ph_debug")==="true";return!n&&(!!r||e)}}Te.__defaultExtensionClasses={},Te.rs=(()=>{var t=()=>{};return{trace:t,debug:t,info:t,warn:t,error:t,fatal:t}})(),(function(t,e){for(var n=0;e.length>n;n++)t.prototype[e[n]]=kp(t.prototype[e[n]])})(Te,["identify"]);class zl{constructor(e){this.disabled=e===!1;var n=te(e)?e:{};this.thresholdPx=n.threshold_px||30,this.timeoutMs=n.timeout_ms||1e3,this.clickCount=n.click_count||3,this.clicks=[]}isRageClick(e,n,r){if(this.disabled)return!1;var i=this.clicks[this.clicks.length-1];if(i&&Math.abs(e-i.x)+Math.abs(n-i.y)r-i.timestamp){if(this.clicks.push({x:e,y:n,timestamp:r}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:e,y:n,timestamp:r}];return!1}}var $s="$copy_autocapture",Rs=ne("[AutoCapture]");function Ts(t,e){return e.length>t?e.slice(0,t)+"...":e}function Pf(t){if(t.previousElementSibling)return t.previousElementSibling;var e=t;do e=e.previousSibling;while(e&&!$t(e));return e}function $f(t,e){var n,r,i=e.e,s=e.maskAllElementAttributes,o=e.maskAllText,a=e.elementAttributeIgnoreList,l=e.elementsChainAsString,u=e.disableCaptureUrlHashes;if(!$t(t))return{props:{}};for(var c=[t],d=new Set([t]),h=t;h.parentNode&&!Me(h,"body")&&Bu>c.length;)if(Ou(h.parentNode)){var p=h.parentNode.host;if(d.has(p))break;d.add(p),c.push(p),h=p}else{if(!$t(h.parentNode)||d.has(h.parentNode))break;d.add(h.parentNode),c.push(h.parentNode),h=h.parentNode}var f,g,m=[],_={},w=!1,b=!1;if(Z(c,(S=>{var P=vo(S);if(Me(S,"a")){var R=S.getAttribute("href");w=!!(P&&R&&er(R))&&(u?Pt(R):R)}M(mi(S),"ph-no-capture")&&(b=!0),m.push((function(T,O,J,q,H){H===void 0&&(H=!1);var oe=T.tagName.toLowerCase(),fe={tag_name:oe};ca.indexOf(oe)>-1&&!J&&(fe.$el_text=oe.toLowerCase()==="a"||oe.toLowerCase()==="button"?Ts(1024,kl(T)):Ts(1024,cr(T)));var Ie=mi(T);Ie.length>0&&(fe.classes=Ie.filter((function(ae){return ae!==""}))),Z(T.attributes,(function(ae){var me;if((!Wu(T)||["name","id","class","aria-label"].indexOf(ae.name)!==-1)&&(q==null||!q.includes(ae.name))&&!O&&er(ae.value)&&(!W(me=ae.name)||me.substring(0,10)!=="_ngcontent"&&me.substring(0,7)!=="_nghost")){var ge=ae.value;ae.name==="class"&&(ge=la(ge).join(" ")),fe["attr__"+ae.name]=Ts(1024,ae.name==="href"&&H?Pt(ge):ge)}}));for(var _e=1,Ce=1,Re=T;Re=Pf(Re);)_e++,Re.tagName===T.tagName&&Ce++;return fe.nth_child=_e,fe.nth_of_type=Ce,fe})(S,s,o,a,u));var N=(function(T){if(!vo(T))return{};var O={};return Z(T.attributes,(function(J){if(J.name&&J.name.indexOf("data-ph-capture-attribute")===0){var q=J.name.replace("data-ph-capture-attribute-",""),H=J.value;q&&H&&er(H)&&(O[q]=H)}})),O})(S);ee(_,N)})),b)return{props:{},explicitNoCapture:b};if(o||(m[0].$el_text=Me(t,"a")||Me(t,"button")?kl(t):cr(t)),w){var I,A;m[0].attr__href=w;var F=(I=vi(w))==null?void 0:I.host,j=v==null||(A=v.location)==null?void 0:A.host;F&&j&&F!==j&&(f=w)}return{props:ee({$event_type:i.type,$ce_version:1},l?{}:{$elements:m},{$elements_chain:(g=m,(function(S){return S.map((P=>{var R,N,T="";if(P.tag_name&&(T+=P.tag_name),P.attr_class)for(var O of(P.attr_class.sort(),P.attr_class))T+="."+O.replace(/"/g,"");var J=E({},P.text?{text:P.text}:{},{"nth-child":(R=P.nth_child)!==null&&R!==void 0?R:0,"nth-of-type":(N=P.nth_of_type)!==null&&N!==void 0?N:0},P.href?{href:P.href}:{},P.attr_id?{attr_id:P.attr_id}:{},P.attributes),q={};return Vr(J).sort(((H,oe)=>H[0].localeCompare(oe[0]))).forEach((H=>{var oe=H[1];return q[Il(H[0].toString())]=Il(oe.toString())})),(T+=":")+Vr(q).map((H=>H[0]+'="'+H[1]+'"')).join("")})).join(";")})((function(S){return S.map((P=>{var R,N,T={text:(R=P.$el_text)==null?void 0:R.slice(0,400),tag_name:P.tag_name,href:(N=P.attr__href)==null?void 0:N.slice(0,2048),attr_class:zp(P),attr_id:P.attr__id,nth_child:P.nth_child,nth_of_type:P.nth_of_type,attributes:{}};return Vr(P).filter((O=>O[0].indexOf("attr__")===0)).forEach((O=>T.attributes[O[0]]=O[1])),T}))})(g)))},(n=m[0])!=null&&n.$el_text?{$el_text:(r=m[0])==null?void 0:r.$el_text}:{},f&&i.type==="click"?{$external_click_url:f}:{},_)}}var Un=ne("[ExceptionAutocapture]"),ql=()=>{},Rf=ne("[TracingHeaders]"),jt=ne("[Web Vitals]"),Vl=9e5,Gl="disabled",Kl="lazy_loading",Hn="awaiting_config",Mr="missing_config";ne("[SessionRecording]"),ne("[SessionRecording]");var ko="[SessionRecording]",ut=ne(ko),Tf=ne("[Heatmaps]");function Ns(t){return te(t)&&"clientX"in t&&"clientY"in t&&he(t.clientX)&&he(t.clientY)}var Lr=ne("[Product Tours]"),Ms=t=>{var e;return!t.config.disable_product_tours&&!((e=t.persistence)==null||!e.get_property(ia))},Nf=["$set_once","$set"],et=ne("[SiteApps]"),Jl="Error while initializing PostHog app with config id ";function an(t,e,n){if(B(t))return!1;switch(n){case"exact":return t===e;case"contains":var r=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/_/g,".").replace(/%/g,".*");return new RegExp(r,"i").test(t);case"regex":try{return new RegExp(e).test(t)}catch{return!1}default:return!1}}class Mf{constructor(e){this.ns=new pa,this.ss=(n,r)=>this.os(n,r)&&this.ls(n,r)&&this.us(n,r)&&this.hs(n,r),this.os=(n,r)=>r==null||!r.event||n?.event===r?.event,this._instance=e,this.ds=new Set,this.vs=new Set}init(){var e,n;x((e=this._instance)==null?void 0:e._addCaptureHook)||(n=this._instance)==null||n._addCaptureHook(((r,i)=>{this.on(r,i)}))}register(e){var n,r;if(!x((n=this._instance)==null?void 0:n._addCaptureHook)&&(e.forEach((o=>{var a,l;(a=this.vs)==null||a.add(o),(l=o.steps)==null||l.forEach((u=>{var c;(c=this.ds)==null||c.add(u?.event||"")}))})),(r=this._instance)!=null&&r.autocapture)){var i,s=new Set;e.forEach((o=>{var a;(a=o.steps)==null||a.forEach((l=>{l!=null&&l.selector&&s.add(l?.selector)}))})),(i=this._instance)==null||i.autocapture.setElementSelectors(s)}}on(e,n){var r;n!=null&&e.length!=0&&(this.ds.has(e)||this.ds.has(n.event))&&this.vs&&((r=this.vs)==null?void 0:r.size)>0&&this.vs.forEach((i=>{this.cs(n,i)&&this.ns.emit("actionCaptured",i.name)}))}fs(e){this.onAction("actionCaptured",(n=>e(n)))}cs(e,n){if(n?.steps==null)return!1;for(var r of n.steps)if(this.ss(e,r))return!0;return!1}onAction(e,n){return this.ns.on(e,n)}ls(e,n){if(n!=null&&n.url){var r,i=e==null||(r=e.properties)==null?void 0:r.$current_url;if(!i||typeof i!="string"||!an(i,n.url,n.url_matching||"contains"))return!1}return!0}us(e,n){return!!this.ps(e,n)&&!!this.gs(e,n)&&!!this.ys(e,n)}ps(e,n){var r;if(n==null||!n.href)return!0;var i=this.bs(e);if(i.length>0)return i.some((a=>an(a.href,n.href,n.href_matching||"exact")));var s,o=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";return!!o&&an((s=o.match(/(?::|")href="(.*?)"/))?s[1]:"",n.href,n.href_matching||"exact")}gs(e,n){var r;if(n==null||!n.text)return!0;var i=this.bs(e);if(i.length>0)return i.some((u=>an(u.text,n.text,n.text_matching||"exact")||an(u.$el_text,n.text,n.text_matching||"exact")));var s,o,a,l=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";return!!l&&(s=(function(u){for(var c,d=[],h=/(?::|")text="(.*?)"/g;!B(c=h.exec(u));)d.includes(c[1])||d.push(c[1]);return d})(l),o=n.text,a=n.text_matching||"exact",s.some((u=>an(u,o,a))))}ys(e,n){var r,i;if(n==null||!n.selector)return!0;var s=e==null||(r=e.properties)==null?void 0:r.$element_selectors;if(s!=null&&s.includes(n.selector))return!0;var o=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";if(n.selector_regex&&o)try{return new RegExp(n.selector_regex).test(o)}catch{return!1}return!1}bs(e){var n;return(e==null||(n=e.properties)==null?void 0:n.$elements)==null?[]:e?.properties.$elements}hs(e,n){return n==null||!n.properties||n.properties.length===0||vd(n.properties.reduce(((r,i)=>{var s=L(i.value)?i.value.map(String):i.value!=null?[String(i.value)]:[];return r[i.key]={values:s,operator:i.operator||"exact"},r}),{}),e?.properties)}}class Lf{constructor(e){var n;this._s=[],this._instance=e,this.ws=new Map,this.ks=new Map,this.xs=new Map,(n=this._instance)==null||n.onSessionId==null||n.onSessionId((r=>this.Ss(r)))}Cs(e){return!1}Ms(){return null}Ts(e){}Es(){}Is(e,n){return!!e&&vd(e.propertyFilters,n?.properties)}Ps(e,n){var r=new Map;return e.forEach((i=>{var s;(s=i.conditions)==null||(s=s[n])==null||(s=s.values)==null||s.forEach((o=>{if(o!=null&&o.name){var a=r.get(o.name)||[];a.push(i.id),r.set(o.name,a)}}))})),r}Rs(e,n,r){var i=(r===Ln.Activation?this.ws:this.ks).get(e),s=[];return this.As((o=>{s=o.filter((a=>i?.includes(a.id)))})),s.filter((o=>{var a,l=(a=o.conditions)==null||(a=a[r])==null||(a=a.values)==null?void 0:a.find((u=>u.name===e));return this.Is(l,n)}))}register(e){var n;x((n=this._instance)==null?void 0:n._addCaptureHook)||(this.Fs(e),this.Ls(e))}Ls(e){var n=e.filter((r=>{var i,s;return((i=r.conditions)==null?void 0:i.actions)&&((s=r.conditions)==null||(s=s.actions)==null||(s=s.values)==null?void 0:s.length)>0}));n.length!==0&&(this.Os==null&&(this.Os=new Mf(this._instance),this.Os.init(),this.Os.fs((r=>{this.onAction(r)}))),n.forEach((r=>{var i,s,o,a,l;r.conditions&&(i=r.conditions)!=null&&i.actions&&(s=r.conditions)!=null&&(s=s.actions)!=null&&s.values&&((o=r.conditions)==null||(o=o.actions)==null||(o=o.values)==null?void 0:o.length)>0&&((a=this.Os)==null||a.register(r.conditions.actions.values),(l=r.conditions)==null||(l=l.actions)==null||(l=l.values)==null||l.forEach((u=>{if(u&&u.name){var c=this.xs.get(u.name);c&&c.push(r.id),this.xs.set(u.name,c||[r.id])}})))})))}Fs(e){var n,r=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.events)&&((a=s.conditions)==null||(a=a.events)==null||(a=a.values)==null?void 0:a.length)>0})),i=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.cancelEvents)&&((a=s.conditions)==null||(a=a.cancelEvents)==null||(a=a.values)==null?void 0:a.length)>0}));r.length===0&&i.length===0||((n=this._instance)==null||n._addCaptureHook(((s,o)=>{this.onEvent(s,o)})),this.ws=this.Ps(e,Ln.Activation),this.ks=this.Ps(e,Ln.Cancellation))}onEvent(e,n){var r,i,s=this.Ds(),o=(n==null||(r=n.properties)==null?void 0:r.$survey_id)||(n==null||(i=n.properties)==null?void 0:i.$product_tour_id);if(o&&this.getActivatedIds().includes(o)){var a=this.$s(e,o);if(a==="consume")return s.info("event consumed activated item, removing it",{event:e,itemId:o}),void this.Ns([o]);if(a==="persist")return s.info("shown item promoted to persisted activation",{event:e,itemId:o}),this.qs(o),void this.js([o])}if(this.ks.has(e)){var l=this.Rs(e,n,Ln.Cancellation);l.length>0&&(s.info("cancel event matched, cancelling items",{event:e,itemsToCancel:l.map((c=>c.id))}),this.Ns(l.map((c=>c.id))),l.forEach((c=>this.Bs(c.id))))}if(this.ws.has(e)){s.info("event name matched",{event:e,eventPayload:n,items:this.ws.get(e)});var u=this.Rs(e,n,Ln.Activation);this.Hs(u.map((c=>c.id)))}}onAction(e){this.xs.has(e)&&this.Hs(this.xs.get(e)||[])}Hs(e){var n;if(e.length!==0){var r=!((n=this._instance)==null||n.get_session_id==null||!n.get_session_id()),i=[];for(var s of e)r&&this.Cs(s)?this.qs(s)&&this.Us(s):i.push(s);i.length>0&&(this._s=[...new Set([...this._s,...i])]),this.Ds().info("updating activated items",{activatedItems:this.getActivatedIds()})}}qs(e){this._s=this._s.filter((r=>r!==e));var n=this.zs();return!n.includes(e)&&(this.Ws([...n,e]),this.Vs(),!0)}Ns(e){var n=new Set(e);this._s=this._s.filter((s=>!n.has(s)));var r=this.Zs(),i=r.filter((s=>!n.has(s)));i.length!==r.length&&(this.Ws(i),i.length===0&&this.Gs()),this.js(e)}Qs(){var e,n=this.Ms();if(!n)return{};var r=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n];return r&&typeof r=="object"?r:{}}Us(e){if(this.Ms()){var n=this.Qs();this.Ts(E({},n,{[e]:Date.now()}))}}js(e){if(this.Ms()){var n=this.Qs(),r={},i=!1;for(var s of Object.entries(n)){var o=s[0],a=s[1];e.includes(o)?i=!0:r[o]=a}i&&(yt(r)?this.Es():this.Ts(r))}}Ks(){this.Ms()&&this.Es()}getActivationTimestamp(e){if(this.zs().includes(e)){var n=this.Qs()[e];return he(n)?n:void 0}}Zs(){var e,n=this.Js();return((e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n])||[]}zs(){var e,n,r=this.Zs();if(r.length===0)return[];var i=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[this.Ys()],s=(n=this._instance)==null||n.get_session_id==null?void 0:n.get_session_id();return s&&i===s?r:[]}Vs(){var e,n=(e=this._instance)==null||e.get_session_id==null?void 0:e.get_session_id();n&&this.Xs(n)}Gs(){this.ta()}Ss(e){var n,r=(n=this._instance)==null||(n=n.persistence)==null?void 0:n.props[this.Ys()];if(r&&r!==e){var i=this.Zs(),s=this.Qs();i.length>0&&(this.Ws([]),i.filter((o=>he(s[o]))).forEach((o=>this.Bs(o)))),this.Gs(),this.Ks()}}getActivatedIds(){return[...new Set([...this.zs(),...this._s])].filter((e=>!this.ea(e)))}reset(){this._s=[],this.Zs().length>0&&this.Ws([]),this.Gs(),this.Ks()}getEventToItemsMap(){return this.ws}ia(){return this.Os}}class Of extends Lf{constructor(e){super(e)}Js(){return lo}Ys(){return Wr}Ms(){return zr}Ts(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[zr]:e})}Es(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(zr)}Cs(e){var n,r;this.As((s=>{r=s.find((o=>o.id===e))}));var i=(n=r)==null||(n=n.appearance)==null?void 0:n.surveyPopupDelaySeconds;return he(i)&&i>0}ra(){return vt.SHOWN}As(e){var n;(n=this._instance)==null||n.getSurveys(e)}Bs(e){var n;(n=this._instance)==null||n.cancelPendingSurvey(e)}Ds(){return V}Ws(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[lo]:e})}Xs(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[Wr]:e})}ta(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(Wr)}ea(){return!1}$s(e,n){var r;this.As((s=>{r=s.find((o=>o.id===n))}));var i=!r||(function(s){var o;return _d(s)&&!((o=s.conditions)==null||(o=o.events)==null||!o.repeatedActivation)||s.schedule==="always"})(r);return i?e===vt.SHOWN?"consume":"ignore":e===vt.SHOWN?"persist":e===vt.DISMISSED||e===vt.SENT?"consume":"ignore"}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}var Or="SDK is not enabled or survey functionality is not yet loaded",Yl="Disabled. Not loading surveys.",Bf=v!=null&&v.location?_i(v.location.hash,"__posthog")||_i(location.hash,"state"):null,Zl="_postHogToolbarParams",Xl=ne("[Toolbar]"),Ql=ne("[FeatureFlags]");class Df{constructor(e,n){n===void 0&&(n=!1),this.na=!1,this.update(e,n)}update(e,n){this.sa=((r,i)=>{var s,o,a,l;return{bootstrap:{featureFlags:(s=r.bootstrap)==null?void 0:s.featureFlags,featureFlagPayloads:(o=r.bootstrap)==null?void 0:o.featureFlagPayloads},remoteRequestsDisabled:i,featureFlagsDisabled:!!r.advanced_disable_feature_flags,onlyEvaluateSurveyFeatureFlags:!!r.advanced_only_evaluate_survey_feature_flags,deduplicateCallsPerSession:!!r.advanced_feature_flags_dedup_per_session,cacheTtlMs:r.feature_flag_cache_ttl_ms,requestTimeoutMs:r.feature_flag_request_timeout_ms,compression:r.disable_compression?"none":"base64",evaluationContexts:(a=(l=r.evaluation_contexts)!==null&&l!==void 0?l:r.evaluation_environments)!==null&&a!==void 0?a:[],flagKeys:L(r.flag_keys)?r.flag_keys:void 0}})(e,n),!e.evaluation_environments||e.evaluation_contexts||this.na||(Ql.warn("evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version."),this.na=!0),x(e.flag_keys)||L(e.flag_keys)||Ql.error("Invalid flag_keys found:",e.flag_keys,"Expected array of non-empty strings")}get(){return this.sa}}var ec=ne("[FeatureFlags]"),Ut=ne("[FeatureFlags]",{debugEnabled:!0}),Ls=`" failed. Feature flags didn't load in time.`,tc="connection_error",nc=t=>{for(var e={},n=0;t.length>n;n++)e[t[n]]=!0;return e},rc=t=>{var e={};for(var n of Vr(t||{})){var r=n[1];r&&(e[n[0]]=r)}return e},tt=ne("[Error tracking]"),ic="Refusing to render web experiment since the viewer is a likely bot",jf={icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())>-1,not_icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())===-1,regex:(t,e)=>bi(e,t),not_regex:(t,e)=>!bi(e,t),exact:(t,e)=>e===t,is_not:(t,e)=>e!==t};class ye{get Ne(){return this._instance.config}constructor(e){var n=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(r){r===void 0&&(r=!1),n.getWebExperiments((i=>{ye.aa("retrieved web experiments from the server"),n.oa=new Map,i.forEach((s=>{if(s.feature_flag_key){var o;n.oa&&(ye.aa("setting flag key ",s.feature_flag_key," to web experiment ",s),(o=n.oa)==null||o.set(s.feature_flag_key,s));var a=n._instance.getFeatureFlag(s.feature_flag_key);W(a)&&s.variants[a]&&n.la(s.name,a,s.variants[a].transforms)}else if(s.variants)for(var l in s.variants){var u=s.variants[l];ye.ua(u,n._instance)&&n.la(s.name,l,u.transforms)}}))}),r)},this._instance=e,this._instance.onFeatureFlags((r=>{this.onFeatureFlags(r)}))}initialize(){}onFeatureFlags(e){if(this._is_bot())ye.aa(ic);else if(!this.Ne.disable_web_experiments){if(B(this.oa))return this.oa=new Map,this.loadIfEnabled(),void this.previewWebExperiment();ye.aa("applying feature flags",e),e.forEach((n=>{var r;if(this.oa&&(r=this.oa)!=null&&r.has(n)){var i,s=this._instance.getFeatureFlag(n),o=(i=this.oa)==null?void 0:i.get(n);s&&o!=null&&o.variants[s]&&this.la(o.name,s,o.variants[s].transforms)}}))}}previewWebExperiment(){var e=ye.getWindowLocation();if(e!=null&&e.search){var n=bn(e?.search,"__experiment_id"),r=bn(e?.search,"__experiment_variant");n&&r&&(ye.aa("previewing web experiments "+n+" && "+r),this.getWebExperiments((i=>{this.ha(parseInt(n),r,i)}),!1,!0))}}loadIfEnabled(){this.Ne.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(e,n,r){if(this.Ne.disable_web_experiments&&!r)return e([]);var i=this._instance.get_property("$web_experiments");if(i&&!n)return e(i);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/web_experiments/?token="+this.Ne.token),method:"GET",timestampMode:"query",callback:s=>e(s.statusCode===200&&s.json&&s.json.experiments||[])})}ha(e,n,r){var i=r.filter((s=>s.id===e));i&&i.length>0&&(ye.aa("Previewing web experiment ["+i[0].name+"] with variant ["+n+"]"),this.la(i[0].name,n,i[0].variants[n].transforms))}static ua(e,n){return!B(e.conditions)&&ye.da(e,n)&&ye.va(e)}static da(e,n){var r;if(B(e.conditions)||B((r=e.conditions)==null?void 0:r.url))return!0;var i=ye.getWindowLocation();if(i){var s,o,a,l=Nu(n,i.href);return(s=e.conditions)==null||!s.url||jf[(o=(a=e.conditions)==null?void 0:a.urlMatchType)!==null&&o!==void 0?o:"icontains"](e.conditions.url,l)}return!1}static getWindowLocation(){return v?.location}static va(e){var n;if(B(e.conditions)||B((n=e.conditions)==null?void 0:n.utm))return!0;var r=Ju();if(r.utm_source){var i,s,o,a,l,u,c,d,h=(i=e.conditions)==null||(i=i.utm)==null||!i.utm_campaign||((s=e.conditions)==null||(s=s.utm)==null?void 0:s.utm_campaign)==r.utm_campaign,p=(o=e.conditions)==null||(o=o.utm)==null||!o.utm_source||((a=e.conditions)==null||(a=a.utm)==null?void 0:a.utm_source)==r.utm_source,f=(l=e.conditions)==null||(l=l.utm)==null||!l.utm_medium||((u=e.conditions)==null||(u=u.utm)==null?void 0:u.utm_medium)==r.utm_medium,g=(c=e.conditions)==null||(c=c.utm)==null||!c.utm_term||((d=e.conditions)==null||(d=d.utm)==null?void 0:d.utm_term)==r.utm_term;return h&&f&&g&&p}return!1}static aa(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;n>i;i++)r[i-1]=arguments[i];k.info("[WebExperiments] "+e,r)}la(e,n,r){this._is_bot()?ye.aa(ic):n!=="control"?r.forEach((i=>{if(i.selector){var s;ye.aa("applying transform of variant "+n+" for experiment "+e+" ",i);var o=(s=document)==null?void 0:s.querySelectorAll(i.selector);o?.forEach((a=>{var l=a;i.html&&(l.innerHTML=i.html),i.css&&l.setAttribute("style",i.css)}))}})):ye.aa("Control variants leave the page unmodified.")}_is_bot(){return ke&&this._instance?fd(ke,this.Ne.custom_blocked_useragents):void 0}}var Ue=ne("[Conversations]"),Ht="Conversations not available yet.",sc="console",Sd="__posthogHandledLogsRequestError",Os=(t,e)=>{var n=t instanceof Error?t:new Error(e);return n[Sd]=!0,n},oc=t=>!!t&&typeof t=="object"&&t[Sd]===!0,ji={featureFlags:class{constructor(t){this.name="featureFlags",this.ca=!1,this.featureFlagEventHandlers=[],this.rt=ec,this.fa={},this.pa={},this.ga=[],this.ma=!1,this.ya=!1,this.ba=0,this._a=!1,this.wa=!1,this.ka=!1,this.xa=!1,this.Sa=0,this.Ca=()=>{var e=this.Ma();this.Sa=0,e&&this.reloadFeatureFlags()},"get"in t?this.Ta=t:(this.Ea=new Df(t.config,t.Qi()),this.Ta=this.Ea)}updateConfig(t,e){var n;(n=this.Ea)==null||n.update(t,e)}setup(t){return this.Ia=t,this.rt=t.logger.createLogger("[FeatureFlags]"),n=()=>{this.Ia===t&&(this.Ia=void 0,this.nn=t,this.Pa(t))},(e=t.kv.initialize())!=null&&e.then?e.then(n):n();var e,n}Pa(t){if(this.nn===t)return v&&ie(v,"online",this.Ca),this.Ra=t.registerDynamicEventProperties((()=>this.Aa()?this.fa:this.pa)),this.Fa(),this.initialize()}destroy(){v?.removeEventListener("online",this.Ca)}dispose(){var t;this.ba++,this.wa=!1,this.Ia=void 0,this.nn&&(this.La(),(t=this.Ra)==null||t.dispose(),this.Ra=void 0,this.ga=[],v?.removeEventListener("online",this.Ca),this.nn=void 0)}get Ne(){return this.Ta.get()}Oa(t){var e;return(e=this.nn)==null?void 0:e.kv.get(t)}F(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.set(t)}))}q(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.remove(t)}))}Da(t){try{t()}catch(e){this.rt.error("Failed to update feature flag persistence",e)}}Fa(){var t={};for(var e of[Gn,Kn,Hr,rt]){var n=this.Oa(e);x(n)||(t[e]=n)}this.fa=t;var r=E({},t),i=this.Oa(Wt);if(i)for(var s of Object.entries(i))r["$feature/"+s[0]]=s[1];this.pa=r}Aa(){var t=this.Ne.cacheTtlMs;if(!t||0>=t)return!1;var e=this.Oa(Qn);return typeof e!="number"||Date.now()-e>t}$a(){return!!this.Aa()&&(this.xa||this.ya||(this.xa=!0,this.rt.warn("Feature flag cache is stale, triggering refresh..."),this.reloadFeatureFlags()),!0)}Na(){var t=this.Ne.evaluationContexts;return t!=null&&t.length?t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid evaluation context found:",e,"Expected non-empty string"),n})):[]}qa(){var t=this.Ne.flagKeys;if(!x(t))return t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid flag key found:",e,"Expected non-empty string"),n}))}initialize(){var t,e,n=this.Ne,r=(t=(e=n.bootstrap)==null?void 0:e.featureFlags)!==null&&t!==void 0?t:{};if(Object.keys(r).length){var i,s,o=(i=(s=n.bootstrap)==null?void 0:s.featureFlagPayloads)!==null&&i!==void 0?i:{},a=Object.keys(r).filter((u=>!!r[u])).reduce(((u,c)=>(u[c]=r[c]||!1,u)),{}),l=Object.keys(o).filter((u=>a[u])).reduce(((u,c)=>(o[c]&&(u[c]=o[c]),u)),{});return this.ja({featureFlags:a,featureFlagPayloads:l})}}updateFlags(t,e,n){var r,i,s=n!=null&&n.merge&&(r=this.Oa(Wt))!==null&&r!==void 0?r:{},o=n!=null&&n.merge&&(i=this.Oa(Kn))!==null&&i!==void 0?i:{},a=E({},s,t),l=E({},o,e),u={};for(var c of Object.entries(a)){var d=c[0],h=c[1];u[d]={key:d,enabled:Xa(h),variant:Qa(h),reason:void 0,metadata:x(l?.[d])?void 0:{id:0,version:void 0,description:void 0,payload:l[d]}}}this.ja({flags:u})}get hasLoadedFlags(){return this.ma}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this.Oa(oo),e=this.Oa(rt),n=this.Oa(zt);if(!n&&!e)return t||{};var r=ee({},t||{}),i=[...new Set([...Object.keys(n||{}),...Object.keys(e||{})])];for(var s of i){var o,a,l=r[s],u=e?.[s],c=x(u)?(o=l?.enabled)!==null&&o!==void 0&&o:!!u,d=x(u)?l?.variant:typeof u=="string"?u:void 0,h=n?.[s],p=E({},l,{enabled:c,variant:c?d??l?.variant:void 0});c!==l?.enabled&&(p.original_enabled=l?.enabled),d!==l?.variant&&(p.original_variant=l?.variant),h&&(p.metadata=E({},l?.metadata,{payload:h,original_payload:l==null||(a=l.metadata)==null?void 0:a.payload})),r[s]=p}return this.ca||(this.rt.warn(" Overriding feature flag details!",{flagDetails:t,overriddenPayloads:n,finalDetails:r}),this.ca=!0),r}getAllFeatureFlags(){var t=this.getFlagVariants(),e=this.getFlagPayloads();return Object.keys(t).map((n=>{var r=t[n];return{key:n,enabled:Xa(r),variant:Qa(r),payload:Za(e[n])}}))}getFlagVariants(){var t=this.Oa(Wt),e=this.Oa(rt);if(!e)return t||{};for(var n=ee({},t||{}),r=Object.keys(e),i=0;r.length>i;i++)n[r[i]]=e[r[i]];return this.ca||(this.rt.warn(" Overriding feature flags!",{enabledFlags:t,overriddenFlags:e,finalFlags:n}),this.ca=!0),n}getFlagPayloads(){var t=this.Oa(Kn),e=this.Oa(zt);if(!e)return t||{};for(var n=ee({},t||{}),r=Object.keys(e),i=0;r.length>i;i++)n[r[i]]=e[r[i]];return this.ca||(this.rt.warn(" Overriding feature flag payloads!",{flagPayloads:t,overriddenPayloads:e,finalPayloads:n}),this.ca=!0),n}reloadFeatureFlags(){this._a||this.Ne.featureFlagsDisabled||this.Ma()||this.Ba||(this.ga.slice().forEach((t=>{try{t()}catch(e){this.rt.error("Error while running feature flags reloading callback",e)}})),this.Ba=setTimeout((()=>{this.Ha()}),5))}La(){clearTimeout(this.Ba),this.Ba=void 0}onReloading(t){return this.ga.push(t),()=>{this.ga=this.ga.filter((e=>e!==t))}}ensureFlagsLoaded(){this.ma||this.ya||this.Ba||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this._a=t}resetFlagCallReported(){this.q(Gt)}Ha(t){this.La();var e=this.nn;if(e&&!this.Ne.remoteRequestsDisabled&&!this.Ma())if(this.ya)this.wa=!0;else{var n={token:e.projectToken,distinct_id:e.distinctId,groups:e.groups,$anon_distinct_id:this.$anon_distinct_id,person_properties:E({},e.initialPersonProperties,this.Oa(ht)||{},{$lib:e.library.name,$lib_version:e.library.version}),group_properties:this.Oa(qt),timezone:td()};x(e.deviceId)||(n.$device_id=e.deviceId),(t!=null&&t.disableFlags||this.Ne.featureFlagsDisabled)&&(n.disable_flags=!0);var r=this.Na();r.length&&(n.evaluation_contexts=r);var i=this.qa();x(i)||(n.flag_keys=i);var s=this.Ne.onlyEvaluateSurveyFeatureFlags,o="/flags/?v=2"+(s?"&only_evaluate_survey_feature_flags=true":""),a=this.ba;this.ya=!0;var l=()=>{this.wa&&(this.wa=!1,this.Ha())},u=c=>{this.ya=!1,a===this.ba&&(this.F({[qr]:[tc]}),this.rt.error("Feature flag request failed",c)),l()};try{e.sendRequest(o,{target:"flags",method:"POST",body:n,compression:this.Ne.compression==="base64"?xe.Base64:void 0,sentAt:"body",timeoutMs:this.Ne.requestTimeoutMs}).then((c=>{var d,h,p=(d=c.json)!==null&&d!==void 0?d:{},f=c.statusCode!==200;if(this.ya=!1,a===this.ba){if(this.Ua(c.statusCode),f||this.wa||(this.$anon_distinct_id=void 0),!n.disable_flags||this.wa){this.ka=!f;var g=[];c.error?g.push(c.error instanceof Error&&c.error.name==="AbortError"?"timeout":c.error instanceof Error?tc:"unknown_error"):c.statusCode!==200&&g.push("api_error_"+c.statusCode),p.errorsWhileComputingFlags&&g.push("errors_while_computing_flags");var m=!((h=p.quotaLimited)==null||!h.includes("feature_flags"));m&&g.push("quota_limited"),this.F({[qr]:g}),m?this.rt.warn("You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more."):n.disable_flags||this.ja(p,f,{partialResponse:s}),l()}}else l()})).catch(u)}catch(c){u(c)}}}Ma(){return Gu(this.Sa,3)}Ua(t){this.Sa=Ku(t,this.Sa,3,(()=>this.rt.warn("Feature flag requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped refreshing feature flags; will try again when connectivity changes.")))}getFeatureFlag(t,e){var n;if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var r=this.getFeatureFlagResult(t,e);return(n=r?.variant)!==null&&n!==void 0?n:r?.enabled}}else this.rt.warn('getFeatureFlag for key "'+t+Ls)}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){var e=this.getFeatureFlagResult(t,{send_event:!1});return e?.payload}getFeatureFlagResult(t,e){if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var n,r=this.getFlagVariants(),i=t in r,s=r[t],o=this.getFlagPayloads()[t],a=String(s),l=this.Oa(Hr)||void 0,u=this.Oa(Qn)||void 0,c=this.Oa(Gt)||{};if(this.Ne.deduplicateCallsPerSession){var d,h=(d=this.nn)==null?void 0:d.session.sessionId,p=this.Oa(Yn);h&&h!==p&&(c={},n=h)}if(e.send_event||!("send_event"in e))if(t in c&&c[t].includes(a))n&&this.F({[Gt]:c,[Yn]:n});else{var f,g,m,_,w,b,I,A,F,j;L(c[t])?c[t].push(a):c[t]=[a],this.F(E({[Gt]:c},n?{[Yn]:n}:{}));var S=this.getFeatureFlagDetails(t),P=[...(f=this.Oa(qr))!==null&&f!==void 0?f:[]];x(s)&&P.push("flag_missing");var R={$feature_flag:t,$feature_flag_response:s,$feature_flag_payload:o||null,$feature_flag_request_id:l,$feature_flag_evaluated_at:u,$feature_flag_bootstrapped_response:((g=this.Ne.bootstrap)==null||(g=g.featureFlags)==null?void 0:g[t])||null,$feature_flag_bootstrapped_payload:((m=this.Ne.bootstrap)==null||(m=m.featureFlagPayloads)==null?void 0:m[t])||null,$used_bootstrap_value:!this.ka};x(S==null||(_=S.metadata)==null?void 0:_.has_experiment)||(R.$feature_flag_has_experiment=S.metadata.has_experiment),x(S==null||(w=S.metadata)==null?void 0:w.version)||(R.$feature_flag_version=S.metadata.version);var N,T=(b=S==null||(I=S.reason)==null?void 0:I.description)!==null&&b!==void 0?b:S==null||(A=S.reason)==null?void 0:A.code;T&&(R.$feature_flag_reason=T),S!=null&&(F=S.metadata)!=null&&F.id&&(R.$feature_flag_id=S.metadata.id),x(S?.original_variant)&&x(S?.original_enabled)||(R.$feature_flag_original_response=x(S.original_variant)?S.original_enabled:S.original_variant),S!=null&&(j=S.metadata)!=null&&j.original_payload&&(R.$feature_flag_original_payload=S==null||(N=S.metadata)==null?void 0:N.original_payload),P.length&&(R.$feature_flag_error=P.join(",")),this.za(R)}else n&&this.F({[Gt]:c,[Yn]:n});if(i)return{key:t,enabled:!!s,variant:typeof s=="string"?s:void 0,payload:Za(o)}}}else this.rt.warn('getFeatureFlagResult for key "'+t+Ls)}za(t){try{var e;(e=this.nn)==null||e.capture("$feature_flag_called",t).catch((n=>{this.rt.error("Failed to capture feature flag call",n)}))}catch(n){this.rt.error("Failed to capture feature flag call",n)}}getRemoteConfigPayload(t,e){this.Wa(t,e)}Wa(t,e){var n=this;return X((function*(){var r=n.nn;if(r){var i={distinct_id:r.distinctId,token:r.projectToken,person_properties:{$lib:r.library.name,$lib_version:r.library.version}},s=n.Na();s.length&&(i.evaluation_contexts=s);var o,a=n.qa();x(a)||(i.flag_keys=a);try{var l,u=(l=(yield r.sendRequest("/flags/?v=2",{target:"flags",method:"POST",body:i,compression:n.Ne.compression==="base64"?xe.Base64:void 0,sentAt:"body",timeoutMs:n.Ne.requestTimeoutMs})).json)==null?void 0:l.featureFlagPayloads;o=u?.[t]||void 0}catch(c){return void n.rt.error("Remote config feature flag request failed",c)}try{e(o)}catch(c){n.rt.error("Remote config feature flag callback failed",c)}}}))()}isFeatureEnabled(t,e){if(e===void 0&&(e={}),e.fresh&&!this.ka)return e.defaultValue;if(!(this.ma||this.getFlags()&&this.getFlags().length>0))return this.rt.warn('isFeatureEnabled for key "'+t+Ls),e.defaultValue;var n=this.getFeatureFlag(t,e);return x(n)?e.defaultValue:!!n}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((e=>e!==t))}receivedFeatureFlags(t,e,n){this.ja(t,e,n)}ja(t,e,n){if(this.nn){this.ma=!0;var r=(function(i,s,o,a,l,u){s===void 0&&(s={}),o===void 0&&(o={}),a===void 0&&(a={}),u===void 0&&(u=ec);var c=((F,j)=>{var S=F.flags;return S?E({},F,{featureFlags:Object.fromEntries(Object.keys(S).map((P=>{var R;return[P,(R=S[P].variant)!==null&&R!==void 0?R:S[P].enabled]}))),featureFlagPayloads:Object.fromEntries(Object.keys(S).filter((P=>S[P].enabled)).filter((P=>{var R;return(R=S[P].metadata)==null?void 0:R.payload})).map((P=>{var R;return[P,(R=S[P].metadata)==null?void 0:R.payload]})))}):(F.featureFlags&&j.warn("Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version"),F)})(i,u),d=c.flags,h=c.featureFlags,p=c.featureFlagPayloads;if(h){var f=i.requestId,g=i.evaluatedAt;if(L(h)){u.warn("v1 of the feature flags endpoint is deprecated. Please use the latest version.");var m={};if(h)for(var _=0;h.length>_;_++)m[h[_]]=!0;return{[Gn]:h,[Wt]:m,[ci]:!1}}var w=h,b=p,I=d;if(l!=null&&l.partialResponse)w=E({},s,w),b=E({},o,b),I=E({},a,I);else if(i.errorsWhileComputingFlags)if(d){var A=new Set(Object.keys(d).filter((F=>{var j;return!((j=d[F])!=null&&j.failed)})));w=E({},s,Object.fromEntries(Object.entries(w).filter((F=>A.has(F[0]))))),b=E({},o,Object.fromEntries(Object.entries(b||{}).filter((F=>A.has(F[0]))))),I=E({},a,Object.fromEntries(Object.entries(I||{}).filter((F=>A.has(F[0])))))}else w=E({},s,w),b=E({},o,b),I=E({},a,I);return E({[Gn]:Object.keys(rc(w)),[Wt]:w||{},[Kn]:b||{},[oo]:I||{},[ci]:i.minimalFlagCalledEvents===!0},f?{[Hr]:f}:{},g?{[Qn]:g}:{})}})(t,this.getFlagVariants(),this.getFlagPayloads(),this.getFlagsWithDetails(),n,this.rt);r&&this.F(r),e||(this.xa=!1),this.Va(e)}}override(t,e){e===void 0&&(e=!1),this.rt.warn("override is deprecated. Please use overrideFeatureFlags instead."),this.overrideFeatureFlags({flags:t,suppressWarning:e})}overrideFeatureFlags(t){this.Za(t)}Za(t){if(this.nn){if(t===!1)return this.q([rt,zt]),this.Va(),void Ut.info("All overrides cleared");if(L(t))return this.F({[rt]:nc(t)}),this.Va(),void Ut.info("Flag overrides set",{flags:t});if(t&&typeof t=="object"&&("flags"in t||"payloads"in t)){var e,n=t;this.ca=!!((e=n.suppressWarning)!==null&&e!==void 0&&e);var r={},i=n.flags,s=n.payloads;return i&&(r[rt]=L(i)?nc(i):i),s&&(r[zt]=s),Object.keys(r).length&&this.F(r),i===!1&&s===!1?this.q([rt,zt]):i===!1?this.q(rt):s===!1&&this.q(zt),this.Va(),i===!1?Ut.info("Flag overrides cleared"):i&&Ut.info("Flag overrides set",{flags:i}),void(s===!1?Ut.info("Payload overrides cleared"):s&&Ut.info("Payload overrides set",{payloads:s}))}if(t&&typeof t=="object")return this.F({[rt]:t}),this.Va(),void Ut.info("Flag overrides set",{flags:t});this.rt.warn("Invalid overrideOptions provided to overrideFeatureFlags",{overrideOptions:t})}else this.rt.warn("posthog.featureFlags.overrideFeatureFlags called before feature flags were ready")}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ma){var e=this.Ga(),n=e.flags,r=e.flagVariants;try{t(n,r)}catch(i){this.rt.error("Error while running feature flags callback",i)}}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,e,n){var r=(this.Oa(Ur)||[]).find((l=>l.flagKey===t)),i={["$feature_enrollment/"+t]:e},s={$feature_flag:t,$feature_enrollment:e,$set:i};r&&(s.$early_access_feature_name=r.name),n&&(s.$feature_enrollment_stage=n);var o=E({},this.getFlagVariants(),{[t]:e});this.F({[Gn]:Object.keys(rc(o)),[Wt]:o,[ht]:E({},this.Oa(ht)||{},i)}),this.Va();try{var a;(a=this.nn)==null||a.capture("$feature_enrollment_update",s).catch((l=>{this.rt.error("Failed to capture early access feature enrollment",l)}))}catch(l){this.rt.error("Failed to capture early access feature enrollment",l)}}getEarlyAccessFeatures(t,e,n){e===void 0&&(e=!1);var r=this.Oa(Ur);!r||e?this.Qa(t,n):t(r)}Qa(t,e){var n=this;return X((function*(){var r=n.nn;if(r){var i,s=e?"&"+e.map((a=>"stage="+a)).join("&"):"";try{var o=yield r.sendRequest("/api/early_access_features/?token="+r.projectToken+s,{target:"api",method:"GET",sentAt:"query"});if(!o.json)return;n.F({[Ur]:i=o.json.earlyAccessFeatures})}catch(a){return void n.rt.error("Early access feature request failed",a)}try{t(i)}catch(a){n.rt.error("Early access feature callback failed",a)}}}))()}Ga(){var t=this.getFlags(),e=this.getFlagVariants();return{flags:t.filter((n=>e[n])),flagVariants:Object.keys(e).filter((n=>e[n])).reduce(((n,r)=>(n[r]=e[r],n)),{})}}Va(t){this.Fa();var e=this.Ga(),n=e.flags,r=e.flagVariants;this.featureFlagEventHandlers.forEach((i=>{try{i(n,r,{errorsLoading:t})}catch(s){this.rt.error("Error while running feature flags callback",s)}}))}setPersonPropertiesForFlags(t,e){e===void 0&&(e=!0),this.Ka(t,e)}Ka(t,e){e===void 0&&(e=!0);var n=this.Oa(ht)||{},r=t?.$set||(t!=null&&t.$set_once?{}:t),i=t?.$set_once,s={};if(i)for(var o in i)({}).hasOwnProperty.call(i,o)&&(o in n||(s[o]=i[o]));this.F({[ht]:E({},n,s,r)}),e&&this.reloadFeatureFlags()}unsetPersonPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=E({},this.Oa(ht)||{});t.forEach((r=>{delete n[r]})),this.F({[ht]:n}),e&&this.reloadFeatureFlags()}resetPersonPropertiesForFlags(t){t===void 0&&(t=!0),this.q(ht),t&&this.reloadFeatureFlags()}setGroupPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=this.Oa(qt)||{},r=E({},n);for(var i of Object.keys(t))r[i]=E({},n[i],t[i]);this.F({[qt]:r}),e&&this.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var e=this.Oa(qt)||{};this.F({[qt]:E({},e,{[t]:{}})})}else this.q(qt)}reset(){this.ba++,this.wa=!1,this.Fa(),this.ma=!1,this._a=!1,this.ka=!1,this.$anon_distinct_id=void 0,this.La(),this.ca=!1,this.Sa=0}}},Uf={sessionRecording:class{get Ne(){return this._instance.config}get Mr(){return this._instance.persistence}get started(){var t;return!((t=this.Ja)==null||!t.isStarted)}get status(){var t,e;return this.Ya===Hn||this.Ya===Mr?this.Ya:(t=(e=this.Ja)==null?void 0:e.status)!==null&&t!==void 0?t:this.Ya}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Ya=Gl,this.Xa=void 0,this.eo=!1,this.io=(()=>{var e;if(C==null||!C.visibilityState||C.visibilityState==="visible")return!0;var n=v==null||(e=v.performance)==null||e.getEntriesByType==null?void 0:e.getEntriesByType("visibility-state");return!(n!=null&&n.length)||n.some((r=>r.name==="visible"))})(),this.Ie=()=>{var e;C?.visibilityState==="visible"&&(this.io=!0,(e=this.Ja)==null||e.setDocumentWasEverVisible==null||e.setDocumentWasEverVisible(!0))},this._instance=t,!this._instance.sessionManager)throw ut.error("started without valid sessionManager"),new Error(ko+" started without valid sessionManager. This is a bug.");if(this.Ne.cookieless_mode===gt)throw new Error(ko+' cannot be used with cookieless_mode="always"');C!=null&&C.addEventListener&&ie(C,"visibilitychange",this.Ie)}initialize(){this.startIfEnabledOrStop()}dispose(){this.eo=!0,C==null||C.removeEventListener==null||C.removeEventListener("visibilitychange",this.Ie),this.stopRecording()}get ro(){var t,e=!((t=this._instance.get_property(Jt))==null||!t.enabled),n=!this.Ne.disable_session_recording,r=this.Ne.disable_session_recording||this._instance.consent.isOptedOut();return v&&e&&n&&!r}startIfEnabledOrStop(t){var e;if(!(this.eo||this.ro&&(e=this.Ja)!=null&&e.isStarted)){var n=!x(Object.assign)&&!x(Array.from);this.ro&&n?(this.no(t),ut.info("starting")):(this.Ya=Gl,this.stopRecording())}}no(t){var e,n,r;this.ro&&(this.Ya!==Hn&&this.Ya!==Mr&&(this.Ya=Kl),$!=null&&(e=$.__PosthogExtensions__)!=null&&(e=e.rrweb)!=null&&e.record&&(n=$.__PosthogExtensions__)!=null&&n.initSessionRecording?this.so(t):(r=$.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this._instance,this.ao,(i=>{if(i)return ut.error("could not load recorder",i);this.so(t)})))}stopRecording(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.stop()}oo(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.discard()}lo(){var t,e;(t=this.Mr)==null||t.unregister(sa),(e=this.Mr)==null||e.unregister(Su)}uo(t,e){if(B(t))return null;var n,r=he(t)?t:parseFloat(t);return typeof(n=r)!="number"||!Number.isFinite(n)||0>n||n>1?(ut.warn(e+" must be between 0 and 1. Ignoring invalid value:",t),null):r}ho(t){if(this.Mr){var e,n,r=this.Mr,i=()=>{var s,o=t.sessionRecording===!1?void 0:t.sessionRecording,a=this.uo((s=this.Ne.session_recording)==null?void 0:s.sampleRate,"session_recording.sampleRate"),l=this.uo(o?.sampleRate,"remote config sampleRate"),u=a??l;B(u)&&this.lo();var c=o?.minimumDurationMilliseconds;r.register({[Jt]:E({cache_timestamp:Date.now(),enabled:!!o},o,{networkPayloadCapture:E({capturePerformance:t.capturePerformance},o?.networkPayloadCapture),canvasRecording:{enabled:o?.recordCanvas,fps:o?.canvasFps,quality:o?.canvasQuality},sampleRate:u,minimumDurationMilliseconds:x(c)?null:c,endpoint:o?.endpoint,triggerMatchType:o?.triggerMatchType,masking:o?.masking,urlTriggers:o?.urlTriggers,version:o?.version,triggerGroups:o?.triggerGroups})})};i(),(e=this.Xa)==null||e.call(this),this.Xa=(n=this._instance.sessionManager)==null?void 0:n.onSessionId(i)}}onRemoteConfig(t){var e=t.ok?t.config:void 0;return e&&"sessionRecording"in e?e.sessionRecording===!1?(this.ho(e),void this.oo()):(this.ho(e),void this.startIfEnabledOrStop()):(this.Ya===Hn&&(this.Ya=Mr,ut.warn("config refresh failed, recording will not start until page reload")),void this.startIfEnabledOrStop())}log(t,e){var n;e===void 0&&(e="log"),(n=this.Ja)!=null&&n.log?this.Ja.log(t,e):ut.warn("log called before recorder was ready")}get ao(){var t,e,n=(t=this._instance)==null||(t=t.persistence)==null?void 0:t.get_property(Jt);return(n==null||(e=n.scriptConfig)==null?void 0:e.script)||"lazy-recorder"}do(){var t,e=this._instance.get_property(Jt);if(!e)return!1;try{t=typeof e=="object"?e:JSON.parse(e)}catch(n){return ut.warn("persisted remote config for session recording is invalid and will be ignored",n),!1}return!B(t.cache_timestamp)&&36e5>=Date.now()-t.cache_timestamp}so(t){var e,n,r;if(!this.eo){if((e=$.__PosthogExtensions__)==null||!e.initSessionRecording)return ut.warn("Called on script loaded before session recording is available. This can be caused by adblockers."),void this._instance.register_for_session({[$u]:!0});var i;if(this.Ja||(this.Ja=(i=$.__PosthogExtensions__)==null?void 0:i.initSessionRecording(this._instance,this.io),this.Ja._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture),!this.do())return this.Ya===Mr||this.Ya===Hn?void 0:(this.Ya=Hn,ut.info("persisted remote config is stale, requesting fresh config before starting"),void new nd(this._instance).load());this.Ya=Kl,(n=(r=this.Ja).setDocumentWasEverVisible)==null||n.call(r,this.io),this.Ja.start(t)}}onRRwebEmit(t){var e;(e=this.Ja)==null||e.onRRwebEmit==null||e.onRRwebEmit(t)}overrideLinkedFlag(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[ku]:!0}),(t=this.Ja)==null||t.overrideLinkedFlag()}overrideSampling(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[xu]:!0}),(t=this.Ja)==null||t.overrideSampling()}overrideTrigger(t){var e,n;this.Ja||(n=this.Mr)==null||n.register({[t==="url"?Iu:Cu]:!0}),(e=this.Ja)==null||e.overrideTrigger(t)}get sdkDebugProperties(){var t;return((t=this.Ja)==null?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,e){var n;return!((n=this.Ja)==null||!n.tryAddCustomEvent(t,e))}}},Hf={autocapture:class{constructor(t){this.vo=!1,this.co=null,this.fo=!1,this.po=!1,this.instance=t,this.rageclicks=new zl(t.config.rageclick),this.mo=null}initialize(){this.startIfEnabled()}get Ne(){var t,e,n=te(this.instance.config.autocapture)?this.instance.config.autocapture:{};return n.url_allowlist=(t=n.url_allowlist)==null?void 0:t.map((r=>new RegExp(r))),n.url_ignorelist=(e=n.url_ignorelist)==null?void 0:e.map((r=>new RegExp(r))),n}yo(){if(this.isBrowserSupported()){if(v&&C){var t=n=>{n=n||v?.event;try{this.bo(n)}catch(r){Rs.error("Failed to capture event",r)}};if(ie(C,"submit",t,{capture:!0}),ie(C,"change",t,{capture:!0}),ie(C,"click",t,{capture:!0}),this.Ne.capture_copied_text){var e=n=>{n=n||v?.event;try{this.bo(n,$s)}catch(r){Rs.error("Failed to capture copy/cut event",r)}};ie(C,"copy",e,{capture:!0}),ie(C,"cut",e,{capture:!0})}}}else Rs.info("Disabling Automatic Event Collection because this browser is not supported")}startIfEnabled(){this.isEnabled&&!this.vo&&(this.yo(),this.vo=!0)}onRemoteConfig(t){if(this.fo=!0,t.ok){var e=t.config;e.elementsChainAsString&&(this.po=e.elementsChainAsString);var n=e.autocapture_opt_out;Ye(n)&&(this.instance.persistence&&this.instance.persistence.register({[Qs]:n}),this.co=n),this.startIfEnabled()}else this.startIfEnabled()}setElementSelectors(t){this.mo=t}getElementSelectors(t){var e,n=[];return(e=this.mo)==null||e.forEach((r=>{var i=C?.querySelectorAll(r);i?.forEach((s=>{t===s&&n.push(r)}))})),n}get isEnabled(){var t,e,n=(t=this.instance.persistence)==null?void 0:t.props[Qs],r=this.co,i=this.instance.Qi()&&!this.fo;if($e(r)&&!Ye(n)&&!i)return!1;var s=(e=this.co)!==null&&e!==void 0?e:!!n;return!!this.instance.config.autocapture&&!s}bo(t,e){if(e===void 0&&(e="$autocapture"),this.isEnabled){var n,r=ys(t);Lu(r)&&(r=r.parentNode||null),e==="$autocapture"&&t.type==="click"&&t instanceof MouseEvent&&this.instance.config.rageclick&&(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,t.timeStamp||new Date().getTime())&&wl(r,this.instance.config.rageclick)&&this.bo(t,"$rageclick");var i=e===$s;if(r&&(function(d,h,p,f,g,m){var _;if(!v||ua(d)||p!=null&&p.url_allowlist&&!vl(p.url_allowlist,m)||p!=null&&p.url_ignorelist&&vl(p.url_ignorelist,m))return!1;if(p!=null&&p.dom_event_allowlist){var w=p.dom_event_allowlist;if(w&&!w.some((S=>h.type===S)))return!1}var b=Hu(d,f),I=b.parentIsUsefulElement,A=b.targetElementList;if(!(function(S,P){var R=P?.element_allowlist;if(x(R))return!0;var N,T=function(J){if(R.some((q=>J.tagName.toLowerCase()===q)))return{v:!0}};for(var O of S)if(N=T(O))return N.v;return!1})(A,p)||!mo(A,p?.css_selector_allowlist)||mo(A,(_=p?.css_selector_ignorelist)!==null&&_!==void 0?_:Bp))return!1;try{var F=v.getComputedStyle(d);if(F&&F.getPropertyValue("cursor")==="pointer"&&h.type==="click")return!0}catch{}var j=d.tagName.toLowerCase();switch(j){case"html":return!1;case"form":return(g||["submit"]).indexOf(h.type)>=0;case"input":case"select":case"textarea":return(g||["change","click"]).indexOf(h.type)>=0;default:return I?(g||["click"]).indexOf(h.type)>=0:(g||["click"]).indexOf(h.type)>=0&&(ca.indexOf(j)>-1||d.getAttribute("contenteditable")==="true")}})(r,t,this.Ne,i,i?["copy","cut"]:void 0,this.instance)){var s=$f(r,{e:t,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.Ne.element_attribute_ignorelist,elementsChainAsString:this.po,disableCaptureUrlHashes:this.instance.config.disable_capture_url_hashes}),o=s.props;if(s.explicitNoCapture)return!1;var a=this.getElementSelectors(r);if(a&&a.length>0&&(o.$element_selectors=a),e===$s){var l,u=Du(v==null||(l=v.getSelection())==null?void 0:l.toString()),c=t.type||"clipboard";if(!u)return!1;o.$selected_content=u,o.$copy_type=c}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return Se(C?.querySelectorAll)}},historyAutocapture:class{constructor(t){var e;this._instance=t,this._o=(v==null||(e=v.location)==null?void 0:e.pathname)||""}initialize(){this.startIfEnabled()}get isEnabled(){return this._instance.config.capture_pageview==="history_change"}startIfEnabled(){this.isEnabled&&(k.info("History API monitoring enabled, starting..."),this.monitorHistoryChanges())}stop(){this.wo&&this.wo(),this.wo=void 0,k.info("History API monitoring stopped")}monitorHistoryChanges(){v&&v.history&&(this.ko("pushState"),this.ko("replaceState"),this.xo())}ko(t){var e;if(v&&((e=v.history[t])==null||!e.__posthog_wrapped__)){var n=this;(function(r,i,s){try{if(!(i in r))return ql;var o={next:r[i]},a=s((function(){for(var l=arguments.length,u=new Array(l),c=0;l>c;c++)u[c]=arguments[c];return o.next.apply(this,u)}));return Se(a)&&(a.prototype=a.prototype||{},Object.defineProperties(a,{__posthog_wrapped__:{enumerable:!1,value:!0},__posthog_layer__:{enumerable:!1,value:o}})),r[i]=a,()=>{if(r[i]!==a)for(var l=r[i];Se(l)&&l.__posthog_layer__;){var u=l.__posthog_layer__;if(u.next===a)return void(u.next=o.next);l=u.next}else r[i]=o.next}}catch{return ql}})(v.history,t,(r=>function(i,s,o){r.call(this,i,s,o),n.So(t)}))}}So(t){try{var e,n=v==null||(e=v.location)==null?void 0:e.pathname;if(!n)return;n!==this._o&&this.isEnabled&&this._instance.capture(cn,{navigation_type:t}),this._o=n}catch(r){k.error("Error capturing "+t+" pageview",r)}}xo(){if(!this.wo){var t=()=>{this.So("popstate")};ie(v,"popstate",t),this.wo=()=>{v&&v.removeEventListener("popstate",t)}}}},heatmaps:class{get Ne(){return this.instance.config}constructor(t){var e;this.Co=!1,this.vo=!1,this.Mo=null,this.instance=t,this.Co=!((e=this.instance.persistence)==null||!e.props[eo]),this.rageclicks=new zl(t.config.rageclick)}initialize(){this.startIfEnabled()}get flushIntervalMilliseconds(){var t=5e3;return te(this.Ne.capture_heatmaps)&&this.Ne.capture_heatmaps.flush_interval_milliseconds&&(t=this.Ne.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return B(this.Ne.capture_heatmaps)?B(this.Ne.enable_heatmaps)?this.Co:this.Ne.enable_heatmaps:this.Ne.capture_heatmaps!==!1}startIfEnabled(){if(this.isEnabled){if(this.vo)return;Tf.info("starting..."),this.To(),this.Ie()}else{var t;clearInterval((t=this.Mo)!==null&&t!==void 0?t:void 0),this.Eo(),this.getAndClearBuffer()}}onRemoteConfig(t){if(t.ok){var e=t.config;if("heatmaps"in e){var n=!!e.heatmaps;this.instance.persistence&&this.instance.persistence.register({[eo]:n}),this.Co=n,this.startIfEnabled()}}}getAndClearBuffer(){var t=this.R;return this.R=void 0,t}Io(t){Ns(t.originalEvent)&&this.ke(t.originalEvent,"deadclick")}Ie(){this.Mo&&clearInterval(this.Mo),this.Mo=C?.visibilityState==="visible"?setInterval(this.cr.bind(this),this.flushIntervalMilliseconds):null}To(){v&&C&&(this.Po=this.cr.bind(this),ie(v,fi,this.Po),this.Ro=t=>this.ke(t||v?.event),ie(C,"click",this.Ro,{capture:!0}),this.Ao=t=>this.Fo(t||v?.event),ie(C,"mousemove",this.Ao,{capture:!0}),this.Lo=new Cl(this.instance,qp,this.Io.bind(this)),this.Lo.startIfEnabledOrStop(),this.Oo=this.Ie.bind(this),ie(C,pi,this.Oo),this.vo=!0)}Eo(){var t;v&&C&&(this.Po&&v.removeEventListener(fi,this.Po),this.Ro&&C.removeEventListener("click",this.Ro,{capture:!0}),this.Ao&&C.removeEventListener("mousemove",this.Ao,{capture:!0}),this.Oo&&C.removeEventListener(pi,this.Oo),clearTimeout(this.Do),(t=this.Lo)==null||t.stop(),this.vo=!1)}$o(t,e){var n=this.instance.scrollManager.scrollY(),r=this.instance.scrollManager.scrollX(),i=this.instance.scrollManager.scrollElement(),s=(function(o,a,l){for(var u=o;u&&$t(u)&&!Me(u,"body");){if(u===l)return!1;var c=void 0;try{var d,h,p;c=(d=(h=(p=u.ownerDocument)==null?void 0:p.defaultView)!==null&&h!==void 0?h:v)==null?void 0:d.getComputedStyle(u).position}catch{return!1}if(M(a,c))return!0;u=ju(u)}return!1})(ys(t),["fixed","sticky"],i);return{x:t.clientX+(s?0:r),y:t.clientY+(s?0:n),target_fixed:s,type:e}}ke(t,e){var n;if(e===void 0&&(e="click"),!ml(t.target)&&Ns(t)){var r=this.$o(t,e);(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,new Date().getTime())&&wl(ys(t),this.instance.config.rageclick)&&this.Vt(E({},r,{type:"rageclick"})),this.Vt(r)}}Fo(t){!ml(t.target)&&Ns(t)&&(clearTimeout(this.Do),this.Do=setTimeout((()=>{this.Vt(this.$o(t,"mousemove"))}),500))}Vt(t){if(v){var e=this.Ne.disable_capture_url_hashes?Pt(v.location.href):v.location.href,n=this.Ne.custom_personal_data_properties,r=this.Ne.mask_personal_data_properties?[...En,...n||[]]:[],i=ur(e,r,dr);this.R=this.R||{},this.R[i]||(this.R[i]=[]),this.R[i].push(t)}}cr(){this.R&&!yt(this.R)&&this.instance.capture("$$heatmap",{$heatmap_data:this.getAndClearBuffer()})}},deadClicksAutocapture:Cl,webVitalsAutocapture:class{constructor(t){var e;this.Co=!1,this.vo=!1,this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},this.No=()=>{clearTimeout(this.qo),this.qo=void 0,this.R.metrics.length!==0&&(this._instance.capture("$web_vitals",E({$current_url:this.R.url},this.R.metrics.reduce(((n,r)=>E({},n,{["$web_vitals_"+r.name+"_event"]:E({},r),["$web_vitals_"+r.name+"_value"]:r.value})),{}))),this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.jo=n=>{var r;if(this.R=this.R||{navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},B(n?.name)||B(n?.value))jt.error("Invalid metric received",n);else{var i=typeof n.navigationURL=="string"?n.navigationURL:void 0,s=this.Bo(i);if(!x(s)){var o=he(n.navigationId)||typeof n.navigationId=="string"?"navigation:"+n.navigationId:"url:"+s;if(!this.Ho||this.Ho>n.value){this.R.navigationKey!==o&&(this.No(),this.qo=setTimeout(this.No,this.flushToCaptureTimeoutMs)),x(this.R.navigationKey)&&(this.R.navigationKey=o,this.R.url=s),this.R.firstMetricTimestamp=x(this.R.firstMetricTimestamp)?Date.now():this.R.firstMetricTimestamp,n.attribution&&n.attribution.interactionTargetElement&&(n.attribution.interactionTargetElement=void 0);var a=(r=this._instance.sessionManager)==null?void 0:r.checkAndGetSessionAndWindowId(!0),l=E({},n,i?{navigationURL:s}:{},{$current_url:s,timestamp:Date.now()});x(a)||(l.$session_id=a.sessionId,l.$window_id=a.windowId),this.R.metrics.push(l),this.R.metrics.length===this.allowedMetrics.length&&this.No()}else jt.error("Ignoring metric with value >= "+this.Ho,n)}}},this.Uo=()=>{if(!this.vo){var n,r,i,s,o=$.__PosthogExtensions__,a=o?.postHogWebVitalsCallbacksByFlavor,l=a?.[this.zo]||(this.zo==="web-vitals"&&x(a)?o?.postHogWebVitalsCallbacks:void 0);if(x(l)||(n=l.onLCP,r=l.onCLS,i=l.onFCP,s=l.onINP),n&&r&&i&&s){var u={reportSoftNavs:this.useSoftNavs};this.allowedMetrics.indexOf("LCP")>-1&&n(this.jo.bind(this),u),this.allowedMetrics.indexOf("CLS")>-1&&r(this.jo.bind(this),u),this.allowedMetrics.indexOf("FCP")>-1&&i(this.jo.bind(this),u),this.allowedMetrics.indexOf("INP")>-1&&s(this.jo.bind(this),u),this.vo=!0}else jt.error("web vitals callbacks not loaded - not starting")}},this._instance=t,this.Co=!((e=this._instance.persistence)==null||!e.props[io]),this.startIfEnabled()}get Wo(){return this._instance.config.capture_performance}get allowedMetrics(){var t,e,n=te(this.Wo)?(t=this.Wo)==null?void 0:t.web_vitals_allowed_metrics:void 0;return B(n)?((e=this._instance.persistence)==null?void 0:e.props[so])||["CLS","FCP","INP","LCP"]:n}get flushToCaptureTimeoutMs(){return(te(this.Wo)?this.Wo.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var t=te(this.Wo)?this.Wo.web_vitals_attribution:void 0;return t!=null&&t}get useSoftNavs(){var t=te(this.Wo)?this.Wo.__preview_web_vitals_soft_navs:void 0;return t!=null&&t}get Ho(){var t=te(this.Wo)&&he(this.Wo.__web_vitals_max_value)?this.Wo.__web_vitals_max_value:Vl;return t>0&&6e4>=t?Vl:t}get isEnabled(){var t=re?.protocol;if(t!=="http:"&&t!=="https:")return jt.info("Web Vitals are disabled on non-http/https protocols"),!1;var e=te(this.Wo)?this.Wo.web_vitals:Ye(this.Wo)?this.Wo:void 0;return Ye(e)?e:this.Co}startIfEnabled(){this.isEnabled&&!this.vo&&(jt.info("enabled, starting..."),this.ai(this.Uo))}onRemoteConfig(t){if(t.ok){var e=t.config;if("capturePerformance"in e){var n=te(e.capturePerformance)&&!!e.capturePerformance.web_vitals,r=te(e.capturePerformance)?e.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[io]:n}),this._instance.persistence.register({[so]:r})),this.Co=n,this.startIfEnabled()}}}get zo(){return this.useSoftNavs?this.useAttribution?"web-vitals-with-attribution-soft-navs":"web-vitals-soft-navs":this.useAttribution?"web-vitals-with-attribution":"web-vitals"}ai(t){var e=$.__PosthogExtensions__,n=this.zo,r=e?.postHogWebVitalsCallbacksByFlavor;r!=null&&r[n]||n==="web-vitals"&&x(r)&&e!=null&&e.postHogWebVitalsCallbacks?t():e==null||e.loadExternalDependency==null||e.loadExternalDependency(this._instance,n,(i=>{i?jt.error("failed to load script",i):t()}))}Bo(t){var e=t||v?.location.href;if(e){var n=this._instance.config.disable_capture_url_hashes?Pt(e):e,r=this._instance.config.custom_personal_data_properties,i=this._instance.config.mask_personal_data_properties?[...En,...r||[]]:[];return ur(n,i,dr)}jt.error("Could not determine current URL")}}},Wf={exceptionObserver:class{constructor(t){var e;this.Uo=()=>{var n;if(v&&this.isEnabled&&(n=$.__PosthogExtensions__)!=null&&n.errorWrappingFunctions){var r=$.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,i=$.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=$.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.Vo&&this.Ne.capture_unhandled_errors&&(this.Vo=r(this.captureException.bind(this))),!this.Zo&&this.Ne.capture_unhandled_rejections&&(this.Zo=i(this.captureException.bind(this))),!this.Go&&this.Ne.capture_console_errors&&(this.Go=s(this.captureException.bind(this)))}catch(o){Un.error("failed to start",o),this.Qo()}}},this._instance=t,this.Ko=!((e=this._instance.persistence)==null||!e.props[to]),this.Jo=new jh(E({},(function(n){var r,i,s,o;return n===void 0&&(n={}),{refillRate:(r=(i=n.exceptionRateLimiterRefillRate)!==null&&i!==void 0?i:n.__exceptionRateLimiterRefillRate)!==null&&r!==void 0?r:1,bucketSize:(s=(o=n.exceptionRateLimiterBucketSize)!==null&&o!==void 0?o:n.__exceptionRateLimiterBucketSize)!==null&&s!==void 0?s:10}})(this._instance.config.error_tracking),{refillInterval:1e4,rt:Un})),this.Ne=this.Yo(),this.startIfEnabledOrStop()}Yo(){var t=this._instance.config.capture_exceptions,e={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return te(t)?e=E({},e,t):(x(t)?this.Ko:t)&&(e=E({},e,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),e}get isEnabled(){return this.Ne.capture_console_errors||this.Ne.capture_unhandled_errors||this.Ne.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(Un.info("enabled"),this.Qo(),this.ai(this.Uo)):this.Qo()}ai(t){var e,n;(e=$.__PosthogExtensions__)!=null&&e.errorWrappingFunctions?t():(n=$.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"exception-autocapture",(r=>{if(r)return Un.error("failed to load script",r);t()}))}Qo(){var t,e,n;(t=this.Vo)==null||t.call(this),this.Vo=void 0,(e=this.Zo)==null||e.call(this),this.Zo=void 0,(n=this.Go)==null||n.call(this),this.Go=void 0}onRemoteConfig(t){if(t.ok){var e=t.config;"autocaptureExceptions"in e&&(this.Ko=!!e.autocaptureExceptions||!1,this._instance.persistence&&this._instance.persistence.register({[to]:this.Ko}),this.Ne=this.Yo(),this.startIfEnabledOrStop())}}onConfigChange(){this.Ne=this.Yo()}captureException(t){var e,n,r,i=(e=t==null||(n=t.$exception_list)==null||(n=n[0])==null?void 0:n.type)!==null&&e!==void 0?e:"Exception";this.Jo.consumeRateLimit(i)?Un.info("Skipping exception capture because of client rate limiting.",{exception:i}):(r=this._instance.exceptions)==null||r.sendExceptionEvent(t)}},exceptions:class{constructor(t){var e,n;this.Xo=[],this.tl=new rp([new dp,new wp,new pp,new hp,new _p,new vp,new gp,new yp],(function(r){for(var i=arguments.length,s=new Array(i>1?i-1:0),o=1;i>o;o++)s[o-1]=arguments[o];return function(a,l){l===void 0&&(l=0);for(var u=[],c=a.split(` -`),d=l;c.length>d;d++){var h=c[d];if(1024>=h.length){var p=hl.test(h)?h.replace(hl,"$1"):h;if(!p.match(/\S*Error: /)){for(var f of s){var g=f(p,r);if(g){u.push(g);break}}if(u.length>=50)break}}}return(function(m){if(!m.length)return[];var _=Array.from(m);return _.reverse(),_.slice(0,50).map((w=>{return E({},w,{filename:w.filename||(b=_,b[b.length-1]||{}).filename,function:w.function||wn});var b}))})(u)}})("web:javascript",ap,up)),this._instance=t,this.Xo=(e=(n=this._instance.persistence)==null?void 0:n.get_property(no))!==null&&e!==void 0?e:[],this.el=li(this.il()),this.rl=new Ep(this.el)}onConfigChange(){this.el=li(this.il()),this.rl.setConfig(this.el)}onRemoteConfig(t){var e,n,r;if(t.ok){var i=t.config;if("errorTracking"in i){var s=(e=(n=i.errorTracking)==null?void 0:n.suppressionRules)!==null&&e!==void 0?e:[],o=(r=i.errorTracking)==null?void 0:r.captureExtensionExceptions;this.Xo=s,this._instance.persistence&&this._instance.persistence.register({[no]:this.Xo,[ro]:o})}}}get nl(){var t,e=!!this._instance.get_property(ro),n=this._instance.config.error_tracking.captureExtensionExceptions;return(t=n??e)!==null&&t!==void 0&&t}buildProperties(t,e){return this.tl.buildFromUnknown(t,{syntheticException:e?.syntheticException,mechanism:{handled:e?.handled}})}addExceptionStep(t,e){if(this.el.enabled)try{if(!W(t)||t.trim().length===0)return void tt.warn("Ignoring exception step because message must be a non-empty string");var n=(function(s){if(!s)return{sanitizedProperties:{},droppedKeys:[]};var o=[];return{sanitizedProperties:Object.keys(s).reduce(((a,l)=>bp.has(l)?(o.push(l),a):(a[l]=s[l],a)),{}),droppedKeys:o}})(this.sl(e)),r=n.sanitizedProperties,i=n.droppedKeys;i.length>0&&tt.warn("Ignoring reserved exception step fields",{droppedKeys:i}),this.rl.add(E({[oi]:t,[ai]:new Date().toISOString()},r))}catch(s){tt.error("Failed to add exception step. Ignoring breadcrumb.",s)}}sendExceptionEvent(t){try{var e=t.$exception_list;if(this.al(e)){if(this.ol(e))return this.ll("Exception dropped: matched a suppression rule"),void tt.info("Skipping exception capture because a suppression rule matched");if(!this.nl&&this.ul(e))return this.ll("Exception dropped: thrown by a browser extension"),void tt.info("Skipping exception capture because it was thrown by an extension");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.hl(e))return this.ll("Exception dropped: thrown by the PostHog SDK"),void tt.info("Skipping exception capture because it was thrown by the PostHog SDK")}var n=this.el.enabled&&B(t.$exception_steps)?this.dl(t):t,r=typeof(s=globalThis._posthogReleaseId)=="string"&&s.length>0?s:void 0;r&&(n.$release_id=r);try{var i=this._instance.capture("$exception",n,{_noTruncate:!0,_batchKey:"exceptionEvent",Wn:!0});return i&&this.rl.clear(),i}catch(o){return tt.error("Failed to capture exception event. Dropping this exception.",o),void this.rl.clear()}}catch(o){return void tt.error("Failed to process exception event. Ignoring this exception.",o)}var s}dl(t){try{var e=this.rl.getAttachable();return e.length===0?t:E({},t,{$exception_steps:e})}catch(n){return tt.error("Failed to read buffered exception steps. Capturing exception without steps.",n),t}}ll(t){this.el.enabled&&this.rl.add({[oi]:t,[ai]:new Date().toISOString()})}sl(t){return te(t)?E({},t):{}}il(){var t,e;return(t=(e=this._instance.config.error_tracking)==null?void 0:e.exception_steps)!==null&&t!==void 0?t:{}}ol(t){if(t.length===0)return!1;try{var e=t.reduce(((n,r)=>{var i=r.type,s=r.value;return W(i)&&i.length>0&&n.$exception_types.push(i),W(s)&&s.length>0&&n.$exception_values.push(s),n}),{$exception_types:[],$exception_values:[]});return this.Xo.some((n=>{var r=n.values.map((i=>{var s=md[i.operator],o=e[i.key];if(!s||!o)return!1;var a=L(i.value)?i.value:[i.value];return a.length>0&&s(a,o)}));return n.type==="OR"?r.some(Boolean):r.every(Boolean)}))}catch(n){return tt.warn("Failed to evaluate suppression rules. Capturing the exception.",n),!1}}ul(t){return t.flatMap((e=>{var n,r;return(n=(r=e.stacktrace)==null?void 0:r.frames)!==null&&n!==void 0?n:[]})).some((e=>e.filename&&e.filename.startsWith("chrome-extension://")))}hl(t){if(t.length>0){var e,n,r,i,s=(e=(n=t[0].stacktrace)==null?void 0:n.frames)!==null&&e!==void 0?e:[],o=s[s.length-1];return(r=o==null||(i=o.filename)==null?void 0:i.includes("posthog.com/static"))!==null&&r!==void 0&&r}return!1}al(t){return!B(t)&&L(t)}}},zf=E({productTours:class{get Mr(){return this._instance.persistence}constructor(t){this.vl=null,this.cl=null,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(t.ok){var e=t.config;if("productTours"in e){var n,r;if(this.Mr&&this.Mr.register({[ia]:!!e.productTours}),!Ms(this._instance))return!this.vl&&B((n=this.Mr)==null?void 0:n.props[Jn])||Lr.info("product tours disabled; stopping and clearing cached tours"),(r=this.vl)==null||r.stop(),this.vl=null,void this.clearCache();this.loadIfEnabled()}}}loadIfEnabled(){!this.vl&&Ms(this._instance)&&this.ai((()=>this.fl()))}ai(t){var e,n;(e=$.__PosthogExtensions__)!=null&&e.generateProductTours?t():(n=$.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"product-tours",(r=>{r?Lr.error("Could not load product tours script",r):t()}))}fl(){var t;!this.vl&&(t=$.__PosthogExtensions__)!=null&&t.generateProductTours&&(this.vl=$.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,e){if(e===void 0&&(e=!1),!L(this.cl)||e){var n=this.Mr;if(n){var r=n.props[Jn];if(L(r)&&!e)return this.cl=r,void t(r,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/product_tours/?token="+this._instance.config.token),method:"GET",timestampMode:"query",callback:i=>{if(Ms(this._instance)){var s=i.statusCode;if(s!==200||!i.json){var o="Product Tours API could not be loaded, status: "+s;return s===0?i.error||Lr.warn(o):Lr.error(o),void t([],{isLoaded:!1,error:o})}var a=L(i.json.product_tours)?i.json.product_tours:[];this.cl=a,n&&n.register({[Jn]:a}),t(a,{isLoaded:!0})}else t([],{isLoaded:!0})}})}else t(this.cl,{isLoaded:!0})}getActiveProductTours(t){B(this.vl)?t([],{isLoaded:!1,error:"Product tours not loaded"}):this.vl.getActiveProductTours(t)}showProductTour(t){var e;(e=this.vl)==null||e.showTourById(t)}previewTour(t){this.vl?this.vl.previewTour(t):this.ai((()=>{var e;this.fl(),(e=this.vl)==null||e.previewTour(t)}))}dismissProductTour(){var t;(t=this.vl)==null||t.dismissTour("user_clicked_skip")}nextStep(){var t;(t=this.vl)==null||t.nextStep()}previousStep(){var t;(t=this.vl)==null||t.previousStep()}clearCache(){var t;this.cl=null,(t=this.Mr)==null||t.unregister(Jn)}resetTour(t){var e;(e=this.vl)==null||e.resetTour(t)}resetAllTours(){var t;(t=this.vl)==null||t.resetAllTours()}cancelPendingTour(t){var e;(e=this.vl)==null||e.cancelPendingTour(t)}}},ji),qf={siteApps:class{constructor(t){this.pl=0,this._instance=t,this.gl=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}ml(t,e){if(e){var n=this.globalsForEvent(e);this.gl.push(n),this.gl.length>1e3&&(this.gl=this.gl.slice(10))}}get siteAppLoaders(){var t;return(t=$._POSTHOG_REMOTE_CONFIG)==null||(t=t[this._instance.config.token])==null?void 0:t.siteApps}initialize(){if(this.isEnabled){var t=this._instance._addCaptureHook(this.ml.bind(this));this.yl=()=>{t(),this.gl=[],this.yl=void 0}}}globalsForEvent(t){var e,n,r,i,s,o,a;if(!t)throw new Error("Event payload is required");var l={},u=this._instance.get_property("$groups")||[],c=this._instance.get_property("$stored_group_properties")||{};for(var d of Object.entries(c)){var h=d[0];l[h]={id:u[h],type:h,properties:d[1]}}var p=t.$set_once,f=t.$set;return{event:E({},Uc(t,Nf),{properties:E({},t.properties,f?{$set:E({},(e=(n=t.properties)==null?void 0:n.$set)!==null&&e!==void 0?e:{},f)}:{},p?{$set_once:E({},(r=(i=t.properties)==null?void 0:i.$set_once)!==null&&r!==void 0?r:{},p)}:{}),elements_chain:(s=(o=t.properties)==null?void 0:o.$elements_chain)!==null&&s!==void 0?s:"",distinct_id:(a=t.properties)==null?void 0:a.distinct_id}),person:{properties:this._instance.get_property("$stored_person_properties")},groups:l}}bl(t){var e,n=(e=t.tagName)==null?void 0:e.toLowerCase();return n==="style"&&this._instance.config.prepare_external_dependency_stylesheet?this._instance.config.prepare_external_dependency_stylesheet(t)||(et.error("prepare_external_dependency_stylesheet returned null"),null):n==="script"&&this._instance.config.prepare_external_dependency_script?this._instance.config.prepare_external_dependency_script(t)||(et.error("prepare_external_dependency_script returned null"),null):t}_l(){var t,e,n,r,i,s,o,a;if(!this._instance.config.prepare_external_dependency_stylesheet&&!this._instance.config.prepare_external_dependency_script)return()=>{};var l=C?.defaultView,u=l==null||(t=l.Node)==null?void 0:t.prototype;if(!l||!u)return()=>{};if(this.pl++,this.wl)return this.kl();var c=[],d=this,h=new WeakSet,p=(m,_,w)=>{if(m!=null&&m[_]){var b=m[_];m[_]=w(b),c.push((()=>{m[_]=b}))}},f=m=>{if(h.has(m))return m;var _=d.bl(m);return _&&h.add(_),_},g=m=>m.map((_=>typeof _=="string"?_:f(_))).filter((_=>!$e(_)));return p(u,"appendChild",(m=>function(_){var w=f(_);return w?m.call(this,w):_})),p(u,"insertBefore",(m=>function(_,w){var b=f(_);return b?m.call(this,b,w):_})),p(u,"replaceChild",(m=>function(_,w){var b=f(_);return b?m.call(this,b,w):w})),[(e=l.Element)==null?void 0:e.prototype,(n=l.Document)==null?void 0:n.prototype,(r=l.DocumentFragment)==null?void 0:r.prototype].forEach((m=>{p(m,"append",(_=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];return _.apply(this,g(b))})),p(m,"prepend",(_=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];return _.apply(this,g(b))}))})),[(i=l.Element)==null?void 0:i.prototype,(s=l.CharacterData)==null?void 0:s.prototype,(o=l.DocumentType)==null?void 0:o.prototype].forEach((m=>{p(m,"before",(_=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];return _.apply(this,g(b))})),p(m,"after",(_=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];return _.apply(this,g(b))})),p(m,"replaceWith",(_=>function(){for(var w=arguments.length,b=new Array(w),I=0;w>I;I++)b[I]=arguments[I];var A=g(b);return b.length&&!A.length?void 0:_.apply(this,A)}))})),p((a=l.Element)==null?void 0:a.prototype,"insertAdjacentElement",(m=>function(_,w){var b=f(w);return b?m.call(this,_,b):null})),this.wl=()=>{c.forEach((m=>m())),this.wl=void 0},this.kl()}kl(){var t=!1;return()=>{var e;t||(t=!0,this.pl--,this.pl===0&&((e=this.wl)==null||e.call(this)))}}xl(t,e){e===void 0&&(e=!0);var n=this._l();try{var r=t(n);return e&&n(),r}catch(i){throw n(),i}}setupSiteApp(t){var e=this.apps[t.id],n=()=>{var o;!e.errored&&this.gl.length&&(et.info("Processing "+this.gl.length+" events for site app with id "+t.id),this.gl.forEach((a=>this.xl((()=>e.processEvent==null?void 0:e.processEvent(a))))),e.processedBuffer=!0),Object.values(this.apps).every((a=>a.processedBuffer||a.errored))&&((o=this.yl)==null||o.call(this))},r=!1,i=o=>{e.errored=!o,e.loaded=!0,et.info("Site app with id "+t.id+" "+(o?"loaded":"errored")),r&&n()};try{var s=this.xl((o=>t.init({posthog:this._instance,callback(a){o(),i(a)}})),!1).processEvent;s&&(e.processEvent=s),r=!0}catch(o){et.error(Jl+t.id,o),i(!1)}if(r&&e.loaded)try{n()}catch(o){et.error("Error while processing buffered events PostHog app with config id "+t.id,o),e.errored=!0}}Sl(){var t=this.siteAppLoaders||[];for(var e of t)this.apps[e.id]={id:e.id,loaded:!1,errored:!1,processedBuffer:!1};for(var n of t)this.setupSiteApp(n)}Cl(t){var e=this;if(Object.keys(this.apps).length!==0){var n=this.globalsForEvent(t),r=function(s){try{e.xl((()=>s.processEvent==null?void 0:s.processEvent(n)))}catch(o){et.error("Error while processing event "+t.event+" for site app "+s.id,o)}};for(var i of Object.values(this.apps))r(i)}}onRemoteConfig(t){var e,n,r,i=this;if((e=this.siteAppLoaders)!=null&&e.length)return this.isEnabled?(this.Sl(),void this._instance.on("eventCaptured",(l=>this.Cl(l)))):void et.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.');if((n=this.yl)==null||n.call(this),t.ok){var s=t.config;if((r=s.siteApps)!=null&&r.length)if(this.isEnabled){var o=function(){var l,u=a.id,c=a.url;$["__$$ph_site_app_"+u]=i._instance,(l=$.__PosthogExtensions__)==null||l.loadSiteApp==null||l.loadSiteApp(i._instance,c,(d=>{if(d)return et.error(Jl+u,d)}))};for(var a of s.siteApps)o()}else et.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.')}}}},Vf={tracingHeaders:class{constructor(t){this.Ml=void 0,this.Tl=void 0,this.El=void 0,this.Uo=()=>{var e,n,r=this.Il();r?(x(this.Ml)&&(this.Ml=(e=$.__PosthogExtensions__)==null||(e=e.tracingHeadersPatchFns)==null?void 0:e._patchXHR(r,(()=>this._instance.get_distinct_id()),this._instance.sessionManager)),x(this.Tl)&&(this.Tl=(n=$.__PosthogExtensions__)==null||(n=n.tracingHeadersPatchFns)==null?void 0:n._patchFetch(r,(()=>this._instance.get_distinct_id()),this._instance.sessionManager))):this.Qo()},this._instance=t}initialize(){this.startIfEnabledOrStop()}ai(t){var e,n;(e=$.__PosthogExtensions__)!=null&&e.tracingHeadersPatchFns?t():(n=$.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"tracing-headers",(r=>{if(r)return Rf.error("failed to load script",r);t()}))}Pl(){var t,e;return(t=(e=this._instance.config.tracing_headers)!==null&&e!==void 0?e:this._instance.config.addTracingHeaders)!==null&&t!==void 0?t:this._instance.config.__add_tracing_headers}Il(){var t=this.Pl();return L(t)?(L(this.El)?this.El.splice(0,this.El.length,...t):this.El=[...t],t.length>0?this.El:void 0):(L(this.El)&&this.El.splice(0),this.El=t||void 0,this.El)}Qo(){var t,e;(t=this.Ml)==null||t.call(this),(e=this.Tl)==null||e.call(this),this.Ml=void 0,this.Tl=void 0}startIfEnabledOrStop(){this.Il()?this.ai(this.Uo):this.Qo()}}},Gf=E({surveys:class{get Ne(){return this._instance.config}constructor(t){this.Rl=void 0,this._surveyManager=null,this.Al=!1,this.Fl=[],this.Ll=null,this.Ol=null,this._instance=t,this._surveyEventReceiver=null}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this.Ne.disable_surveys){if(!t.ok)return V.warn("Remote config unavailable. Not loading surveys.");var e=t.config.surveys;if(B(e))return V.warn("Flags not loaded yet. Not loading surveys.");var n=L(e);this.Rl=n?e.length>0:e,V.info("flags response received, isSurveysEnabled: "+this.Rl),this.loadIfEnabled()}}reset(){try{var t;(t=this._surveyEventReceiver)==null||t.reset(),localStorage.removeItem("lastSeenSurveyDate");for(var e=[],n=0;nlocalStorage.removeItem(i)))}catch{}}loadIfEnabled(){if(!this._surveyManager)if(this.Al)V.info("Already initializing surveys, skipping...");else if(this.Ne.disable_surveys)V.info(Yl);else if(this.Ne.cookieless_mode&&this._instance.consent.isOptedOut())V.info("Not loading surveys in cookieless mode without consent.");else{var t=$?.__PosthogExtensions__;if(t){if(!x(this.Rl)||this.Ne.advanced_enable_surveys){var e=this.Rl||this.Ne.advanced_enable_surveys;this.Al=!0;try{var n=t.generateSurveys;if(n)return void this.Dl(n,e);var r=t.loadExternalDependency;if(!r)return void this.$l(oa);r(this._instance,"surveys",(i=>{i||!t.generateSurveys?this.$l("Could not load surveys script",i):this.Dl(t.generateSurveys,e)}))}catch(i){throw this.$l("Error initializing surveys",i),i}finally{this.Al=!1}}}else V.error("PostHog Extensions not found.")}}Dl(t,e){this._surveyManager=t(this._instance,e),this._surveyEventReceiver=new Of(this._instance),V.info("Surveys loaded successfully"),this.Nl({isLoaded:!0})}$l(t,e){V.error(t,e),this.Nl({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.Fl.push(t),this._surveyManager&&this.Nl({isLoaded:!0}),()=>{this.Fl=this.Fl.filter((e=>e!==t))}}getSurveys(t,e){if(e===void 0&&(e=!1),this.Ne.disable_surveys)return V.info(Yl),t([]);var n,r=this._instance.get_property(ao);if(r&&!e)return t(r,{isLoaded:!0}),void(this.ql()&&this.getSurveys((()=>{}),!0));typeof Promise<"u"&&this.Ll?this.Ll.then((i=>t(i.surveys,i.context))):(typeof Promise<"u"&&(this.Ll=new Promise((i=>{n=i}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/surveys/?token="+this.Ne.token),method:"GET",timestampMode:"query",timeout:this.Ne.surveys_request_timeout_ms,callback:i=>{var s;this.Ll=null;var o=i.statusCode;if(o!==200||!i.json){var a="Surveys API could not be loaded, status: "+o;o!==0?V.error(a):i.error||V.warn(a),this.Ol=Date.now();var l={isLoaded:!1,error:a};return t([],l),void(n==null||n({surveys:[],context:l}))}this.Ol=null;var u,c=i.json.surveys||[],d=c.filter((p=>(function(f){return!(!f.start_date||f.end_date)})(p)&&(_d(p)||(function(f){var g;return!((g=f.conditions)==null||(g=g.actions)==null||(g=g.values)==null||!g.length)})(p))));d.length>0&&((u=this._surveyEventReceiver)==null||u.register(d)),(s=this._instance.persistence)==null||s.register({[ao]:c,[ui]:Date.now()});var h={isLoaded:!0};t(c,h),n?.({surveys:c,context:h})}}))}ql(){return this.jl()&&!this.Ll&&!this.Bl()}jl(){var t=this._instance.get_property(ui);return he(t)&&Date.now()-t>3e5}Bl(){return he(this.Ol)&&3e5>Date.now()-this.Ol}markSurveyAsSeen(t,e){var n,r={id:t,current_iteration:(n=e?.iteration)!==null&&n!==void 0?n:null};wd(r);try{localStorage.setItem("lastSeenSurveyDate",new Date().toISOString())}catch{}}Nl(t){for(var e of this.Fl)try{if(!t.isLoaded)return e([],t);this.getSurveys(e)}catch(n){V.error("Error in survey callback",n)}}getActiveMatchingSurveys(t,e){if(e===void 0&&(e=!1),!B(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,e);V.warn("init was not called")}Hl(t){var e=null;return this.getSurveys((n=>{var r;e=(r=n.find((i=>i.id===t)))!==null&&r!==void 0?r:null})),e}Ul(t){if(B(this._surveyManager))return{eligible:!1,reason:Or};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyEligibility(e):{eligible:!1,reason:"Survey not found"}}zl(t){if(B(this._surveyManager))return{eligible:!1,reason:Or};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyRenderability(e):{eligible:!1,reason:"Survey not found"}}canRenderSurvey(t){if(B(this._surveyManager))return V.warn("init was not called"),{visible:!1,disabledReason:Or};var e=this.zl(t);return{visible:e.eligible,disabledReason:e.reason}}canRenderSurveyAsync(t,e){return B(this._surveyManager)?(V.warn("init was not called"),Promise.resolve({visible:!1,disabledReason:Or})):new Promise((n=>{this.getSurveys((r=>{var i,s=(i=r.find((a=>a.id===t)))!==null&&i!==void 0?i:null;if(s){var o=this.zl(s);n({visible:o.eligible,disabledReason:o.reason})}else n({visible:!1,disabledReason:"Survey not found"})}),e)}))}renderSurvey(t,e,n){var r;if(B(this._surveyManager))V.warn("init was not called");else{var i=typeof t=="string"?this.Hl(t):t;if(i!=null&&i.id)if(yf.includes(i.type)){var s=C?.querySelector(e);if(s)return(r=i.appearance)!=null&&r.surveyPopupDelaySeconds?(V.info("Rendering survey "+i.id+" with delay of "+i.appearance.surveyPopupDelaySeconds+" seconds"),void setTimeout((()=>{var o,a;V.info("Rendering survey "+i.id+" with delay of "+((o=i.appearance)==null?void 0:o.surveyPopupDelaySeconds)+" seconds"),(a=this._surveyManager)==null||a.renderSurvey(i,s,n),V.info("Survey "+i.id+" rendered")}),1e3*i.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(i,s,n);V.warn("Survey element not found")}else V.warn("Surveys of type "+i.type+" cannot be rendered in the app");else V.warn("Survey not found")}}displaySurvey(t,e){var n;if(B(this._surveyManager))V.warn("init was not called");else{var r=this.Hl(t);if(r){var i=r;if((n=r.appearance)!=null&&n.surveyPopupDelaySeconds&&e.ignoreDelay&&(i=E({},r,{appearance:E({},r.appearance,{surveyPopupDelaySeconds:0})})),e.displayType!==_o.Popover&&e.initialResponses&&V.warn("initialResponses is only supported for popover surveys. prefill will not be applied."),e.ignoreConditions===!1){var s=this.Ul(r);if(!s.eligible)return void V.warn("Survey is not eligible to be displayed: ",s.reason)}e.displayType!==_o.Inline?this._surveyManager.handlePopoverSurvey(i,e):this.renderSurvey(i,e.selector,e.properties)}else V.warn("Survey not found")}}cancelPendingSurvey(t){B(this._surveyManager)?V.warn("init was not called"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;(t=this._surveyManager)==null||t.handlePageUnload==null||t.handlePageUnload()}}},ji),Kf={toolbar:class{constructor(t){this.instance=t}Wl(t){$.ph_toolbar_state=t}Vl(){var t;return(t=$.ph_toolbar_state)!==null&&t!==void 0?t:0}initialize(){return this.maybeLoadToolbar()}maybeLoadToolbar(t,e,n){if(t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),go(this.instance.config)||!v||!C)return!1;t=t??v.location,n=n??v.history;try{if(!e){try{v.localStorage.setItem("test","test"),v.localStorage.removeItem("test")}catch{return!1}e=v?.localStorage}var r,i=Bf||_i(t.hash,"__posthog")||_i(t.hash,"state"),s=i?fl((()=>JSON.parse(atob(decodeURIComponent(i)))))||fl((()=>JSON.parse(decodeURIComponent(i)))):null;return s&&s.action==="ph_authorize"?((r=s).source="url",r&&Object.keys(r).length>0&&(s.desiredHash?t.hash=s.desiredHash:n?n.replaceState(n.state,"",t.pathname+t.search):t.hash="")):((r=JSON.parse(e.getItem(Zl)||"{}")).source="localstorage",delete r.userIntent),!(!r.token||this.instance.config.token!==r.token||(this.loadToolbar(r),0))}catch{return!1}}Zl(t){var e=$.ph_load_toolbar||$.ph_load_editor;!B(e)&&Se(e)?e(t,this.instance):Xl.warn("No toolbar load function found")}loadToolbar(t){var e=!(C==null||!C.getElementById(Mu));if(!v||e)return!1;var n=this.instance.requestRouter.region==="custom"&&this.instance.config.advanced_disable_toolbar_metrics,r=E({token:this.instance.config.token},t,{apiURL:this.instance.requestRouter.endpointFor("ui")},n?{instrument:!1}:{});if(v.localStorage.setItem(Zl,JSON.stringify(E({},r,{source:void 0}))),this.Vl()===2)this.Zl(r);else if(this.Vl()===0){var i;this.Wl(1),(i=$.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this.instance,"toolbar",(s=>{if(s)return Xl.error("[Toolbar] Failed to load",s),void this.Wl(0);this.Wl(2),this.Zl(r)})),ie(v,"turbolinks:load",(()=>{this.Wl(0),this.loadToolbar(r)}))}return!0}Gl(t){return this.loadToolbar(t)}maybeLoadEditor(t,e,n){return t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),this.maybeLoadToolbar(t,e,n)}}},Jf=E({experiments:ye},ji),Yf={conversations:class{constructor(t){this.Ql=void 0,this._conversationsManager=null,this.Kl=!1,this.Jl=null,this.Yl=!1,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this._instance.config.disable_conversations&&(this.Xl=t.ok,t.ok)){var e=t.config.conversations;B(e)||(Ye(e)?this.Ql=e:(this.Ql=e.enabled,this.Jl=e),this.loadIfEnabled())}}reset(){var t;(t=this._conversationsManager)==null||t.reset(),this._conversationsManager=null,this.Ql=void 0,this.Jl=null,this.Xl=void 0,this.Yl=!1}loadIfEnabled(){if(!(this._conversationsManager||this.Kl||this._instance.config.disable_conversations||go(this._instance.config)||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=$?.__PosthogExtensions__;if(t&&!x(this.Ql)&&this.Ql)if(this.Jl&&this.Jl.token){this.Kl=!0;try{var e=t.initConversations;if(e)return this.tu(e),void(this.Kl=!1);var n=t.loadExternalDependency;if(!n)return void this.eu(oa);n(this._instance,"conversations",(r=>{r||!t.initConversations?this.eu("Could not load conversations script",r):this.tu(t.initConversations),this.Kl=!1}))}catch(r){this.eu("Error initializing conversations",r),this.Kl=!1}}else Ue.error("Conversations enabled but missing token in remote config.")}}tu(t){if(this.Jl)try{this._conversationsManager=t(this.Jl,this._instance),this.Yl=!1,Ue.info("Conversations loaded successfully")}catch(e){this.eu("Error completing conversations initialization",e)}else Ue.error("Cannot complete initialization: remote config is null")}eu(t,e){Ue.error(t,e),this._conversationsManager=null,this.Kl=!1,this.Yl=!0}show(){this._conversationsManager?this._conversationsManager.show():Ue.warn("Conversations not loaded yet.")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return this.Ql===!0&&!$e(this._conversationsManager)}getUnavailableReason(){return this.isAvailable()?null:this._instance.config.disable_conversations?"disabled_by_config":go(this._instance.config)?"disabled_for_toolbar":this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut()?"consent_opted_out":this.Xl===!1?"remote_config_failed":x(this.Ql)?this.Xl?"disabled_in_project":"remote_config_pending":this.Ql?B(this.Jl)||!this.Jl.token?"missing_token":$!=null&&$.__PosthogExtensions__?this.Kl?"initializing":this.Yl?"load_failed":"not_loaded":"extensions_unavailable":"disabled_in_project"}isVisible(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.isVisible())!==null&&t!==void 0&&t}sendMessage(t,e,n){var r=this;return X((function*(){return r._conversationsManager?r._conversationsManager.sendMessage(t,e,n):(Ue.warn(Ht),null)}))()}getMessages(t,e){var n=this;return X((function*(){return n._conversationsManager?n._conversationsManager.getMessages(t,e):(Ue.warn(Ht),null)}))()}markAsRead(t){var e=this;return X((function*(){return e._conversationsManager?e._conversationsManager.markAsRead(t):(Ue.warn(Ht),null)}))()}getTickets(t){var e=this;return X((function*(){return e._conversationsManager?e._conversationsManager.getTickets(t):(Ue.warn(Ht),null)}))()}requestRestoreLink(t){var e=this;return X((function*(){return e._conversationsManager?e._conversationsManager.requestRestoreLink(t):(Ue.warn(Ht),null)}))()}restoreFromToken(t){var e=this;return X((function*(){return e._conversationsManager?e._conversationsManager.restoreFromToken(t):(Ue.warn(Ht),null)}))()}restoreFromUrlToken(){var t=this;return X((function*(){return t._conversationsManager?t._conversationsManager.restoreFromUrlToken():(Ue.warn(Ht),null)}))()}getCurrentTicketId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getCurrentTicketId())!==null&&t!==void 0?t:null}getWidgetSessionId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getWidgetSessionId())!==null&&t!==void 0?t:null}Xn(){var t;(t=this._conversationsManager)==null||t.setIdentity()}ts(){var t;(t=this._conversationsManager)==null||t.clearIdentity()}}},Zf={logs:class{constructor(t){var e,n=this;this.iu=!1,this.ru=!1,this.rt=ne("[logs]"),this.nu=E({},this.rt,{error(){for(var r=arguments.length,i=new Array(r),s=0;r>s;s++)i[s]=arguments[s];i.some(oc)||n.rt.error(...i)}}),this.tr=[],this.su=[],this.Sa=0,this.au=()=>{var r,i;this.Sa=0,(r=this.ou)==null||r.onReconnect(),(i=this.lu)==null||i.onReconnect()},this._instance=t,this._instance&&(e=this._instance.config.logs)!=null&&e.captureConsoleLogs&&(this.iu=!0),v&&ie(v,"online",this.au)}uu(t,e,n,r){var i,s=(function(o,a){var l,u,c,d,h,p,f,g=(l=o?.flushIntervalMs)!==null&&l!==void 0?l:3e3,m=(u=o?.maxBufferSize)!==null&&u!==void 0?u:100,_=a!=null&&a.consoleCapture?void 0:(c=o?.maxLogsPerInterval)!==null&&c!==void 0?c:1e3,w=x(_)?Math.max(m,2048):Math.max(m,_),b=o?.resourceAttributes;return{serviceName:(d=(h=b?.["service.name"])!==null&&h!==void 0?h:o?.serviceName)!==null&&d!==void 0?d:a?.serviceNameDefault,serviceVersion:(p=b?.["service.version"])!==null&&p!==void 0?p:o?.serviceVersion,environment:(f=b?.["deployment.environment"])!==null&&f!==void 0?f:o?.environment,resourceAttributes:b,beforeSend:o?.beforeSend,flushIntervalMs:g,maxBufferSize:m,maxQueueSize:w,maxBatchRecordsPerPost:100,rateCapWindowMs:g,maxLogsPerInterval:_,backgroundFlushBudgetMs:0,terminationFlushBudgetMs:0}})((i=this._instance)==null||(i=i.config)==null?void 0:i.logs,n);return[new ep(this.hu(t,e),s,this.nu,(()=>this.du()),(o=>o()),void 0,r),s]}vu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.ou||this.cu!==e){var n;(n=this.ou)==null||n.reset(),this.cu=e;var r=this.uu((()=>this.tr),(i=>{this.tr=i}));this.ou=r[0],this.fu=r[1]}return this.ou}pu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.lu||this.gu!==e){var n;(n=this.lu)==null||n.reset(),this.gu=e;var r=this.uu((()=>this.su),(i=>{this.su=i}),{serviceNameDefault:"posthog-browser-logs",consoleCapture:!0},sc);this.lu=r[0],this.mu=r[1]}return this.lu}initialize(){this.loadIfEnabled()}onRemoteConfig(t){var e;if(t.ok){var n=(e=t.config.logs)==null?void 0:e.captureConsoleLogs;!B(n)&&n&&(this.iu=!0,this.loadIfEnabled())}}reset(){var t,e;this.tr=[],(t=this.ou)==null||t.reset(),this.su=[],(e=this.lu)==null||e.reset(),this.Sa=0}captureLog(t){this.vu().captureLog(t)}he(t){this.pu().captureLog(t)}get logger(){return this.yu||(this.yu={trace:(t,e)=>this.captureLog({body:t,level:"trace",attributes:e}),debug:(t,e)=>this.captureLog({body:t,level:"debug",attributes:e}),info:(t,e)=>this.captureLog({body:t,level:"info",attributes:e}),warn:(t,e)=>this.captureLog({body:t,level:"warn",attributes:e}),error:(t,e)=>this.captureLog({body:t,level:"error",attributes:e}),fatal:(t,e)=>this.captureLog({body:t,level:"fatal",attributes:e})}),this.yu}flushLogs(t){t?this.bu(t):(this.ou&&this.ou.flush().catch((e=>this._u(e))),this.lu&&this.lu.flush().catch((e=>this._u(e))))}_u(t){oc(t)||this.rt.error("PostHog logs flush failed:",t)}loadIfEnabled(){if(this.iu&&!this.ru){var t=$?.__PosthogExtensions__;if(t){var e=t.loadExternalDependency;e?e(this._instance,"logs",(n=>{var r;n||(r=t.logs)==null||!r.initializeLogs?this.rt.error("Could not load logs script",n):(t.logs.initializeLogs(this._instance),this.ru=!0)})):this.rt.error(oa)}else this.rt.error("PostHog Extensions not found.")}}hu(t,e){var n=this._instance;return{get isDisabled(){return!1},get optedOut(){return!n.is_capturing()},getPersistedProperty:r=>r===pt.LogsQueue?t():void 0,setPersistedProperty(r,i){var s;r===pt.LogsQueue&&e((s=i)!==null&&s!==void 0?s:[])},Ot:r=>this.Ot(r),getLibraryId:()=>Y.LIB_NAME,getLibraryVersion:()=>Y.LIB_VERSION}}Ot(t){return new Promise((e=>{if(Gu(this.Sa,3))e({kind:"fatal",error:Os(void 0,"logs endpoint is unreachable, dropping batch")});else{var n=!1,r=s=>{n||(n=!0,clearTimeout(i),e(s))},i=setTimeout((()=>{this.rt.warn("Logs request timed out before receiving a response"),r({kind:"retry-later",error:Os(void 0,"logs request timed out")})}),9e4);this._instance._send_request({method:"POST",url:this.wu(),data:t,compression:"best-available",batchKey:"logs",fireCallbackOnDrop:!0,callback:s=>{var o=s.statusCode;if(this.ku(o),o>=200&&300>o)r({kind:"ok"});else if(o===413)r({kind:"too-large"});else if(o!==0&&o!==429&&500>o)r({kind:"fatal",error:new Error("logs request failed with status "+o)});else{var a;o===0?(s.error||this.rt.warn("Logs request failed before receiving an HTTP response"),r({kind:"retry-later",error:Os(s.error,"logs request failed before receiving an HTTP response")})):r({kind:"retry-later",error:(a=s.error)!==null&&a!==void 0?a:new Error("logs request failed with status "+o)})}}})}}))}ku(t){(t!==0||this._instance.__loaded)&&(this.Sa=Ku(t,this.Sa,3,(()=>this.rt.warn("Log requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped sending logs; will try again when connectivity changes."))))}bu(t){this.tr.length>0&&this.xu(t,this.tr,this.fu,Y.LIB_NAME,(e=>{this.tr=e})),this.su.length>0&&this.xu(t,this.su,this.mu,sc,(e=>{this.su=e}))}xu(t,e,n,r,i){if(e.length!==0){var s=e.map((a=>a.record));i([]);var o=_u(s,vu(n,Y.LIB_NAME,Y.LIB_VERSION),r,Y.LIB_VERSION);this._instance._send_request({method:"POST",url:this.wu(),data:o,compression:"best-available",batchKey:"logs",transport:t})}}wu(){return this._instance.requestRouter.endpointFor("api","/i/v1/logs")+"?token="+encodeURIComponent(this._instance.config.token)}du(){var t,e={};if(e.distinctId=this._instance.get_distinct_id(),this._instance.sessionManager){var n=this._instance.sessionManager.checkAndGetSessionAndWindowId(!0),r=n.windowId,i=n.sessionStartTimestamp,s=n.lastActivityTimestamp;e.sessionId=n.sessionId,e.windowId=r,B(i)||(e.sessionStartTimestamp=i),B(s)||(e.lastActivityTimestamp=s)}if($!=null&&(t=$.location)!=null&&t.href&&(e.currentUrl=this._instance.config.disable_capture_url_hashes?Pt($.location.href):$.location.href),this._instance.featureFlags){var o=this._instance.featureFlags.getFlags();o&&o.length>0&&(e.activeFeatureFlags=o)}return e}}},Xf={metrics:class{constructor(t){this.rt=ne("[metrics]"),this._instance=t}initialize(){}vu(){var t,e,n=(t=this._instance)==null||(t=t.config)==null?void 0:t.metrics;return this.ou&&this.cu===n||((e=this.ou)==null||e.reset(),this.cu=n,this.ou=new tp(this.hu(),(function(r){var i,s,o,a,l,u=r?.resourceAttributes;return{serviceName:(i=u?.["service.name"])!==null&&i!==void 0?i:r?.serviceName,serviceVersion:(s=u?.["service.version"])!==null&&s!==void 0?s:r?.serviceVersion,environment:(o=u?.["deployment.environment"])!==null&&o!==void 0?o:r?.environment,resourceAttributes:u,beforeSend:r?.beforeSend,flushIntervalMs:(a=r?.flushIntervalMs)!==null&&a!==void 0?a:1e4,maxSeriesPerFlush:(l=r?.maxSeriesPerFlush)!==null&&l!==void 0?l:1e3}})(n),this.rt)),this.ou}count(t,e,n){e===void 0&&(e=1),this.vu().count(t,e,n)}gauge(t,e,n){this.vu().gauge(t,e,n)}histogram(t,e,n){this.vu().histogram(t,e,n)}flush(t){if(!this.ou)return Promise.resolve();if(t){var e=this.ou.drainWindow();return e&&this.Jt(e,t),Promise.resolve()}return this.ou.flush().catch((n=>this.rt.error("PostHog metrics flush failed:",n)))}reset(){var t;(t=this.ou)==null||t.reset()}hu(){var t=this._instance,e=this;return{get isDisabled(){return!1},get optedOut(){return!t.is_capturing()},Jt:n=>e.Jt(n),getLibraryId:()=>Y.LIB_NAME,getLibraryVersion:()=>Y.LIB_VERSION}}Jt(t,e){return new Promise((n=>{var r=!1,i=o=>{r||(r=!0,clearTimeout(s),n(o))},s=setTimeout((()=>i({kind:"retry-later",error:new Error("metrics request timed out")})),9e4);this._instance._send_request(E({method:"POST",url:this.Su(),data:t,compression:"best-available",batchKey:"metrics"},e&&{transport:e},{fireCallbackOnDrop:!0,callback(o){var a=o.statusCode;if(a>=200&&300>a)i({kind:"ok"});else if(a===413)i({kind:"too-large"});else if(a!==0&&a!==429&&500>a)i({kind:"fatal",error:new Error("metrics request failed with status "+a)});else{var l;i({kind:"retry-later",error:(l=o.error)!==null&&l!==void 0?l:new Error("metrics request failed with status "+a)})}}}))}))}Su(){return this._instance.requestRouter.endpointFor("api","/i/v1/metrics")+"?token="+encodeURIComponent(this._instance.config.token)}}},Qf=E({},ji,Uf,Hf,Wf,zf,qf,Gf,Vf,Kf,Jf,Yf,Zf,Xf);Te.__defaultExtensionClasses=E({},Qf);(function(){Y.SDK_DIST_CHANNEL="npm";var t=nr[un]=new Te;return(function(){function e(){e.done||(e.done=!0,Ed=!1,Z(nr,(function(n){n._dom_loaded()})))}C!=null&&C.addEventListener?C.readyState==="complete"?e():ie(C,"DOMContentLoaded",e,{capture:!1}):v&&k.error("Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized")})(),t})();const eg=["a[href]","button:not([disabled])","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])"].join(",");let Je=null,Io=null,xd="";const Co=new Map;function kd(t){return[...t.querySelectorAll(eg)].filter(e=>!e.hidden&&e.getAttribute("aria-hidden")!=="true"&&e.getClientRects().length>0)}function tg(t){for(const e of document.body.children)e===t||e.tagName==="SCRIPT"||(Co.set(e,{inert:e.inert,ariaHidden:e.getAttribute("aria-hidden")}),e.inert=!0,e.setAttribute("aria-hidden","true"))}function ng(){for(const[t,e]of Co)t.inert=e.inert,e.ariaHidden===null?t.removeAttribute("aria-hidden"):t.setAttribute("aria-hidden",e.ariaHidden);Co.clear()}function Id(t){return t?.dataset.modalDismissible!=="false"&&t?.getAttribute("aria-busy")!=="true"}function Ve(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n)return!1;Je&&Je!==n&&Xe(Je,{restoreFocus:!1,force:!0}),Io=e.trigger||document.activeElement,Je=n,xd=document.body.style.overflow,tg(n),document.body.style.overflow="hidden",n.classList.add("open"),n.setAttribute("aria-hidden","false");const r=n.querySelector(".modal-content");r&&(r.style.transform="scale(1) translateY(0)");const i=()=>{if(Je!==n)return;((e.initialFocus?n.querySelector(e.initialFocus):n.querySelector("[data-modal-initial-focus]"))||kd(n)[0]||n.querySelector(".modal-content")||n).focus({preventScroll:!0})};return requestAnimationFrame(i),setTimeout(i,260),!0}function Xe(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n||!e.force&&!Id(n))return!1;n.classList.remove("open"),n.setAttribute("aria-hidden","true"),ng(),document.body.style.overflow=xd,Je=null;const r=Io;return Io=null,e.restoreFocus!==!1&&r?.isConnected&&r.focus({preventScroll:!0}),!0}function ac(t,e,n="Operation in progress"){const r=typeof t=="string"?document.getElementById(t):t;r&&(r.dataset.modalDismissible=e?"false":"true",r.setAttribute("aria-busy",String(!!e)),e?r.setAttribute("aria-label",n):r.removeAttribute("aria-label"))}function rg(t){if(!Id(t))return;const e=t.dataset.modalCloseHandler;e&&typeof window[e]=="function"?window[e]():Xe(t)}document.addEventListener("keydown",t=>{if(!Je)return;if(t.key==="Escape"){t.preventDefault(),t.stopImmediatePropagation(),rg(Je);return}if(t.key!=="Tab"){t.stopPropagation();return}const e=kd(Je);if(!e.length){t.preventDefault(),(Je.querySelector(".modal-content")||Je).focus();return}const n=e[0],r=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),r.focus()):!t.shiftKey&&document.activeElement===r&&(t.preventDefault(),n.focus())},!0);function ig(){document.querySelectorAll(".modal-overlay").forEach(t=>{t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-hidden",t.classList.contains("open")?"false":"true");const e=t.querySelector(".modal-content");e&&!e.hasAttribute("tabindex")&&(e.tabIndex=-1);const n=t.querySelector("h1, h2, h3");n&&(n.id||(n.id=`${t.id}-title`),t.setAttribute("aria-labelledby",n.id)),t.querySelectorAll(".modal-close").forEach(r=>{r.getAttribute("aria-label")||r.setAttribute("aria-label","Close dialog")})})}const Cd="CodeFile",Ad="GeneratedCode",sg={CustomAction:"A",CustomWidget:"W",CustomFunction:"F",CustomClass:"C",CodeFile:"C"};function At(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function Ao(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function og(t={},e=0){const n=Ao(t.artifactType||t.type||Cd),r=Ao(t.artifactName||t.name||t.fileName||`${Ad}-${e+1}`);return`${n||"artifact"}-${r||e+1}`}function Fd(t={},e=0){const n=At(t),r=n.artifactType||n.type||Cd,i=n.artifactName||n.name||Ad;let s=n.fileName||i;return s.endsWith(".dart")||(s+=".dart"),{id:Ao(n.id)||og({...n,artifactType:r,artifactName:i,fileName:s},e),artifactType:r,artifactName:i,fileName:s,deployPath:n.deployPath||"",description:n.description||"",code:n.code||n.content||"",dependencies:Pd(n.dependencies),imports:Array.isArray(n.imports)?n.imports:[],publicApi:Array.isArray(n.publicApi)?n.publicApi:[],relationships:$d(n.relationships),deployStatus:n.deployStatus||"pending",review:n.review||null,metadata:At(n.metadata),codeType:n.codeType||sg[r]||"O"}}function Pd(t){return t?Array.isArray(t)?t.map(e=>{if(typeof e=="string")return{name:e,version:null,inferred:!1};const n=At(e),r=n.name||n.package;return r?{name:r,version:n.version||null,versionRequired:!!(n.versionRequired||n.required),inferred:!!n.inferred,...n.reason?{reason:n.reason}:{}}:null}).filter(Boolean):Object.entries(At(t)).map(([e,n])=>({name:e,version:n||null,inferred:!1})):[]}function $d(t){return t?(Array.isArray(t)?t:[t]).map(e=>{const n=At(e);return!n.from&&!n.to?null:{from:n.from||null,to:n.to||null,type:n.type||"uses",description:n.description||""}}).filter(Boolean):[]}function Fo(t){if(typeof t!="string")return null;const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{const n=e.match(/```(?:json)?\s*([\s\S]*?)```/i);if(!n)return null;try{return JSON.parse(n[1].trim())}catch{return null}}}function hr(t,e={}){const n=[],r=typeof t=="string"?Fo(t):t,s=At(r||{});!r&&typeof t=="string"&&n.push("Structured bundle parse failed; using legacy single-artifact fallback.");const o=Array.isArray(s.artifacts)?s.artifacts:[{artifactType:s.artifactType||e.artifactType,artifactName:s.artifactName||e.artifactName,fileName:s.fileName||e.fileName,description:s.description,code:s.code||e.code||(typeof t=="string"?t:""),dependencies:s.dependencies||e.dependencies,relationships:s.relationships||e.relationships}];o.forEach((d,h)=>{!d?.artifactType&&!d?.type&&n.push(`Artifact ${h+1} has no artifactType; it will deploy as a standalone code file under lib/custom_code/ root.`)});const a=o.map((d,h)=>Fd(d,h)),l=new Map(o.map((d,h)=>[At(d).id,a[h]?.id]).filter(([d,h])=>d&&h)),u=d=>l.get(d)||d,c=$d(s.relationships||e.relationships).map(d=>({...d,from:d.from?u(d.from):d.from,to:d.to?u(d.to):d.to}));return{schemaVersion:s.schemaVersion||e.schemaVersion||null,id:s.id||e.id||"bundle-current",title:s.title||s.name||e.title||"Generated artifact bundle",description:s.description||e.description||"",artifacts:a,dependencies:Pd(s.dependencies||e.dependencies),relationships:c,deployOrder:Array.isArray(s.deployOrder)?s.deployOrder.map(u):a.map(d=>d.id),warnings:[...n,...Array.isArray(s.warnings)?s.warnings:[]],metadata:At(s.metadata)}}function Si(t){return hr(t).artifacts[0]||Fd()}function Et(t){if(typeof t!="string")return t??"";const e=t.trim();if(!e)return"";try{return JSON.parse(e)}catch{return t}}function xn(t){return JSON.stringify(t,null,2)}function ag(t){return xn({task:"architect",userRequest:String(t??"")})}function lg(t){const e=Et(t);return e&&typeof e=="object"&&typeof e.task=="string"?xn(e):xn({task:"generate_bundle",bundleSpec:e})}function cg(t){return xn({task:"review_bundle",generatedBundle:Et(t),outputRequirements:{bundleReview:["status","score","summary","manualActions","findings"],scoreRange:[0,100],eachArtifact:["id","review.status","review.findings"],manualActions:{definition:"Setup the developer must perform by hand in the FlutterFlow editor that FlutterFlow will NOT do for them.",exclude:["creating the Custom Action, Widget or Code File itself - deploying the code creates it","declaring parameters or return values FlutterFlow derives from the function signature","anything that resolves as a side effect of using the action or widget in the editor","generic advice such as testing, reviewing or rebuilding the app"],preferEmpty:"Return an empty array when nothing qualifies - an empty list is the expected result for most bundles."}}})}function fa(t,e=null){const n={stage:t};return e!=null&&(n.bundle=Et(e)),n}function ug({bundleSpec:t,artifactBundle:e,bundleReview:n,artifactId:r,userFeedback:i}){return xn({task:"regenerate_artifact",artifactId:r,bundleSpec:Et(t),artifactBundle:Et(e),bundleReview:Et(n),userFeedback:String(i)})}function Rd({bundleSpec:t,artifactBundle:e,bundleReview:n,userFeedback:r}){return xn({task:"regenerate_bundle",bundleSpec:Et(t),artifactBundle:Et(e),bundleReview:Et(n),userFeedback:String(r??"")})}const lc={csam:"child-safety content",dangerous:"dangerous content",harassment:"harassment",hate_speech:"hate speech",maliciousUrls:"a potentially malicious URL",malicious_uris:"a potentially malicious URL",pi_and_jailbreak:"prompt-injection or jailbreak instructions",promptInjection:"prompt-injection or jailbreak instructions",rai:"restricted content",sdp:"sensitive personal data",sexually_explicit:"sexually explicit content",virus_scan:"potentially malicious file content"},dg=["sanitizationResult","modelArmor","modelArmorResult","data","result","error"];function Le(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function hg(t){return Le(t)?typeof t.filterMatchState=="string"||typeof t.invocationResult=="string"||Array.isArray(t.matchedFilters)||Le(t.filterSummary)||Le(t.filterResults):!1}function Td(t,e=0){if(!Le(t)||e>3)return null;if(hg(t))return t;for(const n of dg){const r=t[n];if(Le(r)){const i=Td(r,e+1);if(i)return i}}return null}function xi(t){return Array.isArray(t)?t.some(xi):Le(t)?t.matched===!0||t.matchState==="MATCH_FOUND"?!0:Object.values(t).some(xi):!1}function Po(t){return Array.isArray(t)?t.some(Po):Le(t)?typeof t.executionState=="string"&&t.executionState!=="EXECUTION_SUCCESS"?!0:Object.values(t).some(Po):!1}function Nd(t){return{csamFilterFilterResult:"csam",maliciousUriFilterResult:"malicious_uris",piAndJailbreakFilterResult:"pi_and_jailbreak",raiFilterResult:"rai",sdpFilterResult:"sdp",virusScanFilterResult:"virus_scan"}[t]||t}function pg(t,e){if(Le(t))for(const[n,r]of Object.entries(t)){if(!Le(r))continue;const i=Le(r.categories)?r.categories:{},s=Object.entries(i).filter(([,o])=>Le(o)&&o.matched===!0).map(([o])=>o);s.length>0?s.forEach(o=>e.add(o)):r.matched===!0&&e.add(Nd(n))}}function fg(t,e){if(!t)return;const n=Array.isArray(t)?t.flatMap(r=>Le(r)?Object.entries(r):[]):Object.entries(t);for(const[r,i]of n){if(!xi(i))continue;const s=Nd(r),o=i?.raiFilterResult?.raiFilterTypeResults||(s==="rai"?i?.raiFilterTypeResults:null),a=Le(o)?Object.entries(o).filter(([,l])=>xi(l)).map(([l])=>l):[];a.length>0?a.forEach(l=>e.add(l)):e.add(s)}}function gg(t){return lc[t]?lc[t]:String(t).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/_/g," ").toLowerCase()}function cc(t){return t.length<=1?t[0]||"content that did not pass":t.length===2?`${t[0]} and ${t[1]}`:`${t.slice(0,-1).join(", ")}, and ${t.at(-1)}`}function mg(t){const e=Td(t);if(!e)return null;const n=new Set(Array.isArray(e.matchedFilters)?e.matchedFilters:[]);pg(e.filterSummary,n),fg(e.filterResults,n);const r=e.blocked===!0||e.filterMatchState==="MATCH_FOUND"||n.size>0,i=e.invocationResult||null,s=Po(e.filterSummary||e.filterResults);return!r&&!s&&!["PARTIAL","FAILURE"].includes(i)?null:{kind:r?"blocked":"unavailable",invocationResult:i,matchedFilters:[...n]}}function vg(t,e){const n=mg(t);if(!n)return null;const r=[...new Set(n.matchedFilters.map(gg))],i=n.kind==="blocked",s=new Error(i?`Safety screening blocked this pipeline step for ${cc(r)}.`:"Safety screening could not be completed. Please try again.");return s.name="ModelArmorError",s.code=i?"MODEL_ARMOR_BLOCKED":"MODEL_ARMOR_UNAVAILABLE",s.isModelArmor=!0,s.pipelineStep=e,s.userTitle=i?"Request blocked for safety":"Safety check unavailable",s.userMessage=i?`The safety check detected ${cc(r)}. Edit your request to remove or rephrase the flagged content, then run the pipeline again.`:"The safety service did not finish all of its checks. Please wait a moment and run the pipeline again.",s.retryExplanation=i?"Trying another model would not change this safety decision.":"A fallback model was not attempted because safety screening must complete first.",s.matchedFilters=n.matchedFilters,s}function _g(t){return String(t||"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"")}function uc(t){const e=/^(import|export|part|library|class|enum|extension|typedef|mixin|abstract|const|final|var|late)\b/,n=[];for(const r of _g(t).split(` -`)){if(!/^[A-Za-z_$]/.test(r)||e.test(r))continue;const i=r.match(/^[\w$<>,?\s[\]]+?\s([a-zA-Z_$][\w$]*)\s*\(/);i&&n.push(i[1])}return n}function ga(t,e){const n=t.replace(/\.dart$/,"");if(e==="W")return n.replace(/(^|_)(\w)/g,(r,i,s)=>s.toUpperCase());if(e==="A"){const r=n.replace(/(^|_)(\w)/g,(i,s,o)=>o.toUpperCase());return r.charAt(0).toLowerCase()+r.slice(1)}return e==="F"?"CustomFunctions":e==="C"?t.endsWith(".dart")?t:`${t}.dart`:n}async function dc(t){const e=new TextEncoder().encode(String(t||"")),n=await globalThis.crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n),r=>r.toString(16).padStart(2,"0")).join("")}async function yg(t,e=new Map){const n={},r=new Set;for(const[o,a]of t.entries()){if(a.type==="D"||a.type==="O")continue;const l=ga(o,a.type),u={old_identifier_name:l,new_identifier_name:l,type:a.type,is_deleted:!1,current_checksum:await dc(a.content)},c=e.get(a.path);if(c!==void 0&&(u.original_checksum=await dc(c)),n[o]=u,a.type==="F"){const d=uc(a.content);(d.length>0?d:[a.functionName].filter(Boolean)).forEach(p=>r.add(p))}}const i=new Set(uc(e.get("lib/flutter_flow/custom_functions.dart")||"")),s={functions_to_rename:[],functions_to_delete:[],functions_to_add:Array.from(r).filter(o=>!i.has(o))};return{fileMapContents:JSON.stringify(n),functionsMapContents:JSON.stringify(s)}}const wg=new Set(["CustomWidget","CustomAction","CustomFunction","CustomClass","CodeFile"]),hc={CustomWidget:"custom_code/widgets/",CustomAction:"custom_code/actions/",CustomFunction:"flutter_flow/custom_functions.dart",CustomClass:"custom_code/",CodeFile:"custom_code/"},bg=new Set(["void","dynamic","String","int","double","num","bool","Color","DateTime","DateTimeRange","LatLng","FFPlace","FFUploadedFile","DocumentReference","List"]),Eg=["Struct","Record"],Sg=[{id:"required-public-param",severity:"error",message:"CustomWidget constructor uses `required` on a parameter FlutterFlow can leave unset. FlutterFlow omits unset Define Parameters fields from the constructor call, so the widget will not compile when placed. Make the parameter optional and nullable (`this.value` with `final double? value`), or give it a constructor default (`this.value = 0.0`).",detect:t=>Bs(t).some(e=>/\brequired\s+this\.\w+/.test(e)),pos:"class W extends StatefulWidget { const W({required this.value}); final double value; }",neg:`class _P { const _P({required this.t}); final double t; } -class W extends StatefulWidget { const W({this.value}); final double? value; }`},{id:"non-nullable-public-field",severity:"error",message:"CustomWidget declares a non-nullable field with no constructor default. FlutterFlow omits unset Define Parameters fields, so the emitted call cannot supply it. Make the field nullable (`final double? value`) or give the parameter a default (`this.value = 0.0`).",detect:t=>Bs(t).some(e=>{const n=/^\s*final\s+(?:double|int|String|bool|Color|num)\s+(\w+)\s*;/gm;let r;for(;(r=n.exec(e))!==null;){const i=r[1];if(!(new RegExp(`this\\.${i}\\s*=(?!=)`).test(e)||new RegExp(`[:,]\\s*${i}\\s*=(?!=)`).test(e)))return!0}return!1}),pos:`class W extends StatefulWidget { - const W({required this.value}); - final double value; -}`,neg:`class _P { - const _P({required this.t}); - final double t; -} -class W extends StatefulWidget { - const W({this.value = 1.0}); - final double value; -}`},{id:"asset-without-anchor",severity:"warning",message:'CustomWidget calls Image.asset with a path arriving as a String parameter. An asset reaches the build only when a FlutterFlow widget NODE references it - a filename passed as a parameter does not count, so the image renders as a broken-image icon on device. "Download Unused Project Assets" does not fix it (FlutterFlow issues 522, 2271, 3799). Keep something in the UI referencing the file, or load it over the network instead.',detect:t=>/Image\.asset\s*\(/.test(t)&&/final\s+String\??\s+\w*[Pp]ath\b/.test(t),pos:`class W extends StatefulWidget { final String? imagePath; } -var x = Image.asset(widget.imagePath);`,neg:`class W extends StatefulWidget { final String? imagePath; } -var x = Image.network(widget.imagePath);`},{id:"unsupported-param-type",severity:"error",message:"CustomWidget exposes a Flutter data type FlutterFlow cannot express as a Define Parameter: TextStyle, BoxShadow, FontWeight, FontStyle, TextDirection, TextAlign, EdgeInsets, Offset, Alignment/AlignmentGeometry, Border, BorderRadius, BoxDecoration, BoxConstraints, BorderSide, Gradient, or ThemeData. FlutterFlow's supported data types (docs.flutterflow.io/resources/data-representation/data-types) are only int, double, bool, string, Color, Image, DateTime, Json, LatLng, and the FF objects, so this parameter cannot be configured in the editor and the widget will not place or compile. Expose primitives instead (color, fontSize as double?, fontWeight via a custom enum, doubles for spacing).",detect:t=>Bs(t).some(e=>/final\s+(TextStyle|BoxShadow|FontWeight|FontStyle|TextDirection|TextAlign|EdgeInsets|Offset|Alignment(?:Geometry)?|Border(?:Radius|Side)?|BoxDecoration|BoxConstraints|Gradient|LinearGradient|RadialGradient|ThemeData)\??\s+\w+\s*;/.test(e)),pos:`class W extends StatefulWidget { - const W({this.textStyle}); - final TextStyle? textStyle; - @override _S createState() => _S(); -} -class _S extends State { @override Widget build(BuildContext c) => const SizedBox(); }`,neg:`class W extends StatefulWidget { - const W({this.width}); - final double? width; - @override _S createState() => _S(); -} -class _S extends State { @override Widget build(BuildContext c) => Padding(padding: const EdgeInsets.all(8), child: const SizedBox()); }`}];function nt(t,e,n){return{artifactId:t.id,artifactName:t.artifactName,artifactType:t.artifactType,severity:e,message:n}}function pr(t){let e="",n=0;for(;n"&&(n--,n===0))return{inner:t.slice(e+1,r),end:r+1};return null}function kg(t,e){const n=new RegExp(`class\\s+${e}\\b[^{]*\\{`).exec(t);if(!n)return null;let r=0;for(let i=n.index+n[0].length-1;iIg(t).usable);function Ag(t=""){const e=pr(t);return Cg.filter(n=>n.detect(e)).map(({id:n,severity:r,message:i})=>({id:n,severity:r,message:i}))}function Fg(t){const e=[],n=t.matchAll(/\bFuture\b/g);for(const r of n){let i=r.index+6,s=null;const o=i;for(;io;if(t[i]==="<"){const u=xg(t,i);if(!u||(s=u.inner.replace(/\s+/g," ").trim(),i=u.end,!/\s/.test(t[i]||"")))continue;for(;ipc(o.functionName)===r);if(i)return i;const s=o=>!o.functionName.startsWith("_");return n.find(s)||n[0]}function Ui(t=""){return Array.from(pr(t).matchAll(/\b(?:class|enum)\s+([A-Za-z_]\w*)/g),e=>e[1])}function Pg(t="",e=""){return ma(t,e)?.returnType||null}function fc(t){return String(t||"").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function $g(t,e){const n=Ui(e);if(n.length===0)return null;const i=String(t||"").split("/").pop().replace(/\.dart$/,"");if(n.some(l=>fc(l)===i)||n.length>1)return null;const[o]=n,a=`${fc(o)}.dart`;return`File name "${t}" does not match declared class "${o}". FlutterFlow accepts this, but naming the file "${a}" keeps the Code File recognisable in the editor.`}function va(t){return String(t||"").replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}function Rg(t,e,n=""){const r=ma(e,n)?.functionName;if(!r)return null;const i=String(t||"").split("/").pop(),s=ga(i,"A");if(s===r)return null;const o=`${va(r)}.dart`;return`File name "${i}" does not match Action "${r}". FlutterFlow derives the action from the file name, so it looks for "${s}" and reports Action "${s}" declaration not found. Rename the file to "${o}" - FlutterFlow puts an underscore before every capital - or rename the function to "${s}".`}function Tg(t="",e=""){return ma(t,e)!==null}function Ng(t,e=new Set){return(t?.match(/[A-Za-z_]\w*/g)||[]).filter(r=>bg.has(r)?!1:!Eg.some(s=>r.endsWith(s))||e.has(r))}function Mg(t,{functionName:e="",declaredTypes:n=new Set}={}){const r=Pg(t,e),i=Ng(r,n);if(i.length===0)return null;const[s]=i;let o;return n.has(s)?o=`uses Code File type "${s}", which FlutterFlow cannot process as an Action Return Value`:r===s?o="is not a FlutterFlow Action Return Value":o=`uses type "${s}", which is not a FlutterFlow Action Return Value`,`CustomAction return type "${r}" ${o}. Return JSON (Future) or an existing FlutterFlow Data Type (*Struct) instead.`}function Lg(t,e={}){const n=[],r=t.fileName||"",i=t.code||"";if(wg.has(t.artifactType)||n.push(nt(t,"error",`Unsupported artifact type "${t.artifactType}".`)),r.endsWith(".dart")||n.push(nt(t,"error","FlutterFlow custom code artifacts must use .dart files.")),!i.trim())return n.push(nt(t,"warning","Generated artifact has no Dart code yet.")),n;if(t.artifactType==="CustomWidget"){/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(i)||n.push(nt(t,"warning","CustomWidget code should declare a widget class extending StatelessWidget or StatefulWidget."));for(const s of Ag(i))n.push(nt(t,s.severity,s.message))}if(t.artifactType==="CustomAction"&&!Tg(i,t.artifactName)&&n.push(nt(t,"warning","CustomAction code should expose an async Future function callable from FlutterFlow.")),t.artifactType==="CustomAction"){const s=e.declaredTypes||new Set(Ui(i)),o=Mg(i,{functionName:t.artifactName,declaredTypes:s});o&&n.push(nt(t,"error",o));const a=Rg(r,i,t.artifactName);a&&n.push(nt(t,"error",a))}if(t.artifactType==="CustomFunction"&&/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(i)&&n.push(nt(t,"warning","CustomFunction should be a callable function, not a widget class.")),t.artifactType==="CustomClass"||t.artifactType==="CodeFile"){const s=$g(r,i);s&&n.push(nt(t,"info",s))}return n}function Og(t){const e=Array.isArray(t?.artifacts)?t.artifacts:[],n=new Set(e.flatMap(s=>Ui(s.code||""))),r=e.flatMap(s=>Lg(s,{declaredTypes:n})),i=e.map(s=>({artifactId:s.id,fileName:s.fileName,pathHint:hc[s.artifactType]||hc.CodeFile}));return{valid:r.every(s=>s.severity!=="error"),findings:r,deployHints:i}}const gc="// DO NOT REMOVE OR MODIFY THE CODE ABOVE!";function mc(t){return(/^\s*import\s+['"]([^'"]+)['"]/.exec(t)||[])[1]||null}function Bg(t=""){const e=t.indexOf(gc);return e===-1?t:t.slice(e+gc.length).replace(/^\s*\n/,"")}const Dg=/^\s*import\s+['"][^'"]+['"]\s*;\s*(?:\/\/.*)?$/;function jg(t="",e=""){const n=Bg(t),r=new Set((e.match(/^\s*import .*$/gm)||[]).map(mc).filter(Boolean)),i=n.split(` -`).filter(s=>{const o=mc(s);return o===null||!r.has(o)?!0:!Dg.test(s)}).join(` -`).replace(/^\s*\/\/ Automatic FlutterFlow imports\s*$/m,"").replace(/^\s*\n+/,"");return e+i}const Ug=new Set(["flutter","flutter_test","flutter_driver","flutter_localizations"]);function Md(t){let e="",n=0;for(;n{const r=n.name||n.package;if(!r||r==="flutter")return e;const i=n.versionRequired||n.required;return e[r]=i&&n.version||"",e},{})}function Vg(t){const e=new Map,n=new Map,r=[];for(const i of t)e.has(i.fileName)?r.push(`Duplicate deploy file name "${i.fileName}" for artifacts "${e.get(i.fileName)}" and "${i.artifactId}".`):e.set(i.fileName,i.artifactId),n.has(i.path)?r.push(`Duplicate deploy path "${i.path}" for artifacts "${n.get(i.path)}" and "${i.artifactId}".`):n.set(i.path,i.artifactId);return r}function Gg(t,e={}){const n=Array.isArray(t?.artifacts)?t.artifacts:[],i=(e.selectedArtifactIds||t?.deployOrder||n.map(p=>p.id)).map(p=>n.find(f=>f.id===p)).filter(Boolean),s=[...t?.warnings||[]];let o=[];i.forEach(p=>{const f=qg(p),g=p.fixedCode||p.code||"",m=p.codeType||Wg[p.artifactType]||Ne.OTHER;g.trim()||s.push(`${p.artifactName||p.id} has no generated code.`),o.push({artifactId:p.id,artifactName:p.artifactName,artifactType:p.artifactType,fileName:f,content:g,type:m,path:p.deployPath||zg(f,m),deployPath:p.deployPath||"",deployMode:"customCodeSync"})});const a="lib/flutter_flow/custom_functions.dart",l=o.map((p,f)=>({entry:p,index:f})).filter(({entry:p})=>p.type===Ne.FUNCTION&&p.path===a);if(l.length>1){const p=l[0],f={...p.entry,artifactId:l.map(({entry:m})=>m.artifactId).join("+"),artifactName:p.entry.artifactName,content:l.map(({entry:m})=>`// ${m.artifactId} -${m.content}`).join(` - -`)},g=new Set(l.slice(1).map(({index:m})=>m));o=o.filter((m,_)=>!g.has(_)),o[p.index]=f}const u={...vc(t?.dependencies),...i.reduce((p,f)=>({...p,...vc(f.dependencies)}),{})},c={};i.forEach(p=>{_a(p.code||"").forEach(f=>{f in u||(c[f]="")})});const d={...c,...u},h=Vg(o);return{bundleId:t?.id||"bundle-current",title:t?.title||"Generated artifact bundle",fileEntries:o,dependencies:d,relationships:t?.relationships||[],warnings:s,errors:h}}function Kg(t){return String(t||"").match(/\bclass\s+([A-Z][A-Za-z0-9_]*)\b/)?.[1]}function Jg(t){return String(t||"").split("/").pop().replace(/\.dart$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}function Yg(t,e){const r=[Jg(t),Kg(e.content),e.artifactName].find(i=>/^[A-Z][A-Za-z0-9_]*$/.test(String(i||"")));if(!r)throw new Error(`Cannot derive a FlutterFlow custom class name for ${t}.`);return r}function Zg(t,e=new Map){const n=[];for(const[r,i]of t.entries())i.type!=="C"||e.has(i.path)||n.push({artifactId:i.artifactId||r,className:Yg(r,i),content:i.content,fileName:r,path:i.path});return n}function Xg(t,e){const n=new Set(e.map(r=>r.path));return new Map(Array.from(t.entries()).filter(([,r])=>!n.has(r.path)))}const _c={pass:0,warning:1,fail:2},Qg=["manualActions"];function Be(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function _t(...t){for(const e of t){if(typeof e=="string"&&e.trim())return e.trim();if(Array.isArray(e)&&e.length>0){const n=e.filter(r=>typeof r=="string").join(` -`);if(n)return n}}return""}function it(t){return t==null?[]:Array.isArray(t)?t:[t]}function em(t){const e=Be(t).value??t;if(e==null||typeof e=="string"&&e.trim()==="")return null;const n=Number(e);if(Number.isFinite(n))return n;const r=String(t||"").match(/\bscore\b[^\d]{0,12}(\d{1,3})(?:\s*\/\s*100)?/i);return r?Number(r[1]):null}function We(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function ya(t){const e=String(t||"").toLowerCase();return/(fail|error|critical|block|reject|invalid)/.test(e)?"fail":/(warn|attention|manual|partial|incomplete|concern)/.test(e)?"warning":/(pass|success|ready|approve|valid|clean|info|notice)/.test(e)?"pass":null}function $o(...t){return t.filter(Boolean).reduce((e,n)=>_c[n]>_c[e]?n:e,"pass")}function Ld(t,e="warning",n="review"){if(typeof t=="string")return{severity:e,message:t,suggestion:"",source:n};const r=Be(t),i=_t(r.message,r.title,r.issue,r.description,r.summary);return i?{severity:ya(r.severity||r.status||r.level)||e,message:i,suggestion:_t(r.suggestion,r.fix,r.recommendation,r.action),source:r.source||n}:null}function Ro(t,e="review"){const n=Be(t);return[["findings","warning"],["issues","warning"],["criticalIssues","fail"],["errors","fail"],["warnings","warning"],["recommendations","warning"],["requiredFixes","fail"],["suggestions","warning"]].flatMap(([i,s])=>it(n[i]).map(o=>Ld(o,s,e)).filter(Boolean))}function tm(t,e,n=null){if(typeof t=="string")return{id:`${n||"bundle"}-manual-${e+1}`,title:t,detail:"",location:"",timing:"unspecified",artifactId:n,source:"Code Review"};const r=Be(t),i=_t(r.title,r.action,r.step,r.message,r.name,r.description);return i?{id:r.id||`${n||"bundle"}-manual-${e+1}`,title:i,detail:_t(r.detail,r.instructions,r.description),location:_t(r.location,r.flutterFlowPath,r.path),timing:_t(r.timing,r.phase)||"unspecified",artifactId:n,source:_t(r.source)||"Code Review"}:null}function To(t,e=null){const n=Be(t);return Qg.flatMap(r=>it(n[r])).map((r,i)=>tm(r,i,e)).filter(Boolean)}function nm(t){let e=typeof t=="string"?Fo(t):t;if(!e&&typeof t=="string")return{rawText:t,root:{}};const n=Be(e);typeof n.content=="string"&&(e=Fo(n.content)||e);const r=Be(e),i=Be(r.reviewResult||r.codeReview||r.result);return{rawText:"",root:Object.keys(i).length?i:r}}function rm(t,e){const n=[e.id,e.fileName,e.artifactName].map(We);return t.find(r=>{const i=Be(r);return[i.id,i.fileName,i.artifactName,i.name].map(We).some(s=>s&&n.includes(s))})||null}function im(t,e){return it(t?.metadata?.compatibility?.deployHints).find(i=>We(i?.artifactId)===We(e.id)||We(i?.fileName)===We(e.fileName))?.pathHint||""}function sm(t,e){return it(t?.relationships).filter(n=>We(n?.from)===We(e.id)||We(n?.to)===We(e.id))}function om(t,e){return it(t?.metadata?.compatibility?.findings).filter(n=>!n?.artifactId||We(n.artifactId)===We(e.id)).map(n=>Ld(n,"warning","Compatibility check")).filter(Boolean)}function am(t,e,n,r){const i=rm(e,n),s=Be(i?.review||i||n.review),o=Object.keys(s).length>0,a=[...Ro(s),...om(t,n)],l=To(s,n.id),u=ya(s.status||s.verdict||s.outcome||s.result),c=a.length?$o(...a.map(h=>h.severity)):null,d=$o(u,c,o?null:"warning");return{...n,index:r,status:d,statusReason:o?_t(s.summary,s.overview,s.assessment,s.conclusion)||(a.length?`${a.length} review finding${a.length===1?"":"s"}`:"No file-level findings"):"No file-level verdict was returned",reviewComplete:o,findings:a,manualSteps:l,fixedSource:typeof s.fixedSource=="string"&&s.fixedSource.trim()?s.fixedSource.trim():null,pathHint:im(t,n),relationships:sm(t,n)}}function lm({status:t,score:e,artifactPresentations:n,manualSteps:r}){const i=n.length;if(i===0&&r.length===0)return e==null?"Code review returned no overall summary and no score.":`Reviewed bundle with score ${e}/100.`;const s=n.reduce((a,l)=>(a[l.status]+=1,a),{pass:0,warning:0,fail:0}),o=[];return t&&o.push(`Overall verdict: ${t}.`),i&&o.push(`${i} artifact${i===1?"":"s"}: ${s.pass} pass, ${s.warning} warn, ${s.fail} fail.`),r.length&&o.push(`Do before deploy: ${r.map(a=>a.title).join("; ")}.`),e==null&&o.push("No numeric score (0-100) was returned."),o.join(" ")}function cm({bundle:t,reviewResult:e}){const n=Be(t),r=it(n.artifacts),{root:i,rawText:s}=nm(e),o=[i.bundleReview,i.overallReview,i.overall,i.bundleSummary,i.summaryReview,i.review].map(Be).find(b=>Object.keys(b).length)||{},a=it(i.artifacts||i.files||i.reviews),l=r.map((b,I)=>am(n,a,b,I)),u=Ro(i),d=[...Ro(o),...u],h=[...To(o),...To(i),...l.flatMap(b=>b.manualSteps)].filter((b,I,A)=>A.findIndex(F=>F.title===b.title&&F.artifactId===b.artifactId)===I),p=ya(o.status||o.verdict||o.overallStatus||i.status||i.verdict||i.overallStatus||i.outcome),f=$o(p,...d.map(b=>b.severity),...l.map(b=>b.status)),g=o.score??i.score??i.overallScore??s,m=em(g),_=_t(o.headline,o.summary,o.executiveSummary,o.overview,o.assessment,o.conclusion,i.overallSummary,i.headline,i.summary,i.executiveSummary,i.overview,i.assessment,i.conclusion,s)||lm({status:f,score:m,artifactPresentations:l,manualSteps:h}),w=l.reduce((b,I)=>(b[I.status]+=1,b),{pass:0,warning:0,fail:0});return{title:n.title||"Generated artifact bundle",description:n.description||"",status:f,score:m,summary:_,findings:d,manualSteps:h,artifacts:l,counts:w,reviewCoverage:{reviewed:l.filter(b=>b.reviewComplete).length,total:l.length},deployOrder:it(n.deployOrder),relationships:it(n.relationships),warnings:it(n.warnings),compatibility:Be(n.metadata?.compatibility)}}const um=/^\uFEFF/;function Wn(t){let e=0,n=t.length;for(;ee&&!t[n-1].trim();)n--;return t.slice(e,n).join(` -`)}function dm(t){const e=String(t??"").replace(um,"");if(!e.trim())return"";const n=e.split(` -`),r=c=>{const d=c.trim();return/^`{3,}[A-Za-z0-9+#_.-]*$/.test(d)?c.length-c.trimStart().length:-1};let i=0,s=-1;const o=[];{let c=0;for(let d=0;d=0&&(i++,s<0&&(s=d),o.push(c+h)),c+=n[d].length+1}}if(i===0)return Wn(n);{const c=No(e);if(!c.error&&o.every(h=>wc(h,c.commentAndStringRanges)))return Wn(n)}if(i===1){const c=Wn(n.slice(0,s)),d=Wn(n.slice(s+1));return d.length>=c.length?d:c}const a=[];let l=null;for(let c=0;cc.length>0);return u.length===0?"":u.join(` - -`)}function hm(t){return String(t??"").replace(/\/\*[\s\S]*?\*\//g," ").replace(/\/\/[^\n]*/g,"").replace(/'''[\s\S]*?'''/g,'""').replace(/"""[\s\S]*?"""/g,'""').replace(/'(?:\\.|[^'\\\n])*'/g,'""').replace(/"(?:\\.|[^"\\\n])*"/g,'""')}function Od(t){const e=hm(t);return Array.from(e.matchAll(/class\s+([A-Z]\w*)\s+extends\s+[A-Za-z_]\w*Widget\b/g),n=>n[1])}function Bd(t){return`${va(t)}.dart`}function pm(t){return ga(t,"W")}const yc={"(":")","[":"]","{":"}"},fm={")":"(","]":"[","}":"{"},gm=/[A-Za-z0-9_]/;function No(t){const e=[{kind:"code",opener:null,openedLine:0}],n=[];let r=1,i=0;const s=(c,d)=>{(c===` -`||c==="\r"&&d!==` -`)&&r++};let o=null;const a=()=>{for(const c of e)(c.kind==="string"||c.kind==="block-comment"||c.kind==="line-comment")&&n.push({start:c.startIndex,end:t.length})};for(;i0?t[i-1]:"",f=i>1?t[i-2]:"",g=(p==="r"||p==="R")&&!gm.test(f);e.push({kind:"string",quote:c,triple:h,raw:g,startIndex:i,openedLine:r}),i+=h?3:1;continue}if(yc[c]){e.push({kind:"code",opener:c,openedLine:r}),i++;continue}if(fm[c]){if(d.interpolation&&c==="}"){e.pop(),i++;continue}if(d.opener&&yc[d.opener]===c){e.pop(),i++;continue}return d.opener?(a(),{error:o??`line ${r}: "${c}" closes nothing - "${d.opener}" opened on line ${d.openedLine} is still open`,commentAndStringRanges:n}):(a(),{error:o??`line ${r}: unexpected "${c}" with no matching opener`,commentAndStringRanges:n})}s(c,t[i+1]),i++}a();let l=e.length-1;for(;l>0&&e[l].kind==="line-comment";)l--;let u=o;if(!u){const c=e[l];if(!(c.kind==="code"&&!c.opener&&!c.interpolation))if(c.kind==="string")u=`unclosed ${c.triple?"triple-quoted ":""}string starting on line ${c.openedLine} was never closed`;else if(c.kind==="block-comment")u=`unterminated /* comment starting on line ${c.openedLine}`;else if(c.interpolation){const d=e.findLast(p=>p.opener);u=`unclosed "\${" expression${d?` opened on line ${d.openedLine}`:""} was never closed`}else u=`"${c.opener}" opened on line ${c.openedLine} is never closed`}return{error:u,commentAndStringRanges:n}}function mm(t){return No(String(t??"")).error}function wc(t,e){return e.some(({start:n,end:r})=>t>=n&&ttypeof n=="string"?n:n?.errorMessage).filter(Boolean);return e.length>0?e.join("; "):JSON.stringify(t)}return t&&typeof t=="object"?t.errorMessage||JSON.stringify(t):String(t??"")}const vm=["gmail.com","googlemail.com","outlook.com","hotmail.com","live.com","msn.com"],_m="MAGIC_LINK_SENT",ym="PLUS_ALIAS_REJECTED",wm="Please enter your primary email address. Plus aliases (such as {email}) are not allowed for {domain} accounts.",Hi={allowlistedDomains:vm,successCode:_m,validationCode:ym,messageTemplate:wm},bm=new Set(Hi.allowlistedDomains),Em=Hi.successCode,jd=Hi.validationCode;function Wi(t){return typeof t=="string"?t.trim():""}function Sm(t){const e=Wi(t),n=e.lastIndexOf("@");if(n<=0||n===e.length-1)return!1;const r=e.slice(0,n),i=e.slice(n+1).toLowerCase();return bm.has(i)?r.includes("+"):!1}function xm(t,e){return Hi.messageTemplate.replaceAll("{email}",t).replaceAll("{domain}",e)}function Ud(t){if(!Sm(t))return null;const e=Wi(t),n=e.lastIndexOf("@"),r=e.slice(n+1).toLowerCase();return xm(e,r)}function km(t,e){return t?.code===jd?t.message||Ud(e)||"Please enter your primary email address.":t?.code===Em||!t?.code?`Check your email — we sent a link to ${Wi(e)}`:t.message||"Something went wrong. Please try again."}const Im=/^dependencies\s*:\s*(?:#.*)?$/,Cm=/^(?:"([^"]+)"|'([^']+)'|([A-Za-z_][A-Za-z0-9_-]*))\s*:/;function zi(t){const e=t.match(Cm);return e?e[1]??e[2]??e[3]:null}function yr(t){const e=t.trim();return e===""||e.startsWith("#")}function Pn(t){const e=t.match(/^(\s*)/);return e?e[1].length:0}function wa(t,e){const n=t.findIndex(s=>e.test(s));if(n===-1)return null;let r=n,i=null;for(let s=n+1;s=0.0.0"}`}function $m(t,e={}){const n=String(t||""),r=Object.entries(e).filter(([u])=>u&&u!=="flutter");if(r.length===0)return{yaml:n,added:[],alreadyPresent:[]};const i=n.split(` -`),s=new Set(Wd(n)),o=[],a=[];for(const[u,c]of r)s.has(u)?a.push(u):(o.push([u,c]),s.add(u));if(o.length===0)return{yaml:n,added:[],alreadyPresent:a};const l=ba(i);if(l){const u=o.map(([c,d])=>bc(l.childIndent,c,d));i.splice(l.endIndex,0,...u)}else i.length>0&&i[i.length-1].trim()!==""&&i.push(""),i.push("dependencies:"),o.forEach(([u,c])=>{i.push(bc(" ",u,c))});return{yaml:i.join(` -`),added:o.map(([u])=>u),alreadyPresent:a}}function Rm(t,e={}){const n=String(t||""),r=Object.entries(e).filter(([l])=>l&&l!=="flutter");if(r.length===0)return{yaml:n,overridden:[],skipped:[]};const i=n.split(` -`),s=Vi(n),o=[],a=[];for(const[l,u]of r){const c=s.get(l);if(!c||!c.isScalar||!String(u||"").trim()){a.push(l);continue}const d=" ".repeat(Pn(i[c.lineIndex]));i[c.lineIndex]=`${d}${l}: ${qd(String(u).trim())}${c.comment}`,o.push({name:l,from:c.constraint,to:u})}return{yaml:i.join(` -`),overridden:o,skipped:a}}function Vd(t){const e=String(t||""),n=[];return e.trim()?(/^name:\s*\S+/m.test(e)||n.push("pubspec.yaml missing name field"),ba(e.split(` -`))||n.push("pubspec.yaml missing dependencies section"),Wd(e).includes("flutter")||n.push("pubspec.yaml missing Flutter SDK dependency"),{valid:n.length===0,errors:n}):(n.push("pubspec.yaml is empty"),{valid:!1,errors:n})}const Tm=">=3.0.0 <4.0.0";function Mo(t){const e=String(t||"").trim(),n=e[0];return n!=="'"&&n!=='"'||e[e.length-1]!==n?e:e.slice(1,-1).replaceAll(`${n}${n}`,n)}function Nm(t=""){const e=Hg(t).filter(n=>!n.startsWith("dart:")&&!n.startsWith("package:"));return{selfContained:e.length===0,unresolvableImports:e}}function Ec(t,e,n){const r=[];for(const[i,s]of t){if(s.isScalar){e[i]=Mo(s.constraint);continue}if(s.sourceKey==="sdk"){n.add(i);continue}if(s.sourceKey===null&&s.version){e[i]=Mo(s.version);continue}r.push(i)}return r}function Mm(t){const e=new Set,n={},r={},i=Ec(Vi(t),n,e);i.push(...Ec(Fm(t,"dependency_overrides"),r,e));const s=new Set([...Object.keys(n),...e]),{sdk:o}=zd(t);return{sdkConstraint:Mo(o)||Tm,dependencies:n,overrides:r,sdkPackages:[...e].sort(),availablePackages:s,unrepresentable:i}}function Lm(t,e,n){return e.length>0?`${t} imports ${e.join(", ")}, which FlutterFlow only generates once the app is built, so it could not be compiled before the deploy.`:`${t} imports ${n.join(", ")}, which your project's pubspec.yaml does not declare with a version constraint, so it could not be compiled before the deploy.`}function Om(t,e){const{sdkConstraint:n,dependencies:r,overrides:i,sdkPackages:s,availablePackages:o,unrepresentable:a}=Mm(e),l={sdkConstraint:n,dependencies:r,overrides:i,sdkPackages:s},u=[],c=[],d=a.map(h=>`Your project declares ${h} from a source that cannot be reproduced outside it, so the pre-deploy compile check runs against a scratch package graph that omits ${h}. Classes that do not import ${h} directly are still checked, but against that reduced graph, so their transitive package resolution may differ from your project's and the check is approximate for them.`);for(const h of t){const{className:p,content:f}=h,g=_a(f),m=g.filter(b=>a.includes(b));if(m.length>0){c.push({className:p,reason:`${p} was not compiled before deploying: it imports ${m.join(", ")}, which your project declares from a source that cannot be reproduced outside it, so package resolution could not be matched exactly.`});continue}const{unresolvableImports:_}=Nm(f),w=g.filter(b=>!o.has(b));if(_.length>0||w.length>0){c.push({className:p,reason:Lm(p,_,w)});continue}u.push({fileName:`${va(p)}.dart`,content:f})}return{manifest:l,sources:u,skipped:c,approximate:d}}function Sc(t,e){const n=`${t}${e}`.split(` -`),r=n.pop()??"",i=[];for(const s of n){const o=Gd(s);o&&i.push(o)}return{events:i,buffer:r}}function Bm(t){const e=Gd(t);return e?[e]:[]}function Gd(t){const e=t.trim();if(!e)return null;try{const n=JSON.parse(e);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}async function Dm(t,e={}){const{onPhase:n,onLog:r}=e;let i=null,s="";const o=a=>{if(a.event==="phase"){a.message&&n&&n(a.message);return}if(a.event==="log"){a.message&&r&&r(a.message);return}i=a};if(t.body?.getReader){const a=t.body.getReader(),l=new TextDecoder;for(;;){const{done:u,value:c}=await a.read();if(u)break;const d=Sc(s,l.decode(c,{stream:!0}));s=d.buffer,d.events.forEach(o)}}else{const a=Sc("",await t.text());s=a.buffer,a.events.forEach(o)}return Bm(s).forEach(o),i?{...i,success:i.success===!0||i.success===void 0&&t.ok}:{success:!1,error:t.ok?"The FlutterFlow deploy runner closed the connection before it finished.":`FlutterFlow custom class provisioning failed (HTTP ${t.status}).`}}const jm=/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;function St(t){const e=String(t||"").trim().match(jm);return e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),prerelease:e[4]?e[4].split("."):[]}:null}function Um(t,e){if(t.length===0&&e.length===0)return 0;if(t.length===0)return 1;if(e.length===0)return-1;for(let n=0;n0)}function Wm(t){const e=St(t);return e?e.major>0?`${e.major+1}.0.0`:`0.${e.minor+1}.0`:null}function Ea(t){let e=String(t??"").trim();if((e.startsWith("'")||e.startsWith('"'))&&(e=e.slice(1,-1).trim()),e===""||e==="any"||e==="*")return{min:null,minInclusive:!1,max:null,maxInclusive:!1};if(e.startsWith("^")){const o=e.slice(1).trim();return St(o)?{min:o,minInclusive:!0,max:Wm(o),maxInclusive:!1}:null}if(St(e))return{min:e,minInclusive:!0,max:e,maxInclusive:!0};const n={min:null,minInclusive:!1,max:null,maxInclusive:!1},r=/(>=|<=|>|<)\s*([0-9][0-9A-Za-z.+-]*)/g;let i=!1,s;for(;(s=r.exec(e))!==null;){const[,o,a]=s;if(!St(a))return null;i=!0,o===">="||o===">"?(n.min=a,n.minInclusive=o===">="):(n.max=a,n.maxInclusive=o==="<=")}return i?n:null}function xc(t,e){const n=Ea(t);if(!n||!St(e))return!1;if(n.min!==null){const r=ki(e,n.min);if(r<0||r===0&&!n.minInclusive)return!1}if(n.max!==null){const r=ki(e,n.max);if(r>0||r===0&&!n.maxInclusive)return!1}return!0}function zm(t,e){const n=Ea(t);if(!n||!St(e))return!1;if(n.max===null)return!0;const r=ki(n.max,e);return r>0?!0:r===0&&n.maxInclusive}function ln(t){const e=Ea(t);return e?e.min:null}const qm="https://pub.dev/api/packages/",Vm=8e3;function Gm(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:r=null}=e,i=Array.isArray(t?.versions)?t.versions:[];let s=null;for(const o of i){const a=o?.version;if(!a||o.retracted||Hm(a))continue;const l=o.pubspec?.environment||{};n&&l.sdk&&!xc(l.sdk,n)||r&&l.flutter&&!xc(l.flutter,r)||(!s||ki(a,s)>0)&&(s=a)}return s?{version:s,constraint:`^${s}`}:null}async function Km(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:r=null,fetchImpl:i=fetch}=e;let s;try{const a=await i(`${qm}${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(Vm)});if(!a.ok)return{name:t,constraint:null,version:null,error:a.status===404?`"${t}" was not found on pub.dev`:`pub.dev returned ${a.status} for "${t}"`};s=await a.json()}catch(a){return{name:t,constraint:null,version:null,error:`could not reach pub.dev for "${t}" (${a.message})`}}const o=Gm(s,{dartSdkFloor:n,flutterSdkFloor:r});return o?{name:t,...o,error:null}:{name:t,constraint:null,version:null,error:n?`no published "${t}" release supports Dart ${n}`:`no published "${t}" release could be read`}}async function Jm(t,e={}){const n=await Promise.all(t.map(r=>Km(r,e)));return new Map(n.map(({name:r,...i})=>[r,i]))}async function Ym(t,e={},n={}){const{resolveVersions:r=Jm}=n,i=Object.entries(e).filter(([c])=>c&&c!=="flutter"),s=zd(t),o={dartSdkFloor:ln(s.sdk),flutterSdkFloor:ln(s.flutter)},a={additions:{},overrides:{},kept:[],warnings:[],sdk:o};if(i.length===0)return a;const l=Vi(t),u=[];for(const[c,d]of i){const h=l.get(c);if(!h){u.push(c);continue}const p=ln(d);if(!p){a.kept.push({name:c,constraint:h.constraint});continue}if(!h.isScalar){a.warnings.push(`"${c}" is declared in your project from a git, path, or SDK source, but the generated code needs at least ${p}. Left as-is — update it yourself if the build fails.`),a.kept.push({name:c,constraint:h.constraint});continue}if(zm(h.constraint,p)){a.kept.push({name:c,constraint:h.constraint});continue}a.overrides[c]=`^${p}`,a.warnings.push(`"${c}" was pinned to ${h.constraint} in your project, which cannot resolve the ${p} the generated code needs. Raising it to ^${p} — this changes a dependency the rest of your app also uses.`)}if(u.length>0){const c=await r(u,o);for(const d of u){const h=c.get(d);if(h?.constraint){a.additions[d]=h.constraint;continue}const p=e[d]||"";if(ln(p)){a.additions[d]=`^${ln(p)}`,a.warnings.push(`Could not confirm "${d}" version on pub.dev (${h?.error||"lookup failed"}). Using ^${ln(p)} from the AI's recommendation — verify this is current.`);continue}a.additions[d]=">=0.0.0",a.warnings.push(`Could not determine a version for "${d}" (${h?.error||"lookup failed"}) and the AI supplied none. Added with a wide-open >=0.0.0 constraint — pin a concrete version in FlutterFlow before deploying.`)}}return a}const Zm={"&":"&","<":"<",">":">",'"':""","'":"'"};function xt(t){return String(t??"").replace(/[&<>"']/g,e=>Zm[e])}function D(t){return t?xt(t).replace(/\n/g,"
    "):""}function Ft(t){return xt(t).replace(/\r?\n/g," ")}function Xm(t,e={}){const n=t?.pipelineStep;if(n!=null&&e[n]!=null)return e[n];const r=t?.message||"";return r.includes("Code Generator")?2:r.includes("Code Review")?3:1}function Qm(t){const e={"Integration Audit Report":"📋","Critical Issues":"❌",Warnings:"⚠️",Recommendations:"✅","Overall Score":"📊"};for(const[n,r]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return r;return"📄"}function ev(t){const e={critical:"❌",warning:"⚠️",recommendation:"✅",score:"📊",issue:"🔍",fix:"🔧"};for(const[n,r]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return r;return"📝"}function tv(t){return t.includes("class ")&&t.includes("extends ")||t.includes("StatelessWidget")||t.includes("StatefulWidget")||t.includes("import 'package:flutter/")?"dart":t.includes("def ")||t.includes("import ")||t.includes("print(")?"python":t.includes("function ")||t.includes("const ")||t.includes("console.")?"javascript":"dart"}function kn(t){if(!t)return"";if(typeof t!="string")return String(t);const e=/```(?:\w+)?\n?([\s\S]*?)```/,n=t.match(e);return n?n[1].trim():t.trim()}function kc(t){return t=xt(t),t=t.replace(/\*\*(.*?)\*\*/g,'$1'),t=t.replace(/\*(.*?)\*/g,'$1'),t=t.replace(/`(.*?)`/g,'$1'),t=t.replace(/\b(FAIL|ERROR|CRITICAL)\b/g,'$1'),t=t.replace(/\b(WARN|WARNING)\b/g,'$1'),t=t.replace(/\b(PASS|SUCCESS|OK)\b/g,'$1'),t}function Kd(t,e="dart",n=globalThis.hljs){if(!t)return"";const r=kn(t);try{return n.highlight(r,{language:e}).value}catch(i){console.warn("Syntax highlighting failed:",i);try{return n.highlight(r,{language:"json"}).value}catch{return xt(r)}}}function Gi(t,e={}){const{highlighter:n=globalThis.hljs}=e;let r='
    ';const i=String(t??"").split(` -`);let s=!1,o="";for(const a of i){if(a.startsWith("```")){if(s){const l=tv(o),u=Kd(o.trim(),l,n);r+=`
    -
    ${u}
    -
    `,o="",s=!1}else s=!0;continue}if(s){o+=a+` -`;continue}if(a.startsWith("# ")){const l=a.substring(2).trim();r+=`
    -

    - ${Qm(l)} - ${xt(l)} -

    -
    `;continue}if(a.startsWith("## ")){const l=a.substring(3).trim();r+=`
    -

    - ${ev(l)} - ${xt(l)} -

    -
    `;continue}if(/^[-*+]\s+/.test(a)||/^\d+\.\s+/.test(a)){const l=a.replace(/^([-*+]|\d+\.)\s+/,"").trim();r+=`
    - • - ${kc(l)} -
    `;continue}a.trim()!==""&&(r+=`

    ${kc(a)}

    `)}return r+="
    ",` -
    -
    -
    - Live Audit Report -
    - ${r} -
    - `}const nv="https://ccc-ffai-runner-y5cyj3473a-uw.a.run.app/deployCustomClasses";const Ze="https://4tgke4.buildship.run",Jd={professional:"price_1T2ldCKszA2slvDXatdeCpbI",power:"price_1T2le9KszA2slvDXR4mPvw7M"},Ii="ccc_auth_session",Lo="ccc_signin_return",rv=1800*1e3,Ic=new WeakSet;let z={email:null,sessionToken:null,isVerified:!1};function In(t={}){return{tier:"free",status:"none",periodEnd:null,isLoading:!1,isResolved:!1,error:null,...t}}let pe=In({isResolved:!0});const iv=`${Ze}/service/runpipeline`,sv="bs_user_id",ov="bs_identity_token",av=`${Ze}/authUserCheck`;let Ke={userId:null,token:null,status:null,resolved:!1};const Ci={free:2,professional:50,power:2e3},Ai="ccc_subscription",Cc=3,lv=new Set(["active","trialing","paid"]),fr="google/gemini-3.7-flash",Jr=["anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta","openrouter/free","openrouter/deepseek/deepseek-v4-pro"],cv={"google/gemini-3.7-flash":"Gemini 3.7 Flash","anthropic/claude-opus-5":"Claude Opus 5","openai/gpt-5.6-sol":"GPT-5.6 Sol","z-ai/glm-5.2":"GLM 5.2","moonshotai/kimi-k3":"Kimi K3","openrouter/auto-beta":"OpenRouter: Auto Router","openrouter/free":"OpenRouter: Free Models","openrouter/deepseek/deepseek-v4-pro":"DeepSeek v4 Pro"};function Kt(t){return cv[t]||t}const uv=new Set(["google/gemini-3.7-flash","anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta"]);function Yd(t){return uv.has(t)}const Oo=4,Ds=8*1024*1024,dv="https://4tgke4.buildship.run/service/runpipeline-image";let Rt=[];function hv(t){return new Promise(e=>{const n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>e(null),n.readAsDataURL(t)})}async function pv(t){const e=new FormData;return e.append("file",t),(await fetch(dv,{method:"POST",body:e})).json()}function fv(t){if(Array.isArray(t)){const e=t[0];if(e&&typeof e=="object")for(const n of Object.keys(e)){if(n==="item"||n==="index")continue;const r=e[n];if(r&&typeof r=="object"){if(typeof r.file=="string")return r.file;if(typeof r.url=="string")return r.url}if(typeof r=="string")return r}return""}return typeof t=="string"?t:t&&typeof t=="object"&&(t.url||t.fileUrl||t.file_url||t.downloadUrl||t.imageUrl||t.image_url||t.file)||""}async function gv(t){const e=Array.from(t.target.files||[]);if(!e.length)return;const n=e.filter(l=>l.size>Ds);n.length&&ue(`Skipped ${n.length} image(s) over the ${(Ds/1024/1024).toFixed(0)} MB limit.`,"warning");const r=e.filter(l=>l.size<=Ds);if(!r.length){t.target.value="";return}const i=Oo-Rt.length,o=r.slice(0,i).map(async l=>{const u=await hv(l);if(!u)return null;let c="";try{c=fv(await pv(l))}catch{c=""}return{dataUrl:u,name:l.name,url:c}}),a=(await Promise.all(o)).filter(Boolean);t.target.value="",!(a.length&&!Yd(document.getElementById("code-generator-model")?.value))&&(Rt.push(...a),r.length>i&&ue(`You can attach up to ${Oo} images.`,"info"),Sa())}function mv(t){Rt.splice(t,1),Sa()}function Sa(){const t=document.getElementById("prompt-image-thumbnails"),e=document.getElementById("prompt-image-btn-label");t&&(t.innerHTML="",Rt.forEach((n,r)=>{const i=document.createElement("div");i.className="prompt-img-thumb",i.innerHTML=`Prompt image`,t.appendChild(i)}),e&&(e.textContent=Rt.length>=Oo?"Image limit reached":"Add images"))}function Zd(){const t=document.getElementById("prompt-image-upload");if(!t)return;const e=document.getElementById("code-generator-model"),n=Yd(e?.value);t.classList.toggle("hidden",!n),!n&&Rt.length&&(Rt=[],Sa())}const Zt="ccc_usage",Xd="google/gemini-3.7-flash",Qd="google/gemini-3.7-flash",js="google/gemini-3.7-flash",Br={professional:11,power:49},Bo={en_US:"USD",en_GB:"GBP",en_AU:"AUD",en_NZ:"NZD",en_CA:"CAD",en_IN:"INR",en_SG:"SGD",en_HK:"HKD",en_PH:"PHP",en_ZA:"ZAR",en:"USD",de:"EUR",fr:"EUR",es:"EUR",it:"EUR",nl:"EUR",pt_PT:"EUR",pt_BR:"BRL",pt:"BRL",ja:"JPY",ko:"KRW",zh_CN:"CNY",zh_TW:"TWD",zh:"CNY",th:"THB",vi:"VND",id:"IDR",ms_MY:"MYR",ms:"MYR",sv:"SEK",nb:"NOK",da:"DKK",pl:"PLN",cs:"CZK",hu:"HUF",ro:"RON",tr:"TRY",ar:"AED",he:"ILS",ru:"RUB",uk:"UAH"},Yr={AUD:1,USD:.65,EUR:.6,GBP:.52,CAD:.88,NZD:1.08,JPY:97,KRW:870,INR:54,SGD:.87,HKD:5.08,BRL:3.18,CNY:4.7,TWD:20.5,THB:22.5,VND:16200,IDR:10200,MYR:2.88,SEK:6.8,NOK:6.95,DKK:4.48,PLN:2.6,CZK:15.2,HUF:238,RON:2.98,TRY:20.9,AED:2.39,ILS:2.38,PHP:36.4,ZAR:11.8,RUB:58,UAH:26.8,CHF:.57,MXN:11.1,ARS:580,CLP:610,COP:2700,PEN:2.44};let Zr={...Yr};async function vv(){const t=new AbortController,e=setTimeout(()=>t.abort(),5e3);try{const n=await fetch("https://open.er-api.com/v6/latest/AUD",{signal:t.signal});if(!n.ok)return;const r=await n.json();if(r.result!=="success"||!r.rates)return;const i=r.rates,s={AUD:1},o=new Set([...Object.keys(Yr),...Object.values(Do),...Object.values(Bo)]);for(const a of o)a!=="AUD"&&(typeof i[a]=="number"&&i[a]>0?s[a]=i[a]:Yr[a]&&(s[a]=Yr[a]));Zr=s}catch{}finally{clearTimeout(e)}}const Do={"America/Sao_Paulo":"BRL","America/Fortaleza":"BRL","America/Recife":"BRL","America/Bahia":"BRL","America/Belem":"BRL","America/Manaus":"BRL","America/Cuiaba":"BRL","America/Campo_Grande":"BRL","America/Araguaina":"BRL","America/Noronha":"BRL","America/Rio_Branco":"BRL","America/Porto_Velho":"BRL","America/Boa_Vista":"BRL","America/Maceio":"BRL","America/Santarem":"BRL","America/Eirunepe":"BRL","Europe/London":"GBP","Europe/Paris":"EUR","Europe/Berlin":"EUR","Europe/Madrid":"EUR","Europe/Rome":"EUR","Europe/Amsterdam":"EUR","Europe/Brussels":"EUR","Europe/Vienna":"EUR","Europe/Lisbon":"EUR","Europe/Dublin":"EUR","Europe/Helsinki":"EUR","Europe/Athens":"EUR","Europe/Bucharest":"RON","Europe/Budapest":"HUF","Europe/Warsaw":"PLN","Europe/Prague":"CZK","Europe/Copenhagen":"DKK","Europe/Stockholm":"SEK","Europe/Oslo":"NOK","Europe/Zurich":"CHF","Europe/Istanbul":"TRY","Europe/Moscow":"RUB","Europe/Kiev":"UAH","Europe/Kyiv":"UAH","Asia/Tokyo":"JPY","Asia/Seoul":"KRW","Asia/Shanghai":"CNY","Asia/Taipei":"TWD","Asia/Hong_Kong":"HKD","Asia/Singapore":"SGD","Asia/Kolkata":"INR","Asia/Calcutta":"INR","Asia/Bangkok":"THB","Asia/Ho_Chi_Minh":"VND","Asia/Jakarta":"IDR","Asia/Kuala_Lumpur":"MYR","Asia/Dubai":"AED","Asia/Jerusalem":"ILS","Asia/Tel_Aviv":"ILS","Asia/Manila":"PHP","Pacific/Auckland":"NZD","Australia/Sydney":"AUD","Australia/Melbourne":"AUD","Australia/Brisbane":"AUD","Australia/Perth":"AUD","Australia/Adelaide":"AUD","Australia/Hobart":"AUD","Australia/Darwin":"AUD","Australia/Lord_Howe":"AUD","America/Toronto":"CAD","America/Vancouver":"CAD","America/Edmonton":"CAD","America/Winnipeg":"CAD","America/Halifax":"CAD","America/St_Johns":"CAD","America/Regina":"CAD","America/New_York":"USD","America/Chicago":"USD","America/Denver":"USD","America/Los_Angeles":"USD","America/Phoenix":"USD","America/Anchorage":"USD","Pacific/Honolulu":"USD","America/Mexico_City":"MXN","America/Cancun":"MXN","America/Tijuana":"MXN","America/Argentina/Buenos_Aires":"ARS","America/Santiago":"CLP","America/Bogota":"COP","America/Lima":"PEN","Africa/Johannesburg":"ZAR"};function eh(){try{const s=Intl.DateTimeFormat().resolvedOptions().timeZone;if(s&&Do[s])return Do[s]}catch{}const e=(navigator.language||"en-US").replace("-","_"),n=Bo[e];if(n)return n;const r=e.split("_")[0],i=Bo[r];return i||"USD"}function Dr(t,e){const n=Zr[e]??Zr.USD,r=t*n,i=Math.round(r*100)/100;try{return new Intl.NumberFormat("en-US",{style:"currency",currency:e,minimumFractionDigits:0,maximumFractionDigits:i>=100||i%1===0?0:2}).format(i)}catch{return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:2}).format(t*Zr.USD)}}const st="ccc_api_key_",bt="ccc_session_api_key_",lt="ccc_encryption_key",gr="ccc_encryption_key_scope",_v="ccc_keystore",Fi="keys",mr="ccc_encryption_key_version";let jo=null,Pi=null,vr=!1,$i=!1,Ac=!1;class Ri extends Error{constructor(){super("Secure browser key storage is unavailable."),this.name="CredentialStorageUnavailableError"}}function Fc(){if(Ac)return;Ac=!0;const t="Secure browser key storage is unavailable. Existing credentials were left untouched; new credentials will be available only in this tab session.";console.warn(t),document.body&&ue(t,"warning")}function th(){return localStorage.getItem(mr)||""}function Uo(){return crypto.randomUUID?.()||rh(crypto.getRandomValues(new Uint8Array(16)))}function yv(){const t=th();if(t)return t;const e=Uo();return localStorage.setItem(mr,e),e}function Cn(){jo=null,Pi=null,vr=!1,$i=!1}window.addEventListener("storage",t=>{t.key===mr&&Cn()});function wv(){return new Promise((t,e)=>{const n=indexedDB.open(_v,1);n.onupgradeneeded=()=>{const r=n.result;r.objectStoreNames.contains(Fi)||r.createObjectStore(Fi)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}async function xa(t,e){const n=await wv();return new Promise((r,i)=>{const s=n.transaction(Fi,t);let o;try{o=e(s.objectStore(Fi))}catch(l){n.close(),i(l);return}let a;o.onsuccess=()=>{a=o.result},o.onerror=()=>i(o.error),s.oncomplete=()=>{n.close(),r(a)},s.onerror=()=>{n.close(),i(s.error||new Error("Encryption key transaction failed."))},s.onabort=()=>{n.close(),i(s.error||new Error("Encryption key transaction aborted."))}})}function bv(t){return t instanceof CryptoKey&&t.algorithm?.name==="AES-GCM"&&t.extractable===!1&&t.usages.includes("encrypt")&&t.usages.includes("decrypt")}async function Ev(){const t=await xa("readonly",e=>e.get(lt));return bv(t)?t:null}async function nh(t){await xa("readwrite",e=>e.put(t,lt))}async function Sv(){Cn();try{await xa("readwrite",t=>t.delete(lt))}catch(t){console.warn("Could not delete the stored encryption key:",t)}}async function xv(){const t=sessionStorage.getItem(lt);if(!t)return null;const e=await crypto.subtle.importKey("jwk",JSON.parse(t),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await nh(e),sessionStorage.removeItem(lt),sessionStorage.removeItem(gr),localStorage.removeItem(st+"salt"),e}async function Pc(t){const e=sessionStorage.getItem(lt);if(e)return $i=sessionStorage.getItem(gr)!=="session",crypto.subtle.importKey("jwk",JSON.parse(e),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);if(!t)throw new Ri;const n=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),r=await crypto.subtle.exportKey("jwk",n);return sessionStorage.setItem(lt,JSON.stringify(r)),sessionStorage.setItem(gr,"session"),$i=!1,crypto.subtle.importKey("jwk",r,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function kv(t){if(sessionStorage.getItem(gr)==="session"&&sessionStorage.getItem(lt))return Fc(),vr=!0,Pc(t);try{const e=await Ev();if(e)return e;const n=await xv();if(n)return n;const r=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await nh(r),r}catch(e){return console.warn("IndexedDB encryption-key storage failed:",e),Fc(),vr=!0,Pc(t)}}async function ka(t={}){const{allowSessionFallbackCreation:e=!0}=t,n=yv();Pi!==n&&Cn();const r=jo||kv(e);jo=r,Pi=n;try{return await r}catch(i){throw Cn(),i}}async function Iv(t){const e=await ka(),n=Pi,r=new TextEncoder,i=crypto.getRandomValues(new Uint8Array(12)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:i},e,r.encode(t)),o=new Uint8Array(i.length+s.byteLength);return o.set(i),o.set(new Uint8Array(s),i.length),{ciphertext:rh(o),keyVersion:n,sessionFallback:vr}}async function Cv(t,e={}){const{isSessionCredential:n=!1}=e;try{const r=await ka({allowSessionFallbackCreation:!1});if(vr&&!n&&!$i)throw new Ri;const i=Av(t),s=i.slice(0,12),o=i.slice(12),a=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},r,o);return new TextDecoder().decode(a)}catch(r){if(r instanceof Ri)throw r;return console.error("Decryption failed:",r),null}}function rh(t){const e=new Uint8Array(t);let n="";for(let r=0;r0}let _r="",Ti="",rr=null,Rc=0;async function Ia(){sessionStorage.getItem(lt)&&await ka(),_r=await Ee("flutterflow"),Ti=await Ee("flutterflow_project_id"),Tv(),en()}function Ca(){const t=document.getElementById("api-keys-modal");Ve(t),Fa(),_r&&ah(_r)}function ih(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("api-keys-modal");e&&Xe(e);const n=document.getElementById("walkthrough-modal");n&&(Aa(),Ve(n))}let kt=1;function sh(){const t=document.querySelector(".wt-steps");return t?Array.from(t.querySelectorAll(".wt-step-card")):[]}function Ki(){const t=sh();t.length&&t.forEach((e,n)=>{const r=n+1;if(r===kt){e.classList.remove("opacity-60","bg-gray-50","border-gray-200"),e.classList.add("bg-blue-50","border-blue-200");const i=e.querySelector("div:first-child");i&&(i.classList.remove("bg-gray-400"),i.classList.add("bg-blue-500"),i.innerHTML=r)}else if(r0&&kt<=t&&(kt++,Ki())}function Pv(){const t=document.getElementById("walkthrough-modal");t&&(kt=1,Ki(),Ve(t))}function $v(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("walkthrough-modal");e&&Xe(e);const n=document.getElementById("walkthrough-dont-show");n&&n.checked&&localStorage.setItem("hasSeenWalkthrough","true")}function oh(){if(z.isVerified&&Nt()&&pe.tier!=="free")return;if(!localStorage.getItem("hasSeenWalkthrough")){const e=document.getElementById("walkthrough-modal");e&&(kt=1,Ki(),Ve(e))}}async function Fa(){const t=document.getElementById("flutterflow-api-key-input");_r?(t.value="",t.placeholder="Key saved (enter new to replace)"):t.placeholder="Enter your FlutterFlow API key",Rv()}function Rv(){Tc("flutterflow","flutterflow-key-status"),Tc("flutterflow_project_id","flutterflow-project-status")}function Tc(t,e){const n=document.getElementById(e);if(!n)return;const r=n.querySelector(".key-status-dot"),i=n.querySelector("span");dn(t)?(r.className="key-status-dot configured",i.className="text-green-600",i.textContent="User key configured"):(r.className="key-status-dot missing",i.className="text-gray-500",i.textContent="Not configured")}function en(){const t=y.step2Result&&y.step2Result.length>0,e=document.getElementById("btn-deploy-to-ff"),n=document.getElementById("btn-run-pipeline");n&&n.classList.remove("hidden"),e&&e.classList.toggle("hidden",!t)}function Tv(){const t=document.getElementById("api-keys-status");if(!t)return;const e=t.querySelectorAll(".key-status-dot"),n=["flutterflow"];e.forEach((r,i)=>{const s=n[i];s==="flutterflow"?dn("flutterflow")&&dn("flutterflow_project_id")?(r.className="key-status-dot configured",r.title="FlutterFlow (Fully configured)"):dn("flutterflow")||dn("flutterflow_project_id")?(r.className="key-status-dot env",r.title="FlutterFlow (Partially configured)"):(r.className="key-status-dot missing",r.title="FlutterFlow (Not configured)"):dn(s)?(r.className="key-status-dot configured",r.title=s.charAt(0).toUpperCase()+s.slice(1)+" (User key)"):(r.className="key-status-dot missing",r.title=s.charAt(0).toUpperCase()+s.slice(1)+" (Not configured)")}),en()}async function Nv(){const t=document.getElementById("flutterflow-api-key-input"),e=document.getElementById("flutterflow-projects-select");t.value.trim()&&await $c("flutterflow",t.value);const n=e?.value.trim()||"";if(n){if(!Ji(n)){ue("The selected FlutterFlow project has an unexpected ID format.","error"),e.focus();return}await $c("flutterflow_project_id",n)}await Ia(),Fa();const r=document.querySelector("#api-keys-modal .bg-blue-500"),i=r.textContent;r.textContent="Saved!",r.classList.remove("bg-blue-500","hover:bg-blue-600"),r.classList.add("bg-green-500"),setTimeout(()=>{r.textContent=i,r.classList.remove("bg-green-500"),r.classList.add("bg-blue-500","hover:bg-blue-600"),ih()},1e3)}async function Mv(){if(!confirm("Are you sure you want to clear all stored API keys?"))return;localStorage.setItem(mr,Uo()),Cn(),localStorage.removeItem(st+"flutterflow"),localStorage.removeItem(st+"flutterflow_project_id"),sessionStorage.removeItem(bt+"flutterflow"),sessionStorage.removeItem(bt+"flutterflow_project_id"),sessionStorage.removeItem(lt),sessionStorage.removeItem(gr),localStorage.removeItem(st+"salt"),await Sv(),localStorage.setItem(mr,Uo()),localStorage.removeItem(st+"flutterflow"),localStorage.removeItem(st+"flutterflow_project_id"),sessionStorage.removeItem(bt+"flutterflow"),sessionStorage.removeItem(bt+"flutterflow_project_id"),await Ia();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML=''),Fa()}function Ji(t){return!t||t.trim().length<5||t.includes(" ")?!1:/^[a-zA-Z0-9-]+$/.test(t)}function Lv(t,e){const n=document.getElementById(t);n&&(n.value?e?n.style.borderColor="#22c55e":n.style.borderColor="#ef4444":n.style.borderColor="")}function Ov(){const t=document.getElementById("flutterflow-api-key-input");t&&(t.addEventListener("input",e=>{const n=e.target.value.trim().length>0;Lv("flutterflow-api-key-input",n)}),t.addEventListener("blur",Bv(async e=>{const n=e.target.value.trim();n&&await ah(n)},500)))}function Bv(t,e){let n;return function(...i){const s=()=>{clearTimeout(n),t(...i)};clearTimeout(n),n=setTimeout(s,e)}}async function ah(t){const e=document.getElementById("flutterflow-projects-select"),n=document.getElementById("flutterflow-projects-error");if(!e){console.error("Projects dropdown element not found");return}e.innerHTML='',n&&n.classList.add("hidden");try{const i=await new br(t,"").listProjects();if(!i||i.length===0){e.innerHTML='';return}e.innerHTML='',i.forEach(s=>{const o=document.createElement("option");o.value=s.id||s.projectId||"",o.textContent=s.name||s.projectName||`Project ${s.id}`,e.appendChild(o)}),Ti&&(e.value=Ti)}catch(r){console.error("Failed to fetch projects:",r),e.innerHTML='',n&&(n.textContent=`Failed to load projects: ${r.message}`,n.classList.remove("hidden"))}}function Dv(t){const e=document.getElementById(t),r=e.nextElementSibling.querySelector("svg");e.type==="password"?(e.type="text",r.innerHTML=` - - `):(e.type="password",r.innerHTML=` - - - `)}let y={step1Result:null,step2Result:null,step3Result:null,bundleSpec:null,artifactBundle:null,bundleReview:null,selectedArtifactId:null,resultsViewMode:"summary",currentStep:0,isRunning:!1};function jv(){y.step1Result=null,y.step2Result=null,y.step3Result=null,y.bundleSpec=null,y.artifactBundle=null,y.bundleReview=null,y.selectedArtifactId=null,y.resultsViewMode="summary"}function Uv(){y.bundleSpec=hr(y.step1Result,{artifactType:"CustomWidget",artifactName:"GeneratedWidget"})}function Yi(){const t=Si(y.bundleSpec);y.artifactBundle=hr(y.step2Result,{id:y.bundleSpec?.id,title:y.bundleSpec?.title,description:y.bundleSpec?.description,artifactType:t.artifactType,artifactName:t.artifactName,fileName:t.fileName,dependencies:t.dependencies,relationships:y.bundleSpec?.relationships,code:y.step2Result||""});const e=Og(y.artifactBundle);y.artifactBundle={...y.artifactBundle,warnings:[...y.artifactBundle.warnings,...e.findings.map(n=>n.message)],metadata:{...y.artifactBundle.metadata,compatibility:e}},y.selectedArtifactId=Si(y.artifactBundle).id}function Zi(){const t=hr(y.step3Result,{id:y.artifactBundle?.id,title:y.artifactBundle?.title}),e=new Map(t.artifacts.map(r=>[r.id,r.review])),n=new Map(t.artifacts.filter(r=>{const i=r.review;return i&&typeof i.fixedSource=="string"&&i.fixedSource.trim()}).map(r=>[r.id,r.review.fixedSource.trim()]));y.bundleReview=hr({id:y.artifactBundle?.id,title:y.artifactBundle?.title,artifacts:y.artifactBundle?.artifacts?.map(r=>{const i=n.get(r.id)||null;return{...r,review:e.get(r.id)||r.review||y.step3Result||null,...i?{fixedCode:i}:{}}})||[],relationships:y.artifactBundle?.relationships,warnings:y.artifactBundle?.warnings})}function lh(){const t=Pa();return{artifactType:t.artifactType||"CustomWidget",artifactName:t.artifactName||"GeneratedWidget",fileName:t.fileName||""}}function Pa(){const t=y.artifactBundle||y.bundleSpec||null;return(Array.isArray(t?.artifacts)?t.artifacts:[]).find(n=>n.id===y.selectedArtifactId)||Si(t)}function $a(){return Pa().code||y.step2Result||""}async function Hv(){try{await Ia()}catch(t){return console.error("checkConnection: initializeApiKeys failed:",t),!1}return!0}const Xr={production:"https://api.flutterflow.io/v2/",staging:"https://api.flutterflow.io/v2-staging/"};function Wv(t,e){const n=e?.trim()?` (${e.trim().slice(0,200)})`:"";return t===401?`Your FlutterFlow API key was rejected (401 Unauthorized)${n}. Re-enter a current key under API Keys settings, then try again.`:`Listing FlutterFlow projects was denied (403)${n}. The key may be scoped to sync a single project without list permission - verify the key's access in FlutterFlow, re-enter it under API Keys settings, then retry.`}class br{constructor(e,n,r="main",i=Xr.production){this.apiKey=e,this.baseUrl=i,this._projectId=n,this._branchName=r,this._endpoint=i}get projectId(){return this._projectId}get branchName(){return this._branchName==="main"?"":this._branchName}async exportProjectZip(){console.log(`Exporting code from FlutterFlow project: ${this.projectId}, branch: ${this.branchName||"main"}`);const e=[{project:{path:`projects/${this.projectId}`},...this.branchName?{branch_name:this.branchName}:{},export_as_module:!1,include_assets_map:!1,format:!1,export_as_debug:!1},{project_id:this.projectId,branch_name:this.branchName,include_assets:!1,export_as_module:!1}];let n=null;for(const r of e)try{const i=await fetch(`${this.baseUrl}exportCode`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(r)});if(!i.ok){const a=await i.text();n=new Error(`Export failed: ${i.status} - ${a}`);continue}const s=await i.json(),o=s?.value?.project_zip||s?.project_zip;if(!o){n=new Error("Export response did not include project source.");continue}return o}catch(i){n=i}throw n||new Error("Export failed for an unknown reason.")}async fetchProjectSource(){const e=await this.exportProjectZip(),n=await JSZip.loadAsync(e,{base64:!0}),r=Object.keys(n.files).filter(a=>!n.files[a].dir&&(a==="pubspec.yaml"||a.endsWith("/pubspec.yaml"))).sort((a,l)=>a.split("/").length-l.split("/").length)[0];if(!r)throw new Error("Export did not contain a pubspec.yaml.");const i=r.slice(0,r.length-12),s=new Map,o=Object.keys(n.files).filter(a=>{if(n.files[a].dir||!a.startsWith(i))return!1;const l=a.slice(i.length);return l==="lib/flutter_flow/custom_functions.dart"||l.startsWith("lib/custom_code/")&&l.endsWith(".dart")});return await Promise.all(o.map(async a=>{s.set(a.slice(i.length),await n.files[a].async("string"))})),{pubspecYaml:await n.files[r].async("string"),files:s}}async pushCodeWithRetry(e,n=3){const r=[Xr.production,Xr.staging],i=Math.max(0,r.indexOf(this._endpoint));for(let s=0;ssetTimeout(d,1e3*(s+1)));continue}return l}catch(l){console.warn(`Push to ${a} failed: ${l.message}, trying next...`),await new Promise(u=>setTimeout(u,1e3*(s+1)))}}throw new Error("All API endpoints failed after retries")}async pushCode(e){return this.pushCodeWithRetry(e)}parseProjectsResponse(e){if(e?.success&&typeof e.value=="string")try{const r=JSON.parse(e.value);if(r&&Array.isArray(r.entries))return r.entries.map(i=>({id:i.id,name:i.project?.name||i.id}))}catch(r){console.error("Failed to parse stringified project value:",r)}const n=e?.projects||e?.items||e?.entries||(Array.isArray(e)?e:[]);return Array.isArray(n)?n:[]}async listProjects(){console.log("Listing projects for API key");const e=[`${this.baseUrl}listProjects`,"https://api.flutterflow.io/v2/l/listProjects"];let n=0,r="";for(const i of e){const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({project_type:"ALL",deserialize_response:!0})});if(s.ok)return i!==e[0]&&console.log(`listProjects answered on legacy path ${i}`),this.parseProjectsResponse(await s.json());if(n=s.status,r=await s.text(),console.warn(`listProjects via ${i} returned ${n}: ${r}`),s.status===401||s.status===403)throw new Error(Wv(s.status,r));if(s.status!==404)throw new Error(`List projects failed: ${s.status} - ${r}`)}throw new Error(`List projects failed: ${n} - ${r}`)}}async function Ra(t){const e=t.clone();let n;try{n=await t.json()}catch{const s=await e.text();if(!t.ok)return{success:!1,responseCode:t.status,errorMessage:s||`HTTP ${t.status}`,errorMap:new Map};throw new Error(`Invalid JSON response: ${s}`)}if(!t.ok){let i=n.message||`HTTP ${t.status}`,s=new Map;if(n.errors)s=new Map(Object.entries(n.errors));else if(!n.message&&typeof n=="object"){const o=Object.keys(n).filter(a=>a.endsWith(".dart")&&Array.isArray(n[a]));o.length>0&&(s=new Map(Object.entries(n)),i=o.flatMap(l=>n[l].map(u=>`${l}: ${u.errorMessage}`)).join(` -`)||`HTTP ${t.status}`)}return{success:!1,responseCode:t.status,errorMessage:i,errorMap:s}}let r={};if(n.value)try{r=typeof n.value=="string"?JSON.parse(n.value):n.value}catch(i){console.warn("Ignoring malformed push response value:",i)}return{success:!0,responseCode:t.status,errorMap:new Map(Object.entries(r))}}function Ta(t,e){return{401:"Authentication failed. Please check your FlutterFlow API key.",403:"Access denied. You may not have permission to modify this project.",404:"Project not found. Please check your Project ID.",409:"Conflict detected. The project may have been modified elsewhere.",422:"Validation failed: Invalid request format",429:"Rate limit exceeded. Please try again in a few minutes.",500:"FlutterFlow server error. Please try again later.",503:"FlutterFlow service temporarily unavailable."}[t]||`FlutterFlow API error: ${`HTTP ${t}`}`}const U={ACTION:"A",WIDGET:"W",FUNCTION:"F",CODE_FILE:"C",DEPENDENCIES:"D",OTHER:"O"},ch=/class\s+\w+\s+extends\s+(?:StatelessWidget|StatefulWidget)\b/,uh=/extends\s+State<\w+>/;function zv(t,e=""){if(t==="pubspec.yaml")return U.DEPENDENCIES;if(!t.endsWith(".dart")||t.endsWith("index.dart"))return U.OTHER;if(t==="custom_functions.dart")return U.FUNCTION;if(e){const n=ch.test(e),r=uh.test(e);if(n||r)return U.WIDGET;if(/^\s*Future(?:<[^>]+>)?\s+\w+\s*\(/m.test(e))return U.ACTION;if(e.match(/^\s*(String|int|double|bool|List|Map|dynamic|void)\s+\w+\s*\(/m))return U.FUNCTION}return U.CODE_FILE}function dh(t,e){switch(e){case U.ACTION:return`lib/custom_code/actions/${t}`;case U.WIDGET:return`lib/custom_code/widgets/${t}`;case U.FUNCTION:return"lib/flutter_flow/custom_functions.dart";case U.CODE_FILE:return`lib/custom_code/${t}`;case U.DEPENDENCIES:return"pubspec.yaml";case U.OTHER:return`lib/custom_code/${t}`;default:return t}}async function Na(t,e=new Map){return yg(t,e)}const Ho=new Map;function hh(t){return`${t.baseUrl}|${t.projectId}|${t.branchName}`}function Xi(t){Ho.delete(hh(t))}async function Ma(t,e,n,r,i=""){const s=Zg(e,n);if(s.length===0)return{remoteFiles:n,syncFileMap:e,unverified:[],approximate:[]};const o=Om(s,i),a={...o.manifest,sources:o.sources},l=o.skipped.map(h=>h.reason);l.forEach(h=>console.warn(`[custom class deploy] ${h}`));const u=o.approximate;u.forEach(h=>console.warn(`[custom class deploy] ${h}`)),console.log(`Provisioning ${s.length} new FlutterFlow custom code file(s) before sync.`),be.set("provision");const c=await fetch(nv,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t.apiKey,projectId:t.projectId,baseUrl:t.baseUrl,commitMessage:r,customClasses:s,verification:a,stream:!0})}),d=await Dm(c,{onPhase:h=>be.setSubstatus(h),onLog:h=>console.log(`[custom class deploy] ${h}`)});if(!d.success){const h=d.details?` ${d.details}`:"";throw new Error(`${d.error||"FlutterFlow custom class provisioning failed."}${h}`)}return Xi(t),d.verificationSkipped&&(console.warn(`[custom class deploy] ${d.verificationSkipped}`),l.push(d.verificationSkipped)),{remoteFiles:n,syncFileMap:Xg(e,s),unverified:l,approximate:u}}async function La(t,e={}){const n=hh(t);let r=Ho.get(n);if(r===void 0){try{r=await t.fetchProjectSource()}catch(l){throw new Error(`Could not read your project's pubspec.yaml (${l.message}). Deploy was stopped so your existing package dependencies aren't overwritten. Check your FlutterFlow API key and project, then try again.`)}const a=Vd(r.pubspecYaml);if(!a.valid)throw new Error(`Your project's pubspec.yaml could not be read reliably (${a.errors.join("; ")}). Deploy was stopped so your existing package dependencies aren't overwritten.`);Ho.set(n,r)}const i=await Ym(r.pubspecYaml,e),s=Rm(r.pubspecYaml,i.overrides),o=$m(s.yaml,i.additions);return i.warnings.forEach(a=>console.warn(`[pubspec] ${a}`)),o.added.length>0&&console.log("Adding dependencies:",o.added.map(a=>`${a}: ${i.additions[a]||"any"}`).join(", "),i.sdk.dartSdkFloor?`(resolved for Dart ${i.sdk.dartSdkFloor})`:""),i.kept.forEach(({name:a,constraint:l})=>console.log(`Keeping your existing ${a}: ${l||"(non-version source)"}`)),{...o,overridden:s.overridden,warnings:i.warnings,remoteFiles:r.files}}function qv(t){const e=[],n=[];t.content.length>5e4&&n.push("Code file is large (>50KB). This may take longer to commit."),t.content.length>1e5&&e.push("Code file is too large (>100KB). Consider splitting into smaller components.");const r=t.content.split(` -`).length;r>500&&n.push(`Code has ${r} lines. Consider breaking it into smaller widgets.`),t.content.includes("setState")&&t.codeType===U.ACTION&&n.push("Using setState in a Custom Action may not work as expected. Consider using a Custom Widget."),t.content.includes("dynamic")&&!t.content.includes("?")&&n.push('Code uses "dynamic" types. Consider adding explicit types for better null safety.'),t.content.match(/Color\(0xFF[0-9A-Fa-f]{6}\)/)&&n.push("Code contains hardcoded colors. Consider using FlutterFlowTheme.of(context) for theme consistency.");const i=t.content.match(/print\s*\(/g);i&&i.length>3&&n.push(`Code contains ${i.length} print statements. Consider removing debug prints before committing.`);const s=mm(t.content);if(s&&e.push(`FlutterFlow cannot format this code - ${s}. Fix or regenerate before committing.`),t.codeType===U.WIDGET){const o=Od(t.content),a=pm(t.fileName);if(o.length===0)e.push("No public widget class found (must extend StatelessWidget or StatefulWidget).");else if(!o.includes(a)){const l=`${Bd(o[0])}`;e.push(`Widget class name "${o[0]}" does not match the file name "${t.fileName}". FlutterFlow derives the widget from the file name, so it will report "No widget ${a} found". Rename the file to "${l}" or the class to match before committing.`)}}return{canProceed:e.length===0,issues:e,warnings:n}}function ph(t,e={}){const{artifactType:n="CustomWidget",artifactName:r="GeneratedCode",fileName:i}=e,s=dm(t);let o=i||r;if(n==="CustomFunction")o="custom_functions.dart";else if(n==="CustomWidget"){const u=Od(s)[0],c=u?Bd(u):null;c&&o!==c?(console.warn(`Commit file name "${o}" does not match declared widget class "${u}"; renaming to "${c}" so FlutterFlow can find the widget.`),o=c):o.endsWith(".dart")||(o+=".dart")}else o.endsWith(".dart")||(o+=".dart");let a=U.CODE_FILE;switch(n){case"CustomAction":a=U.ACTION;break;case"CustomWidget":a=U.WIDGET;break;case"CustomFunction":a=U.FUNCTION;break;case"CustomClass":case"CodeFile":a=U.CODE_FILE;break}let l="";return a===U.WIDGET?l=`// Automatic FlutterFlow imports -import '/flutter_flow/flutter_flow_theme.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'package:flutter/material.dart'; -// Begin custom widget code -// DO NOT REMOVE OR MODIFY THE CODE ABOVE! - -`:a===U.ACTION?l=`// Automatic FlutterFlow imports -import '/flutter_flow/flutter_flow_theme.dart'; -import '/flutter_flow/flutter_flow_util.dart'; -import 'package:flutter/material.dart'; -// Begin custom action code -// DO NOT REMOVE OR MODIFY THE CODE ABOVE! - -`:a===U.FUNCTION&&(l=`// Automatic FlutterFlow imports -import 'dart:convert'; -import 'dart:math' as math; - -import 'package:flutter/material.dart'; -import 'package:google_fonts/google_fonts.dart'; -import 'package:intl/intl.dart'; -import 'package:timeago/timeago.dart' as timeago; -import '/flutter_flow/lat_lng.dart'; -import '/flutter_flow/place.dart'; -import '/flutter_flow/uploaded_file.dart'; - -`),{content:jg(s,l),fileName:o,codeType:a,artifactType:n,artifactName:r}}function Vv(t){const e={};for(const n of _a(t))e[n]="";return e}function Gv(t,e={}){return{timestamp:new Date().toISOString(),artifactType:t.artifactType,artifactName:t.artifactName,codeType:t.codeType,fileName:t.fileName,generatedFrom:e.step1Result?"pipeline":"direct",model:e.selectedModel||"unknown",codeSize:t.content.length}}function Kv(t,e,n,r=new Set,i=""){const s=[],o=ch.test(e),a=uh.test(e);return n===U.WIDGET&&!o&&!a&&s.push("No widget class definition found (must extend StatelessWidget or StatefulWidget)"),{valid:s.length===0,errors:s}}function Qi(t){const e=[],n=[];if(!t||t.size===0)return e.push("No files to commit"),{valid:!1,errors:e,warnings:n};const r=new Set(Array.from(t.values()).flatMap(i=>Ui(i.content||"")));for(const[i,s]of t.entries()){if((!s.content||s.content.trim().length===0)&&e.push(`File ${i} is empty`),s.content&&s.content.length>1e5&&n.push(`File ${i} is very large (>100KB)`),i.endsWith(".dart")){const o=Kv(i,s.content,s.type,r,s.artifactName);o.valid||e.push(...o.errors.map(a=>`${i}: ${a}`))}if(i==="pubspec.yaml"){const o=Vd(s.content);o.valid||e.push(...o.errors)}}return{valid:e.length===0,errors:e,warnings:n}}const G={IDLE:"IDLE",PREPARING:"PREPARING",VALIDATING:"VALIDATING",PUSHING:"PUSHING",SUCCESS:"SUCCESS",ERROR:"ERROR"},K={currentState:G.IDLE,startTime:null,endTime:null,error:null,result:null,filesProcessed:0,totalFiles:0,reset(){this.currentState=G.IDLE,this.startTime=null,this.endTime=null,this.error=null,this.result=null,this.filesProcessed=0,this.totalFiles=0},setState(t){if(!Object.values(G).includes(t)){console.error(`Invalid commit state: ${t}`);return}this.currentState=t,t===G.PREPARING&&(this.startTime=Date.now()),(t===G.SUCCESS||t===G.ERROR)&&(this.endTime=Date.now()),typeof window<"u"&&window.dispatchEvent&&window.dispatchEvent(new CustomEvent("commitStateChange",{detail:{state:t,commitState:this}})),console.log(`Commit state changed to: ${t}`)},setError(t){this.error=t,this.setState(G.ERROR)},setSuccess(t){this.result=t,this.setState(G.SUCCESS)},setProgress(t,e){this.filesProcessed=t,this.totalFiles=e},getElapsedTime(){return this.startTime?(this.endTime||Date.now())-this.startTime:null},isInProgress(){return this.currentState===G.PREPARING||this.currentState===G.VALIDATING||this.currentState===G.PUSHING}};async function Jv(t,e,n={}){let{codeType:r="W"}=n;const{pubspecDeps:i={},artifactName:s=e}=n;r==="CustomWidget"&&(r=U.WIDGET),r==="CustomAction"&&(r=U.ACTION),r==="CustomFunction"&&(r=U.FUNCTION),r==="CustomClass"&&(r=U.CODE_FILE),r==="CodeFile"&&(r=U.CODE_FILE),K.reset(),K.setState(G.PREPARING);try{const o=await Ee("flutterflow"),a=await Ee("flutterflow_project_id");if(!o||!a)throw new Error("FlutterFlow credentials not configured. Please set your API key and Project ID in the API Keys settings.");if(!Ji(a))throw new Error("Invalid FlutterFlow Project ID format.");const l=wr(),u=new br(o,a,"main",l);K.setState(G.VALIDATING);const c=new Map,d=r||zv(e,t),h=dh(e,d);c.set(e,{artifactName:s,content:t,type:d,path:h}),K.setProgress(0,c.size);const p=Qi(c);if(!p.valid)throw new Error(`Validation failed: -${p.errors.join(` -`)}`);const f=await La(u,i),g=f.yaml,m=await Ma(u,c,f.remoteFiles,`Provision ${s} custom class`,g),_=await Na(m.syncFileMap,m.remoteFiles),w=new Map(m.syncFileMap);w.set("pubspec.yaml",{content:g,type:"D",path:"pubspec.yaml"}),be.set("package");const b=await Oa(w),I={project_id:a,zipped_custom_code:b,uid:`web_${Date.now()}`,branch_name:u.branchName,serialized_yaml:g,file_map:_.fileMapContents,functions_map:_.functionsMapContents};K.setState(G.PUSHING),K.setProgress(1,c.size),Xi(u),be.set("push");const A=await u.pushCode(I),F=await Ra(A);if(F.success)K.setSuccess({fileCount:c.size,projectId:a,warnings:F.errorMap&&F.errorMap.size>0?Array.from(F.errorMap.entries()):[]});else{const j=F.errorMessage||Ta(F.responseCode);throw new Error(j)}return{success:!0,message:`Successfully committed ${e} to FlutterFlow project ${a}`,addedDependencies:f.added,unverified:m.unverified,approximate:m.approximate,warnings:F.errorMap?Array.from(F.errorMap.entries()):[]}}catch(o){return console.error("Commit failed:",o),K.setError(o),{success:!1,error:o.message,state:K.currentState}}}async function Oa(t){const e=new JSZip;for(const[n,r]of t.entries())e.file(n,r.content);return e.generateAsync({type:"base64",compression:"DEFLATE",compressionOptions:{level:6}})}async function Yv(t,e={}){const{artifactType:n,artifactName:r,fileName:i,pipelineResult:s}=e;console.log(`Starting commit for ${r} (${n})`);try{K.setState(G.PREPARING);const o=ph(t,{artifactType:n,artifactName:r,fileName:i}),a=Vv(o.content);console.log("Detected dependencies:",a),K.setState(G.VALIDATING);const l=await Ee("flutterflow"),u=rr||await Ee("flutterflow_project_id");if(!l)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!u)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ji(u))throw new Error("Invalid FlutterFlow Project ID format.");const c=new Map;c.set(o.fileName,{artifactName:r,content:o.content,type:o.codeType,path:dh(o.fileName,o.codeType),functionName:o.codeType===U.FUNCTION?r:void 0}),K.setProgress(0,c.size);const d=Qi(c);if(!d.valid)throw new Error(`File validation failed: -${d.errors.join(` -`)}`);d.warnings.length>0&&console.warn("Validation warnings:",d.warnings),K.setState(G.PUSHING);const h=wr(),p=new br(l,u,"main",h),f=await La(p,a),g=f.yaml,m=await Ma(p,c,f.remoteFiles,`Provision ${r} custom class`,g),_=await Na(m.syncFileMap,m.remoteFiles),w=new Map(m.syncFileMap);w.set("pubspec.yaml",{content:g,type:U.DEPENDENCIES,path:"pubspec.yaml"}),be.set("package");const b=await Oa(w),I={project_id:u,zipped_custom_code:b,uid:`web_${Date.now()}`,branch_name:p.branchName,serialized_yaml:g,file_map:_.fileMapContents,functions_map:_.functionsMapContents};K.setProgress(1,c.size),Xi(p),be.set("push");const A=await p.pushCode(I),F=await Ra(A);if(F.success){const j={...Gv(o,s),projectId:u};return K.setSuccess({...j,fileCount:c.size,warnings:F.errorMap?Array.from(F.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${o.fileName} to FlutterFlow`,metadata:j,addedDependencies:f.added,unverified:m.unverified,approximate:m.approximate,warnings:F.errorMap?Array.from(F.errorMap.entries()):[],elapsedTime:K.getElapsedTime()}}else{const j=F.errorMessage||Ta(F.responseCode),S=new Error(j);throw S.errorMap=F.errorMap,S}}catch(o){console.error("Commit execution failed:",o),K.setError(o);let a=new Map;if(o.errorMap)a=o.errorMap;else if(o.message&&o.message.includes("{"))try{const l=o.message.match(/\{[\s\S]*\}/);if(l){const u=JSON.parse(l[0]);a=new Map(Object.entries(u))}}catch(l){console.warn("Failed to parse error map from commit response:",l)}return{success:!1,error:o.message,errorMap:a,state:K.currentState,elapsedTime:K.getElapsedTime()}}}async function Zv(t,e={}){const{pipelineResult:n}=e;try{if(K.setState(G.PREPARING),t.errors?.length>0)throw new Error(`Bundle validation failed: -${t.errors.join(` -`)}`);const r=new Map(t.fileEntries.map(I=>[I.fileName,{artifactId:I.artifactId,artifactName:I.artifactName,content:I.content,type:I.type,path:I.path,functionName:I.type===U.FUNCTION?I.artifactName:void 0}]));K.setProgress(0,r.size);const i=Qi(r);if(!i.valid)throw new Error(`File validation failed: -${i.errors.join(` -`)}`);K.setState(G.VALIDATING);const s=await Ee("flutterflow"),o=rr||await Ee("flutterflow_project_id");if(!s)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!o)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ji(o))throw new Error("Invalid FlutterFlow Project ID format.");K.setState(G.PUSHING);const a=wr(),l=new br(s,o,"main",a),u=await La(l,t.dependencies),c=u.yaml,d=await Ma(l,r,u.remoteFiles,`Provision ${t.title} custom classes`,c),h=await Na(d.syncFileMap,d.remoteFiles),p=new Map(d.syncFileMap);p.set("pubspec.yaml",{content:c,type:U.DEPENDENCIES,path:"pubspec.yaml"}),be.set("package");const f=await Oa(p),g={project_id:o,zipped_custom_code:f,uid:`web_${Date.now()}`,branch_name:l.branchName,serialized_yaml:c,file_map:h.fileMapContents,functions_map:h.functionsMapContents};K.setProgress(1,r.size),Xi(l),be.set("push");const m=await l.pushCode(g),_=await Ra(m);if(_.success){const I={...n,artifactType:"Bundle",artifactName:t.title,fileName:`${t.fileEntries.length} artifacts`,codeSize:t.fileEntries.reduce((A,F)=>A+F.content.length,0),projectId:o};return K.setSuccess({...I,fileCount:r.size,warnings:_.errorMap?Array.from(_.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${t.fileEntries.length} artifacts to FlutterFlow`,metadata:I,addedDependencies:u.added,unverified:d.unverified,approximate:d.approximate,warnings:_.errorMap?Array.from(_.errorMap.entries()):[],elapsedTime:K.getElapsedTime()}}const w=_.errorMessage||Ta(_.responseCode),b=new Error(w);throw b.errorMap=_.errorMap,b}catch(r){return console.error("Bundle commit execution failed:",r),K.setError(r),{success:!1,error:r.message,errorMap:r.errorMap||new Map,state:K.currentState,elapsedTime:K.getElapsedTime()}}}async function Xv(t,e=[]){const n=fa("architect");try{return await Ni("architect",Xd,ag(t),n,e)}catch(r){throw r.isModelArmor?r:new Error(`Prompt Architect failed: ${r.message}`)}}async function es(t,e,n=[]){const r=lg(t),i=fa("generator",y.bundleSpec);try{return await Ni("generator",e,r,i,n)}catch(s){if(s.isModelArmor)throw s;if(e!==js){console.warn(`Code Generator failed with ${e}, retrying with fallback model:`,s.message);try{return await Ni("generator",js,r,i,n)}catch(o){throw o.isModelArmor?o:new Error(`Code Generator failed: primary (${e}): ${s.message} | fallback (${js}): ${o.message}`)}}throw new Error(`Code Generator failed: ${s.message}`)}}async function ts(t,e=null){const n={...fa("review",y.artifactBundle||y.bundleSpec),architect_output:e};try{return await Ni("review",Qd,cg(t),n)}catch(r){throw r.isModelArmor?r:new Error(`Code Review failed: ${r.message}`)}}function Ba(t,e){return t.isModelArmor?`${t.userTitle}: ${t.userMessage}`:`${e}: ${t.message}`}function Wo(t,e){const n=document.getElementById(`step${t}-item`),r=document.getElementById(`step${t}-status`);!n||!r||(n.classList.remove("active","completed","error"),r.classList.remove("running","completed","error"),e==="active"?(n.classList.add("active"),r.classList.add("running"),r.innerHTML=` - - `):e==="completed"?(n.classList.add("completed"),r.classList.add("completed"),r.innerHTML=` - - `):e==="error"?(n.classList.add("error"),r.classList.add("error"),r.innerHTML=` - - `):r.innerHTML=` - - `)}function ve(t,e){const n=document.getElementById(`step${t}-loading`),r=document.getElementById(`step${t}-result`);e?(n.classList.remove("hidden"),r.classList.add("hidden"),Wo(t,"active")):(n.classList.add("hidden"),r.classList.remove("hidden"),Wo(t,"completed"))}function Qv(t){const e=document.getElementById(`${t}-content`),n=document.getElementById(`${t}-chevron`);e.classList.contains("open")?(e.classList.remove("open"),n&&(n.style.transform="rotate(0deg)")):(e.classList.add("open"),n&&(n.style.transform="rotate(180deg)"))}function e_(t){ze(parseInt(t.replace("step","")))}function ze(t){for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-item`);a&&a.classList.remove("active")}const e=document.getElementById(`step${t}-item`);e&&e.classList.add("active"),Qt();const n=document.getElementById("ready-state");n&&n.classList.add("hidden");for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-content`);a&&a.classList.add("hidden")}const r=document.getElementById(`step${t}-content`);r&&r.classList.remove("hidden");const i=document.getElementById("stage-title"),s={1:"Prompt Architect",2:"Code Generator",3:"Code Review"};i&&(i.textContent=s[t]||"Active Workflow Stage")}function t_(t){const e=document.getElementById(t);if(!e)return;const n=e.dataset.raw||e.textContent;navigator.clipboard.writeText(n).then(()=>{const i=e.closest(".code-container")?.querySelector(".copy-btn");i&&(i.classList.add("copied"),i.innerHTML=' Copied!',setTimeout(()=>{i.classList.remove("copied"),i.innerHTML=' Copy'},2e3))}).catch(r=>{console.warn("Failed to copy to clipboard:",r)})}function zo(t){const e=Vo(t);console.log(`Step 1 (Prompt Architect): ${Kt(Xd)}`),console.log(e!==t?`Step 2 (Code Generator): ${Kt(t)} → ${Kt(e)} (Free Tier fallback)`:`Step 2 (Code Generator): ${Kt(t)}`),console.log(`Step 3 (Code Review): ${Kt(Qd)}`)}async function n_(){if(console.log("runRefinement called"),y.isRunning)return;const t=document.getElementById("code-generator-model").value;y.isRunning=!0,Da("standardRegenerate",y.step2Result,y.step1Result);const e=document.querySelectorAll(".btn-refine-action");e.forEach(n=>{n.disabled=!0,n.innerHTML=` - - - Refining...`});try{const n=Pa(),r=ug({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,artifactId:n.id,userFeedback:"Fix the issues listed in the audit report."});os(),at(2),ze(2),ve(2,!0),y.step2Result=await es(r,t),Yi();const i=document.getElementById("step2-output"),s=kn(y.step2Result);i.textContent=s,i.dataset.raw=s,ve(2,!1),ze(3),at(3),ve(3,!0),y.step3Result=await ts(y.step2Result,y.step1Result),Zi();const o=document.getElementById("step3-output");o.textContent=y.step3Result,ve(3,!1),Mt();const a=Gi(y.step3Result);as(s,a)}catch(n){console.error("Refinement failed:",n),Mt(),ue(Ba(n,"Refinement failed"),"error")}finally{y.isRunning=!1,e.forEach(n=>{n.disabled=!1,n.textContent="Refine & Regenerate"}),en()}}async function Da(t,e,n){const r=`${Ze}/connectFeedback`,i={type:t,code:e,input:n};try{const s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!s.ok){const a=await s.text();return console.error(`callEndpoint failed: ${s.status} ${s.statusText}`,a),{success:!1,status:s.status,error:a}}const o=await s.json();return console.log("Telemetry success:",o),o}catch(s){return console.error("callEndpoint failed:",s),{success:!1,error:s.message}}}function r_(){const t=document.getElementById("ff-error-paste-input");t&&(t.value="")}async function i_(){const t=document.getElementById("ff-error-paste-input"),e=t?.value?.trim();if(!e){t?.focus(),t?.classList.add("ring-2","ring-red-400","border-red-300"),setTimeout(()=>t?.classList.remove("ring-2","ring-red-400","border-red-300"),2e3);return}if(!y.step2Result){ue("No generated code found. Please run the full pipeline first.","warning");return}if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0,Da("flutterflowError",y.step2Result,e);const r=document.getElementById("btn-fix-from-errors");r&&(r.disabled=!0,r.innerHTML=` - - Fixing…`);try{const i=Rd({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:e});Ih(),os(),at(2),ze(2),ve(2,!0),y.step2Result=await es(i,n),Yi();const s=document.getElementById("step2-output"),o=kn(y.step2Result);s.textContent=o,s.dataset.raw=o,ve(2,!1),ze(3),at(3),ve(3,!0),y.step3Result=await ts(y.step2Result,y.step1Result),Zi();const a=document.getElementById("step3-output");a.textContent=y.step3Result,ve(3,!1),Mt();const l=Gi(y.step3Result);as(o,l),t&&(t.value="")}catch(i){console.error("Fix from errors failed:",i),Mt(),ue(Ba(i,"Failed to fix errors"),"error")}finally{y.isRunning=!1,r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),en()}}async function qo(){if(console.log("runThinkingPipeline called"),y.isRunning)return;localStorage.setItem("hasSeenWalkthrough","true");const t=document.getElementById("pipeline-input").value,e=document.getElementById("code-generator-model").value;if(!t.trim()){ue("Please describe your FlutterFlow widget first.","warning");return}if(!await x_())return;await __();const n=Vo(e);t.length;const r=document.getElementById("btn-run-pipeline");y.isRunning=!0,jv(),r.disabled=!0,r.innerHTML=` - - - Running...`,zo(n);try{Qt();const i=document.getElementById("ready-state");i&&i.classList.add("hidden");const s=document.getElementById("paywall-exhausted");s&&s.classList.add("hidden"),os(),ze(1),at(1),ve(1,!0);const o=Rt.filter(p=>p.url).map(p=>({url:p.url}));y.step1Result=await Xv(t,o),Uv();const a=document.getElementById("step1-output"),l=kn(y.step1Result);a.textContent=l,a.dataset.raw=l,ve(1,!1),ze(2),at(2),ve(2,!0),y.step2Result=await es(y.step1Result,n,o),Yi();const u=document.getElementById("step2-output"),c=kn(y.step2Result);u.textContent=c,u.dataset.raw=c,ve(2,!1),ze(3),at(3),ve(3,!0),y.step3Result=await ts(y.step2Result,y.step1Result),Zi();const d=document.getElementById("step3-output");d.textContent=y.step3Result,ve(3,!1),Mt();const h=Gi(y.step3Result);as(c,h)}catch(i){if(console.error("Pipeline failed:",i),Mt(),i.isUsageLimit){const{count:c}=Er();Ha(c,is(),{openModal:!0});return}i.message,Vo(document.getElementById("code-generator-model").value);const o=Xm(i,{architect:1,generator:2,review:3});ze(o);const a=document.getElementById(`step${o}-result`),l=document.getElementById(`step${o}-loading`),u=document.getElementById(`step${o}-output`);if(l&&l.classList.add("hidden"),a&&a.classList.remove("hidden"),u)if(i.isModelArmor)u.innerHTML=``;else{let c=i.message;i.message.includes("image input")?c=`This model doesn't support image input. Please use ${Kt(fr)} for image-based requests or remove image references from your prompt.`:(i.message.includes("Load failed")||i.message.includes("CORS"))&&(c="API connection failed. This might be due to CORS restrictions or network issues. Please check your API key and try again."),u.innerHTML=`
    -

    Connection Error

    -

    ${D(c)}

    -
    -

    Check if API key is valid

    -

    Try using a different model

    -

    Ensure network allows API calls

    -
    -
    `}Wo(o,"error")}finally{y.isRunning=!1,r.disabled=!1,r.innerHTML=` - - - Run Pipeline`,en()}}function s_(){const t=document.getElementById("code-generator-model").value,e=[fr,"anthropic/claude-opus-5","openai/gpt-5.6-sol"].filter(r=>r!==t),n=prompt(`Retry with different model? - -Current: ${t} - -Options: -1. ${e[0]} -2. ${e[1]} - -Enter 1 or 2:`);n==="1"?(document.getElementById("code-generator-model").value=e[0],qo()):n==="2"&&(document.getElementById("code-generator-model").value=e[1],qo())}async function o_(){const t=$a();if(!t){ue("No code to commit. Please run the pipeline first.","warning");return}const e=await Ee("flutterflow"),n=await Ee("flutterflow_project_id");if(!e||!n){ue("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Ca();return}if(y.artifactBundle?.artifacts?.length>1){await a_();return}const{artifactType:r,artifactName:i,fileName:s}=lh(),o=ph(t,{artifactType:r,artifactName:i,fileName:s}),a=qv(o);if(!a.canProceed){ue(`Pre-commit checks failed: ${a.issues.join("; ")}`,"error");return}za(o,a,null,null)}async function a_(){const t=await Ee("flutterflow"),e=await Ee("flutterflow_project_id");if(!t||!e){ue("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Ca();return}const n=Gg(y.artifactBundle);if(n.errors.length>0){ue(`Bundle validation failed: ${n.errors.join("; ")}`,"error");return}const r=new Map(n.fileEntries.map(a=>[a.fileName,{content:a.content,type:a.type,path:a.path}])),i=Qi(r),s={canProceed:i.valid&&n.errors.length===0,issues:[...n.errors,...i.errors],warnings:[...n.warnings,...i.warnings]};if(!s.canProceed){ue(`Bundle validation failed: ${s.issues.join("; ")}`,"error");return}const o={content:n.fileEntries.map(a=>`// ${a.fileName} -${a.content}`).join(` - -`),fileName:`${n.fileEntries.length} files`,codeType:"bundle",artifactType:"Bundle",artifactName:n.title};za(o,s,n.dependencies,n)}function l_(t){let e=t.errorMap||new Map;!(e instanceof Map)&&typeof e=="object"&&(e=new Map(Object.entries(e)));let n=`
    -

    FlutterFlow Commit Failed

    -

    ${D(t.error)}

    `;if(e&&e.size>0){n+=`
    -

    Errors:

    -
      `;for(const[i,s]of e.entries()){const o=Dd(s);n+=`
    • - ${D(i)}: ${D(o)} -
    • `}n+="
    "}n+="
    ",n+=`
    - -
    `;const r=document.getElementById("step3-output");r&&(r.innerHTML=n,document.getElementById("btn-regenerate-from-error")?.addEventListener("click",()=>{c_(t.error,e)}))}async function c_(t,e){if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const r=document.getElementById("btn-regenerate-from-error");r&&(r.disabled=!0,r.innerHTML=` - - Fixing...`);try{let i=`The previous code had the following errors when committing to FlutterFlow: - -`;if(e&&e.size>0)for(const[c,d]of e.entries()){const h=Dd(d);i+=`File: ${c} -Error: ${h} - -`}else i+=`${t} -`;const s=Rd({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:i});os(),at(2),ze(2),ve(2,!0),y.step2Result=await es(s,n),Yi();const o=document.getElementById("step2-output"),a=kn(y.step2Result);o.textContent=a,o.dataset.raw=a,ve(2,!1),ze(3),at(3),ve(3,!0),y.step3Result=await ts(y.step2Result,y.step1Result),Zi();const l=document.getElementById("step3-output");l.textContent=y.step3Result,ve(3,!1),Mt();const u=Gi(y.step3Result);as(a,u)}catch(i){console.error("Regeneration failed:",i),Mt(),ue(Ba(i,"Regeneration failed"),"error")}finally{y.isRunning=!1,r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),en()}}async function u_(){const t=document.getElementById("ff-status-dot"),e=document.getElementById("ff-status-text");if(!t||!e)return;const n=await Ee("flutterflow"),r=await Ee("flutterflow_project_id");n&&r?(t.className="w-2 h-2 rounded-full bg-green-500",e.textContent="FlutterFlow credentials configured",e.className="text-green-600"):n||r?(t.className="w-2 h-2 rounded-full bg-yellow-500",e.textContent="FlutterFlow credentials incomplete",e.className="text-yellow-600"):(t.className="w-2 h-2 rounded-full bg-red-500",e.textContent="FlutterFlow credentials not configured",e.className="text-red-600")}async function d_(t){try{const e=await fetch(`${Ze}/auth/send-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t})});if(!e.ok)throw new Error(`Failed to send magic link: HTTP ${e.status}`);return e.json()}catch(e){throw console.error("sendMagicLink failed:",{email:t,message:e.message,stack:e.stack}),e}}async function h_(t){try{const n=await(await fetch(`${Ze}/auth/verify-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t})})).json();if(n.error||!n.email||!n.sessionToken)throw new Error(n.error||"Invalid or expired link");return n}catch(e){throw console.error("verifyMagicLink failed:",{message:e.message,stack:e.stack}),e}}async function p_(t){try{const e=await fetch(`${Ze}/auth/refresh-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:t})});if(!e.ok)return console.error("refreshSession: non-OK response",{url:`${Ze}/auth/refresh-session`,status:e.status}),null;const n=await e.json();return n.error||!n.email||!n.sessionToken?(console.warn("refreshSession: validation failed",{error:n.error,hasEmail:!!n.email,hasToken:!!n.sessionToken}),null):n}catch(e){return console.error("refreshSession: fetch failed",{url:`${Ze}/auth/refresh-session`,message:e.message,stack:e.stack}),null}}function Nc(t,e){const n=fh(),r=(z.email||n.email)!==t;z.email=t,z.sessionToken=e,z.isVerified=!0,pe=In({isLoading:!0}),localStorage.setItem(Ii,JSON.stringify({email:t,sessionToken:e})),r&&Wa()}function ja(){z.email=null,z.sessionToken=null,z.isVerified=!1,pe=In({isResolved:!0}),localStorage.removeItem(Ii),localStorage.removeItem(Ai)}function fh(){try{const t=localStorage.getItem(Ii);if(!t)return{email:null,sessionToken:null};const e=JSON.parse(t);return!e.email||!e.sessionToken?{email:null,sessionToken:null}:e}catch(t){return console.warn("getStoredSession: failed to parse auth session:",t),localStorage.removeItem(Ii),{email:null,sessionToken:null}}}async function f_(){const e=new URLSearchParams(window.location.search).get("token");if(e){window.history.replaceState({},"",window.location.pathname+window.location.hash);try{const{email:n,sessionToken:r}=await h_(e);Nc(n,r),gh();const i=Mc();i&&!window.location.hash&&(window.location.hash=i)}catch(n){Mc();const r=n.message||"Sign-in link invalid or expired.";ue(r,"error"),ns(),fn(r,"error")}}else{const{email:n,sessionToken:r}=fh();if(n&&r){const i=await p_(r);i?Nc(i.email,i.sessionToken):ja()}}Ua()}function g_(){try{localStorage.setItem(Lo,JSON.stringify({hash:window.location.hash||"#home",ts:Date.now()}))}catch(t){console.warn("rememberSignInReturnSurface: failed to persist return surface:",t)}}function Mc(){try{const t=localStorage.getItem(Lo);if(localStorage.removeItem(Lo),!t)return null;const{hash:e,ts:n}=JSON.parse(t);return!e||typeof n!="number"||Date.now()-n>rv?null:e}catch(t){return console.warn("consumeSignInReturnSurface: failed to read return surface:",t),null}}function ns(){const t=document.getElementById("signin-modal");if(!t)return;g_(),document.getElementById("signin-email-input")?.removeAttribute("aria-invalid"),fn(""),Ve(t)}function gh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("signin-modal");e&&Xe(e)}function fn(t,e){const n=document.getElementById("signin-message");n&&(n.textContent=t||"",n.classList.remove("signin-message-success","signin-message-error"),e&&n.classList.add(`signin-message-${e}`))}async function m_(){const t=document.getElementById("signin-email-input"),e=document.getElementById("signin-submit-btn"),n=Wi(t?.value);if(!n||!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(n)||n.length>254){t?.setAttribute("aria-invalid","true"),fn("Please enter a valid email address.","error");return}t?.removeAttribute("aria-invalid"),e&&(e.disabled=!0,e.textContent="Sending…");const i=Ud(n);i&&fn(i,"error");try{const s=await d_(n),o=s?.code===jd;t&&!o&&(t.value=""),t?.setAttribute("aria-invalid",String(o)),fn(km(s,n),o?"error":"success"),e&&(e.disabled=!1,e.textContent=o?"Send Sign-in Link":"Sent!",o||setTimeout(()=>{e.textContent==="Sent!"&&(e.textContent="Send Sign-in Link")},2500))}catch(s){console.error("handleMagicLinkRequest: sendMagicLink failed",{email:n,err:s}),fn("Something went wrong. Please try again.","error"),e&&(e.disabled=!1,e.textContent="Send Sign-in Link")}}function v_(){ja(),Wa(),Ua(),ss()}function Ua(){const t=z.isVerified&&!!z.email,e=document.getElementById("auth-signedout"),n=document.getElementById("auth-signedin"),r=document.getElementById("auth-guest-usage");e&&e.classList.toggle("hidden",t),n&&n.classList.toggle("hidden",!t),r&&r.classList.toggle("hidden",t);const i=document.getElementById("auth-user-email");i&&(i.textContent=z.email||""),Qr(),ss()}async function mh(){try{if(typeof FingerprintJS>"u"){console.warn("resolveIdentity: FingerprintJS not loaded, skipping");return}const e=await(await FingerprintJS.load()).get(),n=e.visitorId,r=await fetch(av,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fingerprint:e.visitorId,cookie_id:n})});if(!r.ok)throw new Error(`Identity check HTTP ${r.status}`);const i=await r.json();if(Ke.userId=i.user_id,Ke.token=i.identity_token||null,Ke.status=i.status,Ke.resolved=!0,sessionStorage.setItem(sv,i.user_id),Ke.token&&sessionStorage.setItem(ov,Ke.token),i.usage_count!==void 0){const s=Tt(),a=(i.usage_month||s)===s?i.usage_count:0;localStorage.setItem(Zt,JSON.stringify({count:a,month:s})),ir()}console.log(`Identity resolved: ${i.status} (${i.user_id.slice(0,8)}...) usage: ${i.usage_count??"n/a"}`)}catch(t){console.error("resolveIdentity failed:",t)}}let Us=null;function __(t=5e3){return Ke.resolved?Promise.resolve():(Us||(Us=mh().catch(e=>{console.warn("ensureIdentityReady: identity resolution failed",e)})),Promise.race([Us,new Promise(e=>setTimeout(e,t))]))}function vh(){const t=Tt();try{const e=localStorage.getItem(Zt);return e?JSON.parse(e):{count:0,month:t}}catch(e){return console.warn("getUsageData: failed to parse usage storage",{key:Zt,month:t,err:e}),localStorage.removeItem(Zt),{count:0,month:t}}}function Tt(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function Er(){const t=vh();return t.month!==Tt()?{count:0,month:Tt()}:t}function y_(){const e={count:Er().count+1,month:Tt()};return localStorage.setItem(Zt,JSON.stringify(e)),e}function rs(){return!!pe.isLoading}function Nt(){return!!pe.isResolved}function w_(t){if(!t)return null;const e=String(t).toLowerCase().replace(/[^a-z0-9]+/g,"_");return e==="pro"||e==="professional_plan"?"professional":e==="power_developer"||e==="power_plan"?"power":Object.prototype.hasOwnProperty.call(Ci,e)?e:null}function b_(t){return t&&Object.entries(Jd).find(([,e])=>e===t)?.[0]||null}function jr(...t){return t.find(e=>e!=null&&e!=="")}function E_(...t){return t.find(e=>e&&typeof e=="object")||{}}function S_(t){const e=t.data&&typeof t.data=="object"?t.data:t,n=E_(e.subscription,e.stripeSubscription,e.currentSubscription,e.customer?.subscriptions?.data?.[0],e.subscriptions?.data?.[0],e.subscriptions?.[0]),r=e.metadata||n.metadata||e.customer?.metadata||{},i=jr(e.priceId,e.price_id,e.stripePriceId,e.stripe_price_id,n.priceId,n.price_id,n.plan?.id,n.price?.id,n.items?.data?.[0]?.price?.id,n.items?.[0]?.price?.id,n.lines?.data?.[0]?.price?.id),s=jr(e.status,e.subscriptionStatus,e.subscription_status,n.status,"none"),o=w_(jr(e.tier,e.plan,e.planId,e.plan_id,e.subscriptionTier,e.subscription_tier,e.product,e.productName,n.tier,n.plan,r.tier,r.plan)),a=lv.has(String(s).toLowerCase()),l=e.active===!0||e.isSubscribed===!0||e.subscribed===!0||e.hasSubscription===!0,u=o||b_(i)||(a||l?"professional":"free");return In({tier:u,status:s,periodEnd:jr(e.periodEnd,e.currentPeriodEnd,e.current_period_end,n.current_period_end,n.periodEnd,null),isResolved:!0})}function is(){return Ci[pe.tier]??Ci.free}async function x_(){if(z.isVerified&&(!Nt()||rs())&&(await _h({force:!0}),ss()),z.isVerified&&!Nt())return ue("Could not verify your subscription. Please refresh or try Manage billing.","error"),!1;const{count:t}=Er(),e=is();if(t>=e)return Ha(t,e,{openModal:!0}),!1;const n=Math.floor(e*.8);if(t>=n){const r=e-t;ue(`${r} run${r===1?"":"s"} remaining this month.`,"warning")}return!0}function Hs(){const t=document.getElementById("paywall-exhausted");t&&t.classList.add("hidden")}function Ha(t,e,n={}){Fn(!0);const r=document.getElementById("walkthrough-modal");r&&Xe(r,{restoreFocus:!1});const i=document.getElementById("ready-state");i&&i.classList.add("hidden");const s=document.getElementById("preview-frame-container");s&&(s.style.display="none");const o=document.getElementById("main-stage-container");o&&o.classList.add("visible");const a=document.getElementById("results-view");a&&a.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar");const l=document.getElementById("pipeline-progress");l&&l.classList.remove("visible");const u=document.getElementById("paywall-exhausted");if(!u){ue(`You've used all ${e} runs for this month. Upgrade to continue.`,"error"),Mi();return}const c=document.getElementById("paywall-exhausted-text");if(c){const h=pe.tier;h==="free"?c.textContent=`You've used all ${e} free generations this month. Upgrade to Pro for 50 generations/month and access to all AI models.`:c.textContent=`You've used all ${e} generations this month on your ${h} plan. Your limit resets next month.`}const d=document.getElementById("paywall-signin-btn");d&&d.classList.toggle("hidden",z.isVerified),u.classList.remove("hidden"),n.openModal&&Mi()}function Vo(t){return pe.tier==="free"&&Jr.includes(t)?fr:t}function k_(){const t=document.getElementById("code-options-content"),e=document.getElementById("code-generator-model");if(!t||!e)return;const n=pe.tier,i=!(z.isVerified&&!Nt())&&n==="free";Array.from(e.options).forEach(o=>{const a=Kt(o.value),l=Jr.includes(o.value);o.textContent=l&&i?`${a} (PRO)`:a,o.disabled=!1}),i&&Jr.includes(e.value)&&(e.value=fr),e.disabled=!1,Ic.has(e)||(e.addEventListener("change",()=>{Nt()&&pe.tier==="free"&&Jr.includes(e.value)&&(e.value=fr,Mi()),zo(e.value),Zd()}),Ic.add(e));let s=document.getElementById("model-selector-free-notice");i?(s||(s=document.createElement("p"),s.id="model-selector-free-notice",s.className="text-xs text-gray-400 mt-1",t.appendChild(s)),s.innerHTML='Free plan — Gemini only. '):s&&s.remove(),zo(e.value)}function ir(){const t=document.getElementById("usage-counter");if(!t)return;if(z.isVerified&&rs()){t.textContent="Checking plan…",t.className="text-xs text-gray-500",Qr(),Hs();return}if(z.isVerified&&!Nt()){t.textContent="Plan check failed",t.className="text-xs text-red-600 font-medium",Qr(),Hs();return}const{count:e}=Er(),n=is();t.textContent=`${e} / ${n} runs this month`;const r=n>0?e/n:0;t.className=r>=1?"text-xs text-red-600 font-medium":r>=.8?"text-xs text-yellow-600 font-medium":"text-xs text-gray-500",Qr(),e>=n&&!y.isRunning?Ha(e,n):Hs()}function Qr(){const t=document.getElementById("guest-usage-text");if(!t)return;const e=vh(),n=e.month===Tt()?e.count??0:0,r=Ci.free;t.textContent=`${n} / ${r} generations used`}async function _h(t={}){const e=t.force===!0;if(!z.isVerified||!z.sessionToken){pe=In({isResolved:!0});return}pe={...pe,isLoading:!0,error:null};const n=localStorage.getItem(Ai);if(!e&&n)try{const{data:r,email:i,ts:s,version:o}=JSON.parse(n);if(o===Cc&&i===z.email&&Date.now()-s<300*1e3){pe={...r,isLoading:!1,isResolved:r.isResolved!==!1};return}}catch(r){console.warn("Failed to parse subscription cache:",r,"| raw value:",n)}try{const i=await(await fetch(`${Ze}/stripe/get-subscription`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:z.sessionToken,user_id:Ke.userId})})).json();if(i.error){if(["unauthorized","invalid session","expired session"].some(o=>String(i.error).toLowerCase().includes(o))){ja(),Ua();return}pe=In({isResolved:!1,error:i.error});return}pe=S_(i),localStorage.setItem(Ai,JSON.stringify({version:Cc,data:pe,email:z.email,ts:Date.now()}))}catch(r){console.error("fetchSubscription failed:",r),pe={...pe,isLoading:!1,isResolved:!1,error:r.message}}}function Wa(){localStorage.removeItem(Ai)}async function I_(t){if(!z.isVerified||!z.sessionToken){yh(),ns();return}if(!Jd[t]){ue("Invalid plan selected.","error");return}const e=document.getElementById(`checkout-btn-${t}`);e&&(e.disabled=!0,e.textContent="Redirecting…");try{const r=await(await fetch(`${Ze}/stripe/create-checkout-session-intl`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tierId:t,sessionToken:z.sessionToken,currency:eh()})})).json();if(r.error||!r.url)throw new Error(r.error||"Failed to create checkout session");const{url:i}=r;window.location.href=i}catch(n){console.error("startCheckout failed:",n),e&&(e.disabled=!1,e.textContent="Subscribe"),ue("Could not start checkout. Please try again.","error")}}async function C_(){if(!z.isVerified||!z.sessionToken){ns();return}const t=document.getElementById("manage-billing-btn");t&&(t.disabled=!0,t.textContent="Loading…");try{const n=await(await fetch(`${Ze}/stripe/create-portal-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:z.sessionToken})})).json();if(n.error||!n.url)throw new Error(n.error||"Failed to open billing portal");const{url:r}=n;window.location.href=r}catch(e){console.error("openCustomerPortal failed:",e),t&&(t.disabled=!1,t.textContent="Manage billing"),ue("Could not open billing portal. Please try again.","error")}}async function Ni(t,e,n,r={},i=[]){const o=new AbortController,a=setTimeout(()=>o.abort(),12e4);try{const l=await fetch(iv,{method:"POST",headers:{"Content-Type":"application/json",...Ke.token?{Authorization:`Bearer ${Ke.token}`}:{}},signal:o.signal,body:JSON.stringify({user_id:Ke.userId,step:t,model:e,prompt:n,images:i,context:r})}),u=await l.text();let c={};try{c=u?JSON.parse(u):{}}catch{c={}}if(l.status===429){c.serverCount!==void 0&&(localStorage.setItem(Zt,JSON.stringify({count:c.serverCount,month:Tt()})),ir());const p=new Error(c.message||"Monthly usage limit reached. Upgrade to continue.");throw p.isUsageLimit=!0,p}const d=vg(c,t);if(d)throw d;if(console.log(`[BuildShip] ${t} response keys:`,Object.keys(c),"content type:",typeof c.content),!l.ok)throw new Error(`${c.message||c.error||"BuildShip pipeline error"} (HTTP ${l.status})`);if(t==="generator")if(c.usage_status==="success"&&Number.isFinite(c.usage_count)){const p=Tt();(c.usage_month||p)===p&&(localStorage.setItem(Zt,JSON.stringify({count:c.usage_count,month:p})),ir())}else y_(),ir();let h=c.output||c.content;if(!h){const p=u?` (body: ${u.slice(0,120)})`:"";throw new Error(`BuildShip returned no output for step "${t}"${p}`)}return Array.isArray(h)&&(h=h.map(p=>typeof p=="string"?p:p.text||"").join("")),typeof h!="string"&&(h=JSON.stringify(h)),h}catch(l){throw l.name==="AbortError"?new Error(`BuildShip ${t} timed out after ${12e4/1e3}s`):l instanceof TypeError?new Error(`BuildShip unreachable: ${l.message}`):l}finally{clearTimeout(a)}}function A_(){const e=new URLSearchParams(window.location.search).get("checkout");e==="success"?(window.history.replaceState({},"",window.location.pathname+window.location.hash),Wa(),ue("Subscription active! Welcome aboard.","success")):e==="cancel"&&(window.history.replaceState({},"",window.location.pathname+window.location.hash),ue("Checkout cancelled.","info"))}function ss(){const t=z.isVerified&&!!z.email,e=pe.tier,n=t&&rs(),r=!t||Nt(),i=document.getElementById("subscription-tier-badge");if(i){const a={free:"Free",professional:"Professional",power:"Power Developer"},l={free:"bg-gray-100 text-gray-600",professional:"bg-indigo-100 text-indigo-700",power:"bg-purple-100 text-purple-700",unresolved:"bg-red-50 text-red-600"};i.textContent=n?"Checking…":r?a[e]||"Free":"Plan unavailable",i.className=`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${r?l[e]||l.free:l.unresolved}`}const s=document.getElementById("upgrade-prompt");s&&s.classList.toggle("hidden",!t||n||!r||e!=="free");const o=document.getElementById("manage-billing-btn");o&&o.classList.toggle("hidden",!t||n||r&&e==="free"),F_(r?e:null),k_(),Zd(),ir(),Ch()}function F_(t){const e=["bg-gray-100","text-gray-500","cursor-default"];Object.entries({professional:{btnId:"checkout-btn-professional",defaultText:"Subscribe"},power:{btnId:"checkout-btn-power",defaultText:"Subscribe"}}).forEach(([i,{btnId:s,defaultText:o}])=>{const a=document.getElementById(s);a&&(i===t?(a.disabled=!0,a.textContent="Current plan",a.classList.add(...e)):(a.disabled=!1,a.textContent=o,a.classList.remove(...e)))});const r=document.getElementById("free-tier-current");r&&r.classList.toggle("hidden",t!=="free")}function Go(){const t=eh(),e=document.getElementById("pro-price"),n=document.getElementById("power-price"),r=document.getElementById("plans-pro-price"),i=document.getElementById("plans-power-price"),s=document.getElementById("pro-price-note"),o=document.getElementById("power-price-note"),a=document.getElementById("plans-pro-price-note"),l=document.getElementById("plans-power-price-note");e&&(e.textContent=Dr(Br.professional,t)),n&&(n.textContent=Dr(Br.power,t)),r&&(r.textContent=Dr(Br.professional,t)),i&&(i.textContent=Dr(Br.power,t));const u="billed monthly";s&&(s.textContent=u),o&&(o.textContent=u),a&&(a.textContent=u),l&&(l.textContent=u)}function Mi(){Go();const t=document.getElementById("pricing-modal");t&&Ve(t),vv().then(()=>Go())}function yh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("pricing-modal");e&&Xe(e)}function ue(t,e="info"){const n={success:"bg-green-600 text-white",error:"bg-red-600 text-white",warning:"bg-amber-500 text-white",info:"bg-gray-800 text-white"},r=document.createElement("div");r.className=`fixed bottom-6 left-1/2 -translate-x-1/2 px-5 py-3 rounded-lg text-sm font-medium shadow-lg z-50 transition-opacity duration-300 ${n[e]||n.info}`,r.textContent=t,document.body.appendChild(r),setTimeout(()=>{r.style.opacity="0",setTimeout(()=>r.remove(),300)},3500)}document.addEventListener("DOMContentLoaded",async()=>{ig(),hljs.configure({tabReplace:" ",classPrefix:"hljs-"}),P_(),await f_(),A_(),await _h(),ss(),Go(),await Hv(),Ov();const t=document.getElementById("flutterflow-endpoint-select");if(t){const n=wr();t.value=n}oh(),mh();const e=document.getElementById("pipeline-input");e&&(e.addEventListener("input",()=>{kt===2&&e.value.trim().length>0&&(Aa(),Ki())}),e.addEventListener("blur",()=>{const n=document.getElementById("walkthrough-modal");kt===2&&n&&Ve(n)}),e.addEventListener("keydown",n=>{if(n.key==="Tab"){const r=document.getElementById("walkthrough-modal");kt===2&&r&&setTimeout(()=>{Ve(r)},100)}})),window.addEventListener("commitStateChange",n=>{const{state:r}=n.detail;r===G.PREPARING||r===G.VALIDATING||r===G.PUSHING?(be.phaseId||bh(),Oc(r)):(r===G.SUCCESS||r===G.ERROR)&&(Oc(r),setTimeout(Li,1e3))}),ty(),Va()});function P_(){const t=document.getElementById("preview-frame-container");t&&(t.style.display="")}function $_(){const t=document.getElementById("welcome-video-player");t&&(t.addEventListener("click",Qt),document.addEventListener("keydown",Qt))}function Qt(){const t=document.getElementById("preview-frame-container"),e=document.getElementById("main-stage-container"),n=document.getElementById("ready-state");t&&(t.style.display="none"),e&&e.classList.add("visible"),n&&n.classList.remove("hidden");const r=document.getElementById("welcome-video-player");r&&r.removeEventListener("click",Qt),document.removeEventListener("keydown",Qt),oh()}let sr=null;async function R_(){const t=document.getElementById("confirm-project-select");if(!t)return;const e=++Rc,n=()=>e===Rc,r=await Ee("flutterflow"),i=await Ee("flutterflow_project_id");if(n()){if(!r){t.innerHTML='',t.disabled=!0;return}t.disabled=!1,t.innerHTML='';try{const o=await new br(r,"").listProjects();if(!n())return;if(!o||o.length===0){t.innerHTML='';return}t.innerHTML='',o.forEach(a=>{const l=document.createElement("option");l.value=a.id||a.projectId||"",l.textContent=a.name||a.projectName||`Project ${a.id}`,t.appendChild(l)}),i&&(t.value=i)}catch(s){if(!n())return;console.error("Failed to load projects for deploy:",s),t.innerHTML=''}}}function T_(){return document.getElementById("confirm-project-select")?.value?.trim()||null}function za(t,e,n,r=null){sr={codeInfo:t,checks:e,deps:n,bundlePlan:r},document.getElementById("confirm-file-name").textContent=t.fileName,document.getElementById("confirm-artifact-type").textContent=t.artifactType,document.getElementById("confirm-file-size").textContent=`${(t.content.length/1024).toFixed(1)} KB`,document.getElementById("confirm-line-count").textContent=r?`${r.fileEntries.length} files`:t.content.split(` -`).length,R_();const i=document.getElementById("confirm-deps-list"),s=document.getElementById("confirm-deps-section");n&&Object.keys(n).length>0?(i.innerHTML=Object.entries(n).map(([u,c])=>{const d=c?`at least ${xt(c)}`:"version resolved from your project";return`
  • • ${xt(u)}: ${d}
  • `}).join(""),s.classList.remove("hidden")):s.classList.add("hidden");const o=document.getElementById("confirm-warnings-list"),a=document.getElementById("confirm-warnings-section");e.warnings&&e.warnings.length>0?(o.innerHTML=e.warnings.map(u=>`
  • • ${xt(u)}
  • `).join(""),a.classList.remove("hidden")):a.classList.add("hidden"),document.getElementById("confirm-code-preview").textContent=t.content,document.getElementById("code-preview-content").classList.add("hidden"),document.getElementById("code-preview-chevron").style.transform="rotate(0deg)";const l=document.getElementById("commit-confirm-modal");l&&Ve(l)}function wh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-confirm-modal");e&&Xe(e),sr=null}function N_(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-success-modal");e&&Xe(e);const n=["success-message","success-project-id","success-file-name","success-artifact-type","success-time","success-size"];for(const s of n){const o=document.getElementById(s);o&&(o.textContent="")}const r=document.getElementById("success-warnings-section");r&&r.classList.add("hidden");const i=document.getElementById("success-warnings-list");i&&(i.innerHTML="")}function Ko(t){const e=(m,_)=>{const w=document.getElementById(m);w&&(w.textContent=_||"")},n=t.metadata?.fileName||"",r=t.metadata?.projectId||"",i=t.metadata?.artifactType||"",s=t.elapsedTime?`${(t.elapsedTime/1e3).toFixed(1)}s`:"",o=t.metadata?.codeSize?`${(t.metadata.codeSize/1024).toFixed(1)} KB`:"";e("success-message",t.message||"Code committed successfully!"),e("success-project-id",r),e("success-file-name",n),e("success-artifact-type",i),e("success-time",s),e("success-size",o);const a=t.addedDependencies||[],l=document.getElementById("success-deps-row");l&&l.classList.toggle("hidden",a.length===0),e("success-deps",a.join(", "));const u=document.getElementById("success-open-ff-link");u&&r&&(u.href=`https://app.flutterflow.io/project/${r}`);const c=document.getElementById("success-warnings-section"),d=document.getElementById("success-warnings-list"),h=t.unverified||[],p=t.approximate||[],f=t.warnings||[];(f.length>0||h.length>0||p.length>0)&&c&&d&&(d.innerHTML=[...h.map(m=>`
  • Not verified before deploying: ${D(String(m))}
  • `),...p.map(m=>`
  • Verified approximately: ${D(String(m))}
  • `),...f.map(([m,_])=>`
  • ${D(m)}: ${D(String(_))}
  • `)].join(""),c.classList.remove("hidden"));const g=document.getElementById("commit-success-modal");g&&Ve(g)}function Jo(t){Li(),l_(t)}function M_(){const t=document.getElementById("code-preview-content"),e=document.getElementById("code-preview-chevron");t.classList.contains("hidden")?(t.classList.remove("hidden"),e.style.transform="rotate(90deg)"):(t.classList.add("hidden"),e.style.transform="rotate(0deg)")}const Lc={prepare:{message:"Preparing your code...",start:4,end:14},validate:{message:"Checking FlutterFlow credentials...",start:14,end:22},project:{message:"Reading your FlutterFlow project...",start:22,end:40},provision:{message:"Creating custom classes in FlutterFlow...",start:40,end:82},package:{message:"Packaging files for upload...",start:82,end:88},push:{message:"Pushing to FlutterFlow...",start:88,end:97},done:{message:"Complete!",start:100,end:100}},L_=[{after:0,text:"Starting a FlutterFlow build runner..."},{after:12,text:"Preparing the FlutterFlow AI workspace..."},{after:35,text:"Uploading your custom classes..."},{after:60,text:"FlutterFlow is applying the changes..."},{after:100,text:"Still working — this can take a couple of minutes..."}],be={sequence:[],phaseId:null,phaseStartedAt:null,timer:null,substatus:null,liveSubstatus:!1,start({withProvisioning:t=!1}={}){this.sequence=["prepare","validate","project"],t&&this.sequence.push("provision"),this.sequence.push("package","push","done");const e=document.getElementById("commit-progress-overlay");e&&(ac(e,!0,"Deploying to FlutterFlow"),Ve(e)),this.set("prepare")},set(t,e=null){if(!(!Lc[t]||t===this.phaseId)){if(!this.sequence.includes(t)){const n=this.sequence.indexOf("package");this.sequence.splice(n===-1?this.sequence.length:n,0,t)}this.phaseId=t,this.phaseStartedAt=Date.now(),this.substatus=e,this.liveSubstatus=!1,this.render(),this.timer&&clearInterval(this.timer),t!=="done"&&(this.timer=setInterval(()=>this.render(),500))}},setSubstatus(t){t&&(this.liveSubstatus=!0,this.substatus=t,this.render())},render(){const t=Lc[this.phaseId];if(!t)return;const e=(Date.now()-this.phaseStartedAt)/1e3,n=t.start+(t.end-t.start)*(1-Math.exp(-e/25));if(this.phaseId==="provision"&&!this.liveSubstatus){const o=L_.filter(a=>e>=a.after).pop();o&&(this.substatus=o.text)}const r=this.sequence.indexOf(this.phaseId),s=[`Step ${r===-1?1:r+1} of ${this.sequence.length}`];e>=5&&s.push(O_(e)),Eh(this.phaseId==="done"?100:n,t.message,s.join(" · "),this.substatus)},stop(){this.timer&&clearInterval(this.timer),this.timer=null,this.phaseId=null;const t=document.getElementById("commit-progress-overlay");t&&(ac(t,!1),Xe(t,{force:!0,restoreFocus:!1}))}};function O_(t){const e=Math.floor(t);return e<60?`${e}s elapsed`:`${Math.floor(e/60)}m ${String(e%60).padStart(2,"0")}s elapsed`}function bh(t){be.start(t)}function Li(){be.stop()}function Eh(t,e,n,r=null){const i=document.getElementById("commit-progress-bar"),s=document.getElementById("progress-message"),o=document.getElementById("progress-detail"),a=document.getElementById("progress-substatus");i&&(i.style.width=`${Math.round(t*10)/10}%`),s&&(s.textContent=e),o&&(o.textContent=n),a&&(a.textContent=r||"",a.classList.toggle("hidden",!r))}function Oc(t){const e={[G.PREPARING]:"prepare",[G.VALIDATING]:"validate",[G.PUSHING]:"project",[G.SUCCESS]:"done"};if(t===G.ERROR){be.timer&&clearInterval(be.timer),be.timer=null,Eh(100,"Failed","Error occurred");return}const n=e[t];n&&be.set(n)}function B_(t){return t.bundlePlan?t.bundlePlan.fileEntries.some(e=>e.type===U.CODE_FILE):t.codeInfo?.codeType===U.CODE_FILE}async function D_(){if(!sr){console.error("No pending commit data");return}const t=sr;if(sr=null,rr=T_(),wh(),bh({withProvisioning:B_(t)}),t.bundlePlan){const o=await Zv(t.bundlePlan,{pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});rr=null,Li(),o.success?Ko(o):Jo(o);return}const{codeInfo:e}=t,{artifactType:n,artifactName:r,fileName:i}=lh(),s=await Yv(e.content,{artifactType:n,artifactName:r,fileName:i,pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});rr=null,Li(),s.success?Ko(s):Jo(s)}window.runThinkingPipeline=qo;window.toggleStep=e_;window.toggleSection=Qv;window.selectWorkflowStep=ze;window.copyCode=t_;window.retryWithDifferentModel=s_;window.openApiKeysModal=Ca;window.closeApiKeysModal=ih;window.closeWalkthroughModal=$v;window.openWalkthroughModal=Pv;window.advanceWalkthrough=Aa;window.commitToFlutterFlow=Jv;function j_(){const t=document.getElementById("pipeline-input");t&&t.focus()}function U_(){const t=document.getElementById("advanced-settings");t&&(t.open=!0);const e=document.getElementById("code-generator-model");e&&(e.scrollIntoView({behavior:"smooth",block:"center"}),e.focus(),e.click())}window.focusPromptInput=j_;window.openModelSelector=U_;window.handlePromptImageSelect=gv;window.removePromptImage=mv;window.saveApiKeys=Nv;window.clearAllApiKeys=Mv;window.toggleKeyVisibility=Dv;window.handleWelcomeVideoEnd=$_;window.dismissWelcomeVideo=Qt;window.initiateCommitToFlutterFlow=o_;window.updateFlutterFlowCredentialStatus=u_;window.openCommitConfirmModal=za;window.closeCommitConfirmModal=wh;window.closeCommitSuccessModal=N_;window.showCommitSuccessModal=Ko;window.showCommitFailureModal=Jo;window.toggleCodePreview=M_;window.confirmCommitToFlutterFlow=D_;window.runRefinement=n_;window.regenerateFromPastedErrors=i_;window.clearErrorInput=r_;window.setFlutterFlowEndpoint=Fv;window.getFlutterFlowEndpoint=wr;window.commitProgress=be;window.openSignInModal=ns;window.closeSignInModal=gh;window.handleMagicLinkRequest=m_;window.handleSignOut=v_;window.startCheckout=I_;window.openCustomerPortal=C_;window.openPricingModal=Mi;window.closePricingModal=yh;let vn=null,Sh=null;const Bc=120;function os(){Fn(!0);const t=document.getElementById("pipeline-progress"),e=document.getElementById("results-view"),n=document.getElementById("ready-state");n&&n.classList.add("hidden"),e&&e.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),t&&t.classList.add("visible"),Sh=Date.now();for(let r=1;r<=3;r++){const i=document.getElementById(`pdot-${r}`);i&&(i.className="progress-dot")}at(1),H_()}function at(t){const e={1:"Analyzing your prompt...",2:"Generating Dart code...",3:"Running code audit..."},n={1:"Step 1 of 3 — Prompt Architect",2:"Step 2 of 3 — Code Generator",3:"Step 3 of 3 — Code Review"},r=document.getElementById("progress-title-text"),i=document.getElementById("progress-substep-text");r&&(r.textContent=e[t]||e[1]),i&&(i.textContent=n[t]||n[1]);for(let s=1;s<=3;s++){const o=document.getElementById(`pdot-${s}`);o&&(s{const t=(Date.now()-Sh)/1e3,e=document.getElementById("progress-elapsed"),n=document.getElementById("pipeline-progress-fill");e&&(e.textContent=`${Math.floor(t)}s`);const r=t/Bc*100,i=Math.min(95,r*(1-Math.exp(-t/(Bc*.6)))*1.2);n&&(n.style.width=`${i}%`)},250)}function Mt(){vn&&(clearInterval(vn),vn=null);const t=document.getElementById("pipeline-progress-fill");t&&(t.style.width="100%");for(let e=1;e<=3;e++){const n=document.getElementById(`pdot-${e}`);n&&(n.className="progress-dot completed")}setTimeout(()=>{const e=document.getElementById("pipeline-progress");e&&e.classList.remove("visible"),t&&(t.style.width="0%")},400)}function An(t,e=""){const n={pass:'',warning:'',fail:'',info:''};return``}function xh(t){return{pass:"Passed review",warning:"Needs attention",fail:"Blocking issues"}[t]||"Needs attention"}function W_(){return cm({bundle:y.artifactBundle,reviewResult:y.step3Result})}function z_(t){return` -
    - ${An(t.severity)} -
    -
    ${D(t.message)}
    - ${t.suggestion?`
    ${D(t.suggestion)}
    `:""} - ${D(t.source)} -
    -
    - `}function q_(t){return` -
  • -
    - ${D(t.title)} - ${t.detail&&t.detail!==t.title?`

    ${D(t.detail)}

    `:""} -
    -
  • - `}function V_(t){const e=document.getElementById("results-summary-detail"),n=document.getElementById("results-title");if(!e)return;n&&(n.textContent=t.title);const r=t.score,i=r==null?"neutral":r>=80?"pass":r>=60?"warning":"fail",s=r==null?"":r>=80?"Strong":r>=60?"Needs work":"High risk",o=t.findings.length?` -
      - ${t.findings.map(l=>` -
    • - ${An(l.severity)} - - ${D(l.message)} - ${l.suggestion?`${D(l.suggestion)}`:""} - -
    • - `).join("")} -
    - `:"",a=t.manualSteps.length?` -
    -

    ${An("info")} Complete in FlutterFlow

    -

    For your information — these don't block the deploy. Finish them by hand in the FlutterFlow editor once the code is pushed.

    -
      - ${t.manualSteps.map(l=>` -
    • - ${D(l.title)} - ${l.detail&&l.detail!==l.title?`${D(l.detail)}`:""} -
    • - `).join("")} -
    -
    - `:"";e.innerHTML=` -
    -
    -

    ${D(t.summary)}

    - ${o} - ${a} -
    -
    - -
    - Is the generated code correct? -
    - - -
    -
    -
    -
    - `}function G_(t){const e=t.artifacts.find(l=>l.id===y.selectedArtifactId)||t.artifacts[0];if(!e)return"";const n={pass:{icon:"pass",message:"No file-specific issues were found."},warning:{icon:"warning",message:"This file needs attention, but Code Review did not return a specific finding."},fail:{icon:"fail",message:"This file is blocked, but Code Review did not return a specific finding."}}[e.status],r=e.findings.length?e.findings.map(z_).join(""):`
    ${An(n.icon)} ${D(n.message)}
    `,i=e.dependencies?.length?e.dependencies.map(l=>` -
  • ${D(l.name)}${l.version?` ${D(l.version)}`:""}${l.reason?`

    ${D(l.reason)}

    `:""}
  • - `).join(""):'
  • No external packages
  • ',s=e.imports?.length?e.imports.map(l=>`${D(l)}`).join(""):'No imports returned',o=e.publicApi?.length?e.publicApi.map(l=>`${D(l)}`).join(""):'No public API signature returned',a=e.relationships.length?e.relationships.map(l=>` -
  • ${D(l.from||"Bundle")} ${D(l.type)} ${D(l.to||"Bundle")}${l.description?`

    ${D(l.description)}

    `:""}
  • - `).join(""):'
  • No relationships for this file
  • ';return` -
    -
    - ${An(e.status)} ${D(xh(e.status))} -

    ${D(e.artifactName)}

    - ${e.description?`

    ${D(e.description)}

    `:""} -
    -
    - ${D(e.artifactType)} - ${D(e.fileName)} -
    -
    -
    -

    Code Review findings

    - ${r} -
    - ${e.manualSteps.length?` -
    -

    Manual FlutterFlow steps for this file

    -
      ${e.manualSteps.map(q_).join("")}
    -
    - `:""} -
    - File details -
    -
    -

    Dependencies

    -
      ${i}
    -
    -
    -

    Deployment

    -
    -
    Status
    ${D(e.deployStatus||"pending")}
    -
    Order
    ${e.index+1} of ${t.artifacts.length}
    -
    Path hint
    ${D(e.pathHint||"Not returned")}
    -
    -
    -
    -
    -

    Public API

    -
    ${o}
    -
    -
    -

    Imports

    -
    ${s}
    -
    -
    -

    Relationships

    -
      ${a}
    -
    -
    - `}function K_(t){const e=document.getElementById("bundle-strip"),n=document.getElementById("results-summary-tab"),r=document.getElementById("artifact-tabs"),i=document.getElementById("results-file-count");if(n&&n.classList.toggle("active",y.resultsViewMode==="summary"),!t.artifacts.length){i&&(i.textContent="0 files"),e&&e.classList.remove("visible"),r&&(r.innerHTML="");return}if(i){const s=t.artifacts.length;i.textContent=`${s} ${s===1?"file":"files"}`}r&&(r.innerHTML=t.artifacts.map(s=>` - - `).join(""),r.onclick=s=>{const o=s.target.closest(".artifact-tab");o?.dataset?.artifactId&&kh(o.dataset.artifactId)}),e&&e.classList.add("visible")}function qa(){document.body.classList.add("results-fullscreen"),document.body.classList.add("results-with-sidebar");const t=document.getElementById("results-view"),e=document.getElementById("results-code-output"),n=document.getElementById("results-audit-output"),r=document.getElementById("results-summary-detail"),i=document.getElementById("artifact-results-split"),s=W_(),o=$a();if(V_(s),K_(s),e&&(e.textContent=""),e){const a=Kd(o);e.innerHTML=a}n&&(n.innerHTML=G_(s)),r&&r.classList.toggle("hidden",y.resultsViewMode!=="summary"),i&&i.classList.toggle("hidden",y.resultsViewMode!=="file"),t&&t.classList.add("visible")}function as(t,e){Fn(!0),y.selectedArtifactId||(y.selectedArtifactId=Si(y.artifactBundle).id),y.resultsViewMode="summary",document.body.classList.add("results-fullscreen");const n=document.getElementById("step3-output");n&&(n.textContent=""),qa(),en();const r=document.getElementById("btn-feedback-up"),i=document.getElementById("btn-feedback-down");r&&(r.className="feedback-btn"),i&&(i.className="feedback-btn")}function kh(t){y.selectedArtifactId=t,y.resultsViewMode="file",qa()}function J_(){y.resultsViewMode="summary",qa()}function Y_(){const t=document.getElementById("btn-copy-results"),e=$a();navigator.clipboard.writeText(e).then(()=>{if(t){t.classList.add("copied");const n=t.querySelector("span");if(n){const r=n.textContent;n.textContent="Copied!",setTimeout(()=>{t.classList.remove("copied"),n.textContent=r},2e3)}}})}function Z_(t){const e=document.getElementById("btn-feedback-up"),n=document.getElementById("btn-feedback-down");t==="up"?(e.classList.toggle("active-up"),n.classList.remove("active-down")):(n.classList.toggle("active-down"),e.classList.remove("active-up")),Da(t==="up"?"thumbsUp":"thumbsDown",y.step2Result,y.step1Result)}function X_(){const t=document.getElementById("error-input-panel");if(t){t.classList.remove("hidden"),t.style.display="flex";const e=document.getElementById("ff-error-paste-input");e&&setTimeout(()=>e.focus(),100)}}function Ih(){const t=document.getElementById("error-input-panel");t&&(t.classList.add("hidden"),t.style.display="none")}function Fn(t){const e=document.getElementById("generation-stage");e&&(t?(e.hidden=!1,e.inert=!1,requestAnimationFrame(()=>e.classList.add("is-active"))):(e.classList.remove("is-active"),e.inert=!0,setTimeout(()=>{e.classList.contains("is-active")||(e.hidden=!0)},260)))}function Ch(){const t=z.isVerified&&!!z.email,e=pe.tier||"free",n=t&&rs(),r=!t||Nt(),s=n?"Checking…":r?{free:"Free",professional:"Pro",power:"Power"}[e]||"Free":"—",o=document.getElementById("topbar-plan");o&&(o.textContent=s);const a=document.getElementById("topbar-avatar");a&&(a.textContent=(z.email||"?")[0].toUpperCase());const l=Er(),u=`${l.count} / ${is()} runs this month`,c=document.getElementById("topbar-credits-count");c&&(c.textContent=String(l.count));const d=document.getElementById("credits-balance");d&&(d.textContent=u);const h=document.getElementById("plans-free-current");h&&h.classList.toggle("hidden",e!=="free"||!r);const p=document.getElementById("plans-checkout-btn-professional");if(p){const g=e==="professional"&&r;p.disabled=g,p.textContent=g?"Current plan":"Subscribe"}const f=document.getElementById("plans-checkout-btn-power");if(f){const g=e==="power"&&r;f.disabled=g,f.textContent=g?"Current plan":"Subscribe"}}function Q_(){Ch();const t=document.getElementById("credits-modal");t&&Ve(t)}function ey(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("credits-modal");e&&Xe(e)}function Ah(t,e=!0,n=!0){if(t=["home","account","plans"].includes(t)?t:"home",document.querySelectorAll(".view[data-view]").forEach(i=>{i.dataset.view===t?(i.hidden=!1,i.removeAttribute("inert"),requestAnimationFrame(()=>{i.classList.add("is-active"),n&&i.focus({preventScroll:!0})})):(i.classList.remove("is-active"),i.setAttribute("inert","true"),setTimeout(()=>{i.classList.contains("is-active")||(i.hidden=!0)},260))}),t!=="home")Fn(!1);else{const i=document.getElementById("main-stage-container");i&&i.classList.contains("visible")&&Fn(!0)}if(document.querySelectorAll(".nav-link[data-view]").forEach(i=>{const s=i.dataset.view===t;i.setAttribute("aria-current",s?"page":null),s||i.removeAttribute("aria-current")}),e){const i=t==="home"?"":`#${t}`;window.location.hash!==i&&window.history.pushState({view:t},"",i||"#")}}let Dc=!1;function Va(){const t=window.location.hash.replace(/^#/,"");Ah(t||"home",!1,Dc),Dc=!0}window.addEventListener("popstate",t=>{Va()});window.addEventListener("hashchange",()=>{Va()});function ty(){const t=document.querySelectorAll("#example-chips .chip"),e=document.getElementById("pipeline-input");t.forEach(n=>{n.addEventListener("click",()=>{e&&(e.value=n.dataset.prompt||""),e?.focus()})})}window.copyResultsCode=Y_;window.selectArtifact=kh;window.selectResultsSummary=J_;window.submitResultsFeedback=Z_;window.showErrorInputPanel=X_;window.hideErrorInputPanel=Ih;window.setGenerationStageVisible=Fn;window.switchView=Ah;window.openCreditsModal=Q_;window.closeCreditsModal=ey; diff --git a/dist/assets/index-CleimGxe.css b/dist/assets/index-DcLSblVK.css similarity index 85% rename from dist/assets/index-CleimGxe.css rename to dist/assets/index-DcLSblVK.css index 70dbd25..dcb3d83 100644 --- a/dist/assets/index-CleimGxe.css +++ b/dist/assets/index-DcLSblVK.css @@ -1 +1 @@ -@font-face{font-family:Delight;src:url(/assets/Delight-VF-CnVpVuQk.ttf) format("truetype");font-weight:100 900;font-display:swap}:root{--bg: oklch(96.65% .0074 260.73);--surface: oklch(100% 0 0);--surface-translucent: oklch(100% 0 0 / .65);--surface-glass: oklch(100% 0 0 / .72);--surface-sunken: oklch(98.4% .004 260);--fg: oklch(20.77% .0398 265.75);--muted: oklch(48% .02 260);--muted-2: oklch(68% .018 260);--on-dark: oklch(100% 0 0);--border: oklch(90% .012 260);--border-strong: oklch(80% .02 260);--fill-hover: color-mix(in oklch, var(--fg) 5%, var(--surface));--fill-subtle: color-mix(in oklch, var(--fg) 6%, var(--surface));--fill-selected: color-mix(in oklch, var(--fg) 4%, var(--surface));--track: color-mix(in oklch, var(--fg) 7%, var(--surface));--avatar: oklch(88% .02 260);--accent: oklch(63% .22 32);--accent-soft: oklch(from var(--accent) l c h / .18);--accent-ring: oklch(from var(--accent) l c h / .45);--fx-ink: oklch(70% .13 250);--ok: oklch(52% .11 165);--ok-soft: oklch(52% .11 165 / .12);--warn: oklch(66% .13 70);--warn-soft: oklch(66% .13 70 / .14);--bad: oklch(55% .19 25);--bad-soft: oklch(55% .19 25 / .1);--disabled-bg: oklch(88% .015 260);--disabled-fg: oklch(58% .02 260);--font-display: "Delight", "Outfit", "DM Sans", system-ui, sans-serif;--font-body: "Delight", "Outfit", "DM Sans", system-ui, sans-serif;--font-mono: "DM Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--fw-ui: 560;--fw-bold: 620;--fw-black: 700;--ls-display: -.04em;--ls-heading: -.03em;--ls-mono: .13em;--fs-display: 54px;--fs-h2: 28px;--fs-h3: 22px;--fs-h4: 18px;--fs-lead: 17px;--fs-body: 14.5px;--fs-small: 13.5px;--fs-caption: 12.5px;--fs-mono: 11.5px;--fs-micro: 10.5px;--lh-display: 1.04;--lh-heading: 1.15;--lh-body: 1.6;--radius-xl: 22px;--radius-lg: 20px;--radius-md: 16px;--radius-sm: 14px;--radius-control: 12px;--radius-nav: 11px;--radius-icon: 10px;--radius-chip: 999px;--radius-badge: 7px;--shadow-sm: 0 1px 2px oklch(20% .03 260 / .06);--shadow-md: 0 1px 2px oklch(20% .03 260 / .06), 0 18px 46px -22px oklch(20% .03 260 / .3);--shadow-control: 0 2px 6px oklch(20% .03 260 / .22);--shadow-composer: 0 0 0 3px var(--accent-soft), 0 1px 2px oklch(20% .03 260 / .06), 0 0 44px -8px oklch(63% .22 32 / .16), 0 20px 52px -20px oklch(63% .22 32 / .18);--blur-chrome: 14px;--ease: cubic-bezier(.2, 0, 0, 1);--ease-overshoot: cubic-bezier(.32, 1.38, .5, 1);--t-fast: .15s;--t-enter: .22s;--t-reveal: .5s;--t-progress: .7s;--t-ring: .9s;--t-morph: 1.12s;--touch: 44px;--control-h: 46px;--stage-w: 1920px;--stage-h: 1080px;--measure-prose: 62ch;--measure-lead: 68ch}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:where(button,[role=button],input,select,textarea,a){-webkit-tap-highlight-color:transparent}:where(button,[role=button],.control-button,.icon-button){min-height:44px;border-radius:var(--radius-md, 12px);transition:color var(--motion-fast, .16s) ease,background-color var(--motion-fast, .16s) ease,border-color var(--motion-fast, .16s) ease,box-shadow var(--motion-fast, .16s) ease,transform var(--motion-fast, .16s) ease,opacity var(--motion-fast, .16s) ease}:where(.icon-button,.modal-close,button:has(>svg:only-child)){min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}:where(button,[role=button],input,select,textarea,a[href]):focus-visible{outline:3px solid color-mix(in srgb,var(--accent, #3b82f6) 45%,transparent);outline-offset:2px}:where(button,[role=button]):active:not(:disabled){transform:scale(.98)}:where(button,[role=button]):disabled,:where(button,[role=button])[aria-disabled=true]{cursor:not-allowed;opacity:.5;box-shadow:none}:where(button,[role=button])[aria-busy=true]{cursor:progress;pointer-events:none}:where(button,[role=button])[aria-busy=true]:after{content:"";width:1em;height:1em;margin-inline-start:.55em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:shared-control-spin .7s linear infinite}:where(input,select,textarea,.control-field){min-height:44px;border:1px solid var(--border, #dfe3ea);border-radius:var(--radius-md, 12px);background:var(--surface-sunken, #f8fafc)}:where(.badge,.sb-section-badge,.results-file-count,.pm-popular-badge){display:inline-flex;align-items:center;border-radius:999px;font-weight:600}:where(.panel,.results-panel,.pm-card){border:1px solid var(--border, #dfe3ea);border-radius:var(--radius-lg, 16px);background:var(--surface, #fff)}.modal-overlay{overflow:auto;overscroll-behavior:contain;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.modal-overlay.open .modal-content{transform:scale(1) translateY(0)!important}.modal-overlay[aria-hidden=true]{pointer-events:none}.modal-overlay[aria-busy=true]{cursor:progress}.modal-content{width:min(100%,680px);max-height:calc(100dvh - 32px)!important;overflow:auto!important;overscroll-behavior:contain}.modal-content>:is(.border-t,.wt-footer){position:sticky;bottom:0;z-index:2;background:#fff}.modal-content>:is(.border-b,.pm-header){position:sticky;top:0;z-index:2;background:#fff}@media(max-width:480px),(max-height:600px){.modal-overlay{align-items:flex-start;padding:8px}.modal-content{max-height:calc(100dvh - 16px)!important;border-radius:14px}}@media(hover:hover){:where(button,[role=button]):hover:not(:disabled):not([aria-disabled=true]){filter:brightness(.97)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}@keyframes shared-control-spin{to{transform:rotate(360deg)}}.hero-field{position:absolute;inset:0;overflow:hidden;z-index:-2;pointer-events:none}.fx-grid{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:-2;pointer-events:none;opacity:0;transition:opacity var(--t-reveal) var(--ease)}.fx-grid.is-ready{opacity:1}.fx-mask{position:absolute;z-index:-1;pointer-events:none;background:var(--bg);filter:blur(46px)}.fx-mask-hero{left:50%;top:50%;width:980px;height:520px;transform:translate(-50%,-54%)}.fx-mask-top{left:-48px;right:-48px;top:-48px;height:132px}.fx-mask-bottom{left:-48px;right:-48px;bottom:-48px;height:132px}@media(max-width:920px){.fx-mask{filter:blur(36px)}.fx-mask-hero{width:92%;height:62%;top:50%;transform:translate(-50%,-50%)}.fx-mask-top{height:104px}.fx-mask-bottom{height:124px}}@media(prefers-reduced-motion:reduce){.hero-field,.fx-grid,.fx-mask{display:none}} +@font-face{font-family:Delight;src:url(/assets/Delight-VF-CnVpVuQk.ttf) format("truetype");font-weight:100 900;font-display:swap}:root{--bg: oklch(96.65% .0074 260.73);--surface: oklch(100% 0 0);--surface-translucent: oklch(100% 0 0 / .65);--surface-glass: oklch(100% 0 0 / .72);--surface-sunken: oklch(98.4% .004 260);--fg: oklch(20.77% .0398 265.75);--muted: oklch(48% .02 260);--muted-2: oklch(68% .018 260);--on-dark: oklch(100% 0 0);--border: oklch(90% .012 260);--border-strong: oklch(80% .02 260);--fill-hover: color-mix(in oklch, var(--fg) 5%, var(--surface));--fill-subtle: color-mix(in oklch, var(--fg) 6%, var(--surface));--fill-selected: color-mix(in oklch, var(--fg) 4%, var(--surface));--track: color-mix(in oklch, var(--fg) 7%, var(--surface));--avatar: oklch(88% .02 260);--accent: oklch(63% .22 32);--accent-soft: oklch(from var(--accent) l c h / .18);--accent-ring: oklch(from var(--accent) l c h / .45);--fx-ink: oklch(70% .13 250);--ok: oklch(52% .11 165);--ok-soft: oklch(52% .11 165 / .12);--warn: oklch(66% .13 70);--warn-soft: oklch(66% .13 70 / .14);--bad: oklch(55% .19 25);--bad-soft: oklch(55% .19 25 / .1);--disabled-bg: oklch(88% .015 260);--disabled-fg: oklch(58% .02 260);--font-display: "Delight", "Outfit", "DM Sans", system-ui, sans-serif;--font-body: "Delight", "Outfit", "DM Sans", system-ui, sans-serif;--font-mono: "DM Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--fw-ui: 560;--fw-bold: 620;--fw-black: 700;--ls-display: -.04em;--ls-heading: -.03em;--ls-mono: .13em;--fs-display: 54px;--fs-h2: 28px;--fs-h3: 22px;--fs-h4: 18px;--fs-lead: 17px;--fs-body: 14.5px;--fs-small: 13.5px;--fs-caption: 12.5px;--fs-mono: 11.5px;--fs-micro: 10.5px;--lh-display: 1.04;--lh-heading: 1.15;--lh-body: 1.6;--radius-xl: 22px;--radius-lg: 20px;--radius-md: 16px;--radius-sm: 14px;--radius-control: 12px;--radius-nav: 11px;--radius-icon: 10px;--radius-chip: 999px;--radius-badge: 7px;--shadow-sm: 0 1px 2px oklch(20% .03 260 / .06);--shadow-md: 0 1px 2px oklch(20% .03 260 / .06), 0 18px 46px -22px oklch(20% .03 260 / .3);--shadow-control: 0 2px 6px oklch(20% .03 260 / .22);--shadow-composer: 0 0 0 3px var(--accent-soft), 0 1px 2px oklch(20% .03 260 / .06), 0 0 44px -8px oklch(63% .22 32 / .16), 0 20px 52px -20px oklch(63% .22 32 / .18);--blur-chrome: 14px;--ease: cubic-bezier(.2, 0, 0, 1);--ease-overshoot: cubic-bezier(.32, 1.38, .5, 1);--t-fast: .15s;--t-enter: .22s;--t-reveal: .5s;--t-progress: .7s;--t-ring: .9s;--t-morph: 1.12s;--touch: 44px;--control-h: 46px;--stage-w: 1920px;--stage-h: 1080px;--measure-prose: 62ch;--measure-lead: 68ch}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;transition-delay:0ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:where(button,[role=button],input,select,textarea,a){-webkit-tap-highlight-color:transparent}:where(button,[role=button],.control-button,.icon-button){min-height:44px;border-radius:var(--radius-md, 12px);transition:color var(--motion-fast, .16s) ease,background-color var(--motion-fast, .16s) ease,border-color var(--motion-fast, .16s) ease,box-shadow var(--motion-fast, .16s) ease,transform var(--motion-fast, .16s) ease,opacity var(--motion-fast, .16s) ease}:where(.icon-button,.modal-close,button:has(>svg:only-child)){min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}:where(button,[role=button],input,select,textarea,a[href]):focus-visible{outline:3px solid color-mix(in srgb,var(--accent, #3b82f6) 45%,transparent);outline-offset:2px}:where(button,[role=button]):active:not(:disabled){transform:scale(.98)}:where(button,[role=button]):disabled,:where(button,[role=button])[aria-disabled=true]{cursor:not-allowed;opacity:.5;box-shadow:none}:where(button,[role=button])[aria-busy=true]{cursor:progress;pointer-events:none}:where(button,[role=button])[aria-busy=true]:after{content:"";width:1em;height:1em;margin-inline-start:.55em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:shared-control-spin .7s linear infinite}:where(input,select,textarea,.control-field){min-height:44px;border:1px solid var(--border, #dfe3ea);border-radius:var(--radius-md, 12px);background:var(--surface-sunken, #f8fafc)}:where(.badge,.sb-section-badge,.results-file-count,.pm-popular-badge){display:inline-flex;align-items:center;border-radius:999px;font-weight:600}:where(.panel,.results-panel,.pm-card){border:1px solid var(--border, #dfe3ea);border-radius:var(--radius-lg, 16px);background:var(--surface, #fff)}.modal-overlay{overflow:auto;overscroll-behavior:contain;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.modal-overlay.open .modal-content{transform:scale(1) translateY(0)!important}.modal-overlay[aria-hidden=true]{pointer-events:none}.modal-overlay[aria-busy=true]{cursor:progress}.modal-content{width:min(100%,680px);max-height:calc(100dvh - 32px)!important;overflow:auto!important;overscroll-behavior:contain}.modal-content>:is(.border-t,.wt-footer){position:sticky;bottom:0;z-index:2;background:#fff}.modal-content>:is(.border-b,.pm-header){position:sticky;top:0;z-index:2;background:#fff}@media(max-width:480px),(max-height:600px){.modal-overlay{align-items:flex-start;padding:8px}.modal-content{max-height:calc(100dvh - 16px)!important;border-radius:14px}}@media(hover:hover){:where(button,[role=button]):hover:not(:disabled):not([aria-disabled=true]){filter:brightness(.97)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}@keyframes shared-control-spin{to{transform:rotate(360deg)}}.hero-field{position:absolute;inset:0;overflow:hidden;z-index:-2;pointer-events:none}.fx-grid{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:-2;pointer-events:none;opacity:0;transition:opacity var(--t-reveal) var(--ease)}.fx-grid.is-ready{opacity:1}.fx-mask{position:absolute;z-index:-1;pointer-events:none;background:var(--bg);filter:blur(46px)}.fx-mask-hero{left:50%;top:50%;width:980px;height:520px;transform:translate(-50%,-54%)}.fx-mask-top{left:-48px;right:-48px;top:-48px;height:132px}.fx-mask-bottom{left:-48px;right:-48px;bottom:-48px;height:132px}@media(max-width:920px){.fx-mask{filter:blur(36px)}.fx-mask-hero{width:92%;height:62%;top:50%;transform:translate(-50%,-50%)}.fx-mask-top{height:104px}.fx-mask-bottom{height:124px}}@media(prefers-reduced-motion:reduce){.hero-field,.fx-grid,.fx-mask{display:none}}.pipeline-glyph.logo-loop{position:relative;width:100%;height:88px;margin:0 0 12px;overflow:hidden;pointer-events:none;color:var(--fg)}.loop-mark,.loop-shadow{position:absolute}.loop-mark{left:0;top:50%;width:52px;height:52px;margin:-26px 0 0;will-change:transform}.loop-piece{position:absolute;inset:0;display:block;will-change:transform,opacity}.loop-piece svg{display:block;width:100%;height:100%;overflow:visible}.loop-halo{position:absolute;left:50%;top:50%;width:74px;height:74px;margin:-37px 0 0 -37px;border-radius:50%;background:radial-gradient(circle,color-mix(in oklch,var(--accent) 60%,transparent),transparent 64%);filter:blur(5px);opacity:.09;will-change:transform,opacity}.loop-shadow{left:var(--mark-c, 26px);bottom:13px;width:46px;height:6px;margin-left:-23px;border-radius:50%;background:color-mix(in oklch,var(--fg) 26%,transparent);opacity:0;will-change:transform,opacity}@media(max-width:920px){.pipeline-glyph.logo-loop{height:66px;margin-bottom:8px}.loop-mark{width:40px;height:40px;margin:-20px 0 0}.loop-halo{width:58px;height:58px;margin:-29px 0 0 -29px}.loop-shadow{bottom:6px}} diff --git a/dist/assets/index-oXwmwfKe.js b/dist/assets/index-oXwmwfKe.js new file mode 100644 index 0000000..08e6a65 --- /dev/null +++ b/dist/assets/index-oXwmwfKe.js @@ -0,0 +1,318 @@ +(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function i(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();var w=typeof window<"u"?window:void 0,Le=typeof globalThis<"u"?globalThis:w,Ue=Le?.navigator,F=Le?.document,me=Le?.location,Za=Le?.fetch,zo=Le!=null&&Le.XMLHttpRequest&&"withCredentials"in new Le.XMLHttpRequest?Le.XMLHttpRequest:void 0,lc=Le?.AbortController,kp=Le?.CompressionStream,ze=Ue?.userAgent;function rd(){return!(!w||w.navigator.onLine===!1)}var mi=typeof globalThis<"u"?globalThis:w;mi&&typeof self>"u"&&(mi.self=mi),mi&&typeof File>"u"&&(mi.File=function(){});var B=w??{},ne={DEBUG:!1,LIB_VERSION:"0.5.0",LIB_NAME:"browser-common"};function cc(t,e,n,i,r,s,o){try{var a=t[s](o),l=a.value}catch(u){return void n(u)}a.done?e(l):Promise.resolve(l).then(i,r)}function se(t){return function(){var e=this,n=arguments;return new Promise((function(i,r){var s=t.apply(e,n);function o(l){cc(s,i,r,o,a,"next",l)}function a(l){cc(s,i,r,o,a,"throw",l)}o(void 0)}))}}function k(){return k=Object.assign?Object.assign.bind():function(t){for(var e=1;arguments.length>e;e++){var n=arguments[e];for(var i in n)({}).hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},k.apply(null,arguments)}function sd(t,e){if(t==null)return{};var n={};for(var i in t)if({}.hasOwnProperty.call(t,i)){if(e.indexOf(i)!==-1)continue;n[i]=t[i]}return n}var uc=t=>{if(typeof t!="string")return t;try{return JSON.parse(t)}catch{return t}};function dc(t){return typeof t=="string"||t}function fc(t){return typeof t=="string"?t:void 0}var vi,Cp=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$referring_domain","utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid","gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx","$session_id","$window_id","$lib","$lib_version","$device_id","$is_server"],jt=(function(t){return t.AnonymousId="anonymous_id",t.DistinctId="distinct_id",t.Props="props",t.EnablePersonProcessing="enable_person_processing",t.PersonMode="person_mode",t.FeatureFlagDetails="feature_flag_details",t.FeatureFlags="feature_flags",t.FeatureFlagPayloads="feature_flag_payloads",t.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",t.BootstrapFeatureFlags="bootstrap_feature_flags",t.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",t.OverrideFeatureFlags="override_feature_flags",t.Queue="queue",t.AiQueue="ai_queue",t.LogsQueue="logs_queue",t.OptedOut="opted_out",t.SessionId="session_id",t.SessionStartTimestamp="session_start_timestamp",t.SessionLastTimestamp="session_timestamp",t.PersonProperties="person_properties",t.GroupProperties="group_properties",t.InstalledAppBuild="installed_app_build",t.InstalledAppVersion="installed_app_version",t.SessionReplay="session_replay",t.PushRegistered="push_registered",t.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",t.SurveyLastSeenDate="survey_last_seen_date",t.SurveysSeen="surveys_seen",t.Surveys="surveys",t.RemoteConfig="remote_config",t.FlagsEndpointWasHit="flags_endpoint_was_hit",t.DeviceId="device_id",t})({}),hc=(function(t){return t.GZipJS="gzip-js",t.Base64="base64",t})({}),Ap=["$snapshot","$pageview","$pageleave","$set","survey dismissed","survey sent","survey shown","$identify","$groupidentify","$create_alias","$$client_ingestion_warning","$web_experiment_applied","$feature_enrollment_update","$feature_flag_called"],Pp=["token"],od="NativeGzipValidationError",qo=t=>t.length>=2&&t[0]===31&&t[1]===139,pc=(t,e)=>t===hc.GZipJS||e===hc.GZipJS||e==="gzip",gc=t=>!(!t||typeof t!="object")&&("name"in t?String(t.name):"")==="NotReadableError",dr=t=>{var e=new Error("Native gzip produced invalid output: "+t);throw e.name=od,e},Fp=(function(){var t=se((function*(e,n){18>e.size&&dr("too-short");var i=new Uint8Array(yield e.slice(0,10).arrayBuffer());qo(i)&&i[2]===8||dr("invalid-header");var r=new DataView(yield e.slice(e.size-8).arrayBuffer());r.getUint32(0,!0)!==(o=>{for(var a=(()=>{if(vi)return vi;vi=[];for(var c=0;256>c;c++){for(var d=c,f=0;8>f;f++)d=1&d?3988292384^d>>>1:d>>>1;vi[c]=d>>>0}return vi})(),l=4294967295,u=0;o.length>u;u++)l=a[255&(l^o[u])]^l>>>8;return(4294967295^l)>>>0})(n)&&dr("invalid-crc");var s=n.length>>>0;r.getUint32(4,!0)!==s&&dr("invalid-size")}));return function(e,n){return t.apply(this,arguments)}})();function Vo(){return Vo=se((function*(t,e,n){e===void 0&&(e=!0);try{var i=new TextEncoder().encode(t),r=new globalThis.CompressionStream("gzip"),s=r.writable.getWriter(),o=s.write(i).then((()=>s.close())).catch((function(){var u=se((function*(c){try{yield s.abort(c)}catch{}throw c}));return function(c){return u.apply(this,arguments)}})()),a=new Response(r.readable).blob(),l=(yield Promise.all([a,o]))[0];return yield Fp(l,i),l}catch(u){if(n!=null&&n.rethrow)throw u;return e&&console.error("Failed to gzip compress data",u),null}})),Vo.apply(this,arguments)}var Rp=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterest","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],mc=function(t,e){if(e===void 0&&(e=[]),!t)return!1;var n=t.toLowerCase();return Rp.concat(e).some((i=>{var r=i.toLowerCase();return n.indexOf(r)!==-1}))};function j(t,e){return t.indexOf(e)!==-1}var Ss=function(t){return t.trim()},Go=function(t){return t.replace(/^\$/,"")};function ad(t){var e,n=[];return(e=JSON.stringify(t,(function(i,r){if(typeof r=="bigint")return r.toString();if(typeof r!="function"&&typeof r!="symbol"){if(r instanceof Error)return{name:r.name,message:r.message,stack:r.stack};if(r&&typeof r=="object"){for(;n.length>0&&n[n.length-1]!==this;)n.pop();if(n.includes(r))return"[Circular]";n.push(r)}return r}})))!==null&&e!==void 0?e:"null"}var ld=Object.prototype,cd=ld.hasOwnProperty,xs=ld.toString,U=Array.isArray||function(t){return xs.call(t)==="[object Array]"},De=t=>typeof t=="function",he=t=>t===Object(t)&&!U(t),Vt=t=>{if(he(t)){for(var e in t)if(cd.call(t,e))return!1;return!0}return!1},C=t=>t===void 0,X=t=>xs.call(t)=="[object String]",Ko=t=>X(t)&&t.trim().length===0,Ve=t=>t===null,H=t=>C(t)||Ve(t),ke=t=>xs.call(t)=="[object Number]"&&t==t,Bt=t=>ke(t)&&t>0,gt=t=>xs.call(t)==="[object Boolean]",Tp=t=>t instanceof FormData,$p=t=>j(Ap,t),Mp=t=>j(Pp,t);function ud(t){return t===null||typeof t!="object"}function Dr(t,e){return{}.toString.call(t)==="[object "+e+"]"}function Xa(t){return typeof Event<"u"&&dd(t,Event)}function dd(t,e){try{return t instanceof e}catch{return!1}}var Lp=[!0,"true",1,"1","yes"],uo=t=>j(Lp,t),Np=[!1,"false",0,"0","no"];function Ct(t,e,n,i,r){return e>n&&(i.warn("min cannot be greater than max."),e=n),ke(t)?t>n?(i.warn(" cannot be greater than max: "+n+". Using max value instead."),n):e>t?(i.warn(" cannot be less than min: "+e+". Using min value instead."),e):t:(i.warn(" must be a number. using max or fallback. max: "+n+", fallback: "+r),Ct(r||n,e,n,i))}class Op{constructor(e){this.tt={},this.et=e.et,this.it=Ct(e.bucketSize,0,100,e.rt),this.nt=Ct(e.refillRate,0,this.it,e.rt),this.st=Ct(e.refillInterval,0,864e5,e.rt)}ot(e,n){var i=Math.floor((n-e.lastAccess)/this.st);i>0&&(e.tokens=Math.min(e.tokens+i*this.nt,this.it),e.lastAccess=e.lastAccess+i*this.st)}consumeRateLimit(e){var n,i=Date.now(),r=String(e),s=this.tt[r];return s?this.ot(s,i):this.tt[r]=s={tokens:this.it,lastAccess:i},s.tokens===0||(s.tokens--,s.tokens===0&&((n=this.et)==null||n.call(this,e)),s.tokens===0)}stop(){this.tt={}}}var it="Mobile",jr="iOS",Gt="Android",Qn="Tablet",fd=Gt+" "+Qn,hd="iPad",pd="Apple",gd=pd+" Watch",Oi="Safari",ei="BlackBerry",md="Samsung",vd=md+"Browser",_d=md+" Internet",An="Chrome",Bp=An+" OS",yd=An+" "+jr,Qa="Internet Explorer",wd=Qa+" "+it,el="Opera",Dp=el+" Mini",tl="Edge",bd="Microsoft "+tl,Jn="Firefox",Ed=Jn+" "+jr,Vi="Nintendo",Gi="PlayStation",Zn="Xbox",Sd=Gt+" "+it,xd=it+" "+Oi,Ai="Windows",Yo=Ai+" Phone",vc="Nokia",Jo="Ouya",Id="Generic",jp=Id+" "+it.toLowerCase(),kd=Id+" "+Qn.toLowerCase(),Zo="Konqueror",Cd="Oculus Browser",Ur="Vivaldi",Ad="Yandex",Hr="Whale",Xo="DuckDuckGo",Pd="Pale Moon",Wr="Waterfox",Bi="Brave",Fd="Google Search App",we="(\\d+(\\.\\d+)?)",fo=new RegExp("Version/"+we),Up=new RegExp(Zn,"i"),Hp=new RegExp(Gi+" \\w+","i"),Wp=new RegExp(Vi+" \\w+","i"),nl=new RegExp(ei+"|PlayBook|BB10","i"),zp={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000",5.1:"XP",5.2:"XP","6.0":"Vista",6.1:"7",6.2:"8",6.3:"8.1",6.4:"10","10.0":"10"},Rd=function(t,e,n,i){e=e||"";var r=(function(s){return s!=null&&s.brave?Bi:null})(n);return r||(i!=null&&i.detectGoogleSearchApp&&j(t,"GSA/")?Fd:j(t," OPR/")&&j(t,"Mini")?Dp:j(t," OPR/")?el:nl.test(t)?ei:j(t,"IE"+it)||j(t,"WPDesktop")?wd:j(t,"OculusBrowser")?Cd:j(t,vd)?_d:j(t,tl)||j(t,"Edg/")?bd:j(t,Ur+"/")?Ur:j(t,"YaBrowser/")?Ad:j(t,Hr+"/")?Hr:j(t,Xo+"/")||j(t,"Ddg/")?Xo:j(t,"FBIOS")?"Facebook "+it:j(t,"UCWEB")||j(t,"UCBrowser")?"UC Browser":j(t,"CriOS")?yd:j(t,"CrMo")||j(t,An)?An:j(t,Gt)&&j(t,Oi)?Sd:j(t,"FxiOS")?Ed:j(t.toLowerCase(),Zo.toLowerCase())?Zo:j(t,Bi+"/")?Bi:((s,o)=>o&&j(o,pd)||(function(a){return j(a,Oi)&&!j(a,An)&&!j(a,Gt)})(s))(t,e)?j(t,it)?xd:Oi:j(t,"PaleMoon/")?Pd:j(t,Wr+"/")?Wr:j(t,Jn)?Jn:j(t,"MSIE")||j(t,"Trident/")?Qa:j(t,"Gecko")?Jn:"")},qp={[wd]:[new RegExp("rv:"+we)],[bd]:[new RegExp(tl+"?\\/"+we)],[An]:[new RegExp("("+An+"|CrMo)\\/"+we)],[yd]:[new RegExp("CriOS\\/"+we)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+we)],[Oi]:[fo],[xd]:[fo],[el]:[new RegExp("(Opera|OPR)\\/"+we)],[Jn]:[new RegExp(Jn+"\\/"+we)],[Ed]:[new RegExp("FxiOS\\/"+we)],[Zo]:[new RegExp("Konqueror[:/]?"+we,"i")],[ei]:[new RegExp(ei+" "+we),fo],[Sd]:[new RegExp("android\\s"+we,"i")],[_d]:[new RegExp(vd+"\\/"+we)],[Cd]:[new RegExp("OculusBrowser\\/"+we)],[Ur]:[new RegExp(Ur+"\\/"+we)],[Ad]:[new RegExp("YaBrowser\\/"+we)],[Hr]:[new RegExp(Hr+"\\/"+we)],[Bi]:[new RegExp(Bi+"\\/"+we)],[Xo]:[new RegExp("(DuckDuckGo|Ddg)\\/"+we)],[Pd]:[new RegExp("PaleMoon\\/"+we)],[Wr]:[new RegExp(Wr+"\\/"+we)],[Fd]:[new RegExp("GSA\\/"+we)],[Qa]:[new RegExp("(rv:|MSIE )"+we)],Mozilla:[new RegExp("rv:"+we)]},Vp=function(t,e,n,i){var r=Rd(t,e,n,i),s=qp[r];if(C(s))return null;for(var o=0;s.length>o;o++){var a=t.match(s[o]);if(a)return parseFloat(a[a.length-2])}return null},_c=[[new RegExp(Zn+"; "+Zn+" (.*?)[);]","i"),t=>[Zn,t&&t[1]||""]],[new RegExp(Vi,"i"),[Vi,""]],[new RegExp(Gi,"i"),[Gi,""]],[nl,[ei,""]],[new RegExp(Ai,"i"),(t,e)=>{if(/Phone/.test(e)||/WPDesktop/.test(e))return[Yo,""];if(new RegExp(it).test(e)&&!/IEMobile\b/.test(e))return[Ai+" "+it,""];var n=/Windows NT ([0-9.]+)/i.exec(e);if(n&&n[1]){var i=zp[n[1]]||"";return/arm/i.test(e)&&(i="RT"),[Ai,i]}return[Ai,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,t=>t&&t[3]?[jr,[t[3],t[4],t[5]||"0"].join(".")]:[jr,""]],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,t=>{var e="";return t&&t.length>=3&&(e=C(t[2])?t[3]:t[2]),["watchOS",e]}],[new RegExp("("+Gt+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Gt+")","i"),t=>t&&t[2]?[Gt,[t[2],t[3],t[4]||"0"].join(".")]:[Gt,""]],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,t=>{var e=["Mac OS X",""];return t&&t[1]&&(e[1]=[t[1],t[2],t[3]||"0"].join(".")),e}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Bp,""]],[/Linux|debian/i,["Linux",""]]],yc=function(t){return Wp.test(t)?Vi:Hp.test(t)?Gi:Up.test(t)?Zn:new RegExp(Jo,"i").test(t)?Jo:new RegExp("("+Yo+"|WPDesktop)","i").test(t)?Yo:/iPad/.test(t)?hd:/iPod/.test(t)?"iPod Touch":/iPhone/.test(t)?"iPhone":/(watch)(?: ?os[,/]|\d,\d\/)[\d.]+/i.test(t)?gd:nl.test(t)?ei:/(kobo)\s(ereader|touch)/i.test(t)?"Kobo":new RegExp(vc,"i").test(t)?vc:/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i.test(t)||/(kf[a-z]+)( bui|\)).+silk\//i.test(t)?"Kindle Fire":/(Android|ZTE)/i.test(t)?new RegExp(it).test(t)&&!/(9138B|TB782B|Nexus [97]|pixel c|HUAWEISHT|BTV|noble nook|smart ultra 6)/i.test(t)||/pixel[\daxl ]{1,6}/i.test(t)&&!/pixel c/i.test(t)||/(huaweimed-al00|tah-|APA|SM-G92|i980|zte|U304AA)/i.test(t)||/lmy47v/i.test(t)&&!/QTAQZ3/i.test(t)?Gt:fd:new RegExp("(pda|"+it+")","i").test(t)?jp:new RegExp(Qn,"i").test(t)&&!new RegExp(Qn+" pc","i").test(t)?kd:""},Gp=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function wc(t,e){return typeof(n=t)=="string"&&Gp.test(n)?t:e();var n}function dn(t){return t&&t.split("#")[0]}function il(t,e){var n=setTimeout(t,e);return n?.unref&&n?.unref(),n}function bc(t,e,n){return Td.apply(this,arguments)}function Td(){return(Td=se((function*(t,e,n){var i;try{return yield Promise.race([t,new Promise(((r,s)=>{i=il((()=>{try{n?.(),r()}catch(o){s(o)}}),e)}))])}finally{clearTimeout(i)}}))).apply(this,arguments)}var Kp=t=>t instanceof Error,$d={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},Yp=$d.info;function Md(t){if(gt(t))return{boolValue:t};if(typeof t=="number")return Number.isFinite(t)?Number.isInteger(t)?{intValue:t}:{doubleValue:t}:{stringValue:String(t)};if(typeof t=="string")return{stringValue:t};if(U(t))return{arrayValue:{values:t.map((e=>Md(e)))}};try{return{stringValue:JSON.stringify(t)}}catch{return{stringValue:String(t)}}}function zr(t){var e=[];for(var n in t){var i=t[n];Ve(i)||C(i)||e.push({key:n,value:Md(i)})}return e}function Jp(t,e){var n=$d[t.level||"info"]||Yp,i=n.text,r=n.number,s=String(Date.now())+"000000",o={};e.distinctId&&(o.posthogDistinctId=e.distinctId),e.sessionId&&(o.sessionId=e.sessionId),e.windowId&&(o["window.id"]=e.windowId),H(e.sessionStartTimestamp)||(o.sessionStartTimestamp=String(e.sessionStartTimestamp)),H(e.lastActivityTimestamp)||(o.lastActivityTimestamp=String(e.lastActivityTimestamp)),e.currentUrl&&(o["url.full"]=e.currentUrl),e.screenName&&(o["screen.name"]=e.screenName),e.appState&&(o["app.state"]=e.appState),e.activeFeatureFlags&&e.activeFeatureFlags.length>0&&(o.feature_flags=e.activeFeatureFlags);var a=k({},o,t.attributes||{}),l={timeUnixNano:s,observedTimeUnixNano:s,severityNumber:r,severityText:i,body:{stringValue:t.body},attributes:zr(a)};return t.trace_id&&(l.traceId=t.trace_id),t.span_id&&(l.spanId=t.span_id),C(t.trace_flags)||(l.flags=t.trace_flags),l}function Ld(t,e,n){return k({},t.resourceAttributes,{"service.name":t.serviceName||"unknown_service"},t.environment&&{"deployment.environment":t.environment},t.serviceVersion&&{"service.version":t.serviceVersion},{"telemetry.sdk.name":e,"telemetry.sdk.version":n})}function Nd(t,e,n,i){return{resourceLogs:[{resource:{attributes:zr(e)},scopeLogs:[{scope:{name:n,version:i},logRecords:t}]}]}}let Zp=class{constructor(t,e,n,i,r,s,o){var a;s===void 0&&(s=()=>Promise.resolve()),this._instance=t,this.Ne=e,this.rt=n,this.ut=i,this.ht=r,this.dt=s,this.vt=o,this.ct=null,this.ft=0,this.yt=0,this.bt=0,this._t=0,this.wt=!1,this.kt=e.maxBufferSize,this.xt=Math.max((a=e.maxQueueSize)!==null&&a!==void 0?a:e.maxBufferSize,e.maxBufferSize),this.St=e.flushIntervalMs,this.Ct=e.maxBatchRecordsPerPost,this.Mt=e.rateCapWindowMs,this.Tt=e.maxLogsPerInterval}reset(){this.Et(),this.ct=null,this.bt=0,this._t=0,this.wt=!1,this.ft=0,this.yt=0,this.Ct=this.Ne.maxBatchRecordsPerPost}onReconnect(){this.yt=0,this.It()}captureLog(t){if(!this._instance.isDisabled&&!this._instance.optedOut&&t!=null&&t.body){var e=this.Pt(t);if(e!==null)if(e.body){if(this.Rt()){var n={record:Jp(e,this.ut())};this.ht((()=>this.At(n)))}}else this.rt.info("Log was rejected in beforeSend function")}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=U(e)?e:[e],i=t;for(var r of n)try{var s=r(i);if(!s)return this.rt.info("Log was rejected in beforeSend function"),null;i=s}catch(o){return this.rt.error("Error in beforeSend function for log:",o),null}return i}Rt(){if(this.Tt===void 0)return!0;var t=Date.now(),e=t-this.bt;return this.Mt>e&&e>=0||(this.bt=t,this._t=0,this.wt=!1),this.Tt>this._t?(this._t++,!0):(this.wt||(this.rt.warn("captureLog dropping logs: exceeded "+this.Tt+" logs per "+this.Mt+"ms"),this.wt=!0),!1)}flush(){var t=this;return se((function*(){if(!t._instance.isDisabled)return t.ct||(t.ct=t.Ft().finally((()=>{t.ct=null}))),t.ct}))()}Ft(){var t=this;return se((function*(){var e;t.Et();var n=(e=t._instance.getPersistedProperty(jt.LogsQueue))!==null&&e!==void 0?e:[];if(n.length!==0)for(var i=n.length,r=0;n.length>0&&i>r;){var s,o;t.ft=0;var a=Math.min(n.length,t.Ct),l=n.slice(0,a),u=Nd(l.map((d=>d.record)),t.Lt(),(s=t.vt)!==null&&s!==void 0?s:t._instance.getLibraryId(),t._instance.getLibraryVersion()),c=yield t._instance.Ot(u);if(c.kind==="too-large"&&l.length>1)t.Ct=Math.max(1,Math.floor(l.length/2)),t.rt.warn("Received 413 when sending logs batch of size "+l.length+", reducing batch size to "+t.Ct);else if(c.kind==="retry-later"||(c.kind==="too-large"?t.rt.warn("Dropping a single log record after 413 with batch size 1 — the record is larger than the server cap and cannot be split further."):c.kind==="ok"&&t.Ne.maxBatchRecordsPerPost>t.Ct&&(t.Ct=Math.min(t.Ne.maxBatchRecordsPerPost,t.Ct+1)),yield t.Dt(l.length),n=(o=t._instance.getPersistedProperty(jt.LogsQueue))!==null&&o!==void 0?o:[],r+=l.length,c.kind==="fatal"))throw c.error}}))()}Dt(t){var e=this;return se((function*(){var n,i=Math.max(0,t-e.ft),r=(n=e._instance.getPersistedProperty(jt.LogsQueue))!==null&&n!==void 0?n:[];e._instance.setPersistedProperty(jt.LogsQueue,r.slice(i)),yield e.dt()}))()}Lt(){return Ld(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion())}At(t){var e;if(!this._instance.optedOut){var n=(e=this._instance.getPersistedProperty(jt.LogsQueue))!==null&&e!==void 0?e:[];this.xt>n.length||(n.shift(),this.ft++,this.rt.info("Logs queue is full, dropping oldest record.")),n.push(t),this._instance.setPersistedProperty(jt.LogsQueue,n),this.kt>n.length?this.$t():this.It()}}$t(t){t===void 0&&(t=this.St),this.Nt||(this.Nt=il((()=>{this.Nt=void 0,this.It()}),t))}qt(){var t=Math.min(Math.max(0,this.yt-1),6);return this.St*Math.pow(2,t)}jt(){var t=this._instance.getPersistedProperty(jt.LogsQueue);return!!t&&t.length>0}shutdown(t){var e=this;return se((function*(){e.Et();var n=e.flush().catch((()=>{}));t!==void 0?yield bc(n,t):yield n}))()}flushWithTimeout(t){var e=this;return se((function*(){var n=e.flush();yield bc(n,t,(()=>{n.catch((()=>{}))}))}))()}It(){this.flush().then((()=>{this.yt=0}),(t=>{this.yt++,this.rt.error("PostHog logs flush failed:",t)})).finally((()=>{!this._instance.isDisabled&&this.jt()&&this.$t(this.qt())}))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}};var ho=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function Ec(t){return String(t)+"000000"}function Sc(t,e,n,i){var r="";return i&&(r=Object.keys(i).sort().map((s=>JSON.stringify(s)+":"+JSON.stringify(i[s]))).join(",")),t+"\0"+e+"\0"+(n??"")+"\0"+r}let Xp=class{constructor(t,e,n){this._instance=t,this.Ne=e,this.rt=n,this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Wt=0}count(t,e,n){e===void 0&&(e=1),this.Vt({name:t,type:"count",value:e,unit:n?.unit,attributes:n?.attributes})}gauge(t,e,n){this.Vt({name:t,type:"gauge",value:e,unit:n?.unit,attributes:n?.attributes})}histogram(t,e,n){this.Vt({name:t,type:"histogram",value:e,unit:n?.unit,attributes:n?.attributes})}flush(){var t=this,e=this.ct,n=(function(){var r=se((function*(){e&&(yield e.catch((()=>{}))),yield t.Zt()}));return function(){return r.apply(this,arguments)}})(),i=n().finally((()=>{this.ct===i&&(this.ct=null)}));return this.ct=i,i}drainWindow(){if(this.Bt.size===0)return null;var t=this.Bt;return this.Bt=new Map,this.Ht=!1,this.Ut=new Map,this.zt=new Set,this.Gt(t)}reset(){this.Wt++,this.Et(),this.Bt=new Map,this.ct=null,this.Ht=!1,this.Ut=new Map,this.zt=new Set}Vt(t){if(!this._instance.isDisabled&&!this._instance.optedOut){var e=this.Pt(t);if(e!==null)if(e.name&&typeof e.name=="string")if(typeof e.value=="number"&&Number.isFinite(e.value))if(e.type==="count"&&0>e.value)this.rt.warn("Dropping count '"+e.name+"': counters are monotonic, value must be >= 0");else{var n,i;try{n=e.attributes?k({},e.attributes):void 0,i=Sc(e.type,e.name,e.unit,n)}catch(o){return void this.rt.warn("Dropping metric '"+e.name+"': attributes could not be serialized",o)}var r=this.Bt.get(i);if(!r){if(!this.Qt())return;r={name:e.name,type:e.type,unit:e.unit,attributes:n,windowStartMs:Date.now()},this.Bt.set(i,r)}var s=this.Ut.get(e.name);s===void 0?this.Ut.set(e.name,e.type):s===e.type||this.zt.has(e.name)||(this.zt.add(e.name),this.rt.warn("Metric name '"+e.name+"' is already used as a "+s+"; recording it as a "+e.type+" too will blend both series in charts. Use a distinct name.")),this.Kt(r,e.value),this.$t()}else this.rt.warn("Dropping metric '"+e.name+"': value must be a finite number");else this.rt.warn("Dropping metric with empty name")}}Qt(){return this.Ne.maxSeriesPerFlush>this.Bt.size||(this.Ht||(this.Ht=!0,this.rt.warn("Metric series cap reached ("+this.Ne.maxSeriesPerFlush+" per flush window); dropping new series until the next flush. Reduce attribute cardinality.")),!1)}Kt(t,e){var n;switch(t.type){case"count":t.total=((n=t.total)!==null&&n!==void 0?n:0)+e;break;case"gauge":t.last=e;break;case"histogram":t.hist||(t.hist={count:0,sum:0,min:e,max:e,bucketCounts:new Array(ho.length+1).fill(0)});var i=t.hist;i.count+=1,i.sum+=e,i.min=Math.min(i.min,e),i.max=Math.max(i.max,e),i.bucketCounts[(function(r,s){for(var o=0;s.length>o;o++)if(s[o]>=r)return o;return s.length})(e,ho)]+=1}}Pt(t){var e=this.Ne.beforeSend;if(!e)return t;var n=U(e)?e:[e],i=t;for(var r of n)try{var s=r(i);if(!s)return this.rt.info("Metric was rejected in beforeSend function"),null;i=s}catch(o){return this.rt.error("Error in beforeSend function for metric:",o),null}return i}$t(){this.Nt||(this.Nt=il((()=>{this.Nt=void 0,this.flush().catch((t=>{this.rt.error("Metrics flush failed:",t)}))}),this.Ne.flushIntervalMs))}Et(){this.Nt&&(clearTimeout(this.Nt),this.Nt=void 0)}Zt(){var t=this;return se((function*(){if(t.Bt.size!==0){var e=t.Bt;t.Bt=new Map,t.Ht=!1,t.Ut=new Map,t.zt=new Set;var n=t.Wt,i=yield t._instance.Jt(t.Gt(e));if(n===t.Wt)switch(i.kind){case"ok":return;case"retry-later":return t.Yt(e),void t.$t();case"too-large":return void t.rt.warn("Metrics batch exceeded the server size limit and was dropped");case"fatal":return void t.rt.error("Failed to send metrics batch:",i.error)}}}))()}Gt(t){return e=this.Xt(t),n=(function(s,o,a){return k({},s.resourceAttributes,{"service.name":s.serviceName||"unknown_service"},s.environment&&{"deployment.environment":s.environment},s.serviceVersion&&{"service.version":s.serviceVersion},{"telemetry.sdk.name":o,"telemetry.sdk.version":a})})(this.Ne,this._instance.getLibraryId(),this._instance.getLibraryVersion()),i=this._instance.getLibraryId(),r=this._instance.getLibraryVersion(),{resourceMetrics:[{resource:{attributes:zr(n)},scopeMetrics:[{scope:{name:i,version:r},metrics:e}]}]};var e,n,i,r}Xt(t){var e=Ec(Date.now()),n=new Map;for(var i of t.values()){var r,s=Sc(i.type,i.name,i.unit,void 0),o=n.get(s);o||(o=k({name:i.name},i.unit&&{unit:i.unit}),i.type==="count"?o.sum={aggregationTemporality:1,isMonotonic:!0,dataPoints:[]}:i.type==="gauge"?o.gauge={dataPoints:[]}:o.histogram={aggregationTemporality:1,dataPoints:[]},n.set(s,o));var a=zr((r=i.attributes)!==null&&r!==void 0?r:{}),l=Ec(i.windowStartMs);if(i.type==="count"){var u,c={attributes:a,startTimeUnixNano:l,timeUnixNano:e,asDouble:(u=i.total)!==null&&u!==void 0?u:0};o.sum.dataPoints.push(c)}else if(i.type==="gauge"){var d,f={attributes:a,timeUnixNano:e,asDouble:(d=i.last)!==null&&d!==void 0?d:0};o.gauge.dataPoints.push(f)}else i.hist&&o.histogram.dataPoints.push({attributes:a,startTimeUnixNano:l,timeUnixNano:e,count:i.hist.count,sum:i.hist.sum,min:i.hist.min,max:i.hist.max,bucketCounts:i.hist.bucketCounts,explicitBounds:ho})}return Array.from(n.values())}Yt(t){var e,n;for(var i of t){var r=i[0],s=i[1],o=this.Bt.get(r);if(o)switch(o.windowStartMs=Math.min(o.windowStartMs,s.windowStartMs),o.type){case"count":o.total=((e=o.total)!==null&&e!==void 0?e:0)+((n=s.total)!==null&&n!==void 0?n:0);break;case"gauge":break;case"histogram":if(s.hist)if(o.hist){o.hist.count+=s.hist.count,o.hist.sum+=s.hist.sum,o.hist.min=Math.min(o.hist.min,s.hist.min),o.hist.max=Math.max(o.hist.max,s.hist.max);for(var a=0;o.hist.bucketCounts.length>a;a++)o.hist.bucketCounts[a]+=s.hist.bucketCounts[a]}else o.hist=s.hist}else this.Qt()&&this.Bt.set(r,s)}}};var fr,xc,po;function Qp(t){var e=globalThis._posthogChunkIds;if(e){var n=Object.keys(e);return po&&n.length===xc||(xc=n.length,po=n.reduce(((i,r)=>{fr||(fr={});var s=fr[r];if(s)i[s[0]]=s[1];else for(var o=t(r),a=o.length-1;a>=0;a--){var l=o[a],u=l?.filename,c=e[r];if(u&&c){i[u]=c,fr[r]=[u,c];break}}return i}),{})),po}}class eg{constructor(e,n,i){i===void 0&&(i=[]),this.coercers=e,this.stackParser=n,this.modifiers=i}buildFromUnknown(e,n){n===void 0&&(n={});var i=n&&n.mechanism||{handled:!0,type:"generic"},r=this.buildCoercingContext(i,n,0).apply(e),s=this.buildParsingContext(n),o=this.parseStacktrace(r,s);return{$exception_list:this.convertToExceptionList(o,i),$exception_level:"error"}}modifyFrames(e){var n=this;return se((function*(){for(var i of e)i.stacktrace&&i.stacktrace.frames&&U(i.stacktrace.frames)&&(i.stacktrace.frames=yield n.applyModifiers(i.stacktrace.frames));return e}))()}coerceFallback(e){var n;return{type:"Error",value:"Unknown error",stack:(n=e.syntheticException)==null?void 0:n.stack,synthetic:!0}}parseStacktrace(e,n){var i,r;return e.cause!=null&&(i=this.parseStacktrace(e.cause,n)),e.stack!=""&&e.stack!=null&&(r=this.applyChunkIds(this.stackParser(e.stack,e.synthetic?n.skipFirstLines:0),n.chunkIdMap)),k({},e,{cause:i,stack:r})}applyChunkIds(e,n){return e.map((i=>(i.filename&&n&&(i.chunk_id=n[i.filename]),i)))}applyCoercers(e,n){for(var i of this.coercers)if(i.match(e))return i.coerce(e,n);return this.coerceFallback(n)}applyModifiers(e){var n=this;return se((function*(){var i=e;for(var r of n.modifiers)i=yield r(i);return i}))()}convertToExceptionList(e,n){var i,r,s,o={type:e.type,value:e.value,mechanism:{type:(i=n.type)!==null&&i!==void 0?i:"generic",handled:(r=n.handled)===null||r===void 0||r,synthetic:(s=e.synthetic)!==null&&s!==void 0&&s}};e.stack&&(o.stacktrace={type:"raw",frames:e.stack});var a=[o];return e.cause!=null&&a.push(...this.convertToExceptionList(e.cause,k({},n,{handled:!0}))),a}buildParsingContext(e){var n;return{chunkIdMap:Qp(this.stackParser),skipFirstLines:(n=e.skipFirstLines)!==null&&n!==void 0?n:1}}buildCoercingContext(e,n,i){i===void 0&&(i=0);var r=(s,o)=>{if(4>=o){var a=this.buildCoercingContext(e,n,o);return this.applyCoercers(s,a)}};return k({},n,{syntheticException:i==0?n.syntheticException:void 0,mechanism:e,apply:s=>r(s,i),next:s=>r(s,i+1)})}}var ti="?";function Qo(t,e,n,i,r){var s={platform:t,filename:e,function:n===""?ti:n,in_app:!0};return C(i)||(s.lineno=i),C(r)||(s.colno=r),s}var Od=(t,e)=>{var n=t.indexOf("safari-extension")!==-1,i=t.indexOf("safari-web-extension")!==-1;return n||i?[t.indexOf("@")!==-1?t.split("@")[0]:ti,n?"safari-extension:"+e:"safari-web-extension:"+e]:[t,e]},tg=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,ng=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,ig=/\((\S*)(?::(\d+))(?::(\d+))\)/,rg=(t,e)=>{var n=tg.exec(t);if(n)return Qo(e,n[1],ti,+n[2],+n[3]);var i=ng.exec(t);if(i){if(i[2]&&i[2].indexOf("eval")===0){var r=ig.exec(i[2]);r&&(i[2]=r[1],i[3]=r[2],i[4]=r[3])}var s=Od(i[1]||ti,i[2]);return Qo(e,s[1],s[0],i[3]?+i[3]:void 0,i[4]?+i[4]:void 0)}},sg=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,og=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,ag=(t,e)=>{var n=sg.exec(t);if(n){if(n[3]&&n[3].indexOf(" > eval")>-1){var i=og.exec(n[3]);i&&(n[1]=n[1]||"eval",n[3]=i[1],n[4]=i[2],n[5]="")}var r=n[3],s=n[1]||ti,o=Od(s,r);return Qo(e,r=o[1],s=o[0],n[4]?+n[4]:void 0,n[5]?+n[5]:void 0)}},Ic=/\(error: (.*)\)/;class lg{match(e){return this.isDOMException(e)||this.isDOMError(e)}coerce(e,n){var i=X(e.stack);return{type:this.getType(e),value:this.getValue(e),stack:i?e.stack:void 0,cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return this.isDOMError(e)?"DOMError":"DOMException"}getValue(e){var n=e.name||(this.isDOMError(e)?"DOMError":"DOMException");return e.message?n+": "+e.message:n}isDOMException(e){return Dr(e,"DOMException")}isDOMError(e){return Dr(e,"DOMError")}}class cg{match(e){return(function(n){switch({}.toString.call(n)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object DOMError]":case"[object WebAssembly.Exception]":return!0;default:return dd(n,Error)}})(e)}coerce(e,n){return{type:this.getType(e),value:this.getMessage(e,n),stack:this.getStack(e),cause:e.cause?n.next(e.cause):void 0,synthetic:!1}}getType(e){return e.name||e.constructor.name}getMessage(e,n){var i=e.message;return String(i.error&&typeof i.error.message=="string"?i.error.message:i)}getStack(e){return e.stacktrace||e.stack||void 0}}class ug{constructor(){}match(e){return!!Dr(e,"ErrorEvent")&&(e.error!=null||this.fe(e))}coerce(e,n){var i;if(e.error!=null)return n.apply(e.error);var r=n.apply(e.message);return k({},r,{stack:(i=this.pe(e))!==null&&i!==void 0?i:r.stack,synthetic:!0})}fe(e){return X(e.message)&&e.message.length>0}pe(e){var n=e;if(X(n.filename)&&n.filename.length>0){var i,r,s=(i=n.lineno)!==null&&i!==void 0?i:0,o=(r=n.colno)!==null&&r!==void 0?r:0;return`Error + at `+n.filename+":"+s+":"+o}}}var dg=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;class fg{match(e){return typeof e=="string"}coerce(e,n){var i,r=this.getInfos(e),s=r[0],o=r[1];return{type:s??"Error",value:o??e,stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}getInfos(e){var n="Error",i=e,r=e.match(dg);return r&&(n=r[1],i=r[2]),[n,i]}}var hg=["fatal","error","warning","log","info","debug"];function Bd(t,e){e===void 0&&(e=40);var n=Object.keys(t);if(n.sort(),!n.length)return"[object has no keys]";for(var i=n.length;i>0;i--){var r=n.slice(0,i).join(", ");if(e>=r.length)return i===n.length?r:r.length>e?r.slice(0,e)+"...":r}return""}class pg{match(e){return typeof e=="object"&&e!==null}coerce(e,n){var i,r,s=this.getErrorPropertyFromObject(e);return s?n.apply(s):{type:this.getType(e),value:this.getValue(e),stack:(i=this.getStack(e))!==null&&i!==void 0?i:(r=n.syntheticException)==null?void 0:r.stack,level:this.isSeverityLevel(e.level)?e.level:"error",synthetic:!0}}getType(e){return Xa(e)?e.constructor.name:"Error"}getValue(e){if("name"in e&&typeof e.name=="string"){var n="'"+e.name+"' captured as exception";return"message"in e&&typeof e.message=="string"&&(n+=" with message: '"+e.message+"'"),n}if("message"in e&&typeof e.message=="string")return e.message;var i=this.getObjectClassName(e);return(i&&i!=="Object"?"'"+i+"'":"Object")+" captured as exception with keys: "+Bd(e)}isSeverityLevel(e){return X(e)&&!Ko(e)&&hg.indexOf(e)>=0}getStack(e){try{return X(e.stacktrace)&&e.stacktrace.length>0?e.stacktrace:X(e.stack)&&e.stack.length>0?e.stack:void 0}catch{return}}getErrorPropertyFromObject(e){for(var n in e)if({}.hasOwnProperty.call(e,n)){var i=e[n];if(Kp(i))return i}}getObjectClassName(e){try{var n=Object.getPrototypeOf(e);return n?n.constructor.name:void 0}catch{return}}}class gg{match(e){return Xa(e)}coerce(e,n){var i,r=e.constructor.name;return{type:r,value:r+" captured as exception with keys: "+Bd(e),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}}class mg{match(e){return ud(e)}coerce(e,n){var i;return{type:"Error",value:"Primitive value captured as exception: "+String(e),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}}}class vg{match(e){return Dr(e,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(e)}isCustomEventWrappingRejection(e){if(!Xa(e))return!1;try{var n=e.detail;return n!=null&&typeof n=="object"&&"reason"in n}catch{return!1}}coerce(e,n){var i,r=this.getUnhandledRejectionReason(e);return ud(r)?{type:"UnhandledRejection",value:"Non-Error promise rejection captured with value: "+String(r),stack:(i=n.syntheticException)==null?void 0:i.stack,synthetic:!0}:n.apply(r)}getUnhandledRejectionReason(e){try{if("reason"in e)return e.reason;if("detail"in e&&e.detail!=null&&typeof e.detail=="object"&&"reason"in e.detail)return e.detail.reason}catch{}return e}}var qr="$message",Vr="$timestamp",_g=new Set([qr,Vr]),go={enabled:!0,max_bytes:32768};function Gr(t){var e;return t?{enabled:(e=t.enabled)!==null&&e!==void 0?e:go.enabled,max_bytes:wg(t.max_bytes,go.max_bytes)}:k({},go)}class yg{constructor(e){this.Ke=[],this.Je=0,this.Ne=Gr(e)}setConfig(e){this.Ne=Gr(e),this.Xe()}add(e){var n=(function(r){var s;try{s=ad(r)}catch{return}try{var o=JSON.parse(s);if(!he(o))return;var a=o,l=a[qr],u=a[Vr];return!X(l)||l.trim().length===0||!X(u)&&!ke(u)?void 0:{step:a,json:s}}catch{return}})(e);if(n){var i=(function(r){if(typeof TextEncoder<"u")return new TextEncoder().encode(r).length;for(var s=encodeURIComponent(r),o=0,a=0;s.length>a;a++)s[a]==="%"?(o+=1,a+=2):o+=1;return o})(n.json);i>this.Ne.max_bytes||(this.Ke.push({step:n.step,bytes:i}),this.Je+=i,this.Xe())}}getAttachable(){return this.Ke.map((e=>e.step))}clear(){this.Ke=[],this.Je=0}size(){return this.Ke.length}Xe(){for(;this.Je>this.Ne.max_bytes&&this.Ke.length>0;){var e=this.Ke.shift();e&&(this.Je-=e.bytes)}}}function wg(t,e){if(!ke(t)||t===1/0||t===-1/0)return e;var n=Math.floor(t);return 0>n?e:n}var Dd=function(t,e){var n=(e===void 0?{}:e).debugEnabled,i={k(r){if(w&&(ne.DEBUG||w.POSTHOG_DEBUG||n)&&!C(w.console)&&w.console){for(var s=("__rrweb_original__"in w.console[r])?w.console[r].__rrweb_original__:w.console[r],o=arguments.length,a=new Array(o>1?o-1:0),l=1;o>l;l++)a[l-1]=arguments[l];s(t,...a)}},debug(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("debug",...s)},info(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("log",...s)},warn(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("warn",...s)},error(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];i.k("error",...s)},critical(){for(var r=arguments.length,s=new Array(r),o=0;r>o;o++)s[o]=arguments[o];console.error(t,...s)},uninitializedWarning(r){i.error("You must initialize PostHog before calling "+r)},createLogger:(r,s)=>Dd(t+" "+r,s)};return i},A=Dd("[PostHog.js]"),pe=A.createLogger,bg=pe("[ExternalScriptsLoader]"),mo=(t,e,n)=>{if(t.config.disable_external_dependency_loading)return bg.warn(e+" was requested but loading of external scripts is disabled."),n("Loading of external scripts is disabled");var i=F?.querySelectorAll("script");if(i){for(var r,s=function(){if(i[o].src===e){var l=i[o];return l.__posthog_loading_callback_fired?{v:n()}:(l.addEventListener("load",(u=>{l.__posthog_loading_callback_fired=!0,n(void 0,u)})),l.onerror=u=>n(u),{v:void 0})}},o=0;i.length>o;o++)if(r=s())return r.v}var a=()=>{if(!F)return n("document not found");var l=F.createElement("script");if(l.type="text/javascript",l.crossOrigin="anonymous",l.src=e,l.onload=d=>{l.__posthog_loading_callback_fired=!0,n(void 0,d)},l.onerror=d=>n(d),t.config.prepare_external_dependency_script&&(l=t.config.prepare_external_dependency_script(l)),!l)return n("prepare_external_dependency_script returned null");if(t.config.external_scripts_inject_target==="head")F.head.appendChild(l);else{var u,c=F.querySelectorAll("body > script");c.length>0?(u=c[0].parentNode)==null||u.insertBefore(l,c[0]):F.body.appendChild(l)}};F!=null&&F.body?a():F?.addEventListener("DOMContentLoaded",a)};B.__PosthogExtensions__=B.__PosthogExtensions__||{},B.__PosthogExtensions__.loadExternalDependency=(t,e,n)=>{if(e!=="remote-config"){var i;if(t.config.strict_script_versioning)i=t.requestRouter.endpointFor("assets","/static/"+t.version+"/"+e+".js");else{var r="/static/"+e+".js?v="+t.version;if(e==="toolbar"){var s=3e5;r=r+"&t="+Math.floor(Date.now()/s)*s}i=t.requestRouter.endpointFor("assets",r)}mo(t,i,n)}else{var o=t.requestRouter.endpointFor("assets","/array/"+t.config.token+"/config.js");mo(t,o,n)}},B.__PosthogExtensions__.loadSiteApp=(t,e,n)=>{var i=t.requestRouter.endpointFor("api",e);mo(t,i,n)};ne.DEBUG=!1,ne.LIB_VERSION="1.415.7",ne.LIB_NAME="web";var jd="$people_distinct_id",Ki="$device_id",vo="$device_model",Pi="__alias",Fi="__timers",ea="$autocapture_disabled_server_side",ta="$heatmaps_enabled_server_side",na="$exception_capture_enabled_server_side",ia="$error_tracking_suppression_rules",ra="$error_tracking_capture_extension_exceptions",sa="$web_vitals_enabled_server_side",rl="$dead_clicks_enabled_server_side",sl="$product_tours_enabled_server_side",oa="$web_vitals_allowed_metrics",Cn="$session_recording_remote_config",Ud="$replay_sample_rate",Hd="$replay_override_sampling",Wd="$replay_override_linked_flag",zd="$replay_override_url_trigger",qd="$replay_override_event_trigger",Gn="$sesid",ol="$session_is_sampled",En="$enabled_feature_flags",Ri="$active_feature_flags",Ir="$early_access_features",aa="$feature_flag_details",Ti="$feature_flag_payloads",kr="$feature_flag_request_id",Kr="$minimal_flag_called_events",xt="$override_feature_flags",Sn="$override_feature_flag_payloads",Dt="$stored_person_properties",xn="$stored_group_properties",la="$surveys",Yr="$surveys_loaded_at",ca="$surveys_activated",Cr="$surveys_activated_session",Ar="$surveys_activated_timestamps",$i="ph_product_tours",kn="$flag_call_reported",Mi="$flag_call_reported_session_id",Pr="$feature_flag_errors",Di="$feature_flag_evaluated_at",ot="$user_state",ua="$client_session_props",da="$capture_rate_limit",fa="$initial_campaign_params",ha="$initial_referrer_info",Jr="$initial_person_info",Zr="$epp",hr="$posthog_cookieless",Vd="$cookieless_mode",Gd="$sdk_debug_extensions_init_method",Kd="$sdk_debug_extensions_init_time_ms",Yd="$sdk_debug_recording_script_not_loaded",al="PostHog loadExternalDependency extension not found.",In="on_reject",Ht="always",jn="anonymous",mn="identified",pa="identified_only",Xr="visibilitychange",Qr="beforeunload",qn="$pageview",_o="$pageleave",yo="$identify",kc="$groupidentify";function pr(t,e){U(t)&&t.forEach(e)}function ie(t,e){if(!H(t))if(U(t))t.forEach(e);else if(Tp(t))t.forEach(((i,r)=>e(i,r)));else for(var n in t)cd.call(t,n)&&e(t[n],n)}var fe=function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;e>i;i++)n[i-1]=arguments[i];for(var r of n)for(var s in r)r[s]!==void 0&&(t[s]=r[s]);return t};function Fr(t){for(var e=Object.keys(t),n=e.length,i=new Array(n);n--;)i[n]=[e[n],t[e[n]]];return i}var Cc=function(t){try{return t()}catch{return}},Eg=function(t){return function(){try{for(var e=arguments.length,n=new Array(e),i=0;e>i;i++)n[i]=arguments[i];return t.apply(this,n)}catch(r){A.critical("Implementation error. Please turn on debug mode and open a ticket on https://app.posthog.com/home#panel=support%3Asupport%3A."),A.critical(r)}}},ll=function(t){var e={};return ie(t,(function(n,i){(X(n)&&n.length>0||ke(n))&&(e[i]=n)})),e},Sg=["herokuapp.com","vercel.app","netlify.app"];function xg(t){var e=t?.hostname;if(!X(e))return!1;var n=e.split(".").slice(-2).join(".");for(var i of Sg)if(n===i)return!1;return!0}function ve(t,e,n,i){var r=i??{},s=r.capture,o=r.passive;t?.addEventListener(e,n,{capture:s!==void 0&&s,passive:o===void 0||o})}function ga(t){return t.name==="ph_toolbar_internal"}var Jd=t=>{if(F){try{for(var e=t+"=",n=F.cookie.split(";").filter((s=>s.length)),i=0;n.length>i;i++){for(var r=n[i];r.charAt(0)==" ";)r=r.substring(1,r.length);if(r.indexOf(e)===0)return decodeURIComponent(r.substring(e.length,r.length))}}catch{}return null}};Math.trunc||(Math.trunc=function(t){return 0>t?Math.ceil(t):Math.floor(t)}),Number.isInteger||(Number.isInteger=function(t){return ke(t)&&isFinite(t)&&Math.floor(t)===t});class es{constructor(e){if(this.bytes=e,e.length!==16)throw new TypeError("not 128-bit length")}static fromFieldsV7(e,n,i,r){if(!Number.isInteger(e)||!Number.isInteger(n)||!Number.isInteger(i)||!Number.isInteger(r)||0>e||0>n||0>i||0>r||e>0xffffffffffff||n>4095||i>1073741823||r>4294967295)throw new RangeError("invalid field value");var s=new Uint8Array(16);return s[0]=e/Math.pow(2,40),s[1]=e/Math.pow(2,32),s[2]=e/Math.pow(2,24),s[3]=e/Math.pow(2,16),s[4]=e/256,s[5]=e,s[6]=112|n>>>8,s[7]=n,s[8]=128|i>>>24,s[9]=i>>>16,s[10]=i>>>8,s[11]=i,s[12]=r>>>24,s[13]=r>>>16,s[14]=r>>>8,s[15]=r,new es(s)}toString(){for(var e="",n=0;this.bytes.length>n;n++)e=e+(this.bytes[n]>>>4).toString(16)+(15&this.bytes[n]).toString(16),n!==3&&n!==5&&n!==7&&n!==9||(e+="-");if(e.length!==36)throw new Error("Invalid UUIDv7 was generated");return e}clone(){return new es(this.bytes.slice(0))}equals(e){return this.compareTo(e)===0}compareTo(e){for(var n=0;16>n;n++){var i=this.bytes[n]-e.bytes[n];if(i!==0)return Math.sign(i)}return 0}}class Ig{generate(){var e=this.generateOrAbort();if(!C(e))return e;this.S=0;var n=this.generateOrAbort();if(C(n))throw new Error("Could not generate UUID after timestamp reset");return n}generateOrAbort(){var e=Date.now();if(e>this.S)this.S=e,this.C();else{if(this.S>=e+1e4)return;this.I++,this.I>4398046511103&&(this.S++,this.C())}return es.fromFieldsV7(this.S,Math.trunc(this.I/Math.pow(2,30)),this.I&Math.pow(2,30)-1,this.A.nextUint32())}C(){this.I=1024*this.A.nextUint32()+(1023&this.A.nextUint32())}constructor(){this.S=0,this.I=0,this.A=new kg}}var Ac,Zd=t=>{if(typeof UUIDV7_DENY_WEAK_RNG<"u"&&UUIDV7_DENY_WEAK_RNG)throw new Error("no cryptographically strong RNG available");for(var e=0;t.length>e;e++)t[e]=65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random());return t};w&&!C(w.crypto)&&crypto.getRandomValues&&(Zd=t=>crypto.getRandomValues(t));class kg{nextUint32(){return this.R.length>this.O||(Zd(this.R),this.O=0),this.R[this.O++]}constructor(){this.R=new Uint32Array(8),this.O=1/0}}var Ut=()=>Cg().toString(),Cg=()=>(Ac||(Ac=new Ig)).generate(),_i="",Ag=/[a-z0-9][a-z0-9-]+\.[a-z]{2,}$/i,Wt={N:()=>!!F,j(t){A.error("cookieStore error: "+t)},P:Jd,H(t){var e;try{e=JSON.parse(Wt.P(t))||{}}catch{}return e},F(t,e,n,i,r){if(!F)return!1;try{var s="",o="",a=(function(c,d){if(d){var f=(function(p,g){if(g===void 0&&(g=F),_i)return _i;if(!g||["localhost","127.0.0.1"].includes(p))return"";for(var m=p.split("."),v=Math.min(m.length,8),S="dmn_chk_"+Ut();!_i&&v--;){var b=m.slice(v).join("."),_=S+"=1;domain=."+b+";path=/";g.cookie=_+";max-age=3",g.cookie.includes(S)&&(g.cookie=_+";max-age=0",_i=b)}return _i})(c);if(!f){var h=(p=>{var g=p.match(Ag);return g?g[0]:""})(c);h!==f&&A.info("Warning: cookie subdomain discovery mismatch",h,f),f=h}return f?"; domain=."+f:""}return""})(F.location.hostname,i);if(n){var l=new Date;l.setTime(l.getTime()+864e5*n),s="; expires="+l.toUTCString()}r&&(o="; secure");var u=t+"="+encodeURIComponent(JSON.stringify(e))+s+"; SameSite=Lax; path=/"+a+o;return u.length>3686.4&&A.warn("cookieStore warning: large cookie, len="+u.length),F.cookie=u,!0}catch{return!1}},q(t,e){if(F!=null&&F.cookie)try{Wt.F(t,"",-1,e)}catch{return}}},wo=null,le={N(){if(!Ve(wo))return wo;var t=!0;if(C(w))t=!1;else try{var e="__mplssupport__";le.F(e,"xyz"),le.P(e)!=='"xyz"'&&(t=!1),le.q(e)}catch{t=!1}return t||A.error("localStorage unsupported; falling back to cookie store"),wo=t,t},j(t){A.error("localStorage error: "+t)},P(t){try{return w?.localStorage.getItem(t)}catch(e){le.j(e)}return null},H(t){try{return JSON.parse(le.P(t))||{}}catch{}return null},F(t,e){try{return w?.localStorage.setItem(t,JSON.stringify(e)),!0}catch(n){le.j(n)}return!1},q(t){try{w?.localStorage.removeItem(t)}catch(e){le.j(e)}}},Pg=[Ki,"distinct_id",Gn,ol,Zr,Jr,ot],gr={},Fg={N:()=>!0,j(t){A.error("memoryStorage error: "+t)},P:t=>gr[t]||null,H:t=>gr[t]||null,F:(t,e)=>(gr[t]=e,!0),q(t){delete gr[t]}},vn=null,be={N(){if(!Ve(vn))return vn;if(vn=!0,C(w))vn=!1;else try{var t="__support__";be.F(t,"xyz"),be.P(t)!=='"xyz"'&&(vn=!1),be.q(t)}catch{vn=!1}return vn},j(t){A.error("sessionStorage error: ",t)},P(t){try{return w?.sessionStorage.getItem(t)}catch(e){be.j(e)}return null},H(t){try{return JSON.parse(be.P(t))||null}catch{}return null},F(t,e){try{return w?.sessionStorage.setItem(t,JSON.stringify(e)),!0}catch(n){be.j(n)}return!1},q(t){try{w?.sessionStorage.removeItem(t)}catch(e){be.j(e)}}};class Rg{constructor(e){this._instance=e}get Ne(){return this._instance.config}get consent(){return this.ti()?0:this.ei}isOptedOut(){return this.Ne.cookieless_mode===Ht||this.isRejected()||this.consent===-1&&this.Ne.cookieless_mode===In}isOptedIn(){return!this.isOptedOut()}isExplicitlyOptedOut(){return this.consent===0}isRejected(){return this.consent===0||this.consent===-1&&this.Ne.opt_out_capturing_by_default}optInOut(e){this.ii.F(this.ri,e?1:0,this.Ne.cookie_expiration,this.Ne.cross_subdomain_cookie,this.Ne.secure_cookie)}reset(){this.ii.q(this.ri,this.Ne.cross_subdomain_cookie)}get ri(){var e=this._instance.config,n=e.token,i=e.opt_out_capturing_cookie_prefix;return e.consent_persistence_name||(i?i+n:"__ph_opt_in_out_"+n)}get ei(){var e=this.ii.P(this.ri);return uo(e)?1:j(Np,e)?0:-1}get ii(){var e=this.Ne.opt_out_capturing_persistence_type,n=e==="localStorage"?le:Wt;if(!this.ni||this.ni!==n){this.ni=n;var i=e==="localStorage"?Wt:le;i.P(this.ri)&&(this.ni.P(this.ri)||this.optInOut(uo(i.P(this.ri))),i.q(this.ri,this.Ne.cross_subdomain_cookie))}return this.ni}ti(){return!!this.Ne.respect_dnt&&[Ue?.doNotTrack,Ue?.msDoNotTrack,B.doNotTrack].some((e=>uo(e)))}}function Xd(t,e){var n,i=t==null||(n=t.config)==null?void 0:n.get_current_url;if(!De(i))return e;try{var r=i(e);return X(r)&&r?r:e}catch(s){return A.error("Error in get_current_url, falling back to window.location.href",s),e}}var Qd="__POSTHOG_TOOLBAR__",Tg=1,$g=3,Mg=11;function Pc(t){return t instanceof Element&&(t.id===Qd||!(t.closest==null||!t.closest(".toolbar-global-fade-container")))}function fn(t){return!!t&&t.nodeType===Tg}function Qe(t,e){return!!t&&!!t.tagName&&t.tagName.toLowerCase()===e.toLowerCase()}function ef(t){return!!t&&t.nodeType===$g}function tf(t){return!!t&&t.nodeType===Mg&&fn(t.host)}var nf=1e3;function cl(t){return t?Ss(t).split(/\s+/):[]}function Fc(t,e){var n=(function(i){var r,s=w==null||(r=w.location)==null?void 0:r.href;return C(s)?void 0:Xd(i,s)})(e);return!!(n&&t&&t.some((i=>n.match(i))))}function ts(t){var e="";switch(typeof t.className){case"string":e=t.className;break;case"object":e=(t.className&&"baseVal"in t.className?t.className.baseVal:null)||t.getAttribute("class")||"";break;default:e=""}return cl(e)}function rf(t){return H(t)?null:Ss(t).split(/(\s+)/).filter((e=>ji(e))).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)}function Yi(t){var e="";return va(t)&&!lf(t)&&t.childNodes&&t.childNodes.length&&ie(t.childNodes,(function(n){var i;ef(n)&&n.textContent&&(e+=(i=rf(n.textContent))!==null&&i!==void 0?i:"")})),Ss(e)}function bo(t){var e;return C(t.target)?t.srcElement||null:(e=t.target)!=null&&e.shadowRoot?t.composedPath()[0]||null:t.target||null}var ul=["a","button","form","input","select","textarea","label"];function ma(t,e){if(C(e))return!0;var n,i=function(s){if(e.some((o=>(function(a,l){var u=a.matches||a.matchesSelector||a.msMatchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.oMatchesSelector;try{return!!u&&u.call(a,l)}catch{return!1}})(s,o))))return{v:!0}};for(var r of t)if(n=i(r))return n.v;return!1}function sf(t){var e=t.parentNode;return!(!e||!fn(e))&&e}var Lg=[".ph-no-autocapture","[data-ph-no-autocapture]"],of=["next","previous","prev",">","<"],Ng=[...of,"+","-","−","–"],Rc=(t,e)=>/[a-z0-9]/i.test(e)?t.includes(e):t===e,Tc=[".ph-no-rageclick",".ph-no-capture"],Og=["","text","search","email","password","url","tel","number"];function $c(t,e){if(!w||dl(t))return!1;var n,i,r,s,o;if(gt(e)?(n=!!e&&Tc,i=void 0,r=!1):(n=(s=e?.css_selector_ignorelist)!==null&&s!==void 0?s:Tc,i=e?.content_ignorelist,r=(o=e?.ignore_text_selection)!==null&&o!==void 0&&o),n===!1||r&&(function(l){return!(!l||!fn(l))&&(!!Qe(l,"textarea")||(Qe(l,"input")?j(Og,(l.getAttribute("type")||"").toLowerCase()):(function(u){if(u.isContentEditable)return!0;var c=u.getAttribute==null?void 0:u.getAttribute("contenteditable");return c==="true"||c===""})(l)))})(t))return!1;var a=af(t,!1).targetElementList;return!(function(l,u){if(l===!1||C(l))return!1;var c;if(l===!0)c=of;else{if(!U(l))return!1;if(l.length>10)return A.error("[PostHog] content_ignorelist array cannot exceed 10 items. Use css_selector_ignorelist for more complex matching."),!1;c=l.map((d=>d.toLowerCase()))}return u.some((d=>{var f=d.safeText,h=d.ariaLabel;return c.some((p=>Rc(f,p)||Rc(h,p)))}))})(i,a.map((l=>{var u;return{safeText:Yi(l).toLowerCase(),ariaLabel:((u=l.getAttribute("aria-label"))==null?void 0:u.toLowerCase().trim())||""}})))&&!ma(a,n)}var dl=t=>!t||Qe(t,"html")||!fn(t),af=(t,e)=>{if(!w||dl(t))return{parentIsUsefulElement:!1,targetElementList:[]};for(var n=!1,i=[t],r=t;r.parentNode&&!Qe(r,"body");)if(tf(r.parentNode))i.push(r.parentNode.host),r=r.parentNode.host;else{var s=sf(r);if(!s)break;if(e||ul.indexOf(s.tagName.toLowerCase())>-1)n=!0;else try{var o=w.getComputedStyle(s);o&&o.getPropertyValue("cursor")==="pointer"&&(n=!0)}catch{}i.push(s),r=s}return{parentIsUsefulElement:n,targetElementList:i}};function va(t){for(var e=new Set,n=0,i=t;i.parentNode&&!Qe(i,"body");i=i.parentNode){if(n++>=nf||e.has(i))return!1;e.add(i);var r=ts(i);if(j(r,"ph-sensitive")||j(r,"ph-no-capture"))return!1}if(j(ts(t),"ph-include"))return!0;var s=t.type||"";if(X(s))switch(s.toLowerCase()){case"hidden":case"password":return!1}var o=t.name||t.id||"";return!X(o)||!/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(o.replace(/[^a-zA-Z0-9]/g,""))}function lf(t){return!!(Qe(t,"input")&&!["button","checkbox","submit","reset"].includes(t.type)||Qe(t,"select")||Qe(t,"textarea")||t.getAttribute("contenteditable")==="true")}var Mc=new RegExp("^(?:(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}))$"),Lc=/(^|[^0-9A-Za-z_])([0-9][0-9 -]*[0-9])(?=$|[^0-9A-Za-z_])/g,Bg=[16,15,14,13],Dg=new RegExp("^(\\d{3}-?\\d{2}-?\\d{4})$"),Nc=new RegExp("(^|[^0-9])((?!000|666)[0-9]{3}-?(?!00)[0-9]{2}-?(?!0000)[0-9]{4})(?=$|([^0-9]))","g"),Oc=/[0-9A-Za-z_]/;function jg(t){for(var e=0,n=!1,i=t.length-1;i>=0;i--){var r=t.charCodeAt(i)-48;n&&(r*=2)>9&&(r-=9),e+=r,n=!n}return e%10==0}function ji(t,e){if(e===void 0&&(e=!0),H(t))return!1;if(X(t)){t=Ss(t);var n=e?Mc.test((t||"").replace(/[- ]/g,"")):(function(r){var s;for(Lc.lastIndex=0;s=Lc.exec(r);){var o=s[2];if(o)for(var a=o.replace(/[- ]/g,""),l=0;a.length>l;l++)for(var u of Bg){var c=l+u;if(a.length>=c){var d=a.slice(l,c);if(Mc.test(d)&&jg(d))return!0}}}return!1})(t);if(n)return!1;var i=e?Dg.test(t):(function(r){var s;for(Nc.lastIndex=0;s=Nc.exec(r);){var o=s[1],a=s[3];if(!(o&&a&&Oc.test(o)&&Oc.test(a)))return!0}return!1})(t);if(i)return!1}return!0}function Bc(t){var e=Yi(t);return ji(e=(e+" "+cf(t)).trim())?e:""}function cf(t){var e="";return t&&t.childNodes&&t.childNodes.length&&ie(t.childNodes,(function(n){var i;if(n&&((i=n.tagName)==null?void 0:i.toLowerCase())==="span")try{var r=Yi(n);e=(e+" "+r).trim(),n.childNodes&&n.childNodes.length&&(e=(e+" "+cf(n)).trim())}catch(s){A.error("[AutoCapture]",s)}})),e}function Dc(t){return t.replace(/"|\\"/g,'\\"')}function Ug(t){var e=t.attr__class;if(e)return U(e)?e:cl(e)}var mr=pe("[Dead Clicks]"),Hg=()=>!0,Wg=t=>{var e,n=!((e=t.instance.persistence)==null||!e.get_property(rl)),i=t.instance.config.capture_dead_clicks;return gt(i)?i:!!he(i)||n};class jc{get lazyLoadedDeadClicksAutocapture(){return this.si}constructor(e,n,i){this.instance=e,this.isEnabled=n,this.onCapture=i,this.startIfEnabledOrStop()}onRemoteConfig(e){if(e.ok){var n=e.config;"captureDeadClicks"in n&&(this.instance.persistence&&this.instance.persistence.register({[rl]:n.captureDeadClicks}),this.startIfEnabledOrStop())}}startIfEnabledOrStop(){this.isEnabled(this)?this.ai((()=>{this.oi()})):this.stop()}ai(e){var n,i;(n=B.__PosthogExtensions__)!=null&&n.initDeadClicksAutocapture?e():(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this.instance,"dead-clicks-autocapture",(r=>{r?mr.error("failed to load script",r):e()}))}oi(){var e;if(F){if(!this.si&&(e=B.__PosthogExtensions__)!=null&&e.initDeadClicksAutocapture){var n=he(this.instance.config.capture_dead_clicks)?k({},this.instance.config.capture_dead_clicks):{};n.__onCapture=this.onCapture,this.onCapture&&(n.capture_dead_swipes=!1),this.si=B.__PosthogExtensions__.initDeadClicksAutocapture(this.instance,n),this.si.start(F),mr.info("starting...")}}else mr.error("`document` not found. Cannot start.")}stop(){this.si&&(this.si.stop(),this.si=void 0,mr.info("stopping..."))}}var Eo=pe("[SegmentIntegration]"),uf="posthog-js";function df(t,e){var n=e===void 0?{}:e,i=n.organization,r=n.projectId,s=n.prefix,o=n.severityAllowList,a=o===void 0?["error"]:o,l=n.sendExceptionsToPostHog,u=l===void 0||l;return c=>{var d,f,h,p,g;if(a!=="*"&&!a.includes(c.level)||!t.__loaded)return c;c.tags||(c.tags={});var m=t.requestRouter.endpointFor("ui","/project/"+t.config.token+"/person/"+t.get_distinct_id());c.tags["PostHog Person URL"]=m,t.sessionRecordingStarted()&&(c.tags["PostHog Recording URL"]=t.get_session_replay_url({withTimestamp:!0}));var v,S=((d=c.exception)==null?void 0:d.values)||[],b=S.map((x=>k({},x,{stacktrace:x.stacktrace?k({},x.stacktrace,{type:"raw",frames:(x.stacktrace.frames||[]).map((I=>k({},I,{platform:"web:javascript"})))}):void 0}))),_={$exception_message:((f=S[0])==null?void 0:f.value)||c.message,$exception_type:(h=S[0])==null?void 0:h.type,$exception_level:c.level,$exception_list:b,$sentry_event_id:c.event_id,$sentry_exception:c.exception,$sentry_exception_message:((p=S[0])==null?void 0:p.value)||c.message,$sentry_exception_type:(g=S[0])==null?void 0:g.type,$sentry_tags:c.tags};return i&&r&&(_.$sentry_url=(s||"https://sentry.io/organizations/")+i+"/issues/?project="+r+"&query="+c.event_id),u&&((v=t.exceptions)==null||v.sendExceptionEvent(_)),c}}class zg{constructor(e,n,i,r,s,o){this.name=uf,this.setupOnce=function(a){a(df(e,{organization:n,projectId:i,prefix:r,severityAllowList:s,sendExceptionsToPostHog:o==null||o}))}}}class Uc{constructor(e){this.li=(n,i,r)=>{r&&(r.noSessionId||r.activityTimeout||r.sessionPastMaximumLength||r.crossTabAdoption)&&(A.info("[PageViewManager] Session rotated, clearing pageview state",{sessionId:n,changeReason:r}),this.ui=void 0,this._instance.scrollManager.resetContext())},this._instance=e,this.hi()}hi(){var e;this.di=(e=this._instance.sessionManager)==null?void 0:e.onSessionId(this.li)}destroy(){var e;(e=this.di)==null||e.call(this),this.di=void 0}doPageView(e,n){var i,r=this.vi(e,n);return this.ui={pathname:(i=w?.location.pathname)!==null&&i!==void 0?i:"",pageViewId:n,timestamp:e},this._instance.scrollManager.resetContext(),r}doPageLeave(e){var n;return this.vi(e,(n=this.ui)==null?void 0:n.pageViewId)}doEvent(){var e;return{$pageview_id:(e=this.ui)==null?void 0:e.pageViewId}}vi(e,n){var i=this.ui;if(!i)return{$pageview_id:n};var r={$pageview_id:n,$prev_pageview_id:i.pageViewId},s=this._instance.scrollManager.getContext();if(s&&!this._instance.config.disable_scroll_properties){var o=s.maxScrollHeight,a=s.lastScrollY,l=s.maxScrollY,u=s.maxContentHeight,c=s.lastContentY,d=s.maxContentY;if(!(C(o)||C(a)||C(l)||C(u)||C(c)||C(d))){o=Math.ceil(o),a=Math.ceil(a),l=Math.ceil(l),u=Math.ceil(u),c=Math.ceil(c),d=Math.ceil(d);var f=o>1?Ct(a/o,0,1,A):1,h=o>1?Ct(l/o,0,1,A):1,p=u>1?Ct(c/u,0,1,A):1,g=u>1?Ct(d/u,0,1,A):1;r=fe(r,{$prev_pageview_last_scroll:a,$prev_pageview_last_scroll_percentage:f,$prev_pageview_max_scroll:l,$prev_pageview_max_scroll_percentage:h,$prev_pageview_last_content:c,$prev_pageview_last_content_percentage:p,$prev_pageview_max_content:d,$prev_pageview_max_content_percentage:g})}}return i.pathname&&(r.$prev_pageview_pathname=i.pathname),i.timestamp&&(r.$prev_pageview_duration=(e.getTime()-i.timestamp.getTime())/1e3),r}}var So=["flags","surveys"],qg={[jd]:{exposure:"hidden"},[Pi]:{exposure:"hidden"},__cmpns:{exposure:"hidden"},[Fi]:{exposure:"hidden"},[ea]:{exposure:"event"},[ta]:{exposure:"hidden"},[na]:{exposure:"event"},[ia]:{exposure:"hidden"},[ra]:{exposure:"event"},[sa]:{exposure:"event"},[rl]:{exposure:"event"},[sl]:{exposure:"hidden"},[oa]:{exposure:"event"},[Cn]:{exposure:"hidden"},$session_recording_enabled_server_side:{exposure:"hidden"},[Gn]:{exposure:"hidden"},[ol]:{exposure:"event"},[Ud]:{exposure:"event",shouldSkipFromEventProperties:t=>Ve(t)},$session_past_minimum_duration:{exposure:"event"},$session_recording_url_trigger_activated_session:{exposure:"event"},$session_recording_event_trigger_activated_session:{exposure:"event"},$debug_first_full_snapshot_timestamp:{exposure:"event"},$sess_rec_flush_size:{exposure:"hidden"},[En]:{exposure:"hidden",storageGroup:"flags"},[Ri]:{exposure:"hidden",storageGroup:"flags"},[Ir]:{exposure:"hidden"},[aa]:{exposure:"hidden",storageGroup:"flags"},[Ti]:{exposure:"hidden",storageGroup:"flags"},[kr]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[Kr]:{exposure:"hidden",storageGroup:"flags"},[xt]:{exposure:"hidden"},[Sn]:{exposure:"hidden"},[Dt]:{exposure:"hidden"},[xn]:{exposure:"hidden"},[la]:{exposure:"hidden",storageGroup:"surveys"},[Yr]:{exposure:"hidden",storageGroup:"surveys",volatile:!0},[ca]:{exposure:"event"},[Cr]:{exposure:"hidden"},[Ar]:{exposure:"hidden"},[$i]:{exposure:"hidden"},$product_tours_activated:{exposure:"hidden"},$product_tours_activated_session:{exposure:"hidden"},$conversations_widget_session_id:{exposure:"event"},$conversations_ticket_id:{exposure:"event"},$conversations_widget_state:{exposure:"event"},$conversations_user_traits:{exposure:"event"},[kn]:{exposure:"hidden"},[Mi]:{exposure:"hidden"},[Pr]:{exposure:"hidden"},[Di]:{exposure:"hidden",storageGroup:"flags",volatile:!0},[ot]:{exposure:"hidden"},[ua]:{exposure:"hidden"},[da]:{exposure:"hidden"},[fa]:{exposure:"hidden"},[ha]:{exposure:"hidden"},[Jr]:{exposure:"hidden"},[Zr]:{exposure:"hidden"},[Hd]:{exposure:"event"},[Wd]:{exposure:"event"},[zd]:{exposure:"event"},[qd]:{exposure:"event"},[Gd]:{exposure:"event"},[Kd]:{exposure:"event"},[Yd]:{exposure:"event"},$sdk_debug_replay_event_trigger_status:{exposure:"event"},$sdk_debug_replay_linked_flag_trigger_status:{exposure:"event"},$sdk_debug_replay_matched_recording_trigger_groups:{exposure:"event"},$sdk_debug_replay_remote_trigger_matching_config:{exposure:"event"},$sdk_debug_replay_trigger_groups_count:{exposure:"event"},$sdk_debug_replay_url_trigger_status:{exposure:"event"},$session_recording_start_reason:{exposure:"event"}},Vg=[["$posthog_sr_group_event_trigger_",{exposure:"hidden"}],["$posthog_sr_group_url_trigger_",{exposure:"hidden"}],["$posthog_sr_group_sampling_",{exposure:"hidden"}]],_n=t=>{var e=qg[t];if(e)return e;for(var n of Vg){var i=n[1];if(t.indexOf(n[0])===0)return i}},Kn=(t,e)=>{try{return JSON.stringify(t,((n,i)=>typeof i=="bigint"?i.toString():i),e)}catch{return ad(t)}},ns=t=>{var e=F?.createElement("a");return C(e)?null:(e.href=t,e)},ni=function(t,e){for(var n,i=((t.split("#")[0]||"").split(/\?(.*)/)[1]||"").replace(/^\?+/g,"").split("&"),r=0;i.length>r;r++){var s=i[r].split("=");if(s[0]===e){n=s;break}}if(!U(n)||2>n.length)return"";var o=n[1];try{o=decodeURIComponent(o)}catch{A.error("Skipping decoding for malformed query param: "+o)}return o.replace(/\+/g," ")},Ji=function(t,e,n){if(!t||!e||!e.length)return t;for(var i=t.split("#"),r=i[1],s=(i[0]||"").split("?"),o=s[1],a=s[0],l=(o||"").split("&"),u=[],c=0;l.length>c;c++){var d=l[c].split("=");U(d)&&(e.includes(d[0])?u.push(d[0]+"="+n):u.push(l[c]))}var f=a;return o!=null&&(f+="?"+u.join("&")),r!=null&&(f+="#"+r),f},is=function(t,e){var n=t.match(new RegExp(e+"=([^&]*)"));return n?n[1]:null},ff=(t,e)=>t>=e&&rd(),hf=(t,e,n,i)=>{if(t===0){if(rd()){var r=e+1;return r===n&&i(),r}return e}return 0},vr="https?://(.*)",ii=["gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","irclid","_kx"],Gg=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid",...ii],Zi="",Kg=["li_fat_id"];function pf(t,e,n){if(!F)return{};var i,r=e?[...ii,...n||[]]:[],s=gf(Ji(F.URL,r,Zi),t),o=(i={},ie(Kg,(function(a){var l=Jd(a);i[a]=l||null})),i);return fe(o,s)}function gf(t,e){var n=Gg.concat(e||[]),i={};return ie(n,(function(r){var s=ni(t,r);i[r]=s||null})),i}function mf(t){var e=(function(s){return s?s.search(vr+"google.([^/?]*)")===0?"google":s.search(vr+"bing.com")===0?"bing":s.search(vr+"yahoo.com")===0?"yahoo":s.search(vr+"duckduckgo.com")===0?"duckduckgo":null:null})(t),n=e!="yahoo"?"q":"p",i={};if(!Ve(e)){i.$search_engine=e;var r=F?ni(F.referrer,n):"";r.length&&(i.ph_keyword=r)}return i}function Hc(){return navigator.language||navigator.userLanguage}var rs="$direct";function vf(){return F?.referrer||rs}function _f(t,e,n){n===void 0&&(n=!1);var i=t?[...ii,...e||[]]:[],r=n?dn(me?.href):me?.href,s=r?.substring(0,1e3);return{r:vf().substring(0,1e3),u:s?Ji(s,i,Zi):void 0}}function yf(t,e){var n;e===void 0&&(e=!1);var i=t.r,r=t.u,s=e?dn(r):r,o={$referrer:i,$referring_domain:i==null?void 0:i==rs?rs:(n=ns(i))==null?void 0:n.host};if(s){o.$current_url=s;var a=ns(s);o.$host=a?.host,o.$pathname=a?.pathname;var l=gf(s);fe(o,l)}if(i){var u=mf(i);fe(o,u)}return o}function wf(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{return}}function Yg(){try{return new Date().getTimezoneOffset()}catch{return}}var Jg={flags:Di,surveys:Yr},Zg=["cookie","localstorage","localstorage+cookie","sessionstorage","memory"],Un="main";class xo{constructor(e,n,i){if(i===void 0&&(i=!0),this.ci={},this.fi=!1,this.pi=!1,this.Ne=e,this.gi=i,this.props={},this.mi=void 0,this.yi=(s=>{var o="";return s.token&&(o=s.token.replace(/\+/g,"PL").replace(/\//g,"SL").replace(/=/g,"EQ")),s.persistence_name?"ph_"+s.persistence_name:"ph_"+o+"_posthog"})(e),this.ii=this.bi(e),this.pi=this.wi(e),this.load(),e.debug&&A.info("Persistence loaded",e.persistence,k({},this.props)),this.update_config(e,e,n),this.save(),w){var r=()=>this.flush();ve(w,"beforeunload",r,{capture:!1}),ve(w,"pagehide",r,{capture:!1})}}ki(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return ke(n)&&n>0?n:0}isDisabled(){return!!this.xi}bi(e){Zg.indexOf(e.persistence.toLowerCase())===-1&&(A.critical("Unknown persistence type "+e.persistence+"; falling back to localStorage+cookie"),e.persistence="localStorage+cookie");var n,i=(function(o,a){o===void 0&&(o=[]),a===void 0&&(a=!1);var l=[...Pg,...o];return k({},le,{H(u){try{var c={};try{c=Wt.H(u)||{}}catch{}var d,f=JSON.parse(le.P(u)||"{}");if(a){var h={};for(var p in c){var g=c[p];Ve(g)||g===""||(h[p]=g)}d=fe(f,h)}else d=fe(c,f);return le.F(u,d),d}catch{}return null},F(u,c,d,f,h,p){var g=le.F(u,c,void 0,void 0,p);try{var m={};l.forEach((v=>{c[v]&&(m[v]=c[v])})),Object.keys(m).length&&Wt.F(u,m,d,f,h,p)}catch(v){le.j(v)}return g},q(u,c){try{w?.localStorage.removeItem(u),Wt.q(u,c)}catch(d){le.j(d)}}})})(e.cookie_persisted_properties||[],e.__preview_cookie_wins_on_conflict||!1),r=!1,s=e.persistence.toLowerCase();return s==="localstorage"&&le.N()?(n=le,r=!0):s==="localstorage+cookie"&&i.N()?(n=i,r=!0):s==="sessionstorage"&&be.N()?n=be:s==="memory"?n=Fg:s==="cookie"?n=Wt:i.N()?(n=i,r=!0):n=Wt,this.fi=r,n}Si(e){return this.yi+"__"+e}wi(e){return this.fi&&!!e.split_storage}properties(){var e={};return ie(this.props,((n,i)=>{var r=_n(i);if(!r||r.exposure==="event"){if(r!=null&&r.shouldSkipFromEventProperties!=null&&r.shouldSkipFromEventProperties(n))return;e[i]=n}})),e}load(){if(!this.xi){var e=this.ii.H(this.yi);e&&(this.props=fe({},e)),this.pi&&this.Ci()}}Ci(){for(var e of So){var n=le.H(this.Si(e));if(n&&!Vt(n)){var i=this.Mi(e);i.persisted=!0,this.Ti(e)||(i.fingerprint=this.Ei(n,e)),this.Ii(e,n)||fe(this.props,n)}}}Ti(e){return Object.keys(this.props).some((n=>{var i;return((i=_n(n))==null?void 0:i.storageGroup)===e}))}Ii(e,n){var i=Jg[e];if(!i)return!1;var r=n[i],s=this.props[i];return ke(r)&&ke(s)&&s>r}refreshKey(e){var n;if(!this.xi){var i=this.pi?(n=_n(e))==null?void 0:n.storageGroup:void 0,r=i?le.H(this.Si(i)):this.ii.H(this.yi);if(r&&e in r)this.Pi(e,r[e]);else{if(i){var s=this.ii.H(this.yi);if(s&&e in s)return void this.Pi(e,s[e])}this.Ri(e)}}}save(){if(!this.xi){var e=this.ki();e>0?C(this.Ai)&&(this.Ai=setTimeout((()=>{this.Ai=void 0,this.Fi()}),e)):this.Fi()}}flush(){C(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0,this.Fi())}Fi(){this.xi||(this.pi?this.Li():this.Oi(this.ii,this.yi,this.props,Un))}Li(){var e=this.Di(),n=e.main,i=e.groups;for(var r of(this.Oi(this.ii,this.yi,n,Un),So)){var s,o=i[r];(!Vt(o)||(s=this.ci[r])!=null&&s.persisted)&&this.Oi(le,this.Si(r),o,r)}}Di(){var e={},n={flags:{},surveys:{}};return ie(this.props,((i,r)=>{var s,o=(s=_n(r))==null?void 0:s.storageGroup;o?n[o][r]=i:e[r]=i})),{main:e,groups:n}}Ei(e,n){if(n===Un)return JSON.stringify(e)+"|"+this.$i+"|"+this.Ni+"|"+this.qi;var i={};return ie(e,((r,s)=>{var o;i[s]=(o=_n(s))!=null&&o.volatile?"__volatile__":r})),JSON.stringify(i)}Oi(e,n,i,r){var s=this.Mi(r);if(r===Un||s.dirty||C(s.fingerprint)){var o;try{if((o=this.Ei(i,r))===s.fingerprint)return void(s.dirty=!1)}catch{o=void 0}e.F(n,i,this.$i,this.Ni,this.qi,this.Ne.debug)?(s.dirty=!1,r!==Un&&(s.persisted=!0),C(o)||(s.fingerprint=o)):this.Ne.debug&&A.warn('failed to persist storage entry "'+n+'"; will retry on next save')}}remove(e){var n=(e===void 0?{}:e).keepGroupEntries,i=n!==void 0&&n;if(C(this.Ai)||(clearTimeout(this.Ai),this.Ai=void 0),this.ii.q(this.yi,!1),this.ii.q(this.yi,!0),!i&&this.gi)for(var r of So)le.q(this.Si(r));i?delete this.ci[Un]:this.ci={}}clear(){this.remove(),this.props={}}register_once(e,n,i){if(he(e)){C(n)&&(n="None"),this.$i=C(i)?this.ji:i;var r=!1;if(ie(e,((s,o)=>{this.props.hasOwnProperty(o)&&this.props[o]!==n||(this.Pi(o,s),r=!0)})),r)return this.save(),!0}return!1}register(e,n){if(he(e)){this.$i=C(n)?this.ji:n;var i=!1;if(ie(e,((r,s)=>{e.hasOwnProperty(s)&&(this.props[s]!==r||he(r)||U(r))&&(this.Pi(s,r),i=!0)})),i)return this.save(),!0}return!1}unregister(e){var n=typeof e=="string"?[e]:e,i=!1;for(var r of n)r in this.props&&(this.Ri(r),i=!0);i&&this.save()}update_campaign_params(){var e=F?.URL;if(e!==this.mi){var n=pf(this.Ne.custom_campaign_params,this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties);Vt(ll(n))||this.register(n),this.mi=e}}update_search_keyword(){var e;this.register((e=F?.referrer)?mf(e):{})}update_referrer_info(){var e;this.register_once({$referrer:vf(),$referring_domain:F!=null&&F.referrer&&((e=ns(F.referrer))==null?void 0:e.host)||rs},void 0)}set_initial_person_info(){this.props[fa]||this.props[ha]||this.register_once({[Jr]:_f(this.Ne.mask_personal_data_properties,this.Ne.custom_personal_data_properties,this.Ne.disable_capture_url_hashes)},void 0)}get_initial_props(){var e={};ie([ha,fa],(r=>{var s=this.props[r];s&&ie(s,(function(o,a){e["$initial_"+Go(a)]=o}))}));var n=this.props[Jr];if(n){var i=(function(r,s){s===void 0&&(s=!1);var o=yf(r,s),a={};return ie(o,(function(l,u){a["$initial_"+Go(u)]=l})),a})(n,this.Ne.disable_capture_url_hashes);fe(e,i)}return e}safe_merge(e){return ie(this.props,(function(n,i){i in e||(e[i]=n)})),e}update_config(e,n,i){this.ji=this.$i=e.cookie_expiration,this.set_disabled(e.disable_persistence||!!i),this.set_cross_subdomain(e.cross_subdomain_cookie),this.set_secure(e.secure_cookie);var r=e.persistence!==n.persistence||!((l,u)=>{if(l.length!==u.length)return!1;var c=[...l].sort(),d=[...u].sort();return c.every(((f,h)=>f===d[h]))})(e.cookie_persisted_properties||[],n.cookie_persisted_properties||[]),s=r?this.bi(e):this.ii,o=this.wi(e);if(r||o!==this.pi){var a=this.props;this.clear(),this.ii=s,this.pi=o,this.props=a,this.save()}}set_disabled(e){this.xi=e,this.xi?this.remove():this.save()}set_cross_subdomain(e){e!==this.Ni&&(this.Ni=e,this.remove({keepGroupEntries:!0}),this.save())}set_secure(e){e!==this.qi&&(this.qi=e,this.remove({keepGroupEntries:!0}),this.save())}set_event_timer(e,n){var i=this.props[Fi]||{};i[e]=n,this.Pi(Fi,i),this.save()}remove_event_timer(e){var n=this.props[Fi]||{},i=n[e];return C(i)||(delete n[e],this.Pi(Fi,n),this.save()),i}get_property(e){return this.props[e]}set_property(e,n){this.Pi(e,n),this.save()}Pi(e,n){var i;this.props[e]=n,(i=_n(e))!=null&&i.volatile||this.Bi(e)}Ri(e){delete this.props[e],this.Bi(e)}Bi(e){var n,i=(n=_n(e))==null?void 0:n.storageGroup;i&&(this.Mi(i).dirty=!0)}Mi(e){return this.ci[e]||(this.ci[e]={})}}function _r(t){var e=!0;return{dispose(){if(e){e=!1;var n=t();n&&De(n.then)&&n.then(void 0,(()=>{}))}}}}var je={GZipJS:"gzip-js",Base64:"base64"},yi={Activation:"events",Cancellation:"cancelEvents"},Io={Popover:"popover",API:"api",Widget:"widget"},zt={SHOWN:"survey shown",DISMISSED:"survey dismissed",SENT:"survey sent"},ko={SURVEY_ID:"$survey_id",SURVEY_ITERATION:"$survey_iteration",SURVEY_LAST_SEEN_DATE:"$survey_last_seen_date"},_a={Popover:"popover",Inline:"inline"},Xg={SHOWN:"product tour shown"},Wc={TOUR_LAST_SEEN_DATE:"$product_tour_last_seen_date",TOUR_TYPE:"$product_tour_type"},zc=pe("[RateLimiter]");class Qg{constructor(e){this.serverLimits={},this.lastEventRateLimited=!1,this.checkForLimiting=n=>{var i=n.text;if(i&&i.length)try{(JSON.parse(i).quota_limited||[]).forEach((r=>{zc.info((r||"events")+" is quota limited."),this.serverLimits[r]=new Date().getTime()+6e4}))}catch(r){return void zc.warn('could not rate limit - continuing. Error: "'+r?.message+'"',{text:i})}},this.instance=e,this.lastEventRateLimited=this.clientRateLimitContext(!0).isRateLimited}get captureEventsPerSecond(){var e;return((e=this.instance.config.rate_limiting)==null?void 0:e.events_per_second)||10}get captureEventsBurstLimit(){var e;return Math.max(((e=this.instance.config.rate_limiting)==null?void 0:e.events_burst_limit)||10*this.captureEventsPerSecond,this.captureEventsPerSecond)}clientRateLimitContext(e){var n,i,r;e===void 0&&(e=!1);var s=this.captureEventsBurstLimit,o=this.captureEventsPerSecond,a=new Date().getTime(),l=(n=(i=this.instance.persistence)==null?void 0:i.get_property(da))!==null&&n!==void 0?n:{tokens:s,last:a};l.tokens+=(a-l.last)/1e3*o,l.last=a,l.tokens>s&&(l.tokens=s);var u=1>l.tokens;if(u||e||(l.tokens=Math.max(0,l.tokens-1)),u&&!e){var c=(ke(l.dropped)?l.dropped:0)+1;l.dropped=c,!this.lastEventRateLimited&&this.Hi(c)&&(l.dropped=0)}return this.lastEventRateLimited=u,(r=this.instance.persistence)==null||r.set_property(da,l),{isRateLimited:u,remainingTokens:l.tokens}}Ui(e){var n=this.instance.config.property_denylist;return!U(n)||!n.includes(e)}zi(){var e;if(this.Ui("$current_url")&&this.Ui("$pathname")&&me!=null&&me.pathname)return""+((e=me.origin)!==null&&e!==void 0?e:"")+me.pathname}Hi(e){var n,i,r=this.captureEventsBurstLimit,s=this.captureEventsPerSecond,o=this.zi(),a=this.Ui("$session_id")?(n=(i=this.instance).get_session_id)==null?void 0:n.call(i):void 0,l=[e+" event(s) dropped since the last warning",o?"triggered on "+o:void 0,a?"session "+a:void 0].filter(Boolean).join(", ");return!!this.instance.capture("$$client_ingestion_warning",{$$client_ingestion_warning_message:"posthog-js client rate limited: "+l+". Config is set to "+s+" events per second and "+r+" events burst limit."},{skip_client_rate_limiting:!0})}isServerRateLimited(e){var n=this.serverLimits[e||"events"]||!1;return n!==!1&&new Date().getTime()e(this.remoteConfig))):e()}Vi(e){this._instance._send_request({method:"GET",url:this._instance.requestRouter.endpointFor("assets","/array/"+this._instance.config.token+"/config"),callback:e})}load(){try{if(this.remoteConfig)return sn.info("Using preloaded remote config",this.remoteConfig),this.Zi(this.remoteConfig),void this.Gi();if(this._instance.Qi())return void sn.warn("Remote config is disabled. Falling back to local config.");this.Wi((e=>{if(!e)return sn.info("No config found after loading remote JS config. Falling back to JSON."),void this.Vi((n=>{this.Zi(n.json,n),this.Gi()}));this.Zi(e),this.Gi()}))}catch(e){sn.error("Error loading remote config",e),this.Zi()}}stop(){this.Ki&&(clearInterval(this.Ki),this.Ki=void 0)}refresh(){!this._instance.Qi()&&F&&F.visibilityState!=="hidden"&&this._instance.reloadFeatureFlags()}Gi(){var e;if(!this.Ki){var n=(e=this._instance.config.remote_config_refresh_interval_ms)!==null&&e!==void 0?e:3e5;n!==0&&(this.Ki=setInterval((()=>{this.refresh()}),n))}}Zi(e,n){!e&&n&&(n.statusCode===0?n.error||sn.warn("Failed to fetch remote config from PostHog."):sn.error("Failed to fetch remote config from PostHog."));try{this._instance.Zi(e?{ok:!0,config:e}:{ok:!1})}catch(r){sn.error("Error applying remote config",r)}if(e?.hasFeatureFlags!==!1&&!this._instance.config.advanced_disable_feature_flags_on_first_load)try{var i;(i=this._instance.featureFlags)==null||i.ensureFlagsLoaded()}catch(r){sn.error("Error loading feature flags",r)}}}var lt=Uint8Array,qe=Uint16Array,ri=Uint32Array,fl=new lt([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),hl=new lt([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),qc=new lt([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Ef=function(t,e){for(var n=new qe(31),i=0;31>i;++i)n[i]=e+=1<i;++i)for(var s=n[i];n[i+1]>s;++s)r[s]=s-n[i]<<5|i;return[n,r]},Sf=Ef(fl,2),ya=Sf[1];Sf[0][28]=258,ya[258]=28;for(var Vc=Ef(hl,0)[1],xf=new qe(32768),_e=0;32768>_e;++_e){var Hn=(43690&_e)>>>1|(21845&_e)<<1;xf[_e]=((65280&(Hn=(61680&(Hn=(52428&Hn)>>>2|(13107&Hn)<<2))>>>4|(3855&Hn)<<4))>>>8|(255&Hn)<<8)>>>1}var Ui=function(t,e,n){for(var i=t.length,r=0,s=new qe(e);i>r;++r)++s[t[r]-1];var o,a=new qe(e);for(r=0;e>r;++r)a[r]=a[r-1]+s[r-1]<<1;for(o=new qe(i),r=0;i>r;++r)o[r]=xf[a[t[r]-1]++]>>>15-t[r];return o},Tn=new lt(288);for(_e=0;144>_e;++_e)Tn[_e]=8;for(_e=144;256>_e;++_e)Tn[_e]=9;for(_e=256;280>_e;++_e)Tn[_e]=7;for(_e=280;288>_e;++_e)Tn[_e]=8;var ss=new lt(32);for(_e=0;32>_e;++_e)ss[_e]=5;var em=Ui(Tn,9),tm=Ui(ss,5),If=function(t){return(t/8>>0)+(7&t&&1)},kf=function(t,e,n){(n==null||n>t.length)&&(n=t.length);var i=new(t instanceof qe?qe:t instanceof ri?ri:lt)(n-e);return i.set(t.subarray(e,n)),i},Nt=function(t,e,n){var i=e/8>>0;t[i]|=n<<=7&e,t[i+1]|=n>>>8},wi=function(t,e,n){var i=e/8>>0;t[i]|=n<<=7&e,t[i+1]|=n>>>8,t[i+2]|=n>>>16},Co=function(t,e){for(var n=[],i=0;t.length>i;++i)t[i]&&n.push({s:i,f:t[i]});var r=n.length,s=n.slice();if(!r)return[new lt(0),0];if(r==1){var o=new lt(n[0].s+1);return o[n[0].s]=1,[o,1]}n.sort((function(x,I){return x.f-I.f})),n.push({s:-1,f:25001});var a=n[0],l=n[1],u=0,c=1,d=2;for(n[0]={s:-1,f:a.f+l.f,l:a,r:l};c!=r-1;)a=n[n[d].f>n[u].f?u++:d++],l=n[u!=c&&n[d].f>n[u].f?u++:d++],n[c++]={s:-1,f:a.f+l.f,l:a,r:l};var f=s[0].s;for(i=1;r>i;++i)s[i].s>f&&(f=s[i].s);var h=new qe(f+1),p=wa(n[c-1],h,0);if(p>e){i=0;var g=0,m=p-e,v=1<i;++i){var S=s[i].s;if(e>=h[S])break;g+=v-(1<>>=m;g>0;){var b=s[i].s;e>h[b]?g-=1<=0&&g;--i){var _=s[i].s;h[_]==e&&(--h[_],++g)}p=e}return[new lt(h),p]},wa=function(t,e,n){return t.s==-1?Math.max(wa(t.l,e,n+1),wa(t.r,e,n+1)):e[t.s]=n},Gc=function(t){for(var e=t.length;e&&!t[--e];);for(var n=new qe(++e),i=0,r=t[0],s=1,o=function(l){n[i++]=l},a=1;e>=a;++a)if(t[a]==r&&a!=e)++s;else{if(!r&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(r),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(r);s=1,r=t[a]}return[n.subarray(0,i),e]},bi=function(t,e){for(var n=0,i=0;e.length>i;++i)n+=t[i]*e[i];return n},ba=function(t,e,n){var i=n.length,r=If(e+2);t[r]=255&i,t[r+1]=i>>>8,t[r+2]=255^t[r],t[r+3]=255^t[r+1];for(var s=0;i>s;++s)t[r+s+4]=n[s];return 8*(r+4+i)},Kc=function(t,e,n,i,r,s,o,a,l,u,c){Nt(e,c++,n),++r[256];for(var d=Co(r,15),f=d[0],h=d[1],p=Co(s,15),g=p[0],m=p[1],v=Gc(f),S=v[0],b=v[1],_=Gc(g),x=_[0],I=_[1],T=new qe(19),E=0;S.length>E;++E)T[31&S[E]]++;for(E=0;x.length>E;++E)T[31&x[E]]++;for(var P=Co(T,7),$=P[0],O=P[1],L=19;L>4&&!$[qc[L-1]];--L);var N,G,V,M,R=u+5<<3,Z=bi(r,Tn)+bi(s,ss)+o,Ce=bi(r,f)+bi(s,g)+o+14+3*L+bi(T,$)+(2*T[16]+3*T[17]+7*T[18]);if(Z>=R&&Ce>=R)return ba(e,c,t.subarray(l,l+u));if(Nt(e,c,1+(Z>Ce)),c+=2,Z>Ce){N=Ui(f,h),G=f,V=Ui(g,m),M=g;var oe=Ui($,O);for(Nt(e,c,b-257),Nt(e,c+5,I-1),Nt(e,c+10,L-4),c+=14,E=0;L>E;++E)Nt(e,c+3*E,$[qc[E]]);c+=3*L;for(var ye=[S,x],$e=0;2>$e;++$e){var ae=ye[$e];for(E=0;ae.length>E;++E)Nt(e,c,oe[Ie=31&ae[E]]),c+=$[Ie],Ie>15&&(Nt(e,c,ae[E]>>>5&127),c+=ae[E]>>>12)}}else N=em,G=Tn,V=tm,M=ss;for(E=0;a>E;++E)if(i[E]>255){var Ie;wi(e,c,N[257+(Ie=i[E]>>>18&31)]),c+=G[Ie+257],Ie>7&&(Nt(e,c,i[E]>>>23&31),c+=fl[Ie]);var Se=31&i[E];wi(e,c,V[Se]),c+=M[Se],Se>3&&(wi(e,c,i[E]>>>5&8191),c+=hl[Se])}else wi(e,c,N[i[E]]),c+=G[i[E]];return wi(e,c,N[256]),c+G[256]},nm=new ri([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),im=(function(){for(var t=new ri(256),e=0;256>e;++e){for(var n=e,i=9;--i;)n=(1&n&&3988292384)^n>>>1;t[e]=n}return t})(),Ao=function(t,e,n){for(;n;++e)t[e]=n,n>>>=8};function rm(t,e){e===void 0&&(e={});var n=(function(){var d=4294967295;return{p(f){for(var h=d,p=0;f.length>p;++p)h=im[255&h^f[p]]^h>>>8;d=h},d(){return 4294967295^d}}})(),i=t.length;n.p(t);var r,s,o,a,l,u=(a=10+((r=e).filename&&r.filename.length+1||0),l=8,(function(d,f,h,p,g,m){var v=d.length,S=new lt(p+v+5*(1+Math.floor(v/7e3))+g),b=S.subarray(p,S.length-g),_=0;if(!f||8>v)for(var x=0;v>=x;x+=65535){var I=x+65535;v>I?_=ba(b,_,d.subarray(x,I)):(b[x]=!0,_=ba(b,_,d.subarray(x,v)))}else{for(var T=nm[f-1],E=T>>>13,P=8191&T,$=(1<x;++x){var Ie=V(x),Se=32767&x,Be=L[Ie];if(O[Se]=Be,L[Ie]=Se,x>=$e){var yt=v-x;if((Ce>7e3||ye>24576)&&yt>423){_=Kc(d,b,0,M,R,Z,oe,ye,ae,x-ae,_),ye=Ce=oe=0,ae=x;for(var ge=0;286>ge;++ge)R[ge]=0;for(ge=0;30>ge;++ge)Z[ge]=0}var Ye=2,wt=0,gn=P,Re=Se-Be&32767;if(yt>2&&Ie==V(x-Re))for(var Pe=Math.min(E,yt)-1,Tt=Math.min(32767,x),On=Math.min(258,yt);Tt>=Re&&--gn&&Se!=Be;){if(d[x+Ye]==d[x+Ye-Re]){for(var He=0;On>He&&d[x+He]==d[x+He-Re];++He);if(He>Ye){if(Ye=He,wt=Re,He>Pe)break;var Bn=Math.min(Re,He-2),$t=0;for(ge=0;Bn>ge;++ge){var Mt=x-Re+ge+32768&32767,ct=Mt-O[Mt]+32768&32767;ct>$t&&($t=ct,Be=Mt)}}}Re+=(Se=Be)-(Be=O[Se])+32768&32767}if(wt){M[ye++]=268435456|ya[Ye]<<18|Vc[wt];var nn=31&ya[Ye],pi=31&Vc[wt];oe+=fl[nn]+hl[pi],++R[257+nn],++Z[pi],$e=x+Ye,++Ce}else M[ye++]=d[x],++R[d[x]]}}_=Kc(d,b,!0,M,R,Z,oe,ye,ae,x-ae,_)}return kf(S,0,p+If(_)+g)})(s=t,(o=e).level==null?6:o.level,o.mem==null?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(s.length)))):12+o.mem,a,l)),c=u.length;return(function(d,f){var h=f.filename;if(d[0]=31,d[1]=139,d[2]=8,d[8]=2>f.level?4:f.level==9?2:0,d[9]=3,f.mtime!=0&&Ao(d,4,Math.floor(new Date(f.mtime||Date.now())/1e3)),h){d[3]=8;for(var p=0;h.length>=p;++p)d[p+10]=h.charCodeAt(p)}})(u,e),Ao(u,c-8,n.d()),Ao(u,c-4,i),u}var sm=!!zo||!!Za,Cf="text/plain",Rr=!1,Af=(t,e)=>{var n=t.split("#"),i=n[1],r=n[0].split("?"),s=r[0],o=r[1];if(!o)return t;var a=o.split("&").filter((l=>l.split("=")[0]!==e)).join("&");return s+(a?"?"+a:"")+(i?"#"+i:"")},Is=function(t,e,n){var i;n===void 0&&(n=!0);var r=t.split("?"),s=r[0],o=r[1],a=k({},e),l=(i=o?.split("&").map((c=>{var d,f=c.split("="),h=f[0],p=n&&(d=a[h])!==null&&d!==void 0?d:f[1];return delete a[h],h+"="+p})))!==null&&i!==void 0?i:[],u=(function(c,d){var f,h;d===void 0&&(d="&");var p=[];return ie(c,(function(g,m){C(g)||C(m)||m==="undefined"||(f=encodeURIComponent((v=>v instanceof File)(g)?g.name:g.toString()),h=encodeURIComponent(m),p[p.length]=h+"="+f)})),p.join(d)})(a);return u&&l.push(u),l.length>0?s+"?"+l.join("&"):s},Po=t=>{if(t.Ji)return t.Ji;var e=t.data,n=t.compression;if(e){if(n===je.GZipJS){var i=rm((function(a,l){var u=a.length;if(typeof TextEncoder<"u")return new TextEncoder().encode(a);for(var c=new lt(a.length+(a.length>>>1)),d=0,f=function(m){c[d++]=m},h=0;u>h;++h){if(d+5>c.length){var p=new lt(d+8+(u-h<<1));p.set(c),c=p}var g=a.charCodeAt(h);128>g?f(g):2048>g?(f(192|g>>>6),f(128|63&g)):g>55295&&57344>g?(f(240|(g=65536+(1047552&g)|1023&a.charCodeAt(++h))>>>18),f(128|g>>>12&63),f(128|g>>>6&63),f(128|63&g)):(f(224|g>>>12),f(128|g>>>6&63),f(128|63&g))}return kf(c,0,d)})(Kn(e)),{mtime:0});return{contentType:Cf,body:i.buffer.slice(i.byteOffset,i.byteOffset+i.byteLength),estimatedSize:i.byteLength}}if(n===je.Base64){var r=(function(a){return a&&btoa(encodeURIComponent(a).replace(/%([0-9A-F]{2})/g,((l,u)=>String.fromCharCode(parseInt(u,16)))))})(Kn(e)),s=(a=>"data="+encodeURIComponent(typeof a=="string"?a:Kn(a)))(r);return{contentType:"application/x-www-form-urlencoded",body:s,estimatedSize:new Blob([s]).size}}var o=Kn(e);return{contentType:"application/json",body:o,estimatedSize:new Blob([o]).size}}},Pf=t=>{var e,n,i=()=>t.transport==="sendBeacon"?{url:Is(t.url,{compression:je.Base64}),encodedBody:Po(k({},t,{compression:je.Base64,Ji:void 0}))}:{url:Af(t.url,"compression"),encodedBody:Po(k({},t,{compression:void 0,Ji:void 0}))};try{e=Po(t)}catch(r){if(pc(t.compression,ni(t.url,"compression")))return A.error("Failed to gzip request body, sending uncompressed payload",r),i();throw r}return e&&pc(t.compression,ni(t.url,"compression"))&&!((n=e.body)instanceof ArrayBuffer?qo(new Uint8Array(n)):ArrayBuffer.isView(n)&&qo(new Uint8Array(n.buffer,n.byteOffset,n.byteLength)))?(Rr=!0,i()):{url:t.url,encodedBody:e}},Ff=t=>{try{return Pf(t)}catch(e){return A.error(e),void(t.callback==null||t.callback({statusCode:0,error:e}))}},om=(function(){var t=se((function*(e){var n=Kn(e.data),i=yield(function(s,o,a){return Vo.apply(this,arguments)})(n,ne.DEBUG,{rethrow:!0});if(!i)return e;var r=yield i.arrayBuffer();return k({},e,{Ji:{contentType:Cf,body:r,estimatedSize:r.byteLength}})}));return function(e){return t.apply(this,arguments)}})(),am=/Failed to fetch|NetworkError|Load failed/i,Rf=t=>t?.name==="TypeError"&&am.test(t?.message||""),Tf=t=>{var e=Ff(t);if(e){var n=e.url,i=e.encodedBody,r=i??{},s=r.contentType,o=r.body,a=r.estimatedSize,l=new Headers;ie(t.headers,(function(p,g){l.append(g,p)})),s&&l.append("Content-Type",s);var u=null,c=!1;if(lc){var d=new lc;u={signal:d.signal,timeout:setTimeout((()=>{var p,g;c=!0,d.abort((p=t.timeout,(g=new Error("PostHog request timed out"+(p?" after "+p+"ms":""))).name="AbortError",g))}),t.timeout)}}var f=p=>{c&&p?.name==="AbortError"||Rf(p)?A.warn(p):A.error(p),t.callback==null||t.callback({statusCode:0,error:p})};try{var h;Za(n,k({method:t?.method||"GET",headers:l,keepalive:t.method==="POST"&&!t.Yi&&52428.8>(a||0),body:o,signal:(h=u)==null?void 0:h.signal},t.fetchOptions)).then((p=>p.text().then((g=>{var m={statusCode:p.status,text:g};if(p.status===200)try{m.json=JSON.parse(g)}catch(v){A.error(v)}t.callback==null||t.callback(m)})))).catch(f).finally((()=>u?clearTimeout(u.timeout):null))}catch(p){u&&clearTimeout(u.timeout),f(p)}}},Ea=t=>{try{var e,n=Pf(t),i=n.url,r=n.encodedBody,s=r??{},o=s.body,a=s.estimatedSize;if(!o)return;var l=o instanceof Blob?o:new Blob([o],{type:s.contentType});if(Ue.sendBeacon(i,l))return;var u=U(t.data)?t.data:(e=t.data)==null?void 0:e.batch;if(U(u)&&u.length>1&&(a??0)>16384){var c=Math.ceil(u.length/2),d=f=>U(t.data)?f:k({},t.data,{batch:f});return Ea(k({},t,{data:d(u.slice(0,c))})),void Ea(k({},t,{data:d(u.slice(c))}))}A.warn("Beacon of ~"+(a??0)+" bytes was rejected by the browser, falling back to fetch"),Tf(k({},t,{Yi:!0}))}catch(f){A.warn("Beacon send failed",f)}},Yc=(t,e,n,i)=>{var r=i==="query"?e==="POST"?"sent_at":"_":void 0;return Is(n===je.GZipJS?Af(t,"compression"):t,k({},r?{[r]:Date.now().toString()}:{},n===je.GZipJS?{}:{compression:n}))},Tr=[];Za&&Tr.push({transport:"fetch",method:Tf}),zo&&Tr.push({transport:"XHR",method(t){var e=Ff(t);if(e){var n=new zo,i=e.encodedBody;n.open(t.method||"GET",e.url,!0);var r=i??{},s=r.contentType,o=r.body;ie(t.headers,(function(a,l){n.setRequestHeader(l,a)})),s&&n.setRequestHeader("Content-Type",s),t.timeout&&(n.timeout=t.timeout),n.onreadystatechange=()=>{if(n.readyState===4){var a={statusCode:n.status,text:n.responseText};if(n.status===200)try{a.json=JSON.parse(n.responseText)}catch{}t.callback==null||t.callback(a)}},n.send(o)}}}),Ue!=null&&Ue.sendBeacon&&Tr.push({transport:"sendBeacon",method:Ea});var Sa=3e3;class lm{constructor(e,n){this.Xi=!0,this.tr=[],this.er=Ct(n?.flush_interval_ms||Sa,250,5e3,A.createLogger("flush interval"),Sa),this.ir=e}enqueue(e){this.tr.push(e),this.rr||this.nr()}unload(){this.sr();var e=this.tr.length>0?this.ar():{},n=Object.values(e);[...n.filter((i=>i.url.indexOf("/e")===0)),...n.filter((i=>i.url.indexOf("/e")!==0))].map((i=>{this.lr(k({},i,{transport:"sendBeacon"}))}))}enable(){this.Xi=!1,this.nr()}nr(){var e=this;this.Xi||(this.rr=setTimeout((()=>{if(this.sr(),this.tr.length>0){var n=this.ar(),i=function(){var s=n[r],o=new Date().getTime();s.data&&U(s.data)&&ie(s.data,(a=>{a.offset=Math.abs(a.timestamp-o),delete a.timestamp})),e.lr(s)};for(var r in n)i()}}),this.er))}lr(e){try{this.ir(e)}catch(n){A.error(n)}}sr(){clearTimeout(this.rr),this.rr=void 0}ar(){var e={};return ie(this.tr,(n=>{var i,r=n,s=(r?r.batchKey:null)||r.url;C(e[s])&&(e[s]=k({},r,{data:[]})),(i=e[s].data)==null||i.push(r.data)})),this.tr=[],e}}var cm=["retriesPerformedSoFar"];class um{constructor(e){this.ur=!1,this.hr=3e3,this.tr=[],this._instance=e,this.tr=[],this.dr=!0,!C(w)&&"onLine"in w.navigator&&(this.dr=w.navigator.onLine,this.vr=()=>{this.dr=!0,this.cr()},this.pr=()=>{this.dr=!1},ve(w,"online",this.vr),ve(w,"offline",this.pr))}get length(){return this.tr.length}retriableRequest(e){var n=e.retriesPerformedSoFar,i=sd(e,cm);Bt(n)&&(i.url=Is(i.url,{retry_count:n})),this._instance._send_request(k({},i,{callback:r=>{if(r.statusCode!==200&&(400>r.statusCode||r.statusCode>=500)){if((r.statusCode===0?3:10)>(n??0))return void this.At(k({retriesPerformedSoFar:n},i));r.statusCode===0&&A.warn("Request failed before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped retrying after "+(n??0)+" retries.")}i.callback==null||i.callback(r)}}))}At(e){var n=e.retriesPerformedSoFar||0;e.retriesPerformedSoFar=n+1;var i=(function(o){var a=3e3*Math.pow(2,o),l=a/2,u=Math.min(18e5,a),c=Math.random()-.5;return Math.ceil(u+c*(u-l))})(n),r=Date.now()+i;this.tr.push({retryAt:r,requestOptions:e});var s="Enqueued failed request for retry in "+i;navigator.onLine||(s+=" (Browser is offline)"),A.warn(s),this.ur||(this.ur=!0,this.gr())}gr(){if(this.mr&&clearTimeout(this.mr),this.tr.length===0)return this.ur=!1,void(this.mr=void 0);this.mr=setTimeout((()=>{this.dr&&this.tr.length>0&&this.cr(),this.gr()}),this.hr)}cr(){var e=Date.now(),n=[],i=this.tr.filter((s=>e>s.retryAt||(n.push(s),!1)));if(this.tr=n,i.length>0)for(var r of i)this.retriableRequest(r.requestOptions)}unload(){for(var e of(this.mr&&(clearTimeout(this.mr),this.mr=void 0),this.ur=!1,C(w)||(this.vr&&(w.removeEventListener("online",this.vr),this.vr=void 0),this.pr&&(w.removeEventListener("offline",this.pr),this.pr=void 0)),this.tr)){var n=e.requestOptions;try{this._instance._send_request(k({},n,{transport:"sendBeacon"}))}catch(i){A.error(i)}}this.tr=[]}}class dm{constructor(e){this.yr=()=>{var n,i,r,s;this.br||(this.br={});var o=this.scrollElement(),a=this.scrollY(),l=o?Math.max(0,o.scrollHeight-o.clientHeight):0,u=a+(o?.clientHeight||0),c=o?.scrollHeight||0;this.br.lastScrollY=Math.ceil(a),this.br.maxScrollY=Math.max(a,(n=this.br.maxScrollY)!==null&&n!==void 0?n:0),this.br.maxScrollHeight=Math.max(l,(i=this.br.maxScrollHeight)!==null&&i!==void 0?i:0),this.br.lastContentY=u,this.br.maxContentY=Math.max(u,(r=this.br.maxContentY)!==null&&r!==void 0?r:0),this.br.maxContentHeight=Math.max(c,(s=this.br.maxContentHeight)!==null&&s!==void 0?s:0)},this._instance=e}get _r(){return this._instance.config.scroll_root_selector}getContext(){return this.br}resetContext(){var e=this.br;return setTimeout(this.yr,0),e}startMeasuringScrollPosition(){ve(w,"scroll",this.yr,{capture:!0}),ve(w,"scrollend",this.yr,{capture:!0}),ve(w,"resize",this.yr)}scrollElement(){if(!this._r)return w?.document.documentElement;var e=U(this._r)?this._r:[this._r];for(var n of e){var i=w?.document.querySelector(n);if(i)return i}}wr(e){var n=e==="y"?"scrollTop":"scrollLeft";if(this._r){var i=this.scrollElement();return i&&i[n]||0}return w?e==="y"?w.scrollY||w.pageYOffset||w.document.documentElement.scrollTop||0:w.scrollX||w.pageXOffset||w.document.documentElement.scrollLeft||0:0}scrollY(){return this.wr("y")}scrollX(){return this.wr("x")}}var fm=t=>_f(t?.config.mask_personal_data_properties,t?.config.custom_personal_data_properties,t?.config.disable_capture_url_hashes);class Jc{constructor(e,n,i,r){this.kr=s=>{var o=this.Sr();if(!o||o.sessionId!==s){var a={sessionId:s,props:this.Cr(this._instance)};this.Mr.register({[ua]:a})}},this._instance=e,this.Tr=n,this.Mr=i,this.Cr=r||fm,this.Tr.onSessionId(this.kr)}Sr(){return this.Mr.props[ua]}getSetOnceProps(){var e,n=(e=this.Sr())==null?void 0:e.props;return n?"r"in n?yf(n,this._instance.config.disable_capture_url_hashes):{$referring_domain:n.referringDomain,$pathname:n.initialPathName,utm_source:n.utm_source,utm_campaign:n.utm_campaign,utm_medium:n.utm_medium,utm_content:n.utm_content,utm_term:n.utm_term}:{}}getSessionProps(){var e={};return ie(ll(this.getSetOnceProps()),((n,i)=>{i==="$current_url"&&(i="url"),e["$session_entry_"+Go(i)]=n})),e}}class pl{on(e,n){return this.Er[e]||(this.Er[e]=[]),this.Er[e].push(n),()=>{this.Er[e]=this.Er[e].filter((i=>i!==n))}}emit(e,n){for(var i of this.Er[e]||[])i(n);for(var r of this.Er["*"]||[])r(e,n)}constructor(){this.Er={}}}var Ei=pe("[SessionId]");class Zc{on(e,n){return this.Ir.on(e,n)}constructor(e,n,i){var r;if(this.Pr=null,this.Rr=[],this.Ar=void 0,this.Fr=!1,this.Ir=new pl,this.Lr=(u,c)=>!(!Bt(u)||!Bt(c))&&Math.abs(u-c)>this.sessionTimeoutMs,!e.persistence)throw new Error("SessionIdManager requires a PostHogPersistence instance");if(e.config.cookieless_mode===Ht)throw new Error('SessionIdManager cannot be used with cookieless_mode="always"');this.Ne=e.config,this.Mr=e.persistence,this.Or=void 0,this.Dr=void 0,this._sessionStartTimestamp=null,this._sessionActivityTimestamp=null,this.$r=n||Ut,this.Nr=i||Ut;var s=this.Ne.persistence_name||this.Ne.token;if(this._sessionTimeoutMs=1e3*Ct(this.Ne.session_idle_timeout_seconds||1800,60,36e3,Ei.createLogger("session_idle_timeout_seconds"),1800),e.register({$configured_session_timeout_ms:this._sessionTimeoutMs}),this.qr(),this.jr="ph_"+s+"_window_id",this.Br="ph_"+s+"_primary_window_exists",this.Hr()){var o=be.H(this.jr),a=be.H(this.Br);o&&!a?this.Or=o:be.q(this.jr),be.F(this.Br,!0)}if((r=this.Ne.bootstrap)!=null&&r.sessionID)try{var l=(u=>{var c=this.Ne.bootstrap.sessionID.replace(/-/g,"");if(c.length!==32)throw new Error("Not a valid UUID");if(c[12]!=="7")throw new Error("Not a UUIDv7");return parseInt(c.substring(0,12),16)})();this.Ur(this.Ne.bootstrap.sessionID,new Date().getTime(),l)}catch(u){Ei.error("Invalid sessionID in bootstrap",u)}this.zr()}get sessionTimeoutMs(){return this._sessionTimeoutMs}onSessionId(e){return C(this.Rr)&&(this.Rr=[]),this.Rr.push(e),this.Dr&&e(this.Dr,this.Or),()=>{this.Rr=this.Rr.filter((n=>n!==e))}}Hr(){return this.Ne.persistence!=="memory"&&!this.Mr.xi&&be.N()}Wr(e){e!==this.Or&&(this.Or=e,this.Hr()&&be.F(this.jr,e))}Vr(){return this.Or?this.Or:this.Hr()?be.H(this.jr):null}Zr(e){var n=this.Pr;return!Ve(n)&&!Ve(e)&&5e3>Math.abs(e-n)}Ur(e,n,i){var r=n!==this._sessionActivityTimestamp,s=!(e!==this.Dr||i!==this._sessionStartTimestamp);this._sessionStartTimestamp=i,this._sessionActivityTimestamp=n,this.Dr=e,s&&!r||s&&this.Zr(n)||(this.Pr=n,this.Mr.register({[Gn]:[n,e,i]}))}Gr(){var e,n=(e=this.Ne)==null?void 0:e.persistence_save_debounce_ms;return Bt(n)&&n>0}Qr(){this.Gr()?this.Mr.refreshKey(Gn):(this.Mr.flush(),this.Mr.load())}Kr(){var e;if(!Ve(this._sessionActivityTimestamp)&&this._sessionActivityTimestamp!==this.Pr){this.Qr();var n=this.Jr();n[1]===this.Dr&&n[2]===this._sessionStartTimestamp&&(this.Pr=this._sessionActivityTimestamp,this.Mr.register({[Gn]:[this._sessionActivityTimestamp,(e=this.Dr)!==null&&e!==void 0?e:null,this._sessionStartTimestamp]}),this.Mr.flush())}}Yr(){var e=this.Jr()[0],n=Bt(e)?e:0,i=Bt(this._sessionActivityTimestamp)?this._sessionActivityTimestamp:0;return Math.max(n,i)}Xr(e){return this.Qr(),this.Lr(e,this.Yr())}Jr(){var e=this.Mr.props[Gn];return U(e)&&e.length===2&&e.push(e[0]),e||[0,null,0]}resetSessionId(){this.Pr=null,clearTimeout(this.tn),this.tn=void 0,this.Ur(null,null,null)}destroy(){this.Fr=!0,this.Kr(),clearTimeout(this.tn),this.tn=void 0,this.Ar&&w&&(w.removeEventListener(Qr,this.Ar,{capture:!1}),this.Ar=void 0),this.Rr=[]}zr(){this.Ar=()=>{this.Kr(),this.Hr()&&be.q(this.Br)},ve(w,Qr,this.Ar,{capture:!1})}checkAndGetSessionAndWindowId(e,n){if(e===void 0&&(e=!1),n===void 0&&(n=null),this.Ne.cookieless_mode===Ht)throw new Error('checkAndGetSessionAndWindowId should not be called with cookieless_mode="always"');var i=n||new Date().getTime(),r=this.Jr(),s=r[1],o=r[2],a=this.Yr(),l=this.Vr(),u=Bt(o)&&Math.abs(i-o)>864e5,c=!1,d=!1,f=!s,h=s,p=!f&&!e&&this.Lr(i,a);if(p){(p=this.Xr(i))||Ei.info("cross-tab refresh kept the session alive",{sessionId:s});var g=this.Jr();s=g[1],o=g[2]}f||p||u?(s=this.$r(),l=this.Nr(),Ei.info("new session ID generated",{sessionId:s,windowId:l,changeReason:{noSessionId:f,activityTimeout:p,sessionPastMaximumLength:u}}),o=i,c=!0):(l||(l=this.Nr(),c=!0),(d=s!==h)&&(Ei.info("adopted cross-tab session id",{sessionId:s,windowId:l}),c=!0));var m=Bt(a)&&e&&!u?a:i,v=Bt(o)?o:new Date().getTime();this.Wr(l),this.Ur(s,m,v),e||this.qr();var S={noSessionId:f,activityTimeout:p,sessionPastMaximumLength:u,crossTabAdoption:d};return c&&this.Rr.forEach((b=>b(s,l,S))),{sessionId:s,windowId:l,sessionStartTimestamp:v,changeReason:c?S:void 0,lastActivityTimestamp:a}}qr(){this.Fr||(clearTimeout(this.tn),this.tn=setTimeout((()=>{if(!this.Fr)if(this.Xr(new Date().getTime())){var e=this.Dr;this.resetSessionId(),this.Ir.emit("forcedIdleReset",{idleSessionId:e})}else this.qr()}),1.1*this.sessionTimeoutMs))}}var $f=function(t,e){if(!t)return!1;var n=t.userAgent;if(n&&mc(n,e))return!0;try{var i=t?.userAgentData;if(i!=null&&i.brands&&i.brands.some((r=>mc(r?.brand,e))))return!0}catch{}return!!t.webdriver};function Mf(){return(Mf=se((function*(){var t=Ue?.userAgentData;if(t!=null&&t.getHighEntropyValues)try{var e=yield t.getHighEntropyValues(["model"]),n=e?.model;return X(n)&&n.length>0?n:void 0}catch(i){return void A.info("Unable to resolve $device_model from userAgentData.getHighEntropyValues",i)}}))).apply(this,arguments)}var os=function(t,e){if(!(function(n){try{new RegExp(n)}catch{return!1}return!0})(e))return!1;try{return new RegExp(e).test(t)}catch{return!1}};function Fo(t,e,n){return Kn({distinct_id:t,userPropertiesToSet:e,userPropertiesToSetOnce:n})}var Lf={exact:(t,e)=>e.some((n=>t.some((i=>n===i)))),is_not:(t,e)=>e.every((n=>t.every((i=>n!==i)))),regex:(t,e)=>e.some((n=>t.some((i=>os(n,i))))),not_regex:(t,e)=>e.every((n=>t.every((i=>!os(n,i))))),icontains:(t,e)=>e.map(yr).some((n=>t.map(yr).some((i=>n.includes(i))))),not_icontains:(t,e)=>e.map(yr).every((n=>t.map(yr).every((i=>!n.includes(i))))),gt:(t,e)=>e.some((n=>{var i=parseFloat(n);return!isNaN(i)&&t.some((r=>i>parseFloat(r)))})),lt:(t,e)=>e.some((n=>{var i=parseFloat(n);return!isNaN(i)&&t.some((r=>it.toLowerCase();function Nf(t,e){return!t||Object.entries(t).every((n=>{var i=n[1],r=e?.[n[0]];if(C(r)||Ve(r))return!1;var s=[String(r)],o=Lf[i.operator];return!!o&&o(i.values,s)}))}var xa="custom",Xc="i.posthog.com",hm=/^\/static\//;class pm{constructor(e){this.en={},this.instance=e}get apiHost(){var e=this.instance.config.api_host.trim().replace(/\/$/,"");return e==="https://app.posthog.com"?"https://us.i.posthog.com":e}get flagsApiHost(){var e=this.instance.config.flags_api_host;return e?e.trim().replace(/\/$/,""):this.apiHost}get uiHost(){var e,n=(e=this.instance.config.ui_host)==null?void 0:e.replace(/\/$/,"");return n||(n=this.apiHost.replace("."+Xc,".posthog.com")),n==="https://app.posthog.com"?"https://us.posthog.com":n}get region(){return this.en[this.apiHost]||(this.en[this.apiHost]=/https:\/\/(app|us|us-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"us":/https:\/\/(eu|eu-assets)(\.i)?\.posthog\.com/i.test(this.apiHost)?"eu":xa),this.en[this.apiHost]}rn(e){if(hm.test(e)){var n=this.instance.config.asset_host;if(typeof n=="string")return n.trim().replace(/\/$/,"")||void 0}}endpointFor(e,n){if(n===void 0&&(n=""),n&&(n=n[0]==="/"?n:"/"+n),e==="ui")return this.uiHost+n;if(e==="flags")return this.flagsApiHost+n;if(e==="assets"){var i=this.rn(n);if(i)return""+i+n}if(this.region===xa)return this.apiHost+n;var r=Xc+n;switch(e){case"assets":return"https://"+this.region+"-assets."+r;case"api":return"https://"+this.region+"."+r}}}function Of(t){var e;return!((e=t.conditions)==null||(e=e.events)==null||(e=e.values)==null||!e.length)}var Q=pe("[Surveys]"),Bf="seenSurvey_",Df=t=>{try{var e=(n=>((i,r)=>""+Bf+(function(s){return s.current_iteration&&s.current_iteration>0?s.id+"_"+s.current_iteration:s.id})(r))(0,n))(t);if(localStorage.getItem(e))return;localStorage.setItem(e,"true")}catch(n){Q.error("Failed to persist survey seen state",n)}},gm=[Io.Popover,Io.Widget,Io.API],mm={ignoreConditions:!1,ignoreDelay:!1,displayType:_a.Popover},vm=pe("[PostHog ExternalIntegrations]"),_m={intercom:"intercom-integration",crispChat:"crisp-chat-integration"};class ym{constructor(e){this._instance=e}ai(e,n){var i;(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this._instance,e,(r=>{if(r)return vm.error("failed to load script",r);n()}))}startIfEnabledOrStop(){var e=this,n=function(){var s,o,a,l=i[0],u=i[1];!u||(s=B.__PosthogExtensions__)!=null&&(s=s.integrations)!=null&&s[l]||e.ai(_m[l],(()=>{var c;(c=B.__PosthogExtensions__)==null||(c=c.integrations)==null||(c=c[l])==null||c.start(e._instance)})),!u&&(o=B.__PosthogExtensions__)!=null&&(o=o.integrations)!=null&&o[l]&&((a=B.__PosthogExtensions__)==null||(a=a.integrations)==null||(a=a[l])==null||a.stop())};for(var i of Object.entries((r=this._instance.config.integrations)!==null&&r!==void 0?r:{})){var r;n()}}}class wm{constructor(e,n){this.rt=e,this.nn=n,this.sn=new Map,this.an=!1}add(e){var n=this;return se((function*(){if(n.an)throw new Error("Cannot add an extension to a disposed ExtensionRuntime");if(n.sn.has(e.name))throw new Error('Browser extension "'+e.name+'" is already registered');n.sn.set(e.name,e);try{var i=e.setup(n.nn);i&&(yield i)}catch(s){var r=n.sn.get(e.name)===e;r&&n.sn.delete(e.name),n.rt.error('Failed to set up browser extension "'+e.name+'"',s),r&&n.ln(e)}}))()}dispose(){if(!this.an){this.an=!0;var e=Array.from(this.sn.values()).reverse();for(var n of(this.sn.clear(),e))this.ln(n)}}ln(e){try{var n=e.dispose==null?void 0:e.dispose();n&&De(n.then)&&n.then(void 0,(i=>{this.rt.error('Failed to dispose browser extension "'+e.name+'"',i)}))}catch(i){this.rt.error('Failed to dispose browser extension "'+e.name+'"',i)}}}class bm{constructor(e){this._instance=e}initialize(){}get(e){var n=this._instance.persistence;if(typeof e=="string")return n?.get_property(e);var i={};for(var r of e){var s=n?.get_property(r);C(s)||(i[r]=s)}return i}set(e,n){var i;(i=this._instance.persistence)==null||i.register(typeof e=="string"?{[e]:n}:e)}remove(e){var n;(n=this._instance.persistence)==null||n.unregister(e)}}var Qc="extensionsRemoteConfig";class Em{constructor(e){this.an=!1,this.instance=e,this.rt=A,this.un=e.hn,this.kv=new bm(e),this.onEvent=n=>_r(this.instance.on("eventCaptured",(i=>{try{n({event:i.event,properties:i.properties})}catch(r){this.rt.error("Browser extension event listener failed",r)}}))),this.onRemoteConfig=n=>{if(this.an)return _r((()=>{}));var i=s=>{try{n(s)}catch(o){this.rt.error("Browser extension remote config listener failed",o)}},r=this.instance.dn.on(Qc,i);return this.un&&i(this.un),_r(r)},this.vn=new wm(A.createLogger("[BrowserExtensions]"),this)}get logger(){return this.rt}get distinctId(){return this.instance.get_distinct_id()}get anonymousId(){var e;return(e=this.instance.get_property(Ki))!==null&&e!==void 0?e:this.distinctId}get deviceId(){var e=this.instance.get_property(Ki);return typeof e=="string"?e:void 0}get library(){return{name:ne.LIB_NAME,version:ne.LIB_VERSION}}get initialPersonProperties(){var e,n;return(e=(n=this.instance.persistence)==null?void 0:n.get_initial_props())!==null&&e!==void 0?e:{}}get groups(){return this.instance.getGroups()}get session(){try{var e,n,i,r,s=(e=this.instance.sessionManager)==null?void 0:e.checkAndGetSessionAndWindowId(!0);return{sessionId:(n=s?.sessionId)!==null&&n!==void 0?n:"",windowId:(i=s?.windowId)!==null&&i!==void 0?i:"",sessionStartTimestamp:(r=s?.sessionStartTimestamp)!==null&&r!==void 0?r:0}}catch{return{sessionId:"",windowId:"",sessionStartTimestamp:0}}}get projectToken(){return this.instance.config.token}add(e){return this.vn.add(e)}capture(e,n,i){var r=this;return se((function*(){i?r.instance.capture(e,n,{timestamp:i.timestamp,uuid:i.uuid,$set:i.set,$set_once:i.setOnce}):r.instance.capture(e,n)}))()}registerDynamicEventProperties(e){return _r(this.instance.cn(e))}handleRemoteConfig(e){this.an||(this.un=e,this.instance.dn.emit(Qc,e))}sendRequest(e,n){var i=this;return se((function*(){var r;n===void 0&&(n={});var s=i.instance.requestRouter.endpointFor((r=n.target)!==null&&r!==void 0?r:"api",e),o={method:n.method,url:n.query?Is(s,n.query):s,data:n.body,headers:n.headers,timeout:n.timeoutMs,fireCallbackOnDrop:!0,transport:n.transport,compression:n.compression,timestampMode:n.sentAt};return n.transport==="sendBeacon"?(i.instance._send_request(o),{statusCode:202}):new Promise((a=>{o.callback=a,i.instance._send_request(o)}))}))()}dispose(){this.an||(this.an=!0,this.vn.dispose())}}var Hi={},Ro=0,as=()=>{},eu='Consent opt in/out is not valid with cookieless_mode="always" and will be ignored',Si="Surveys module not available",tu="sanitize_properties is deprecated. Use before_send instead",jf="Invalid value for property_denylist config: ",Sm=["token","distinct_id",Vd],Vn="posthog",Uf=!sm&&ze?.indexOf("MSIE")===-1&&ze?.indexOf("Mozilla")===-1,To=t=>{var e;return k({api_host:"https://us.i.posthog.com",flags_api_host:null,ui_host:null,asset_host:null,token:"",autocapture:!0,cross_subdomain_cookie:xg(F?.location),persistence:"localStorage+cookie",persistence_name:"",cookie_persisted_properties:[],loaded:as,save_campaign_params:!0,custom_campaign_params:[],custom_blocked_useragents:[],save_referrer:!0,capture_pageleave:"if_capture_pageview",defaults:t??"unset",__preview_deferred_init_extensions:!1,__preview_external_dependency_versioned_paths:!1,__preview_cookie_wins_on_conflict:!1,debug:me&&X(me?.search)&&me.search.indexOf("__posthog_debug=true")!==-1||!1,cookie_expiration:365,upgrade:!1,disable_session_recording:!1,disable_persistence:!1,disable_web_experiments:!0,disable_surveys:!1,disable_surveys_automatic_display:!1,disable_conversations:!1,disable_product_tours:!1,disableDeviceModel:!1,disable_external_dependency_loading:!1,strict_script_versioning:!1,enable_recording_console_log:void 0,secure_cookie:(w==null||(e=w.location)==null?void 0:e.protocol)==="https:",ip:!1,opt_out_capturing_by_default:!1,opt_out_persistence_by_default:!1,opt_out_useragent_filter:!1,opt_out_capturing_persistence_type:"localStorage",consent_persistence_name:null,opt_out_capturing_cookie_prefix:null,opt_in_site_apps:!1,property_denylist:[],respect_dnt:!1,sanitize_properties:null,request_headers:{},request_batching:!0,properties_string_max_length:65535,mask_all_element_attributes:!1,mask_all_text:!1,mask_personal_data_properties:!1,custom_personal_data_properties:[],advanced_disable_flags:!1,advanced_disable_decide:!1,advanced_disable_feature_flags:!1,advanced_disable_feature_flags_on_first_load:!1,advanced_only_evaluate_survey_feature_flags:!1,advanced_feature_flags_dedup_per_session:!1,advanced_enable_surveys:!1,advanced_disable_toolbar_metrics:!1,feature_flag_request_timeout_ms:3e3,surveys_request_timeout_ms:1e4,on_request_error(n){A.error("Bad HTTP status: "+n.statusCode+" "+n.text)},get_device_id:n=>n,capture_performance:void 0,name:"posthog",bootstrap:{},disable_compression:!1,session_idle_timeout_seconds:1800,person_profiles:pa,before_send:void 0,get_current_url:void 0,request_queue_config:{flush_interval_ms:Sa},error_tracking:{},_onCapture:as},(n=>({rageclick:n&&n>="2026-05-30"?{content_ignorelist:Ng,ignore_text_selection:!0}:!n||"2025-11-30">n||{content_ignorelist:!0},capture_pageview:!n||"2025-05-24">n||"history_change",session_recording:n&&n>="2026-06-25"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6},streamNetworkBody:!0}:n&&n>="2026-05-30"?{strictMinimumDuration:!0,canvasCapture:{resolutionScale:.6}}:n&&n>="2025-11-30"?{strictMinimumDuration:!0}:{},external_scripts_inject_target:n&&n>="2026-01-30"?"head":"body",internal_or_test_user_hostname:n&&n>="2026-01-30"?/^(localhost|127\.0\.0\.1)$/:void 0,persistence_save_debounce_ms:n&&n>="2026-05-30"?250:0,split_storage:!(!n||"2026-05-30">n),detect_google_search_app:!(!n||"2026-05-30">n),disable_capture_url_hashes:!(!n||"2026-06-25">n)}))(t))},xm=[["process_person","person_profiles"],["xhr_headers","request_headers"],["cookie_name","persistence_name"],["disable_cookie","disable_persistence"],["__preview_disable_beacon","disable_beacon"],["store_google","save_campaign_params"],["verbose","debug"]],nu=t=>{var e={};for(var n of xm){var i=n[0],r=n[1];C(t[i])||(e[r]=t[i])}var s=fe({},e,t),o=t.__preview_external_dependency_versioned_paths;return C(o)||(C(t.strict_script_versioning)&&(s.strict_script_versioning=!!o),X(o)&&C(t.asset_host)&&(s.asset_host=o)),U(t.property_blacklist)&&(C(t.property_denylist)?s.property_denylist=t.property_blacklist:U(t.property_denylist)?s.property_denylist=[...t.property_blacklist,...t.property_denylist]:A.error(jf+t.property_denylist)),s};class Im{constructor(){this.__forceAllowLocalhost=!1}get fn(){return this.__forceAllowLocalhost}set fn(e){A.error("WebPerformanceObserver is deprecated and has no impact on network capture. Use `_forceAllowLocalhostNetworkCapture` on `posthog.sessionRecording`"),this.__forceAllowLocalhost=e}}class Je{pn(e,n){if(e){var i=this.sn.indexOf(e);i!==-1&&this.sn.splice(i,1)}return this.sn.push(n),n.initialize==null||n.initialize(),n}gn(){return this.config.cookieless_mode===Ht||this.config.cookieless_mode===In&&this.consent.isRejected()}get decideEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}get flagsEndpointWasHit(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.hasLoadedFlags)!==null&&e!==void 0&&e}constructor(){var e;this.webPerformance=new Im,this.mn=!1,this.version=ne.LIB_VERSION,this.yn=new Set,this.bn="",this.dn=new pl,this.sn=[],this._n=[],this._calculate_event_properties=this.calculateEventProperties.bind(this),this.config=To(),this.SentryIntegration=zg,this.sentryIntegration=i=>(function(r,s){var o=df(r,s);return{name:uf,processEvent:a=>o(a)}})(this,i),this.__request_queue=[],this.__loaded=!1,this.analyticsDefaultEndpoint="/e/",this.wn=!1,this.kn=null,this.xn=null,this.Sn=null,this.scrollManager=new dm(this),this.pageViewManager=new Uc(this),this.rateLimiter=new Qg(this),this.requestRouter=new pm(this),this.consent=new Rg(this),this.externalIntegrations=new ym(this);var n=(e=Je.__defaultExtensionClasses)!==null&&e!==void 0?e:{};this.featureFlags=n.featureFlags&&new n.featureFlags(this),this.toolbar=n.toolbar&&new n.toolbar(this),this.surveys=n.surveys&&new n.surveys(this),this.conversations=n.conversations&&new n.conversations(this),this.logs=n.logs&&new n.logs(this),this.metrics=n.metrics&&new n.metrics(this),this.experiments=n.experiments&&new n.experiments(this),this.exceptions=n.exceptions&&new n.exceptions(this),this.people={set:(i,r,s)=>{var o=X(i)?{[i]:r}:i;this.setPersonProperties(o),s?.({})},set_once:(i,r,s)=>{var o=X(i)?{[i]:r}:i;this.setPersonProperties(void 0,o),s?.({})}},this.on("eventCaptured",(i=>A.info('send "'+i?.event+'"',i)))}init(e,n,i){if(i&&i!==Vn){var r,s=(r=Hi[i])!==null&&r!==void 0?r:new Je;return s._init(e,n,i),Hi[i]=s,Hi[Vn][i]=s,s}return this._init(e,n,i)}_init(e,n,i){var r,s;n===void 0&&(n={});var o,a=X(e)?e.trim():"";if(!a)return A.critical("PostHog was initialized without a token. This likely indicates a misconfiguration. Please check the first argument passed to posthog.init()"),this;if(this.__loaded)return a!==((o=this.config)==null?void 0:o.token)?console.warn("[PostHog.js]","You have already initialized PostHog with a different project token! Re-initializing is a no-op, so events will keep going to the project this instance was initialized with. To capture into a second project, load PostHog once, then initialize a named instance after the SDK has loaded, e.g. posthog.init('"+a+"', { ... }, 'project2')"):console.warn("[PostHog.js]","You have already initialized PostHog! Re-initializing is a no-op"),this;this.__loaded=!0,this.config=To(n.defaults),n.debug=this.Cn(n.debug),this.Mn=n,this.Tn=[],n.person_profiles?this.xn=n.person_profiles:n.process_person&&(this.xn=n.process_person);var l=To(n.defaults),u=nu(n),c=fe({},l,u,{name:i,token:a});he(l.rageclick)&&he(u.rageclick)&&(c.rageclick=fe({},l.rageclick,u.rageclick)),he(l.session_recording)&&he(u.session_recording)&&(c.session_recording=fe({},l.session_recording,u.session_recording)),this.set_config(c),this.config.on_xhr_error&&A.error("on_xhr_error is deprecated. Use on_request_error instead"),this.compression=n.disable_compression?void 0:je.GZipJS;var d=this.En();if(this.persistence=new xo(this.config,d),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new xo(k({},this.config,{persistence:"sessionStorage"}),d,!1),this.bn="ph_"+(this.config.persistence_name||this.config.token)+"_session_registered_properties",this.config.persistence!=="memory"&&!d&&be.N()){var f=be.H(this.bn);U(f)&&f.forEach((I=>{X(I)&&this.yn.add(I)}))}else be.q(this.bn);var h=k({},this.persistence.props),p=k({},this.sessionPersistence.props);this.register({$initialization_time:new Date().toISOString()}),this.In=new lm((I=>this.Pn(I)),this.config.request_queue_config),this.Rn=new um(this),this.__request_queue=[];var g=this.gn();if(g||(this.sessionManager=new Zc(this),this.sessionPropsManager=new Jc(this,this.sessionManager,this.persistence),this.sessionManager.onSessionId(((I,T,E)=>{(E!=null&&E.activityTimeout||E!=null&&E.sessionPastMaximumLength||E!=null&&E.crossTabAdoption)&&this.An()}))),this.Fn(),this.config.__preview_deferred_init_extensions?(A.info("Deferring extension initialization to improve startup performance"),setTimeout((()=>{this.Ln(g)}),0)):(A.info("Initializing extensions synchronously"),this.Ln(g)),ne.DEBUG=ne.DEBUG||this.config.debug,ne.DEBUG&&A.info("Starting in debug mode",{this:this,config:n,thisC:k({},this.config),p:h,s:p}),!this.config.identity_distinct_id||(r=n.bootstrap)!=null&&r.distinctID||(n.bootstrap=k({},n.bootstrap,{distinctID:this.config.identity_distinct_id,isIdentifiedID:!0})),((s=n.bootstrap)==null?void 0:s.distinctID)!==void 0){var m=n.bootstrap.distinctID,v=this.get_distinct_id(),S=this.persistence.get_property(ot);if(n.bootstrap.isIdentifiedID&&v!=null&&v!==m&&S===jn)this.identify(m);else if(n.bootstrap.isIdentifiedID&&v!=null&&v!==m&&S===mn)A.warn("Bootstrap distinctID differs from an already-identified user. The existing identity is preserved. Call reset() before reinitializing if you intend to switch users.");else{var b=this.config.get_device_id(Ut()),_=n.bootstrap.isIdentifiedID?b:m;this.persistence.set_property(ot,n.bootstrap.isIdentifiedID?mn:jn),this.register({distinct_id:m,$device_id:_})}}if(g)this.register_once({distinct_id:hr,$device_id:null},"");else if(!this.get_distinct_id()){var x=this.config.get_device_id(Ut());this.register_once({distinct_id:x,$device_id:x},""),this.persistence.set_property(ot,jn)}return ve(w,"onpagehide"in self?"pagehide":"unload",this._handle_unload.bind(this),{passive:!1}),n.segment?(function(I,T){var E=I.config.segment;if(!E)return T();(function(P,$){var O=P.config.segment;if(!O)return $();var L=G=>{var V=()=>G.anonymousId()||Ut();P.config.get_device_id=V,G.id()&&(P.register({distinct_id:G.id(),$device_id:V()}),P.persistence.set_property(ot,mn)),$()},N=O.user();"then"in N&&De(N.then)?N.then(L):L(N)})(I,(()=>{E.register((P=>{typeof Promise<"u"&&Promise.resolve||Eo.warn("This browser does not have Promise support, and can not use the segment integration");var $=(O,L)=>{if(!L)return O;O.event.userId||O.event.anonymousId===P.get_distinct_id()||(Eo.info("No userId set, resetting PostHog"),P.reset()),O.event.userId&&O.event.userId!==P.get_distinct_id()&&(Eo.info("UserId set, identifying with PostHog"),P.identify(O.event.userId));var N=P.calculateEventProperties(L,O.event.properties);return O.event.properties=Object.assign({},N,O.event.properties),O};return{name:"PostHog JS",type:"enrichment",version:"1.0.0",isLoaded:()=>!0,load:()=>Promise.resolve(),track:O=>$(O,O.event.event),page:O=>$(O,qn),identify:O=>$(O,yo),screen:O=>$(O,"$screen")}})(I)).then((()=>{T()}))}))})(this,(()=>this.On())):this.On(),De(this.config._onCapture)&&this.config._onCapture!==as&&(A.warn("onCapture is deprecated. Please use `before_send` instead"),this.on("eventCaptured",(I=>this.config._onCapture(I.event,I)))),this.config.ip&&A.warn('The `ip` config option has NO EFFECT AT ALL and has been deprecated. Use a custom transformation or "Discard IP data" project setting instead. See https://posthog.com/tutorials/web-redact-properties#hiding-customer-ip-address for more information.'),this.config.disableDeviceModel||(function(){return Mf.apply(this,arguments)})().then((I=>{I&&this.register({[vo]:I})})).catch(as),this}Fn(){var e,n,i,r,s,o,a=(e=(n=this.config.__extensionClasses)==null?void 0:n.featureFlags)!==null&&e!==void 0?e:(i=Je.__defaultExtensionClasses)==null?void 0:i.featureFlags;a&&(this.featureFlags&&this.featureFlags instanceof a||((r=this.Dn)==null||r.call(this),this.Dn=void 0,this.featureFlags=new a(this)),De(this.featureFlags.onReloading)&&De(this.featureFlags.setup)?this.Dn||(this.Dn=this.featureFlags.onReloading((()=>{this.dn.emit("featureFlagsReloading",!0)})),this.$n().add(this.featureFlags)):(s=(o=this.featureFlags).initialize)==null||s.call(o))}Ln(e){var n,i,r,s,o,a,l,u=performance.now(),c=k({},Je.__defaultExtensionClasses,this.config.__extensionClasses),d=[];c.exceptions&&this.sn.push(this.exceptions=(n=this.exceptions)!==null&&n!==void 0?n:new c.exceptions(this)),c.historyAutocapture&&this.sn.push(this.historyAutocapture=new c.historyAutocapture(this)),c.tracingHeaders&&this.sn.push(this.tracingHeaders=new c.tracingHeaders(this)),c.siteApps&&this.sn.push(this.siteApps=new c.siteApps(this)),c.sessionRecording&&!e&&this.sn.push(this.sessionRecording=new c.sessionRecording(this)),this.config.disable_scroll_properties||d.push((()=>{this.scrollManager.startMeasuringScrollPosition()})),c.autocapture&&this.sn.push(this.autocapture=new c.autocapture(this)),c.surveys&&this.sn.push(this.surveys=(i=this.surveys)!==null&&i!==void 0?i:new c.surveys(this)),c.logs&&this.sn.push(this.logs=(r=this.logs)!==null&&r!==void 0?r:new c.logs(this)),c.metrics&&this.sn.push(this.metrics=(s=this.metrics)!==null&&s!==void 0?s:new c.metrics(this)),c.conversations&&this.sn.push(this.conversations=(o=this.conversations)!==null&&o!==void 0?o:new c.conversations(this)),c.productTours&&this.sn.push(this.productTours=new c.productTours(this)),c.heatmaps&&this.sn.push(this.heatmaps=new c.heatmaps(this)),c.webVitalsAutocapture&&this.sn.push(this.webVitalsAutocapture=new c.webVitalsAutocapture(this)),c.exceptionObserver&&this.sn.push(this.exceptionObserver=new c.exceptionObserver(this)),c.deadClicksAutocapture&&this.sn.push(this.deadClicksAutocapture=new c.deadClicksAutocapture(this,Wg)),c.toolbar&&this.sn.push(this.toolbar=(a=this.toolbar)!==null&&a!==void 0?a:new c.toolbar(this)),c.experiments&&this.sn.push(this.experiments=(l=this.experiments)!==null&&l!==void 0?l:new c.experiments(this)),this.sn.forEach((f=>{f.initialize&&d.push((()=>{f.initialize==null||f.initialize()}))})),d.push((()=>{if(this.Nn){var f=this.Nn;this.Nn=void 0,this.sn.forEach((h=>h.onRemoteConfig==null?void 0:h.onRemoteConfig(f)))}})),this.qn(d,u)}qn(e,n){for(;e.length>0;){if(this.config.__preview_deferred_init_extensions&&performance.now()-n>=30&&e.length>0)return void setTimeout((()=>{this.qn(e,n)}),0);var i=e.shift();if(i)try{i()}catch(s){A.error("Error initializing extension:",s)}}var r=Math.round(performance.now()-n);this.register_for_session({[Gd]:this.config.__preview_deferred_init_extensions?"deferred":"synchronous",[Kd]:r}),this.config.__preview_deferred_init_extensions&&A.info("PostHog extensions initialized ("+r+"ms)")}Zi(e){var n;if(!F||!F.body)return A.info("document not ready yet, trying again in 500 milliseconds..."),void setTimeout((()=>{this.Zi(e)}),500);if(this.config.__preview_deferred_init_extensions&&(this.Nn=e),this.hn=e,this.compression=void 0,e.ok){var i,r=e.config;r.supportedCompression&&!this.config.disable_compression&&(this.compression=j(r.supportedCompression,je.GZipJS)?je.GZipJS:j(r.supportedCompression,je.Base64)?je.Base64:void 0),(i=r.analytics)!=null&&i.endpoint&&(this.analyticsDefaultEndpoint=r.analytics.endpoint)}this.set_config({person_profiles:this.xn?this.xn:pa}),(n=this.jn)==null||n.handleRemoteConfig(e),this.sn.forEach((s=>s.onRemoteConfig==null?void 0:s.onRemoteConfig(e)))}On(){try{this.config.loaded(this)}catch(i){A.critical("`loaded` function failed",i)}if(this.Bn(),this.config.internal_or_test_user_hostname&&me!=null&&me.hostname){var e=me.hostname,n=this.config.internal_or_test_user_hostname;(typeof n=="string"?e===n:n.test(e))&&this.setInternalOrTestUser()}this.config.capture_pageview&&setTimeout((()=>{(this.consent.isOptedIn()||this.gn())&&this.Hn()}),1),this.Un=new bf(this),this.Un.load()}Bn(){var e;this.is_capturing()&&this.config.request_batching&&((e=this.In)==null||e.enable())}_dom_loaded(){this.is_capturing()&&pr(this.__request_queue,(e=>this.Pn(e))),this.__request_queue=[],this.Bn()}_handle_unload(){var e,n,i,r,s;(e=this.surveys)==null||e.handlePageUnload==null||e.handlePageUnload(),(n=this.metrics)==null||n.flush("sendBeacon"),this.config.request_batching?(this.zn()&&this.capture(_o),(i=this.logs)==null||i.flushLogs("sendBeacon"),(r=this.In)==null||r.unload(),(s=this.Rn)==null||s.unload()):this.zn()&&this.capture(_o,null,{transport:"sendBeacon"})}_send_request(e){this.__loaded?Uf?this.__request_queue.push(e):this.rateLimiter.isServerRateLimited(e.batchKey)?e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:429})):(e.transport=e.transport||this.config.api_transport,e.headers=k({},this.config.request_headers,e.headers),e.compression=e.compression==="best-available"?this.compression:e.compression,(C(this.config.disable_beacon)?this.config.__preview_disable_beacon:this.config.disable_beacon)&&(e.disableTransport=["sendBeacon"]),e.fetchOptions=e.fetchOptions||this.config.fetch_options,(n=>{var i,r,s,o=k({},n);o.timeout=o.timeout||6e4;var a,l,u,c,d,f=(i=o.transport)!==null&&i!==void 0?i:"fetch";f==="sendBeacon"&&C(o.compression)&&o.data&&(o.compression=je.Base64),o.method==="POST"&&o.data&&(o.timestampMode==="capture-body"?o.data={api_key:(l=(d=(c=U(a=o.data)?a:[a])[0])==null||(u=d.properties)==null?void 0:u.token)!==null&&l!==void 0?l:d?.token,batch:c,sent_at:new Date().toISOString()}:o.timestampMode==="body"&&(o.data=(function(m,v){return v===void 0&&(v=new Date().toISOString()),U(m)?m.map((S=>k({},S,{sent_at:v}))):k({},m,{sent_at:v})})(o.data))),o.url=Yc(o.url,o.method,o.compression,o.timestampMode);var h=Tr.filter((m=>!o.disableTransport||!m.transport||!o.disableTransport.includes(m.transport))),p=(r=(s=(function(m,v){for(var S=0;m.length>S;S++)if(m[S].transport===f)return m[S]})(h))==null?void 0:s.method)!==null&&r!==void 0?r:h[0].method;if(!p)throw new Error("No available transport method");var g=m=>{try{p(m)}catch(v){Rf(v)?A.warn(v):A.error(v),o.callback==null||o.callback({statusCode:0,error:v})}};f!=="sendBeacon"&&o.data&&o.compression===je.GZipJS&&kp&&typeof Promise<"u"&&!Rr?om(o).then((m=>{g(m)})).catch((m=>{if(gc(m))return Rr=!0,void g(k({},o,{compression:void 0,url:Yc(n.url,n.method,void 0,n.timestampMode)}));(v=>{if(!v||typeof v!="object")return!1;var S="name"in v?String(v.name):"";return gc(v)||S===od})(m)&&(Rr=!0),g(o)})):p(o)})(k({},e,{callback:n=>{var i,r;this.rateLimiter.checkForLimiting(n),400>n.statusCode||(i=(r=this.config).on_request_error)==null||i.call(r,n),e.callback==null||e.callback(n)}}))):e.fireCallbackOnDrop&&(e.callback==null||e.callback({statusCode:0}))}Pn(e){this.Rn?this.Rn.retriableRequest(e):this._send_request(e)}_execute_array(e){Ro++;try{var n,i=[],r=[],s=[];pr(e,(a=>{if(a)if(U(n=a[0]))s.push(a);else if(De(a))try{a.call(this)}catch(l){A.error("Error executing queued PostHog call",a,l)}else U(a)&&n==="alias"?i.push(a):U(a)&&n.indexOf("capture")!==-1&&De(this[n])?s.push(a):r.push(a)}));var o=function(a,l){pr(a,(function(u){try{if(U(u[0])){var c=l;ie(u,(function(d){c=c[d[0]].apply(c,d.slice(1))}))}else l[u[0]].apply(l,u.slice(1))}catch(d){A.error("Error executing queued PostHog call",u,d)}}))};o(i,this),o(r,this),o(s,this)}finally{Ro--}}push(e){if(Ro>0&&U(e)&&X(e[0])){var n=Je.prototype[e[0]];De(n)&&n.apply(this,e.slice(1))}else this._execute_array([e])}capture(e,n,i){var r,s,o,a,l;if(this.__loaded&&this.persistence&&this.sessionPersistence&&this.In){if(this.is_capturing())if(!C(e)&&X(e)){var u=!this.config.opt_out_useragent_filter&&this._is_bot();if(!u||this.config.__preview_capture_bot_pageviews){var c=i!=null&&i.skip_client_rate_limiting?void 0:this.rateLimiter.clientRateLimitContext();if(c==null||!c.isRateLimited){n!=null&&n.$current_url&&!X(n?.$current_url)&&(A.error("Invalid `$current_url` property provided to `posthog.capture`. Input must be a string. Ignoring provided value."),n==null||delete n.$current_url),e!=="$exception"||i!=null&&i.Wn||A.warn("Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this.sessionPersistence.update_search_keyword(),this.config.save_campaign_params&&this.sessionPersistence.update_campaign_params(),this.config.save_referrer&&this.sessionPersistence.update_referrer_info(),(this.config.save_campaign_params||this.config.save_referrer)&&this.persistence.set_initial_person_info();var d=new Date,f=i?.timestamp||d,h=wc(i?.uuid,Ut),p={uuid:h,event:e,properties:this.calculateEventProperties(e,n||{},f,h)};e===qn&&this.config.__preview_capture_bot_pageviews&&u&&(p.event="$bot_pageview",p.properties.$browser_type="bot"),c&&(p.properties.$lib_rate_limit_remaining_tokens=c.remainingTokens);var g=e==="$feature_flag_called"&&p.properties.$feature_flag_has_experiment===!1&&this.get_property(Kr)===!0;i?.$set&&!g&&(p.$set=i?.$set);var m=i?.$unset;m&&(p.$unset=m);var v,S,b,_=g?void 0:this.Vn(i?.$set_once,e!==kc,e===yo);if(_&&(p.$set_once=_),i!=null&&i._noTruncate||(s=this.config.properties_string_max_length,o=p,a=L=>X(L)?L.slice(0,s):L,l=new Set,p=(function L(N,G){if(N!==Object(N))return a?a(N):N;if(!l.has(N)){var V;if(l.add(N),U(N))V=[],pr(N,(R=>{V.push(L(R))}));else{var M={};ie(N,((R,Z)=>{l.has(R)||(M[Z]=L(R))})),V=M}return V}})(o)),p.timestamp=f,C(i?.timestamp)||(p.properties.$event_time_override_provided=!0,p.properties.$event_time_override_system_time=d),g&&(p.properties=(function(L,N){N===void 0&&(N=[]);var G={},V=M=>{L[M]!==void 0&&(G[M]=L[M])};return Cp.forEach(V),N.forEach(V),G})(p.properties,Sm)),e===zt.DISMISSED||e===zt.SENT){var x=n?.[ko.SURVEY_ID],I=n?.[ko.SURVEY_ITERATION];Df({id:x,current_iteration:I}),p.$set=k({},p.$set,{[(v={id:x,current_iteration:I},S=e===zt.SENT?"responded":"dismissed",b="$survey_"+S+"/"+v.id,v.current_iteration&&v.current_iteration>0&&(b="$survey_"+S+"/"+v.id+"/"+v.current_iteration),b)]:!0})}else e===zt.SHOWN&&(p.$set=k({},p.$set,{[ko.SURVEY_LAST_SEEN_DATE]:new Date().toISOString()}));if(e===Xg.SHOWN){var T=n?.[Wc.TOUR_TYPE];T&&(p.$set=k({},p.$set,{[Wc.TOUR_LAST_SEEN_DATE+"/"+T]:new Date().toISOString()}))}var E=k({},p.properties.$set,p.$set);if(Vt(E)||this.setPersonPropertiesForFlags(E),!H(this.config.before_send)){var P=this.Pt(p);if(!P)return;(p=P).uuid=wc(p.uuid,Ut)}this.dn.emit("eventCaptured",p);var $=(r=i?._url)!==null&&r!==void 0?r:this.requestRouter.endpointFor("api",this.analyticsDefaultEndpoint),O={method:"POST",url:$,data:p,compression:"best-available",timestampMode:i?._batchKey==="recordings"||/\/s\/(?:\?|$)/.test($)?"body":"capture-body",batchKey:i?._batchKey,transport:i?.transport};return!this.config.request_batching||i&&(i==null||!i._batchKey)||i!=null&&i.send_instantly?this.Pn(O):this.In.enqueue(O),p}A.critical("This capture call is ignored due to client rate limiting.")}}else A.error("No event name provided to posthog.capture")}else A.uninitializedWarning("posthog.capture")}_addCaptureHook(e){return this.on("eventCaptured",(n=>e(n.event,n)))}$n(){var e;return(e=this.jn)!==null&&e!==void 0?e:this.jn=new Em(this)}cn(e){this._n.push(e);var n=!0;return()=>{if(n){n=!1;var i=this._n.indexOf(e);i!==-1&&this._n.splice(i,1)}}}calculateEventProperties(e,n,i,r,s){if(i=i||new Date,!this.persistence||!this.sessionPersistence)return n;var o=s?void 0:this.persistence.remove_event_timer(e),a=k({},n);if(a.token=this.config.token,a.$config_defaults=this.config.defaults,this.gn()&&(a[Vd]=!0),e==="$snapshot"){var l=k({},this.persistence.properties(),this.sessionPersistence.properties());return a.distinct_id=l.distinct_id,(!X(a.distinct_id)&&!ke(a.distinct_id)||Ko(a.distinct_id))&&A.error("Invalid distinct_id for replay event. This indicates a bug in your implementation"),a}var u,c=(function(x,I,T,E){var P,$,O,L;if(E===void 0&&(E=!1),!ze)return{};var N,G=x?[...ii,...I||[]]:[],V=(function(On){for(var He=0;_c.length>He;He++){var Bn=_c[He],$t=Bn[1],Mt=Bn[0].exec(On),ct=Mt&&(De($t)?$t(Mt,On):$t);if(ct)return ct}return["",""]})(ze),M=V[0],R=V[1],Z=(N=typeof navigator<"u"?navigator:void 0)!=null&&N.brave?{brave:!0}:{},Ce={};C(T)||(Ce.detectGoogleSearchApp=T);var oe={},ye=(P=navigator)==null||(P=P.userAgentData)==null?void 0:P.platform,$e=($=navigator)==null?void 0:$.maxTouchPoints,ae=w==null||(O=w.screen)==null?void 0:O.width,Ie=w==null||(L=w.screen)==null?void 0:L.height,Se=w?.devicePixelRatio;C(ye)||(oe.userAgentDataPlatform=ye),C($e)||(oe.maxTouchPoints=$e),C(ae)||(oe.screenWidth=ae),C(Ie)||(oe.screenHeight=Ie),C(Se)||(oe.devicePixelRatio=Se);var Be,yt,ge,Ye,wt,gn,Re,Pe,Tt=fe(ll({$os:M,$os_version:R,$browser:Rd(ze,navigator.vendor,Z,Ce),$device:yc(ze),$device_type:(yt=ze,ge=oe,Pe=yc(yt),Pe===hd||Pe===fd||Pe==="Kobo"||Pe==="Kindle Fire"||Pe===kd?Qn:Pe===Vi||Pe===Zn||Pe===Gi||Pe===Jo?"Console":Pe===gd?"Wearable":Pe?it:ge?.userAgentDataPlatform==="Android"&&((Ye=ge?.maxTouchPoints)!==null&&Ye!==void 0?Ye:0)>0?600>Math.min((wt=ge?.screenWidth)!==null&&wt!==void 0?wt:0,(gn=ge?.screenHeight)!==null&&gn!==void 0?gn:0)/((Re=ge?.devicePixelRatio)!==null&&Re!==void 0?Re:1)?it:Qn:"Desktop"),$timezone:wf(),$timezone_offset:Yg()}),{$current_url:Ji(E?dn(me?.href):me?.href,G,Zi),$host:me?.host,$pathname:me?.pathname,$raw_user_agent:ze.length>1e3?ze.substring(0,997)+"...":ze,$browser_version:Vp(ze,navigator.vendor,Z,Ce),$browser_language:Hc(),$browser_language_prefix:(Be=Hc(),typeof Be=="string"?Be.split("-")[0]:void 0),$screen_height:w?.screen.height,$screen_width:w?.screen.width,$viewport_height:w?.innerHeight,$viewport_width:w?.innerWidth,$lib:ne.LIB_NAME,$lib_version:ne.LIB_VERSION,$insert_id:Math.random().toString(36).substring(2,10)+Math.random().toString(36).substring(2,10),$time:Date.now()/1e3});return ne.SDK_DIST_CHANNEL&&(Tt.$sdk_dist_channel=ne.SDK_DIST_CHANNEL),Tt})(this.config.mask_personal_data_properties,this.config.custom_personal_data_properties,this.config.detect_google_search_app,this.config.disable_capture_url_hashes);if(this.sessionManager){var d=this.sessionManager.checkAndGetSessionAndWindowId(s,i.getTime()),f=d.windowId;a.$session_id=d.sessionId,a.$window_id=f}this.sessionPropsManager&&fe(a,this.sessionPropsManager.getSessionProps());try{var h;this.sessionRecording&&fe(a,this.sessionRecording.sdkDebugProperties),a.$sdk_debug_retry_queue_size=(h=this.Rn)==null?void 0:h.length}catch(x){a.$sdk_debug_error_capturing_properties=String(x)}if(this.requestRouter.region===xa&&(a.$lib_custom_api_host=this.config.api_host),u=e!==qn||s?e!==_o||s?this.pageViewManager.doEvent():this.pageViewManager.doPageLeave(i):this.pageViewManager.doPageView(i,r),a=fe(a,u),e===qn&&F&&(a.title=F.title),!C(o)){var p=i.getTime()-o;a.$duration=parseFloat((p/1e3).toFixed(3))}ze&&this.config.opt_out_useragent_filter&&(a.$browser_type=this._is_bot()?"bot":"browser");var g=this.persistence.properties(),m=this.sessionPersistence.properties();ie(["$referrer","$referring_domain"],(x=>{x in g&&delete m[x]}));var v={};if(this._n.length>0)for(var S of this._n.slice())try{fe(v,S())}catch(x){A.error("Failed to produce browser extension event properties",x)}(a=fe({},c,g,m,k({},v,a))).$is_identified=this._isIdentified(),U(this.config.property_denylist)?ie(this.config.property_denylist,(function(x){delete a[x]})):A.error(jf+this.config.property_denylist+" or property_blacklist config: "+this.config.property_blacklist);var b=this.config.sanitize_properties;b&&(A.error(tu),a=b(a,e));var _=this.Zn();return a.$process_person_profile=_,_&&!s&&this.Gn("_calculate_event_properties"),a}Vn(e,n,i){var r;if(n===void 0&&(n=!0),i===void 0&&(i=!1),!this.persistence||!this.Zn()||this.mn&&!i)return e;var s=this.persistence.get_initial_props(),o=(r=this.sessionPropsManager)==null?void 0:r.getSetOnceProps(),a=fe({},s,o||{},e||{}),l=this.config.sanitize_properties;return l&&(A.error(tu),a=l(a,"$set_once")),n&&(this.mn=!0),Vt(a)?void 0:a}register(e,n){var i;(i=this.persistence)==null||i.register(e,n)}register_once(e,n,i){var r;(r=this.persistence)==null||r.register_once(e,n,i)}register_for_session(e){var n;(n=this.sessionPersistence)==null||n.register(e),Object.keys(e).forEach((i=>this.yn.add(i))),this.Qn()}unregister(e){var n;(n=this.persistence)==null||n.unregister(e)}unregister_for_session(e){var n;(n=this.sessionPersistence)==null||n.unregister(e),this.yn.delete(e),this.Qn()}Kn(e,n){this.register({[e]:n})}An(){this.yn.forEach((e=>{var n;(n=this.sessionPersistence)==null||n.unregister(e)})),this.yn.clear(),this.Qn()}Qn(){var e;if(this.bn)if(this.config.persistence==="memory"||(e=this.sessionPersistence)!=null&&e.xi||!be.N())be.q(this.bn);else{var n=[];this.yn.forEach((i=>n.push(i))),n.length>0?be.F(this.bn,n):be.q(this.bn)}}getFeatureFlag(e,n){var i;return(i=this.featureFlags)==null?void 0:i.getFeatureFlag(e,n)}getFeatureFlagPayload(e){var n;return(n=this.featureFlags)==null?void 0:n.getFeatureFlagPayload(e)}getFeatureFlagResult(e,n){var i;return(i=this.featureFlags)==null?void 0:i.getFeatureFlagResult(e,n)}getAllFeatureFlags(){var e,n;return(e=(n=this.featureFlags)==null?void 0:n.getAllFeatureFlags())!==null&&e!==void 0?e:[]}isFeatureEnabled(e,n){var i,r;return(i=(r=this.featureFlags)==null?void 0:r.isFeatureEnabled(e,n))!==null&&i!==void 0?i:n?.defaultValue}reloadFeatureFlags(){var e;(e=this.featureFlags)==null||e.reloadFeatureFlags()}updateFlags(e,n,i){var r;(r=this.featureFlags)==null||r.updateFlags(e,n,i)}updateEarlyAccessFeatureEnrollment(e,n,i){var r;(r=this.featureFlags)==null||r.updateEarlyAccessFeatureEnrollment(e,n,i)}getEarlyAccessFeatures(e,n,i){var r;return n===void 0&&(n=!1),(r=this.featureFlags)==null?void 0:r.getEarlyAccessFeatures(e,n,i)}on(e,n){return this.dn.on(e,n)}onFeatureFlags(e){return this.featureFlags?this.featureFlags.onFeatureFlags(e):(e([],{},{errorsLoading:!0}),()=>{})}onSurveysLoaded(e){return this.surveys?this.surveys.onSurveysLoaded(e):(e([],{isLoaded:!1,error:Si}),()=>{})}onSessionId(e){var n,i;return(n=(i=this.sessionManager)==null?void 0:i.onSessionId(e))!==null&&n!==void 0?n:()=>{}}getSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getSurveys(e,n):e([],{isLoaded:!1,error:Si})}getActiveMatchingSurveys(e,n){n===void 0&&(n=!1),this.surveys?this.surveys.getActiveMatchingSurveys(e,n):e([],{isLoaded:!1,error:Si})}renderSurvey(e,n){var i;(i=this.surveys)==null||i.renderSurvey(e,n)}displaySurvey(e,n){var i;n===void 0&&(n=mm),(i=this.surveys)==null||i.displaySurvey(e,n)}cancelPendingSurvey(e){var n;(n=this.surveys)==null||n.cancelPendingSurvey(e)}canRenderSurvey(e){var n,i;return(n=(i=this.surveys)==null?void 0:i.canRenderSurvey(e))!==null&&n!==void 0?n:{visible:!1,disabledReason:Si}}canRenderSurveyAsync(e,n){var i,r;return n===void 0&&(n=!1),(i=(r=this.surveys)==null?void 0:r.canRenderSurveyAsync(e,n))!==null&&i!==void 0?i:Promise.resolve({visible:!1,disabledReason:Si})}Jn(e){return!e||Ko(e)?(A.critical("Unique user id has not been set in posthog.identify"),!1):e===hr?(A.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID is only used as a sentinel value.'),!1):!["distinct_id","distinctid"].includes(e.toLowerCase())&&!["undefined","null"].includes(e.toLowerCase())||(A.critical('The string "'+e+'" was set in posthog.identify which indicates an error. This ID should be unique to the user and not a hardcoded string.'),!1)}identify(e,n,i){if(!this.__loaded||!this.persistence)return A.uninitializedWarning("posthog.identify");if(ke(e)&&(e=e.toString(),A.warn("The first argument to posthog.identify was a number, but it should be a string. It has been converted to a string.")),this.Jn(e)&&this.Gn("posthog.identify")){var r=this.get_distinct_id();this.register({$user_id:e}),this.get_property(Ki)||this.register_once({$had_persisted_distinct_id:!0,$device_id:r},""),e!==r&&e!==this.get_property(Pi)&&(this.unregister(Pi),this.register({distinct_id:e}));var s,o=(this.persistence.get_property(ot)||jn)===jn,a=e!==r,l=!a&&o;if(a&&o)this.persistence.set_property(ot,mn),this.setPersonPropertiesForFlags({$set:n||{},$set_once:i||{}},!1),this.capture(yo,{distinct_id:e,$anon_distinct_id:r},{$set:n||{},$set_once:i||{}}),this.Sn=Fo(e,n,i),(s=this.featureFlags)==null||s.setAnonymousDistinctId(r);else if(l){this.persistence.set_property(ot,mn);var u=n||{},c=i||{};this.setPersonPropertiesForFlags({$set:u,$set_once:c},!1),this.capture("$set",{$set:u,$set_once:c}),this.Sn=Fo(e,n,i)}else(n||i)&&this.setPersonProperties(n,i);a?(this.reloadFeatureFlags(),this.featureFlags?this.featureFlags.resetFlagCallReported():this.unregister(kn)):l&&(n||i)&&this.reloadFeatureFlags()}}setPersonProperties(e,n){if((e||n)&&this.Gn("posthog.setPersonProperties")){var i=Fo(this.get_distinct_id(),e,n);this.Sn!==i?(this.setPersonPropertiesForFlags({$set:e||{},$set_once:n||{}},!0),this.capture("$set",{$set:e||{},$set_once:n||{}}),this.Sn=i):A.info("A duplicate setPersonProperties call was made with the same properties. It has been ignored.")}}unsetPersonProperties(e){var n,i=(U(e)?e:[e]).filter((r=>X(r)&&r.length>0));i.length!==0&&this.Gn("posthog.unsetPersonProperties")&&((n=this.featureFlags)==null||n.unsetPersonPropertiesForFlags(i,!0),this.capture("$set",{$unset:i}),this.Sn=null)}group(e,n,i){if(e&&n){var r=this.getGroups(),s=r[e]!==n;if(s&&this.resetGroupPropertiesForFlags(e),this.register({$groups:k({},r,{[e]:n})}),s||i){var o={$group_type:e,$group_key:n};i&&(o.$group_set=i),this.capture(kc,o)}i&&this.setGroupPropertiesForFlags({[e]:i}),s&&!i&&this.reloadFeatureFlags()}else A.error("posthog.group requires a group type and group key")}resetGroups(){this.register({$groups:{}}),this.resetGroupPropertiesForFlags(),this.reloadFeatureFlags()}setPersonPropertiesForFlags(e,n){var i;n===void 0&&(n=!0),(i=this.featureFlags)==null||i.setPersonPropertiesForFlags(e,n)}resetPersonPropertiesForFlags(e){var n;e===void 0&&(e=!0),(n=this.featureFlags)==null||n.resetPersonPropertiesForFlags(e)}setGroupPropertiesForFlags(e,n){var i;n===void 0&&(n=!0),this.Gn("posthog.setGroupPropertiesForFlags")&&((i=this.featureFlags)==null||i.setGroupPropertiesForFlags(e,n))}resetGroupPropertiesForFlags(e){var n;(n=this.featureFlags)==null||n.resetGroupPropertiesForFlags(e)}reset(e){this.Yn(e)}Yn(e,n){var i,r,s,o,a,l,u,c,d,f;if(n===void 0&&(n=!1),A.info("reset"),!this.__loaded)return A.uninitializedWarning("posthog.reset");var h,p=this.get_property(Ki),g=this.get_property(vo),m=this.get_property(Cn),v=this.is_capturing();if(this.consent.reset(),n||!v||this.is_capturing()||console.warn("[PostHog.js]","reset() cleared the stored consent, and capturing is now off because of `opt_out_capturing_by_default`. Call opt_in_capturing() again, and prefer calling reset() before opting in rather than after."),(i=this.persistence)==null||i.clear(),(r=this.sessionPersistence)==null||r.clear(),this.yn.clear(),this.Qn(),C(m)||(h=this.persistence)==null||h.register({[Cn]:m}),(s=this.surveys)==null||s.reset(),(o=this.Un)==null||o.stop(),(a=this.featureFlags)==null||a.reset(),(l=this.conversations)==null||l.reset(),(u=this.logs)==null||u.reset(),(c=this.metrics)==null||c.reset(),(d=this.persistence)==null||d.set_property(ot,jn),(f=this.sessionManager)==null||f.resetSessionId(),this.Sn=null,this.config.cookieless_mode===Ht)this.register_once({distinct_id:hr,$device_id:null},"");else{var S=this.config.get_device_id(Ut());this.register_once({distinct_id:S,$device_id:e?S:p},""),e||C(g)||this.register({[vo]:g})}this.register({$last_posthog_reset:new Date().toISOString()},1),delete this.config.identity_distinct_id,delete this.config.identity_hash,this.reloadFeatureFlags()}shutdown(e){var n=this;return se((function*(){var i,r,s,o,a,l,u;if(n.__loaded){(i=n.Un)==null||i.stop(),(r=n.jn)==null||r.dispose(),(s=n.sessionRecording)==null||s.dispose(),(o=n.logs)==null||o.flushLogs("sendBeacon"),(a=n.metrics)==null||a.flush("sendBeacon"),(l=n.In)==null||l.unload(),(u=n.Rn)==null||u.unload();try{var c;(c=n.featureFlags)==null||c.destroy()}catch(d){A.error("Error while destroying feature flags",d)}}else A.uninitializedWarning("posthog.shutdown")}))()}setIdentity(e,n){var i;this.config.identity_distinct_id=e,this.config.identity_hash=n,this.alias(e),(i=this.conversations)==null||i.Xn()}clearIdentity(){var e;delete this.config.identity_distinct_id,delete this.config.identity_hash,(e=this.conversations)==null||e.ts()}get_distinct_id(){return this.get_property("distinct_id")}getGroups(){return this.get_property("$groups")||{}}get_session_id(){var e,n;return(e=(n=this.sessionManager)==null?void 0:n.checkAndGetSessionAndWindowId(!0).sessionId)!==null&&e!==void 0?e:""}get_session_replay_url(e){if(!this.sessionManager)return"";var n=this.sessionManager.checkAndGetSessionAndWindowId(!0),i=n.sessionStartTimestamp,r=this.requestRouter.endpointFor("ui","/project/"+this.config.token+"/replay/"+n.sessionId);if(e!=null&&e.withTimestamp&&i){var s,o=(s=e.timestampLookBack)!==null&&s!==void 0?s:10;if(!i)return r;r+="?t="+Math.max(Math.floor((new Date().getTime()-i)/1e3)-o,0)}return r}alias(e,n){return e===this.get_property(jd)?(A.critical("Attempting to create alias for existing People user - aborting."),-2):this.Gn("posthog.alias")?(C(n)&&(n=this.get_distinct_id()),e!==n?(this.Kn(Pi,e),this.capture("$create_alias",{alias:e,distinct_id:n})):(A.warn("alias matches current distinct_id - skipping api call."),this.identify(e),-1)):void 0}set_config(e){var n=k({},this.config);if(he(e)){var i,r,s,o,a,l,u,c,d,f,h,p;fe(this.config,nu(e));var g=this.En();(i=this.persistence)==null||i.update_config(this.config,n,g),this.sessionPersistence=this.config.persistence==="sessionStorage"||this.config.persistence==="memory"?this.persistence:new xo(k({},this.config,{persistence:"sessionStorage"}),g,!1);var m=this.Cn(this.config.debug);gt(m)&&(this.config.debug=m),gt(this.config.debug)&&(this.config.debug?(ne.DEBUG=!0,le.N()&&le.F("ph_debug",!0),A.info("set_config",{config:e,oldConfig:n,newConfig:k({},this.config)})):(ne.DEBUG=!1,le.N()&&le.q("ph_debug"))),(r=this.featureFlags)==null||r.updateConfig==null||r.updateConfig(this.config,this.Qi()),(s=this.exceptionObserver)==null||s.onConfigChange(),(o=this.exceptions)==null||o.onConfigChange(),(a=this.sessionRecording)==null||a.startIfEnabledOrStop(),(l=this.tracingHeaders)==null||l.startIfEnabledOrStop(),(u=this.autocapture)==null||u.startIfEnabled(),(c=this.heatmaps)==null||c.startIfEnabled(),(d=this.exceptionObserver)==null||d.startIfEnabledOrStop(),(f=this.deadClicksAutocapture)==null||f.startIfEnabledOrStop(),(h=this.surveys)==null||h.loadIfEnabled(),this.es(),(p=this.externalIntegrations)==null||p.startIfEnabledOrStop()}}_overrideSDKInfo(e,n){ne.LIB_NAME=e,ne.LIB_VERSION=n}startSessionRecording(e){var n,i,r,s,o,a=e===!0,l={sampling:a||!(e==null||!e.sampling),linked_flag:a||!(e==null||!e.linked_flag),url_trigger:a||!(e==null||!e.url_trigger),event_trigger:a||!(e==null||!e.event_trigger)};Object.values(l).some(Boolean)&&((n=this.sessionManager)==null||n.checkAndGetSessionAndWindowId(),l.sampling&&((i=this.sessionRecording)==null||i.overrideSampling()),l.linked_flag&&((r=this.sessionRecording)==null||r.overrideLinkedFlag()),l.url_trigger&&((s=this.sessionRecording)==null||s.overrideTrigger("url")),l.event_trigger&&((o=this.sessionRecording)==null||o.overrideTrigger("event"))),this.set_config({disable_session_recording:!1})}stopSessionRecording(){this.set_config({disable_session_recording:!0})}sessionRecordingStarted(){var e;return!((e=this.sessionRecording)==null||!e.started)}captureException(e,n){if(this.exceptions){var i=new Error("PostHog syntheticException"),r=this.exceptions.buildProperties(e,{handled:!0,syntheticException:i});return this.exceptions.sendExceptionEvent(k({},r,n))}}addExceptionStep(e,n){var i;(i=this.exceptions)==null||i.addExceptionStep(e,n)}captureLog(e){var n;(n=this.logs)==null||n.captureLog(e)}get logger(){var e,n;return(e=(n=this.logs)==null?void 0:n.logger)!==null&&e!==void 0?e:Je.rs}startExceptionAutocapture(e){this.set_config({capture_exceptions:e==null||e})}stopExceptionAutocapture(){this.set_config({capture_exceptions:!1})}loadToolbar(e){var n,i;return(n=(i=this.toolbar)==null?void 0:i.loadToolbar(e))!==null&&n!==void 0&&n}get_property(e){var n;return(n=this.persistence)==null?void 0:n.props[e]}getSessionProperty(e){var n;return(n=this.sessionPersistence)==null?void 0:n.props[e]}toString(){var e,n=(e=this.config.name)!==null&&e!==void 0?e:Vn;return n!==Vn&&(n=Vn+"."+n),n}_isIdentified(){var e,n;return((e=this.persistence)==null?void 0:e.get_property(ot))===mn||((n=this.sessionPersistence)==null?void 0:n.get_property(ot))===mn}Zn(){var e,n;return!(this.config.person_profiles==="never"||this.config.person_profiles===pa&&!this._isIdentified()&&Vt(this.getGroups())&&((e=this.persistence)==null||(e=e.props)==null||!e[Pi])&&((n=this.persistence)==null||(n=n.props)==null||!n[Zr]))}zn(){return this.config.capture_pageleave===!0||this.config.capture_pageleave==="if_capture_pageview"&&(this.config.capture_pageview===!0||this.config.capture_pageview==="history_change")}createPersonProfile(){this.Zn()||this.Gn("posthog.createPersonProfile")&&this.setPersonProperties({},{})}setInternalOrTestUser(){this.Gn("posthog.setInternalOrTestUser")&&this.setPersonProperties({$internal_or_test_user:!0})}Gn(e){return this.config.person_profiles==="never"?(A.error(e+' was called, but process_person is set to "never". This call will be ignored.'),!1):(this.Kn(Zr,!0),!0)}En(){if(this.config.cookieless_mode==="always")return!0;var e=this.consent.isOptedOut();return this.config.disable_persistence||e&&!(!this.config.opt_out_persistence_by_default&&this.config.cookieless_mode!==In)}es(){var e,n,i,r,s=this.En();return((e=this.persistence)==null?void 0:e.xi)!==s&&((i=this.persistence)==null||i.set_disabled(s)),((n=this.sessionPersistence)==null?void 0:n.xi)!==s&&((r=this.sessionPersistence)==null||r.set_disabled(s)),s&&(this.yn.clear(),this.Qn()),s}opt_in_capturing(e){var n;if(this.config.cookieless_mode!==Ht){if(this.gn()){var i,r,s,o,a;this.Yn(!0,!0),(i=this.sessionManager)==null||i.destroy(),(r=this.pageViewManager)==null||r.destroy(),this.sessionManager=new Zc(this),this.pageViewManager=new Uc(this),this.persistence&&(this.sessionPropsManager=new Jc(this,this.sessionManager,this.persistence));var l,u=(s=(o=this.config.__extensionClasses)==null?void 0:o.sessionRecording)!==null&&s!==void 0?s:(a=Je.__defaultExtensionClasses)==null?void 0:a.sessionRecording;u&&(this.sessionRecording=this.pn(this.sessionRecording,new u(this)),this.hn&&((l=this.sessionRecording)==null||l.onRemoteConfig==null||l.onRemoteConfig(this.hn)))}var c,d;this.consent.optInOut(!0),this.es(),this.Bn(),(n=this.sessionRecording)==null||n.startIfEnabledOrStop(),this.config.cookieless_mode==In&&((c=this.surveys)==null||c.loadIfEnabled()),(C(e?.captureEventName)||e!=null&&e.captureEventName)&&this.capture((d=e?.captureEventName)!==null&&d!==void 0?d:"$opt_in",e?.captureProperties,{send_instantly:!0}),this.config.capture_pageview&&this.Hn()}else A.warn(eu)}opt_out_capturing(){var e,n,i;this.config.cookieless_mode!==Ht?(this.config.cookieless_mode===In&&this.consent.isOptedIn()&&this.Yn(!0,!0),this.consent.optInOut(!1),this.es(),this.config.cookieless_mode===In&&(this.register({distinct_id:hr,$device_id:null}),(e=this.sessionRecording)==null||e.stopRecording(),this.sessionRecording=void 0,(n=this.sessionManager)==null||n.destroy(),(i=this.pageViewManager)==null||i.destroy(),this.sessionManager=void 0,this.sessionPropsManager=void 0,this.config.capture_pageview&&this.Hn(),this.Bn())):A.warn(eu)}has_opted_in_capturing(){return this.consent.isOptedIn()}has_opted_out_capturing(){return this.consent.isOptedOut()}get_explicit_consent_status(){var e=this.consent.consent;return e===1?"granted":e===0?"denied":"pending"}is_capturing(){return this.config.cookieless_mode===Ht||(this.config.cookieless_mode===In?this.consent.isRejected()||this.consent.isOptedIn():!this.has_opted_out_capturing())}clear_opt_in_out_capturing(){this.consent.reset(),this.es()}_is_bot(){return Ue?$f(Ue,this.config.custom_blocked_useragents):void 0}Hn(){F&&(F.visibilityState==="visible"?this.wn||(this.wn=!0,this.capture(qn,{title:F.title},{send_instantly:!0}),this.kn&&(F.removeEventListener(Xr,this.kn),this.kn=null)):this.kn||(this.kn=this.Hn.bind(this),ve(F,Xr,this.kn)))}debug(e){e===!1?(w?.console.log("You've disabled debug mode."),this.set_config({debug:!1})):(w?.console.log("You're now in debug mode. All calls to PostHog will be logged in your console.\nYou can disable this with `posthog.debug(false)`."),this.set_config({debug:!0}))}Qi(){var e=this.Mn||{};return"advanced_disable_flags"in e?!!e.advanced_disable_flags:this.config.advanced_disable_flags!==!1?!!this.config.advanced_disable_flags:this.config.advanced_disable_decide===!0?(A.warn("Config field 'advanced_disable_decide' is deprecated. Please use 'advanced_disable_flags' instead. The old field will be removed in a future major version."),!0):(function(n,i,r,s,o){var a=i in n&&!H(n[i]),l=r in n&&!H(n[r]);return a?n[i]:!!l&&(o&&o.warn("Config field '"+r+"' is deprecated. Please use '"+i+"' instead. The old field will be removed in a future major version."),n[r])})(e,"advanced_disable_flags","advanced_disable_decide",0,A)}Pt(e){var n;if(H(this.config.before_send))return e;var i=Object.keys((n=e.properties)!==null&&n!==void 0?n:{}).filter(Mp),r=U(this.config.before_send)?this.config.before_send:[this.config.before_send],s=e;for(var o of r){if(s=o(s),H(s)){var a="Event '"+e.event+"' was rejected in beforeSend function";return $p(e.event)?A.warn(a+". This can cause unexpected behavior."):A.info(a),null}s.properties&&!Vt(s.properties)||A.warn("Event '"+e.event+"' has no properties after beforeSend function, this is likely an error.")}for(var l of i)if(s.properties&&H(s.properties[l]))return A.warn("Event '"+e.event+"' had its '"+l+"' property removed in a beforeSend function. This property is required for ingestion, so the event will be dropped."),null;return s}getPageViewId(){var e;return(e=this.pageViewManager.ui)==null?void 0:e.pageViewId}captureTraceFeedback(e,n){this.capture("$ai_feedback",{$ai_trace_id:String(e),$ai_feedback_text:n})}captureTraceMetric(e,n,i){this.capture("$ai_metric",{$ai_trace_id:String(e),$ai_metric_name:n,$ai_metric_value:String(i)})}Cn(e){var n=gt(e)&&!e,i=le.N()&&le.P("ph_debug")==="true";return!n&&(!!i||e)}}Je.__defaultExtensionClasses={},Je.rs=(()=>{var t=()=>{};return{trace:t,debug:t,info:t,warn:t,error:t,fatal:t}})(),(function(t,e){for(var n=0;e.length>n;n++)t.prototype[e[n]]=Eg(t.prototype[e[n]])})(Je,["identify"]);class iu{constructor(e){this.disabled=e===!1;var n=he(e)?e:{};this.thresholdPx=n.threshold_px||30,this.timeoutMs=n.timeout_ms||1e3,this.clickCount=n.click_count||3,this.clicks=[]}isRageClick(e,n,i){if(this.disabled)return!1;var r=this.clicks[this.clicks.length-1];if(r&&Math.abs(e-r.x)+Math.abs(n-r.y)i-r.timestamp){if(this.clicks.push({x:e,y:n,timestamp:i}),this.clicks.length===this.clickCount)return!0}else this.clicks=[{x:e,y:n,timestamp:i}];return!1}}var $o="$copy_autocapture",Mo=pe("[AutoCapture]");function Lo(t,e){return e.length>t?e.slice(0,t)+"...":e}function km(t){if(t.previousElementSibling)return t.previousElementSibling;var e=t;do e=e.previousSibling;while(e&&!fn(e));return e}function Cm(t,e){var n,i,r=e.e,s=e.maskAllElementAttributes,o=e.maskAllText,a=e.elementAttributeIgnoreList,l=e.elementsChainAsString,u=e.disableCaptureUrlHashes;if(!fn(t))return{props:{}};for(var c=[t],d=new Set([t]),f=t;f.parentNode&&!Qe(f,"body")&&nf>c.length;)if(tf(f.parentNode)){var h=f.parentNode.host;if(d.has(h))break;d.add(h),c.push(h),f=h}else{if(!fn(f.parentNode)||d.has(f.parentNode))break;d.add(f.parentNode),c.push(f.parentNode),f=f.parentNode}var p,g,m=[],v={},S=!1,b=!1;if(ie(c,(E=>{var P=va(E);if(Qe(E,"a")){var $=E.getAttribute("href");S=!!(P&&$&&ji($))&&(u?dn($):$)}j(ts(E),"ph-no-capture")&&(b=!0),m.push((function(L,N,G,V,M){M===void 0&&(M=!1);var R=L.tagName.toLowerCase(),Z={tag_name:R};ul.indexOf(R)>-1&&!G&&(Z.$el_text=R.toLowerCase()==="a"||R.toLowerCase()==="button"?Lo(1024,Bc(L)):Lo(1024,Yi(L)));var Ce=ts(L);Ce.length>0&&(Z.classes=Ce.filter((function(ae){return ae!==""}))),ie(L.attributes,(function(ae){var Ie;if((!lf(L)||["name","id","class","aria-label"].indexOf(ae.name)!==-1)&&(V==null||!V.includes(ae.name))&&!N&&ji(ae.value)&&(!X(Ie=ae.name)||Ie.substring(0,10)!=="_ngcontent"&&Ie.substring(0,7)!=="_nghost")){var Se=ae.value;ae.name==="class"&&(Se=cl(Se).join(" ")),Z["attr__"+ae.name]=Lo(1024,ae.name==="href"&&M?dn(Se):Se)}}));for(var oe=1,ye=1,$e=L;$e=km($e);)oe++,$e.tagName===L.tagName&&ye++;return Z.nth_child=oe,Z.nth_of_type=ye,Z})(E,s,o,a,u));var O=(function(L){if(!va(L))return{};var N={};return ie(L.attributes,(function(G){if(G.name&&G.name.indexOf("data-ph-capture-attribute")===0){var V=G.name.replace("data-ph-capture-attribute-",""),M=G.value;V&&M&&ji(M)&&(N[V]=M)}})),N})(E);fe(v,O)})),b)return{props:{},explicitNoCapture:b};if(o||(m[0].$el_text=Qe(t,"a")||Qe(t,"button")?Bc(t):Yi(t)),S){var _,x;m[0].attr__href=S;var I=(_=ns(S))==null?void 0:_.host,T=w==null||(x=w.location)==null?void 0:x.host;I&&T&&I!==T&&(p=S)}return{props:fe({$event_type:r.type,$ce_version:1},l?{}:{$elements:m},{$elements_chain:(g=m,(function(E){return E.map((P=>{var $,O,L="";if(P.tag_name&&(L+=P.tag_name),P.attr_class)for(var N of(P.attr_class.sort(),P.attr_class))L+="."+N.replace(/"/g,"");var G=k({},P.text?{text:P.text}:{},{"nth-child":($=P.nth_child)!==null&&$!==void 0?$:0,"nth-of-type":(O=P.nth_of_type)!==null&&O!==void 0?O:0},P.href?{href:P.href}:{},P.attr_id?{attr_id:P.attr_id}:{},P.attributes),V={};return Fr(G).sort(((M,R)=>M[0].localeCompare(R[0]))).forEach((M=>{var R=M[1];return V[Dc(M[0].toString())]=Dc(R.toString())})),(L+=":")+Fr(V).map((M=>M[0]+'="'+M[1]+'"')).join("")})).join(";")})((function(E){return E.map((P=>{var $,O,L={text:($=P.$el_text)==null?void 0:$.slice(0,400),tag_name:P.tag_name,href:(O=P.attr__href)==null?void 0:O.slice(0,2048),attr_class:Ug(P),attr_id:P.attr__id,nth_child:P.nth_child,nth_of_type:P.nth_of_type,attributes:{}};return Fr(P).filter((N=>N[0].indexOf("attr__")===0)).forEach((N=>L.attributes[N[0]]=N[1])),L}))})(g)))},(n=m[0])!=null&&n.$el_text?{$el_text:(i=m[0])==null?void 0:i.$el_text}:{},p&&r.type==="click"?{$external_click_url:p}:{},v)}}var xi=pe("[ExceptionAutocapture]"),ru=()=>{},Am=pe("[TracingHeaders]"),yn=pe("[Web Vitals]"),su=9e5,ou="disabled",au="lazy_loading",Ii="awaiting_config",wr="missing_config";pe("[SessionRecording]"),pe("[SessionRecording]");var Ia="[SessionRecording]",Ot=pe(Ia),Pm=pe("[Heatmaps]");function No(t){return he(t)&&"clientX"in t&&"clientY"in t&&ke(t.clientX)&&ke(t.clientY)}var br=pe("[Product Tours]"),Oo=t=>{var e;return!t.config.disable_product_tours&&!((e=t.persistence)==null||!e.get_property(sl))},Fm=["$set_once","$set"],bt=pe("[SiteApps]"),lu="Error while initializing PostHog app with config id ";function Wn(t,e,n){if(H(t))return!1;switch(n){case"exact":return t===e;case"contains":var i=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/_/g,".").replace(/%/g,".*");return new RegExp(i,"i").test(t);case"regex":try{return new RegExp(e).test(t)}catch{return!1}default:return!1}}class Rm{constructor(e){this.ns=new pl,this.ss=(n,i)=>this.os(n,i)&&this.ls(n,i)&&this.us(n,i)&&this.hs(n,i),this.os=(n,i)=>i==null||!i.event||n?.event===i?.event,this._instance=e,this.ds=new Set,this.vs=new Set}init(){var e,n;C((e=this._instance)==null?void 0:e._addCaptureHook)||(n=this._instance)==null||n._addCaptureHook(((i,r)=>{this.on(i,r)}))}register(e){var n,i;if(!C((n=this._instance)==null?void 0:n._addCaptureHook)&&(e.forEach((o=>{var a,l;(a=this.vs)==null||a.add(o),(l=o.steps)==null||l.forEach((u=>{var c;(c=this.ds)==null||c.add(u?.event||"")}))})),(i=this._instance)!=null&&i.autocapture)){var r,s=new Set;e.forEach((o=>{var a;(a=o.steps)==null||a.forEach((l=>{l!=null&&l.selector&&s.add(l?.selector)}))})),(r=this._instance)==null||r.autocapture.setElementSelectors(s)}}on(e,n){var i;n!=null&&e.length!=0&&(this.ds.has(e)||this.ds.has(n.event))&&this.vs&&((i=this.vs)==null?void 0:i.size)>0&&this.vs.forEach((r=>{this.cs(n,r)&&this.ns.emit("actionCaptured",r.name)}))}fs(e){this.onAction("actionCaptured",(n=>e(n)))}cs(e,n){if(n?.steps==null)return!1;for(var i of n.steps)if(this.ss(e,i))return!0;return!1}onAction(e,n){return this.ns.on(e,n)}ls(e,n){if(n!=null&&n.url){var i,r=e==null||(i=e.properties)==null?void 0:i.$current_url;if(!r||typeof r!="string"||!Wn(r,n.url,n.url_matching||"contains"))return!1}return!0}us(e,n){return!!this.ps(e,n)&&!!this.gs(e,n)&&!!this.ys(e,n)}ps(e,n){var i;if(n==null||!n.href)return!0;var r=this.bs(e);if(r.length>0)return r.some((a=>Wn(a.href,n.href,n.href_matching||"exact")));var s,o=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";return!!o&&Wn((s=o.match(/(?::|")href="(.*?)"/))?s[1]:"",n.href,n.href_matching||"exact")}gs(e,n){var i;if(n==null||!n.text)return!0;var r=this.bs(e);if(r.length>0)return r.some((u=>Wn(u.text,n.text,n.text_matching||"exact")||Wn(u.$el_text,n.text,n.text_matching||"exact")));var s,o,a,l=(e==null||(i=e.properties)==null?void 0:i.$elements_chain)||"";return!!l&&(s=(function(u){for(var c,d=[],f=/(?::|")text="(.*?)"/g;!H(c=f.exec(u));)d.includes(c[1])||d.push(c[1]);return d})(l),o=n.text,a=n.text_matching||"exact",s.some((u=>Wn(u,o,a))))}ys(e,n){var i,r;if(n==null||!n.selector)return!0;var s=e==null||(i=e.properties)==null?void 0:i.$element_selectors;if(s!=null&&s.includes(n.selector))return!0;var o=(e==null||(r=e.properties)==null?void 0:r.$elements_chain)||"";if(n.selector_regex&&o)try{return new RegExp(n.selector_regex).test(o)}catch{return!1}return!1}bs(e){var n;return(e==null||(n=e.properties)==null?void 0:n.$elements)==null?[]:e?.properties.$elements}hs(e,n){return n==null||!n.properties||n.properties.length===0||Nf(n.properties.reduce(((i,r)=>{var s=U(r.value)?r.value.map(String):r.value!=null?[String(r.value)]:[];return i[r.key]={values:s,operator:r.operator||"exact"},i}),{}),e?.properties)}}class Tm{constructor(e){var n;this._s=[],this._instance=e,this.ws=new Map,this.ks=new Map,this.xs=new Map,(n=this._instance)==null||n.onSessionId==null||n.onSessionId((i=>this.Ss(i)))}Cs(e){return!1}Ms(){return null}Ts(e){}Es(){}Is(e,n){return!!e&&Nf(e.propertyFilters,n?.properties)}Ps(e,n){var i=new Map;return e.forEach((r=>{var s;(s=r.conditions)==null||(s=s[n])==null||(s=s.values)==null||s.forEach((o=>{if(o!=null&&o.name){var a=i.get(o.name)||[];a.push(r.id),i.set(o.name,a)}}))})),i}Rs(e,n,i){var r=(i===yi.Activation?this.ws:this.ks).get(e),s=[];return this.As((o=>{s=o.filter((a=>r?.includes(a.id)))})),s.filter((o=>{var a,l=(a=o.conditions)==null||(a=a[i])==null||(a=a.values)==null?void 0:a.find((u=>u.name===e));return this.Is(l,n)}))}register(e){var n;C((n=this._instance)==null?void 0:n._addCaptureHook)||(this.Fs(e),this.Ls(e))}Ls(e){var n=e.filter((i=>{var r,s;return((r=i.conditions)==null?void 0:r.actions)&&((s=i.conditions)==null||(s=s.actions)==null||(s=s.values)==null?void 0:s.length)>0}));n.length!==0&&(this.Os==null&&(this.Os=new Rm(this._instance),this.Os.init(),this.Os.fs((i=>{this.onAction(i)}))),n.forEach((i=>{var r,s,o,a,l;i.conditions&&(r=i.conditions)!=null&&r.actions&&(s=i.conditions)!=null&&(s=s.actions)!=null&&s.values&&((o=i.conditions)==null||(o=o.actions)==null||(o=o.values)==null?void 0:o.length)>0&&((a=this.Os)==null||a.register(i.conditions.actions.values),(l=i.conditions)==null||(l=l.actions)==null||(l=l.values)==null||l.forEach((u=>{if(u&&u.name){var c=this.xs.get(u.name);c&&c.push(i.id),this.xs.set(u.name,c||[i.id])}})))})))}Fs(e){var n,i=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.events)&&((a=s.conditions)==null||(a=a.events)==null||(a=a.values)==null?void 0:a.length)>0})),r=e.filter((s=>{var o,a;return((o=s.conditions)==null?void 0:o.cancelEvents)&&((a=s.conditions)==null||(a=a.cancelEvents)==null||(a=a.values)==null?void 0:a.length)>0}));i.length===0&&r.length===0||((n=this._instance)==null||n._addCaptureHook(((s,o)=>{this.onEvent(s,o)})),this.ws=this.Ps(e,yi.Activation),this.ks=this.Ps(e,yi.Cancellation))}onEvent(e,n){var i,r,s=this.Ds(),o=(n==null||(i=n.properties)==null?void 0:i.$survey_id)||(n==null||(r=n.properties)==null?void 0:r.$product_tour_id);if(o&&this.getActivatedIds().includes(o)){var a=this.$s(e,o);if(a==="consume")return s.info("event consumed activated item, removing it",{event:e,itemId:o}),void this.Ns([o]);if(a==="persist")return s.info("shown item promoted to persisted activation",{event:e,itemId:o}),this.qs(o),void this.js([o])}if(this.ks.has(e)){var l=this.Rs(e,n,yi.Cancellation);l.length>0&&(s.info("cancel event matched, cancelling items",{event:e,itemsToCancel:l.map((c=>c.id))}),this.Ns(l.map((c=>c.id))),l.forEach((c=>this.Bs(c.id))))}if(this.ws.has(e)){s.info("event name matched",{event:e,eventPayload:n,items:this.ws.get(e)});var u=this.Rs(e,n,yi.Activation);this.Hs(u.map((c=>c.id)))}}onAction(e){this.xs.has(e)&&this.Hs(this.xs.get(e)||[])}Hs(e){var n;if(e.length!==0){var i=!((n=this._instance)==null||n.get_session_id==null||!n.get_session_id()),r=[];for(var s of e)i&&this.Cs(s)?this.qs(s)&&this.Us(s):r.push(s);r.length>0&&(this._s=[...new Set([...this._s,...r])]),this.Ds().info("updating activated items",{activatedItems:this.getActivatedIds()})}}qs(e){this._s=this._s.filter((i=>i!==e));var n=this.zs();return!n.includes(e)&&(this.Ws([...n,e]),this.Vs(),!0)}Ns(e){var n=new Set(e);this._s=this._s.filter((s=>!n.has(s)));var i=this.Zs(),r=i.filter((s=>!n.has(s)));r.length!==i.length&&(this.Ws(r),r.length===0&&this.Gs()),this.js(e)}Qs(){var e,n=this.Ms();if(!n)return{};var i=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n];return i&&typeof i=="object"?i:{}}Us(e){if(this.Ms()){var n=this.Qs();this.Ts(k({},n,{[e]:Date.now()}))}}js(e){if(this.Ms()){var n=this.Qs(),i={},r=!1;for(var s of Object.entries(n)){var o=s[0],a=s[1];e.includes(o)?r=!0:i[o]=a}r&&(Vt(i)?this.Es():this.Ts(i))}}Ks(){this.Ms()&&this.Es()}getActivationTimestamp(e){if(this.zs().includes(e)){var n=this.Qs()[e];return ke(n)?n:void 0}}Zs(){var e,n=this.Js();return((e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[n])||[]}zs(){var e,n,i=this.Zs();if(i.length===0)return[];var r=(e=this._instance)==null||(e=e.persistence)==null?void 0:e.props[this.Ys()],s=(n=this._instance)==null||n.get_session_id==null?void 0:n.get_session_id();return s&&r===s?i:[]}Vs(){var e,n=(e=this._instance)==null||e.get_session_id==null?void 0:e.get_session_id();n&&this.Xs(n)}Gs(){this.ta()}Ss(e){var n,i=(n=this._instance)==null||(n=n.persistence)==null?void 0:n.props[this.Ys()];if(i&&i!==e){var r=this.Zs(),s=this.Qs();r.length>0&&(this.Ws([]),r.filter((o=>ke(s[o]))).forEach((o=>this.Bs(o)))),this.Gs(),this.Ks()}}getActivatedIds(){return[...new Set([...this.zs(),...this._s])].filter((e=>!this.ea(e)))}reset(){this._s=[],this.Zs().length>0&&this.Ws([]),this.Gs(),this.Ks()}getEventToItemsMap(){return this.ws}ia(){return this.Os}}class $m extends Tm{constructor(e){super(e)}Js(){return ca}Ys(){return Cr}Ms(){return Ar}Ts(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[Ar]:e})}Es(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(Ar)}Cs(e){var n,i;this.As((s=>{i=s.find((o=>o.id===e))}));var r=(n=i)==null||(n=n.appearance)==null?void 0:n.surveyPopupDelaySeconds;return ke(r)&&r>0}ra(){return zt.SHOWN}As(e){var n;(n=this._instance)==null||n.getSurveys(e)}Bs(e){var n;(n=this._instance)==null||n.cancelPendingSurvey(e)}Ds(){return Q}Ws(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[ca]:e})}Xs(e){var n;(n=this._instance)==null||(n=n.persistence)==null||n.register({[Cr]:e})}ta(){var e;(e=this._instance)==null||(e=e.persistence)==null||e.unregister(Cr)}ea(){return!1}$s(e,n){var i;this.As((s=>{i=s.find((o=>o.id===n))}));var r=!i||(function(s){var o;return Of(s)&&!((o=s.conditions)==null||(o=o.events)==null||!o.repeatedActivation)||s.schedule==="always"})(i);return r?e===zt.SHOWN?"consume":"ignore":e===zt.SHOWN?"persist":e===zt.DISMISSED||e===zt.SENT?"consume":"ignore"}getSurveys(){return this.getActivatedIds()}getEventToSurveys(){return this.getEventToItemsMap()}}var Er="SDK is not enabled or survey functionality is not yet loaded",cu="Disabled. Not loading surveys.",Mm=w!=null&&w.location?is(w.location.hash,"__posthog")||is(location.hash,"state"):null,uu="_postHogToolbarParams",du=pe("[Toolbar]"),fu=pe("[FeatureFlags]");class Lm{constructor(e,n){n===void 0&&(n=!1),this.na=!1,this.update(e,n)}update(e,n){this.sa=((i,r)=>{var s,o,a,l;return{bootstrap:{featureFlags:(s=i.bootstrap)==null?void 0:s.featureFlags,featureFlagPayloads:(o=i.bootstrap)==null?void 0:o.featureFlagPayloads},remoteRequestsDisabled:r,featureFlagsDisabled:!!i.advanced_disable_feature_flags,onlyEvaluateSurveyFeatureFlags:!!i.advanced_only_evaluate_survey_feature_flags,deduplicateCallsPerSession:!!i.advanced_feature_flags_dedup_per_session,cacheTtlMs:i.feature_flag_cache_ttl_ms,requestTimeoutMs:i.feature_flag_request_timeout_ms,compression:i.disable_compression?"none":"base64",evaluationContexts:(a=(l=i.evaluation_contexts)!==null&&l!==void 0?l:i.evaluation_environments)!==null&&a!==void 0?a:[],flagKeys:U(i.flag_keys)?i.flag_keys:void 0}})(e,n),!e.evaluation_environments||e.evaluation_contexts||this.na||(fu.warn("evaluation_environments is deprecated. Use evaluation_contexts instead. evaluation_environments will be removed in a future version."),this.na=!0),C(e.flag_keys)||U(e.flag_keys)||fu.error("Invalid flag_keys found:",e.flag_keys,"Expected array of non-empty strings")}get(){return this.sa}}var hu=pe("[FeatureFlags]"),wn=pe("[FeatureFlags]",{debugEnabled:!0}),Bo=`" failed. Feature flags didn't load in time.`,pu="connection_error",gu=t=>{for(var e={},n=0;t.length>n;n++)e[t[n]]=!0;return e},mu=t=>{var e={};for(var n of Fr(t||{})){var i=n[1];i&&(e[n[0]]=i)}return e},Et=pe("[Error tracking]"),vu="Refusing to render web experiment since the viewer is a likely bot",Nm={icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())>-1,not_icontains:(t,e)=>e.toLowerCase().indexOf(t.toLowerCase())===-1,regex:(t,e)=>os(e,t),not_regex:(t,e)=>!os(e,t),exact:(t,e)=>e===t,is_not:(t,e)=>e!==t};class Me{get Ne(){return this._instance.config}constructor(e){var n=this;this.getWebExperimentsAndEvaluateDisplayLogic=function(i){i===void 0&&(i=!1),n.getWebExperiments((r=>{Me.aa("retrieved web experiments from the server"),n.oa=new Map,r.forEach((s=>{if(s.feature_flag_key){var o;n.oa&&(Me.aa("setting flag key ",s.feature_flag_key," to web experiment ",s),(o=n.oa)==null||o.set(s.feature_flag_key,s));var a=n._instance.getFeatureFlag(s.feature_flag_key);X(a)&&s.variants[a]&&n.la(s.name,a,s.variants[a].transforms)}else if(s.variants)for(var l in s.variants){var u=s.variants[l];Me.ua(u,n._instance)&&n.la(s.name,l,u.transforms)}}))}),i)},this._instance=e,this._instance.onFeatureFlags((i=>{this.onFeatureFlags(i)}))}initialize(){}onFeatureFlags(e){if(this._is_bot())Me.aa(vu);else if(!this.Ne.disable_web_experiments){if(H(this.oa))return this.oa=new Map,this.loadIfEnabled(),void this.previewWebExperiment();Me.aa("applying feature flags",e),e.forEach((n=>{var i;if(this.oa&&(i=this.oa)!=null&&i.has(n)){var r,s=this._instance.getFeatureFlag(n),o=(r=this.oa)==null?void 0:r.get(n);s&&o!=null&&o.variants[s]&&this.la(o.name,s,o.variants[s].transforms)}}))}}previewWebExperiment(){var e=Me.getWindowLocation();if(e!=null&&e.search){var n=ni(e?.search,"__experiment_id"),i=ni(e?.search,"__experiment_variant");n&&i&&(Me.aa("previewing web experiments "+n+" && "+i),this.getWebExperiments((r=>{this.ha(parseInt(n),i,r)}),!1,!0))}}loadIfEnabled(){this.Ne.disable_web_experiments||this.getWebExperimentsAndEvaluateDisplayLogic()}getWebExperiments(e,n,i){if(this.Ne.disable_web_experiments&&!i)return e([]);var r=this._instance.get_property("$web_experiments");if(r&&!n)return e(r);this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/web_experiments/?token="+this.Ne.token),method:"GET",timestampMode:"query",callback:s=>e(s.statusCode===200&&s.json&&s.json.experiments||[])})}ha(e,n,i){var r=i.filter((s=>s.id===e));r&&r.length>0&&(Me.aa("Previewing web experiment ["+r[0].name+"] with variant ["+n+"]"),this.la(r[0].name,n,r[0].variants[n].transforms))}static ua(e,n){return!H(e.conditions)&&Me.da(e,n)&&Me.va(e)}static da(e,n){var i;if(H(e.conditions)||H((i=e.conditions)==null?void 0:i.url))return!0;var r=Me.getWindowLocation();if(r){var s,o,a,l=Xd(n,r.href);return(s=e.conditions)==null||!s.url||Nm[(o=(a=e.conditions)==null?void 0:a.urlMatchType)!==null&&o!==void 0?o:"icontains"](e.conditions.url,l)}return!1}static getWindowLocation(){return w?.location}static va(e){var n;if(H(e.conditions)||H((n=e.conditions)==null?void 0:n.utm))return!0;var i=pf();if(i.utm_source){var r,s,o,a,l,u,c,d,f=(r=e.conditions)==null||(r=r.utm)==null||!r.utm_campaign||((s=e.conditions)==null||(s=s.utm)==null?void 0:s.utm_campaign)==i.utm_campaign,h=(o=e.conditions)==null||(o=o.utm)==null||!o.utm_source||((a=e.conditions)==null||(a=a.utm)==null?void 0:a.utm_source)==i.utm_source,p=(l=e.conditions)==null||(l=l.utm)==null||!l.utm_medium||((u=e.conditions)==null||(u=u.utm)==null?void 0:u.utm_medium)==i.utm_medium,g=(c=e.conditions)==null||(c=c.utm)==null||!c.utm_term||((d=e.conditions)==null||(d=d.utm)==null?void 0:d.utm_term)==i.utm_term;return f&&p&&g&&h}return!1}static aa(e){for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;n>r;r++)i[r-1]=arguments[r];A.info("[WebExperiments] "+e,i)}la(e,n,i){this._is_bot()?Me.aa(vu):n!=="control"?i.forEach((r=>{if(r.selector){var s;Me.aa("applying transform of variant "+n+" for experiment "+e+" ",r);var o=(s=document)==null?void 0:s.querySelectorAll(r.selector);o?.forEach((a=>{var l=a;r.html&&(l.innerHTML=r.html),r.css&&l.setAttribute("style",r.css)}))}})):Me.aa("Control variants leave the page unmodified.")}_is_bot(){return Ue&&this._instance?$f(Ue,this.Ne.custom_blocked_useragents):void 0}}var st=pe("[Conversations]"),bn="Conversations not available yet.",_u="console",Hf="__posthogHandledLogsRequestError",Do=(t,e)=>{var n=t instanceof Error?t:new Error(e);return n[Hf]=!0,n},yu=t=>!!t&&typeof t=="object"&&t[Hf]===!0,ks={featureFlags:class{constructor(t){this.name="featureFlags",this.ca=!1,this.featureFlagEventHandlers=[],this.rt=hu,this.fa={},this.pa={},this.ga=[],this.ma=!1,this.ya=!1,this.ba=0,this._a=!1,this.wa=!1,this.ka=!1,this.xa=!1,this.Sa=0,this.Ca=()=>{var e=this.Ma();this.Sa=0,e&&this.reloadFeatureFlags()},"get"in t?this.Ta=t:(this.Ea=new Lm(t.config,t.Qi()),this.Ta=this.Ea)}updateConfig(t,e){var n;(n=this.Ea)==null||n.update(t,e)}setup(t){return this.Ia=t,this.rt=t.logger.createLogger("[FeatureFlags]"),n=()=>{this.Ia===t&&(this.Ia=void 0,this.nn=t,this.Pa(t))},(e=t.kv.initialize())!=null&&e.then?e.then(n):n();var e,n}Pa(t){if(this.nn===t)return w&&ve(w,"online",this.Ca),this.Ra=t.registerDynamicEventProperties((()=>this.Aa()?this.fa:this.pa)),this.Fa(),this.initialize()}destroy(){w?.removeEventListener("online",this.Ca)}dispose(){var t;this.ba++,this.wa=!1,this.Ia=void 0,this.nn&&(this.La(),(t=this.Ra)==null||t.dispose(),this.Ra=void 0,this.ga=[],w?.removeEventListener("online",this.Ca),this.nn=void 0)}get Ne(){return this.Ta.get()}Oa(t){var e;return(e=this.nn)==null?void 0:e.kv.get(t)}F(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.set(t)}))}q(t){this.Da((()=>{var e;return(e=this.nn)==null?void 0:e.kv.remove(t)}))}Da(t){try{t()}catch(e){this.rt.error("Failed to update feature flag persistence",e)}}Fa(){var t={};for(var e of[Ri,Ti,kr,xt]){var n=this.Oa(e);C(n)||(t[e]=n)}this.fa=t;var i=k({},t),r=this.Oa(En);if(r)for(var s of Object.entries(r))i["$feature/"+s[0]]=s[1];this.pa=i}Aa(){var t=this.Ne.cacheTtlMs;if(!t||0>=t)return!1;var e=this.Oa(Di);return typeof e!="number"||Date.now()-e>t}$a(){return!!this.Aa()&&(this.xa||this.ya||(this.xa=!0,this.rt.warn("Feature flag cache is stale, triggering refresh..."),this.reloadFeatureFlags()),!0)}Na(){var t=this.Ne.evaluationContexts;return t!=null&&t.length?t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid evaluation context found:",e,"Expected non-empty string"),n})):[]}qa(){var t=this.Ne.flagKeys;if(!C(t))return t.filter((e=>{var n=e&&typeof e=="string"&&e.trim().length>0;return n||this.rt.error("Invalid flag key found:",e,"Expected non-empty string"),n}))}initialize(){var t,e,n=this.Ne,i=(t=(e=n.bootstrap)==null?void 0:e.featureFlags)!==null&&t!==void 0?t:{};if(Object.keys(i).length){var r,s,o=(r=(s=n.bootstrap)==null?void 0:s.featureFlagPayloads)!==null&&r!==void 0?r:{},a=Object.keys(i).filter((u=>!!i[u])).reduce(((u,c)=>(u[c]=i[c]||!1,u)),{}),l=Object.keys(o).filter((u=>a[u])).reduce(((u,c)=>(o[c]&&(u[c]=o[c]),u)),{});return this.ja({featureFlags:a,featureFlagPayloads:l})}}updateFlags(t,e,n){var i,r,s=n!=null&&n.merge&&(i=this.Oa(En))!==null&&i!==void 0?i:{},o=n!=null&&n.merge&&(r=this.Oa(Ti))!==null&&r!==void 0?r:{},a=k({},s,t),l=k({},o,e),u={};for(var c of Object.entries(a)){var d=c[0],f=c[1];u[d]={key:d,enabled:dc(f),variant:fc(f),reason:void 0,metadata:C(l?.[d])?void 0:{id:0,version:void 0,description:void 0,payload:l[d]}}}this.ja({flags:u})}get hasLoadedFlags(){return this.ma}getFlags(){return Object.keys(this.getFlagVariants())}getFlagsWithDetails(){var t=this.Oa(aa),e=this.Oa(xt),n=this.Oa(Sn);if(!n&&!e)return t||{};var i=fe({},t||{}),r=[...new Set([...Object.keys(n||{}),...Object.keys(e||{})])];for(var s of r){var o,a,l=i[s],u=e?.[s],c=C(u)?(o=l?.enabled)!==null&&o!==void 0&&o:!!u,d=C(u)?l?.variant:typeof u=="string"?u:void 0,f=n?.[s],h=k({},l,{enabled:c,variant:c?d??l?.variant:void 0});c!==l?.enabled&&(h.original_enabled=l?.enabled),d!==l?.variant&&(h.original_variant=l?.variant),f&&(h.metadata=k({},l?.metadata,{payload:f,original_payload:l==null||(a=l.metadata)==null?void 0:a.payload})),i[s]=h}return this.ca||(this.rt.warn(" Overriding feature flag details!",{flagDetails:t,overriddenPayloads:n,finalDetails:i}),this.ca=!0),i}getAllFeatureFlags(){var t=this.getFlagVariants(),e=this.getFlagPayloads();return Object.keys(t).map((n=>{var i=t[n];return{key:n,enabled:dc(i),variant:fc(i),payload:uc(e[n])}}))}getFlagVariants(){var t=this.Oa(En),e=this.Oa(xt);if(!e)return t||{};for(var n=fe({},t||{}),i=Object.keys(e),r=0;i.length>r;r++)n[i[r]]=e[i[r]];return this.ca||(this.rt.warn(" Overriding feature flags!",{enabledFlags:t,overriddenFlags:e,finalFlags:n}),this.ca=!0),n}getFlagPayloads(){var t=this.Oa(Ti),e=this.Oa(Sn);if(!e)return t||{};for(var n=fe({},t||{}),i=Object.keys(e),r=0;i.length>r;r++)n[i[r]]=e[i[r]];return this.ca||(this.rt.warn(" Overriding feature flag payloads!",{flagPayloads:t,overriddenPayloads:e,finalPayloads:n}),this.ca=!0),n}reloadFeatureFlags(){this._a||this.Ne.featureFlagsDisabled||this.Ma()||this.Ba||(this.ga.slice().forEach((t=>{try{t()}catch(e){this.rt.error("Error while running feature flags reloading callback",e)}})),this.Ba=setTimeout((()=>{this.Ha()}),5))}La(){clearTimeout(this.Ba),this.Ba=void 0}onReloading(t){return this.ga.push(t),()=>{this.ga=this.ga.filter((e=>e!==t))}}ensureFlagsLoaded(){this.ma||this.ya||this.Ba||this.reloadFeatureFlags()}setAnonymousDistinctId(t){this.$anon_distinct_id=t}setReloadingPaused(t){this._a=t}resetFlagCallReported(){this.q(kn)}Ha(t){this.La();var e=this.nn;if(e&&!this.Ne.remoteRequestsDisabled&&!this.Ma())if(this.ya)this.wa=!0;else{var n={token:e.projectToken,distinct_id:e.distinctId,groups:e.groups,$anon_distinct_id:this.$anon_distinct_id,person_properties:k({},e.initialPersonProperties,this.Oa(Dt)||{},{$lib:e.library.name,$lib_version:e.library.version}),group_properties:this.Oa(xn),timezone:wf()};C(e.deviceId)||(n.$device_id=e.deviceId),(t!=null&&t.disableFlags||this.Ne.featureFlagsDisabled)&&(n.disable_flags=!0);var i=this.Na();i.length&&(n.evaluation_contexts=i);var r=this.qa();C(r)||(n.flag_keys=r);var s=this.Ne.onlyEvaluateSurveyFeatureFlags,o="/flags/?v=2"+(s?"&only_evaluate_survey_feature_flags=true":""),a=this.ba;this.ya=!0;var l=()=>{this.wa&&(this.wa=!1,this.Ha())},u=c=>{this.ya=!1,a===this.ba&&(this.F({[Pr]:[pu]}),this.rt.error("Feature flag request failed",c)),l()};try{e.sendRequest(o,{target:"flags",method:"POST",body:n,compression:this.Ne.compression==="base64"?je.Base64:void 0,sentAt:"body",timeoutMs:this.Ne.requestTimeoutMs}).then((c=>{var d,f,h=(d=c.json)!==null&&d!==void 0?d:{},p=c.statusCode!==200;if(this.ya=!1,a===this.ba){if(this.Ua(c.statusCode),p||this.wa||(this.$anon_distinct_id=void 0),!n.disable_flags||this.wa){this.ka=!p;var g=[];c.error?g.push(c.error instanceof Error&&c.error.name==="AbortError"?"timeout":c.error instanceof Error?pu:"unknown_error"):c.statusCode!==200&&g.push("api_error_"+c.statusCode),h.errorsWhileComputingFlags&&g.push("errors_while_computing_flags");var m=!((f=h.quotaLimited)==null||!f.includes("feature_flags"));m&&g.push("quota_limited"),this.F({[Pr]:g}),m?this.rt.warn("You have hit your feature flags quota limit, and will not be able to load feature flags until the quota is reset. Please visit https://posthog.com/docs/billing/limits-alerts to learn more."):n.disable_flags||this.ja(h,p,{partialResponse:s}),l()}}else l()})).catch(u)}catch(c){u(c)}}}Ma(){return ff(this.Sa,3)}Ua(t){this.Sa=hf(t,this.Sa,3,(()=>this.rt.warn("Feature flag requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped refreshing feature flags; will try again when connectivity changes.")))}getFeatureFlag(t,e){var n;if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var i=this.getFeatureFlagResult(t,e);return(n=i?.variant)!==null&&n!==void 0?n:i?.enabled}}else this.rt.warn('getFeatureFlag for key "'+t+Bo)}getFeatureFlagDetails(t){return this.getFlagsWithDetails()[t]}getFeatureFlagPayload(t){var e=this.getFeatureFlagResult(t,{send_event:!1});return e?.payload}getFeatureFlagResult(t,e){if(e===void 0&&(e={}),!e.fresh||this.ka)if(this.ma||this.getFlags()&&this.getFlags().length>0){if(!this.$a()){var n,i=this.getFlagVariants(),r=t in i,s=i[t],o=this.getFlagPayloads()[t],a=String(s),l=this.Oa(kr)||void 0,u=this.Oa(Di)||void 0,c=this.Oa(kn)||{};if(this.Ne.deduplicateCallsPerSession){var d,f=(d=this.nn)==null?void 0:d.session.sessionId,h=this.Oa(Mi);f&&f!==h&&(c={},n=f)}if(e.send_event||!("send_event"in e))if(t in c&&c[t].includes(a))n&&this.F({[kn]:c,[Mi]:n});else{var p,g,m,v,S,b,_,x,I,T;U(c[t])?c[t].push(a):c[t]=[a],this.F(k({[kn]:c},n?{[Mi]:n}:{}));var E=this.getFeatureFlagDetails(t),P=[...(p=this.Oa(Pr))!==null&&p!==void 0?p:[]];C(s)&&P.push("flag_missing");var $={$feature_flag:t,$feature_flag_response:s,$feature_flag_payload:o||null,$feature_flag_request_id:l,$feature_flag_evaluated_at:u,$feature_flag_bootstrapped_response:((g=this.Ne.bootstrap)==null||(g=g.featureFlags)==null?void 0:g[t])||null,$feature_flag_bootstrapped_payload:((m=this.Ne.bootstrap)==null||(m=m.featureFlagPayloads)==null?void 0:m[t])||null,$used_bootstrap_value:!this.ka};C(E==null||(v=E.metadata)==null?void 0:v.has_experiment)||($.$feature_flag_has_experiment=E.metadata.has_experiment),C(E==null||(S=E.metadata)==null?void 0:S.version)||($.$feature_flag_version=E.metadata.version);var O,L=(b=E==null||(_=E.reason)==null?void 0:_.description)!==null&&b!==void 0?b:E==null||(x=E.reason)==null?void 0:x.code;L&&($.$feature_flag_reason=L),E!=null&&(I=E.metadata)!=null&&I.id&&($.$feature_flag_id=E.metadata.id),C(E?.original_variant)&&C(E?.original_enabled)||($.$feature_flag_original_response=C(E.original_variant)?E.original_enabled:E.original_variant),E!=null&&(T=E.metadata)!=null&&T.original_payload&&($.$feature_flag_original_payload=E==null||(O=E.metadata)==null?void 0:O.original_payload),P.length&&($.$feature_flag_error=P.join(",")),this.za($)}else n&&this.F({[kn]:c,[Mi]:n});if(r)return{key:t,enabled:!!s,variant:typeof s=="string"?s:void 0,payload:uc(o)}}}else this.rt.warn('getFeatureFlagResult for key "'+t+Bo)}za(t){try{var e;(e=this.nn)==null||e.capture("$feature_flag_called",t).catch((n=>{this.rt.error("Failed to capture feature flag call",n)}))}catch(n){this.rt.error("Failed to capture feature flag call",n)}}getRemoteConfigPayload(t,e){this.Wa(t,e)}Wa(t,e){var n=this;return se((function*(){var i=n.nn;if(i){var r={distinct_id:i.distinctId,token:i.projectToken,person_properties:{$lib:i.library.name,$lib_version:i.library.version}},s=n.Na();s.length&&(r.evaluation_contexts=s);var o,a=n.qa();C(a)||(r.flag_keys=a);try{var l,u=(l=(yield i.sendRequest("/flags/?v=2",{target:"flags",method:"POST",body:r,compression:n.Ne.compression==="base64"?je.Base64:void 0,sentAt:"body",timeoutMs:n.Ne.requestTimeoutMs})).json)==null?void 0:l.featureFlagPayloads;o=u?.[t]||void 0}catch(c){return void n.rt.error("Remote config feature flag request failed",c)}try{e(o)}catch(c){n.rt.error("Remote config feature flag callback failed",c)}}}))()}isFeatureEnabled(t,e){if(e===void 0&&(e={}),e.fresh&&!this.ka)return e.defaultValue;if(!(this.ma||this.getFlags()&&this.getFlags().length>0))return this.rt.warn('isFeatureEnabled for key "'+t+Bo),e.defaultValue;var n=this.getFeatureFlag(t,e);return C(n)?e.defaultValue:!!n}addFeatureFlagsHandler(t){this.featureFlagEventHandlers.push(t)}removeFeatureFlagsHandler(t){this.featureFlagEventHandlers=this.featureFlagEventHandlers.filter((e=>e!==t))}receivedFeatureFlags(t,e,n){this.ja(t,e,n)}ja(t,e,n){if(this.nn){this.ma=!0;var i=(function(r,s,o,a,l,u){s===void 0&&(s={}),o===void 0&&(o={}),a===void 0&&(a={}),u===void 0&&(u=hu);var c=((I,T)=>{var E=I.flags;return E?k({},I,{featureFlags:Object.fromEntries(Object.keys(E).map((P=>{var $;return[P,($=E[P].variant)!==null&&$!==void 0?$:E[P].enabled]}))),featureFlagPayloads:Object.fromEntries(Object.keys(E).filter((P=>E[P].enabled)).filter((P=>{var $;return($=E[P].metadata)==null?void 0:$.payload})).map((P=>{var $;return[P,($=E[P].metadata)==null?void 0:$.payload]})))}):(I.featureFlags&&T.warn("Using an older version of the feature flags endpoint. Please upgrade your PostHog server to the latest version"),I)})(r,u),d=c.flags,f=c.featureFlags,h=c.featureFlagPayloads;if(f){var p=r.requestId,g=r.evaluatedAt;if(U(f)){u.warn("v1 of the feature flags endpoint is deprecated. Please use the latest version.");var m={};if(f)for(var v=0;f.length>v;v++)m[f[v]]=!0;return{[Ri]:f,[En]:m,[Kr]:!1}}var S=f,b=h,_=d;if(l!=null&&l.partialResponse)S=k({},s,S),b=k({},o,b),_=k({},a,_);else if(r.errorsWhileComputingFlags)if(d){var x=new Set(Object.keys(d).filter((I=>{var T;return!((T=d[I])!=null&&T.failed)})));S=k({},s,Object.fromEntries(Object.entries(S).filter((I=>x.has(I[0]))))),b=k({},o,Object.fromEntries(Object.entries(b||{}).filter((I=>x.has(I[0]))))),_=k({},a,Object.fromEntries(Object.entries(_||{}).filter((I=>x.has(I[0])))))}else S=k({},s,S),b=k({},o,b),_=k({},a,_);return k({[Ri]:Object.keys(mu(S)),[En]:S||{},[Ti]:b||{},[aa]:_||{},[Kr]:r.minimalFlagCalledEvents===!0},p?{[kr]:p}:{},g?{[Di]:g}:{})}})(t,this.getFlagVariants(),this.getFlagPayloads(),this.getFlagsWithDetails(),n,this.rt);i&&this.F(i),e||(this.xa=!1),this.Va(e)}}override(t,e){e===void 0&&(e=!1),this.rt.warn("override is deprecated. Please use overrideFeatureFlags instead."),this.overrideFeatureFlags({flags:t,suppressWarning:e})}overrideFeatureFlags(t){this.Za(t)}Za(t){if(this.nn){if(t===!1)return this.q([xt,Sn]),this.Va(),void wn.info("All overrides cleared");if(U(t))return this.F({[xt]:gu(t)}),this.Va(),void wn.info("Flag overrides set",{flags:t});if(t&&typeof t=="object"&&("flags"in t||"payloads"in t)){var e,n=t;this.ca=!!((e=n.suppressWarning)!==null&&e!==void 0&&e);var i={},r=n.flags,s=n.payloads;return r&&(i[xt]=U(r)?gu(r):r),s&&(i[Sn]=s),Object.keys(i).length&&this.F(i),r===!1&&s===!1?this.q([xt,Sn]):r===!1?this.q(xt):s===!1&&this.q(Sn),this.Va(),r===!1?wn.info("Flag overrides cleared"):r&&wn.info("Flag overrides set",{flags:r}),void(s===!1?wn.info("Payload overrides cleared"):s&&wn.info("Payload overrides set",{payloads:s}))}if(t&&typeof t=="object")return this.F({[xt]:t}),this.Va(),void wn.info("Flag overrides set",{flags:t});this.rt.warn("Invalid overrideOptions provided to overrideFeatureFlags",{overrideOptions:t})}else this.rt.warn("posthog.featureFlags.overrideFeatureFlags called before feature flags were ready")}onFeatureFlags(t){if(this.addFeatureFlagsHandler(t),this.ma){var e=this.Ga(),n=e.flags,i=e.flagVariants;try{t(n,i)}catch(r){this.rt.error("Error while running feature flags callback",r)}}return()=>this.removeFeatureFlagsHandler(t)}updateEarlyAccessFeatureEnrollment(t,e,n){var i=(this.Oa(Ir)||[]).find((l=>l.flagKey===t)),r={["$feature_enrollment/"+t]:e},s={$feature_flag:t,$feature_enrollment:e,$set:r};i&&(s.$early_access_feature_name=i.name),n&&(s.$feature_enrollment_stage=n);var o=k({},this.getFlagVariants(),{[t]:e});this.F({[Ri]:Object.keys(mu(o)),[En]:o,[Dt]:k({},this.Oa(Dt)||{},r)}),this.Va();try{var a;(a=this.nn)==null||a.capture("$feature_enrollment_update",s).catch((l=>{this.rt.error("Failed to capture early access feature enrollment",l)}))}catch(l){this.rt.error("Failed to capture early access feature enrollment",l)}}getEarlyAccessFeatures(t,e,n){e===void 0&&(e=!1);var i=this.Oa(Ir);!i||e?this.Qa(t,n):t(i)}Qa(t,e){var n=this;return se((function*(){var i=n.nn;if(i){var r,s=e?"&"+e.map((a=>"stage="+a)).join("&"):"";try{var o=yield i.sendRequest("/api/early_access_features/?token="+i.projectToken+s,{target:"api",method:"GET",sentAt:"query"});if(!o.json)return;n.F({[Ir]:r=o.json.earlyAccessFeatures})}catch(a){return void n.rt.error("Early access feature request failed",a)}try{t(r)}catch(a){n.rt.error("Early access feature callback failed",a)}}}))()}Ga(){var t=this.getFlags(),e=this.getFlagVariants();return{flags:t.filter((n=>e[n])),flagVariants:Object.keys(e).filter((n=>e[n])).reduce(((n,i)=>(n[i]=e[i],n)),{})}}Va(t){this.Fa();var e=this.Ga(),n=e.flags,i=e.flagVariants;this.featureFlagEventHandlers.forEach((r=>{try{r(n,i,{errorsLoading:t})}catch(s){this.rt.error("Error while running feature flags callback",s)}}))}setPersonPropertiesForFlags(t,e){e===void 0&&(e=!0),this.Ka(t,e)}Ka(t,e){e===void 0&&(e=!0);var n=this.Oa(Dt)||{},i=t?.$set||(t!=null&&t.$set_once?{}:t),r=t?.$set_once,s={};if(r)for(var o in r)({}).hasOwnProperty.call(r,o)&&(o in n||(s[o]=r[o]));this.F({[Dt]:k({},n,s,i)}),e&&this.reloadFeatureFlags()}unsetPersonPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=k({},this.Oa(Dt)||{});t.forEach((i=>{delete n[i]})),this.F({[Dt]:n}),e&&this.reloadFeatureFlags()}resetPersonPropertiesForFlags(t){t===void 0&&(t=!0),this.q(Dt),t&&this.reloadFeatureFlags()}setGroupPropertiesForFlags(t,e){e===void 0&&(e=!0);var n=this.Oa(xn)||{},i=k({},n);for(var r of Object.keys(t))i[r]=k({},n[r],t[r]);this.F({[xn]:i}),e&&this.reloadFeatureFlags()}resetGroupPropertiesForFlags(t){if(t){var e=this.Oa(xn)||{};this.F({[xn]:k({},e,{[t]:{}})})}else this.q(xn)}reset(){this.ba++,this.wa=!1,this.Fa(),this.ma=!1,this._a=!1,this.ka=!1,this.$anon_distinct_id=void 0,this.La(),this.ca=!1,this.Sa=0}}},Om={sessionRecording:class{get Ne(){return this._instance.config}get Mr(){return this._instance.persistence}get started(){var t;return!((t=this.Ja)==null||!t.isStarted)}get status(){var t,e;return this.Ya===Ii||this.Ya===wr?this.Ya:(t=(e=this.Ja)==null?void 0:e.status)!==null&&t!==void 0?t:this.Ya}constructor(t){if(this._forceAllowLocalhostNetworkCapture=!1,this.Ya=ou,this.Xa=void 0,this.eo=!1,this.io=(()=>{var e;if(F==null||!F.visibilityState||F.visibilityState==="visible")return!0;var n=w==null||(e=w.performance)==null||e.getEntriesByType==null?void 0:e.getEntriesByType("visibility-state");return!(n!=null&&n.length)||n.some((i=>i.name==="visible"))})(),this.Ie=()=>{var e;F?.visibilityState==="visible"&&(this.io=!0,(e=this.Ja)==null||e.setDocumentWasEverVisible==null||e.setDocumentWasEverVisible(!0))},this._instance=t,!this._instance.sessionManager)throw Ot.error("started without valid sessionManager"),new Error(Ia+" started without valid sessionManager. This is a bug.");if(this.Ne.cookieless_mode===Ht)throw new Error(Ia+' cannot be used with cookieless_mode="always"');F!=null&&F.addEventListener&&ve(F,"visibilitychange",this.Ie)}initialize(){this.startIfEnabledOrStop()}dispose(){this.eo=!0,F==null||F.removeEventListener==null||F.removeEventListener("visibilitychange",this.Ie),this.stopRecording()}get ro(){var t,e=!((t=this._instance.get_property(Cn))==null||!t.enabled),n=!this.Ne.disable_session_recording,i=this.Ne.disable_session_recording||this._instance.consent.isOptedOut();return w&&e&&n&&!i}startIfEnabledOrStop(t){var e;if(!(this.eo||this.ro&&(e=this.Ja)!=null&&e.isStarted)){var n=!C(Object.assign)&&!C(Array.from);this.ro&&n?(this.no(t),Ot.info("starting")):(this.Ya=ou,this.stopRecording())}}no(t){var e,n,i;this.ro&&(this.Ya!==Ii&&this.Ya!==wr&&(this.Ya=au),B!=null&&(e=B.__PosthogExtensions__)!=null&&(e=e.rrweb)!=null&&e.record&&(n=B.__PosthogExtensions__)!=null&&n.initSessionRecording?this.so(t):(i=B.__PosthogExtensions__)==null||i.loadExternalDependency==null||i.loadExternalDependency(this._instance,this.ao,(r=>{if(r)return Ot.error("could not load recorder",r);this.so(t)})))}stopRecording(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.stop()}oo(){var t,e;(t=this.Xa)==null||t.call(this),this.Xa=void 0,(e=this.Ja)==null||e.discard()}lo(){var t,e;(t=this.Mr)==null||t.unregister(ol),(e=this.Mr)==null||e.unregister(Ud)}uo(t,e){if(H(t))return null;var n,i=ke(t)?t:parseFloat(t);return typeof(n=i)!="number"||!Number.isFinite(n)||0>n||n>1?(Ot.warn(e+" must be between 0 and 1. Ignoring invalid value:",t),null):i}ho(t){if(this.Mr){var e,n,i=this.Mr,r=()=>{var s,o=t.sessionRecording===!1?void 0:t.sessionRecording,a=this.uo((s=this.Ne.session_recording)==null?void 0:s.sampleRate,"session_recording.sampleRate"),l=this.uo(o?.sampleRate,"remote config sampleRate"),u=a??l;H(u)&&this.lo();var c=o?.minimumDurationMilliseconds;i.register({[Cn]:k({cache_timestamp:Date.now(),enabled:!!o},o,{networkPayloadCapture:k({capturePerformance:t.capturePerformance},o?.networkPayloadCapture),canvasRecording:{enabled:o?.recordCanvas,fps:o?.canvasFps,quality:o?.canvasQuality},sampleRate:u,minimumDurationMilliseconds:C(c)?null:c,endpoint:o?.endpoint,triggerMatchType:o?.triggerMatchType,masking:o?.masking,urlTriggers:o?.urlTriggers,version:o?.version,triggerGroups:o?.triggerGroups})})};r(),(e=this.Xa)==null||e.call(this),this.Xa=(n=this._instance.sessionManager)==null?void 0:n.onSessionId(r)}}onRemoteConfig(t){var e=t.ok?t.config:void 0;return e&&"sessionRecording"in e?e.sessionRecording===!1?(this.ho(e),void this.oo()):(this.ho(e),void this.startIfEnabledOrStop()):(this.Ya===Ii&&(this.Ya=wr,Ot.warn("config refresh failed, recording will not start until page reload")),void this.startIfEnabledOrStop())}log(t,e){var n;e===void 0&&(e="log"),(n=this.Ja)!=null&&n.log?this.Ja.log(t,e):Ot.warn("log called before recorder was ready")}get ao(){var t,e,n=(t=this._instance)==null||(t=t.persistence)==null?void 0:t.get_property(Cn);return(n==null||(e=n.scriptConfig)==null?void 0:e.script)||"lazy-recorder"}do(){var t,e=this._instance.get_property(Cn);if(!e)return!1;try{t=typeof e=="object"?e:JSON.parse(e)}catch(n){return Ot.warn("persisted remote config for session recording is invalid and will be ignored",n),!1}return!H(t.cache_timestamp)&&36e5>=Date.now()-t.cache_timestamp}so(t){var e,n,i;if(!this.eo){if((e=B.__PosthogExtensions__)==null||!e.initSessionRecording)return Ot.warn("Called on script loaded before session recording is available. This can be caused by adblockers."),void this._instance.register_for_session({[Yd]:!0});var r;if(this.Ja||(this.Ja=(r=B.__PosthogExtensions__)==null?void 0:r.initSessionRecording(this._instance,this.io),this.Ja._forceAllowLocalhostNetworkCapture=this._forceAllowLocalhostNetworkCapture),!this.do())return this.Ya===wr||this.Ya===Ii?void 0:(this.Ya=Ii,Ot.info("persisted remote config is stale, requesting fresh config before starting"),void new bf(this._instance).load());this.Ya=au,(n=(i=this.Ja).setDocumentWasEverVisible)==null||n.call(i,this.io),this.Ja.start(t)}}onRRwebEmit(t){var e;(e=this.Ja)==null||e.onRRwebEmit==null||e.onRRwebEmit(t)}overrideLinkedFlag(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Wd]:!0}),(t=this.Ja)==null||t.overrideLinkedFlag()}overrideSampling(){var t,e;this.Ja||(e=this.Mr)==null||e.register({[Hd]:!0}),(t=this.Ja)==null||t.overrideSampling()}overrideTrigger(t){var e,n;this.Ja||(n=this.Mr)==null||n.register({[t==="url"?zd:qd]:!0}),(e=this.Ja)==null||e.overrideTrigger(t)}get sdkDebugProperties(){var t;return((t=this.Ja)==null?void 0:t.sdkDebugProperties)||{$recording_status:this.status}}tryAddCustomEvent(t,e){var n;return!((n=this.Ja)==null||!n.tryAddCustomEvent(t,e))}}},Bm={autocapture:class{constructor(t){this.vo=!1,this.co=null,this.fo=!1,this.po=!1,this.instance=t,this.rageclicks=new iu(t.config.rageclick),this.mo=null}initialize(){this.startIfEnabled()}get Ne(){var t,e,n=he(this.instance.config.autocapture)?this.instance.config.autocapture:{};return n.url_allowlist=(t=n.url_allowlist)==null?void 0:t.map((i=>new RegExp(i))),n.url_ignorelist=(e=n.url_ignorelist)==null?void 0:e.map((i=>new RegExp(i))),n}yo(){if(this.isBrowserSupported()){if(w&&F){var t=n=>{n=n||w?.event;try{this.bo(n)}catch(i){Mo.error("Failed to capture event",i)}};if(ve(F,"submit",t,{capture:!0}),ve(F,"change",t,{capture:!0}),ve(F,"click",t,{capture:!0}),this.Ne.capture_copied_text){var e=n=>{n=n||w?.event;try{this.bo(n,$o)}catch(i){Mo.error("Failed to capture copy/cut event",i)}};ve(F,"copy",e,{capture:!0}),ve(F,"cut",e,{capture:!0})}}}else Mo.info("Disabling Automatic Event Collection because this browser is not supported")}startIfEnabled(){this.isEnabled&&!this.vo&&(this.yo(),this.vo=!0)}onRemoteConfig(t){if(this.fo=!0,t.ok){var e=t.config;e.elementsChainAsString&&(this.po=e.elementsChainAsString);var n=e.autocapture_opt_out;gt(n)&&(this.instance.persistence&&this.instance.persistence.register({[ea]:n}),this.co=n),this.startIfEnabled()}else this.startIfEnabled()}setElementSelectors(t){this.mo=t}getElementSelectors(t){var e,n=[];return(e=this.mo)==null||e.forEach((i=>{var r=F?.querySelectorAll(i);r?.forEach((s=>{t===s&&n.push(i)}))})),n}get isEnabled(){var t,e,n=(t=this.instance.persistence)==null?void 0:t.props[ea],i=this.co,r=this.instance.Qi()&&!this.fo;if(Ve(i)&&!gt(n)&&!r)return!1;var s=(e=this.co)!==null&&e!==void 0?e:!!n;return!!this.instance.config.autocapture&&!s}bo(t,e){if(e===void 0&&(e="$autocapture"),this.isEnabled){var n,i=bo(t);ef(i)&&(i=i.parentNode||null),e==="$autocapture"&&t.type==="click"&&t instanceof MouseEvent&&this.instance.config.rageclick&&(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,t.timeStamp||new Date().getTime())&&$c(i,this.instance.config.rageclick)&&this.bo(t,"$rageclick");var r=e===$o;if(i&&(function(d,f,h,p,g,m){var v;if(!w||dl(d)||h!=null&&h.url_allowlist&&!Fc(h.url_allowlist,m)||h!=null&&h.url_ignorelist&&Fc(h.url_ignorelist,m))return!1;if(h!=null&&h.dom_event_allowlist){var S=h.dom_event_allowlist;if(S&&!S.some((E=>f.type===E)))return!1}var b=af(d,p),_=b.parentIsUsefulElement,x=b.targetElementList;if(!(function(E,P){var $=P?.element_allowlist;if(C($))return!0;var O,L=function(G){if($.some((V=>G.tagName.toLowerCase()===V)))return{v:!0}};for(var N of E)if(O=L(N))return O.v;return!1})(x,h)||!ma(x,h?.css_selector_allowlist)||ma(x,(v=h?.css_selector_ignorelist)!==null&&v!==void 0?v:Lg))return!1;try{var I=w.getComputedStyle(d);if(I&&I.getPropertyValue("cursor")==="pointer"&&f.type==="click")return!0}catch{}var T=d.tagName.toLowerCase();switch(T){case"html":return!1;case"form":return(g||["submit"]).indexOf(f.type)>=0;case"input":case"select":case"textarea":return(g||["change","click"]).indexOf(f.type)>=0;default:return _?(g||["click"]).indexOf(f.type)>=0:(g||["click"]).indexOf(f.type)>=0&&(ul.indexOf(T)>-1||d.getAttribute("contenteditable")==="true")}})(i,t,this.Ne,r,r?["copy","cut"]:void 0,this.instance)){var s=Cm(i,{e:t,maskAllElementAttributes:this.instance.config.mask_all_element_attributes,maskAllText:this.instance.config.mask_all_text,elementAttributeIgnoreList:this.Ne.element_attribute_ignorelist,elementsChainAsString:this.po,disableCaptureUrlHashes:this.instance.config.disable_capture_url_hashes}),o=s.props;if(s.explicitNoCapture)return!1;var a=this.getElementSelectors(i);if(a&&a.length>0&&(o.$element_selectors=a),e===$o){var l,u=rf(w==null||(l=w.getSelection())==null?void 0:l.toString()),c=t.type||"clipboard";if(!u)return!1;o.$selected_content=u,o.$copy_type=c}return this.instance.capture(e,o),!0}}}isBrowserSupported(){return De(F?.querySelectorAll)}},historyAutocapture:class{constructor(t){var e;this._instance=t,this._o=(w==null||(e=w.location)==null?void 0:e.pathname)||""}initialize(){this.startIfEnabled()}get isEnabled(){return this._instance.config.capture_pageview==="history_change"}startIfEnabled(){this.isEnabled&&(A.info("History API monitoring enabled, starting..."),this.monitorHistoryChanges())}stop(){this.wo&&this.wo(),this.wo=void 0,A.info("History API monitoring stopped")}monitorHistoryChanges(){w&&w.history&&(this.ko("pushState"),this.ko("replaceState"),this.xo())}ko(t){var e;if(w&&((e=w.history[t])==null||!e.__posthog_wrapped__)){var n=this;(function(i,r,s){try{if(!(r in i))return ru;var o={next:i[r]},a=s((function(){for(var l=arguments.length,u=new Array(l),c=0;l>c;c++)u[c]=arguments[c];return o.next.apply(this,u)}));return De(a)&&(a.prototype=a.prototype||{},Object.defineProperties(a,{__posthog_wrapped__:{enumerable:!1,value:!0},__posthog_layer__:{enumerable:!1,value:o}})),i[r]=a,()=>{if(i[r]!==a)for(var l=i[r];De(l)&&l.__posthog_layer__;){var u=l.__posthog_layer__;if(u.next===a)return void(u.next=o.next);l=u.next}else i[r]=o.next}}catch{return ru}})(w.history,t,(i=>function(r,s,o){i.call(this,r,s,o),n.So(t)}))}}So(t){try{var e,n=w==null||(e=w.location)==null?void 0:e.pathname;if(!n)return;n!==this._o&&this.isEnabled&&this._instance.capture(qn,{navigation_type:t}),this._o=n}catch(i){A.error("Error capturing "+t+" pageview",i)}}xo(){if(!this.wo){var t=()=>{this.So("popstate")};ve(w,"popstate",t),this.wo=()=>{w&&w.removeEventListener("popstate",t)}}}},heatmaps:class{get Ne(){return this.instance.config}constructor(t){var e;this.Co=!1,this.vo=!1,this.Mo=null,this.instance=t,this.Co=!((e=this.instance.persistence)==null||!e.props[ta]),this.rageclicks=new iu(t.config.rageclick)}initialize(){this.startIfEnabled()}get flushIntervalMilliseconds(){var t=5e3;return he(this.Ne.capture_heatmaps)&&this.Ne.capture_heatmaps.flush_interval_milliseconds&&(t=this.Ne.capture_heatmaps.flush_interval_milliseconds),t}get isEnabled(){return H(this.Ne.capture_heatmaps)?H(this.Ne.enable_heatmaps)?this.Co:this.Ne.enable_heatmaps:this.Ne.capture_heatmaps!==!1}startIfEnabled(){if(this.isEnabled){if(this.vo)return;Pm.info("starting..."),this.To(),this.Ie()}else{var t;clearInterval((t=this.Mo)!==null&&t!==void 0?t:void 0),this.Eo(),this.getAndClearBuffer()}}onRemoteConfig(t){if(t.ok){var e=t.config;if("heatmaps"in e){var n=!!e.heatmaps;this.instance.persistence&&this.instance.persistence.register({[ta]:n}),this.Co=n,this.startIfEnabled()}}}getAndClearBuffer(){var t=this.R;return this.R=void 0,t}Io(t){No(t.originalEvent)&&this.ke(t.originalEvent,"deadclick")}Ie(){this.Mo&&clearInterval(this.Mo),this.Mo=F?.visibilityState==="visible"?setInterval(this.cr.bind(this),this.flushIntervalMilliseconds):null}To(){w&&F&&(this.Po=this.cr.bind(this),ve(w,Qr,this.Po),this.Ro=t=>this.ke(t||w?.event),ve(F,"click",this.Ro,{capture:!0}),this.Ao=t=>this.Fo(t||w?.event),ve(F,"mousemove",this.Ao,{capture:!0}),this.Lo=new jc(this.instance,Hg,this.Io.bind(this)),this.Lo.startIfEnabledOrStop(),this.Oo=this.Ie.bind(this),ve(F,Xr,this.Oo),this.vo=!0)}Eo(){var t;w&&F&&(this.Po&&w.removeEventListener(Qr,this.Po),this.Ro&&F.removeEventListener("click",this.Ro,{capture:!0}),this.Ao&&F.removeEventListener("mousemove",this.Ao,{capture:!0}),this.Oo&&F.removeEventListener(Xr,this.Oo),clearTimeout(this.Do),(t=this.Lo)==null||t.stop(),this.vo=!1)}$o(t,e){var n=this.instance.scrollManager.scrollY(),i=this.instance.scrollManager.scrollX(),r=this.instance.scrollManager.scrollElement(),s=(function(o,a,l){for(var u=o;u&&fn(u)&&!Qe(u,"body");){if(u===l)return!1;var c=void 0;try{var d,f,h;c=(d=(f=(h=u.ownerDocument)==null?void 0:h.defaultView)!==null&&f!==void 0?f:w)==null?void 0:d.getComputedStyle(u).position}catch{return!1}if(j(a,c))return!0;u=sf(u)}return!1})(bo(t),["fixed","sticky"],r);return{x:t.clientX+(s?0:i),y:t.clientY+(s?0:n),target_fixed:s,type:e}}ke(t,e){var n;if(e===void 0&&(e="click"),!Pc(t.target)&&No(t)){var i=this.$o(t,e);(n=this.rageclicks)!=null&&n.isRageClick(t.clientX,t.clientY,new Date().getTime())&&$c(bo(t),this.instance.config.rageclick)&&this.Vt(k({},i,{type:"rageclick"})),this.Vt(i)}}Fo(t){!Pc(t.target)&&No(t)&&(clearTimeout(this.Do),this.Do=setTimeout((()=>{this.Vt(this.$o(t,"mousemove"))}),500))}Vt(t){if(w){var e=this.Ne.disable_capture_url_hashes?dn(w.location.href):w.location.href,n=this.Ne.custom_personal_data_properties,i=this.Ne.mask_personal_data_properties?[...ii,...n||[]]:[],r=Ji(e,i,Zi);this.R=this.R||{},this.R[r]||(this.R[r]=[]),this.R[r].push(t)}}cr(){this.R&&!Vt(this.R)&&this.instance.capture("$$heatmap",{$heatmap_data:this.getAndClearBuffer()})}},deadClicksAutocapture:jc,webVitalsAutocapture:class{constructor(t){var e;this.Co=!1,this.vo=!1,this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},this.No=()=>{clearTimeout(this.qo),this.qo=void 0,this.R.metrics.length!==0&&(this._instance.capture("$web_vitals",k({$current_url:this.R.url},this.R.metrics.reduce(((n,i)=>k({},n,{["$web_vitals_"+i.name+"_event"]:k({},i),["$web_vitals_"+i.name+"_value"]:i.value})),{}))),this.R={navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0})},this.jo=n=>{var i;if(this.R=this.R||{navigationKey:void 0,url:void 0,metrics:[],firstMetricTimestamp:void 0},H(n?.name)||H(n?.value))yn.error("Invalid metric received",n);else{var r=typeof n.navigationURL=="string"?n.navigationURL:void 0,s=this.Bo(r);if(!C(s)){var o=ke(n.navigationId)||typeof n.navigationId=="string"?"navigation:"+n.navigationId:"url:"+s;if(!this.Ho||this.Ho>n.value){this.R.navigationKey!==o&&(this.No(),this.qo=setTimeout(this.No,this.flushToCaptureTimeoutMs)),C(this.R.navigationKey)&&(this.R.navigationKey=o,this.R.url=s),this.R.firstMetricTimestamp=C(this.R.firstMetricTimestamp)?Date.now():this.R.firstMetricTimestamp,n.attribution&&n.attribution.interactionTargetElement&&(n.attribution.interactionTargetElement=void 0);var a=(i=this._instance.sessionManager)==null?void 0:i.checkAndGetSessionAndWindowId(!0),l=k({},n,r?{navigationURL:s}:{},{$current_url:s,timestamp:Date.now()});C(a)||(l.$session_id=a.sessionId,l.$window_id=a.windowId),this.R.metrics.push(l),this.R.metrics.length===this.allowedMetrics.length&&this.No()}else yn.error("Ignoring metric with value >= "+this.Ho,n)}}},this.Uo=()=>{if(!this.vo){var n,i,r,s,o=B.__PosthogExtensions__,a=o?.postHogWebVitalsCallbacksByFlavor,l=a?.[this.zo]||(this.zo==="web-vitals"&&C(a)?o?.postHogWebVitalsCallbacks:void 0);if(C(l)||(n=l.onLCP,i=l.onCLS,r=l.onFCP,s=l.onINP),n&&i&&r&&s){var u={reportSoftNavs:this.useSoftNavs};this.allowedMetrics.indexOf("LCP")>-1&&n(this.jo.bind(this),u),this.allowedMetrics.indexOf("CLS")>-1&&i(this.jo.bind(this),u),this.allowedMetrics.indexOf("FCP")>-1&&r(this.jo.bind(this),u),this.allowedMetrics.indexOf("INP")>-1&&s(this.jo.bind(this),u),this.vo=!0}else yn.error("web vitals callbacks not loaded - not starting")}},this._instance=t,this.Co=!((e=this._instance.persistence)==null||!e.props[sa]),this.startIfEnabled()}get Wo(){return this._instance.config.capture_performance}get allowedMetrics(){var t,e,n=he(this.Wo)?(t=this.Wo)==null?void 0:t.web_vitals_allowed_metrics:void 0;return H(n)?((e=this._instance.persistence)==null?void 0:e.props[oa])||["CLS","FCP","INP","LCP"]:n}get flushToCaptureTimeoutMs(){return(he(this.Wo)?this.Wo.web_vitals_delayed_flush_ms:void 0)||5e3}get useAttribution(){var t=he(this.Wo)?this.Wo.web_vitals_attribution:void 0;return t!=null&&t}get useSoftNavs(){var t=he(this.Wo)?this.Wo.__preview_web_vitals_soft_navs:void 0;return t!=null&&t}get Ho(){var t=he(this.Wo)&&ke(this.Wo.__web_vitals_max_value)?this.Wo.__web_vitals_max_value:su;return t>0&&6e4>=t?su:t}get isEnabled(){var t=me?.protocol;if(t!=="http:"&&t!=="https:")return yn.info("Web Vitals are disabled on non-http/https protocols"),!1;var e=he(this.Wo)?this.Wo.web_vitals:gt(this.Wo)?this.Wo:void 0;return gt(e)?e:this.Co}startIfEnabled(){this.isEnabled&&!this.vo&&(yn.info("enabled, starting..."),this.ai(this.Uo))}onRemoteConfig(t){if(t.ok){var e=t.config;if("capturePerformance"in e){var n=he(e.capturePerformance)&&!!e.capturePerformance.web_vitals,i=he(e.capturePerformance)?e.capturePerformance.web_vitals_allowed_metrics:void 0;this._instance.persistence&&(this._instance.persistence.register({[sa]:n}),this._instance.persistence.register({[oa]:i})),this.Co=n,this.startIfEnabled()}}}get zo(){return this.useSoftNavs?this.useAttribution?"web-vitals-with-attribution-soft-navs":"web-vitals-soft-navs":this.useAttribution?"web-vitals-with-attribution":"web-vitals"}ai(t){var e=B.__PosthogExtensions__,n=this.zo,i=e?.postHogWebVitalsCallbacksByFlavor;i!=null&&i[n]||n==="web-vitals"&&C(i)&&e!=null&&e.postHogWebVitalsCallbacks?t():e==null||e.loadExternalDependency==null||e.loadExternalDependency(this._instance,n,(r=>{r?yn.error("failed to load script",r):t()}))}Bo(t){var e=t||w?.location.href;if(e){var n=this._instance.config.disable_capture_url_hashes?dn(e):e,i=this._instance.config.custom_personal_data_properties,r=this._instance.config.mask_personal_data_properties?[...ii,...i||[]]:[];return Ji(n,r,Zi)}yn.error("Could not determine current URL")}}},Dm={exceptionObserver:class{constructor(t){var e;this.Uo=()=>{var n;if(w&&this.isEnabled&&(n=B.__PosthogExtensions__)!=null&&n.errorWrappingFunctions){var i=B.__PosthogExtensions__.errorWrappingFunctions.wrapOnError,r=B.__PosthogExtensions__.errorWrappingFunctions.wrapUnhandledRejection,s=B.__PosthogExtensions__.errorWrappingFunctions.wrapConsoleError;try{!this.Vo&&this.Ne.capture_unhandled_errors&&(this.Vo=i(this.captureException.bind(this))),!this.Zo&&this.Ne.capture_unhandled_rejections&&(this.Zo=r(this.captureException.bind(this))),!this.Go&&this.Ne.capture_console_errors&&(this.Go=s(this.captureException.bind(this)))}catch(o){xi.error("failed to start",o),this.Qo()}}},this._instance=t,this.Ko=!((e=this._instance.persistence)==null||!e.props[na]),this.Jo=new Op(k({},(function(n){var i,r,s,o;return n===void 0&&(n={}),{refillRate:(i=(r=n.exceptionRateLimiterRefillRate)!==null&&r!==void 0?r:n.__exceptionRateLimiterRefillRate)!==null&&i!==void 0?i:1,bucketSize:(s=(o=n.exceptionRateLimiterBucketSize)!==null&&o!==void 0?o:n.__exceptionRateLimiterBucketSize)!==null&&s!==void 0?s:10}})(this._instance.config.error_tracking),{refillInterval:1e4,rt:xi})),this.Ne=this.Yo(),this.startIfEnabledOrStop()}Yo(){var t=this._instance.config.capture_exceptions,e={capture_unhandled_errors:!1,capture_unhandled_rejections:!1,capture_console_errors:!1};return he(t)?e=k({},e,t):(C(t)?this.Ko:t)&&(e=k({},e,{capture_unhandled_errors:!0,capture_unhandled_rejections:!0})),e}get isEnabled(){return this.Ne.capture_console_errors||this.Ne.capture_unhandled_errors||this.Ne.capture_unhandled_rejections}startIfEnabledOrStop(){this.isEnabled?(xi.info("enabled"),this.Qo(),this.ai(this.Uo)):this.Qo()}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.errorWrappingFunctions?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"exception-autocapture",(i=>{if(i)return xi.error("failed to load script",i);t()}))}Qo(){var t,e,n;(t=this.Vo)==null||t.call(this),this.Vo=void 0,(e=this.Zo)==null||e.call(this),this.Zo=void 0,(n=this.Go)==null||n.call(this),this.Go=void 0}onRemoteConfig(t){if(t.ok){var e=t.config;"autocaptureExceptions"in e&&(this.Ko=!!e.autocaptureExceptions||!1,this._instance.persistence&&this._instance.persistence.register({[na]:this.Ko}),this.Ne=this.Yo(),this.startIfEnabledOrStop())}}onConfigChange(){this.Ne=this.Yo()}captureException(t){var e,n,i,r=(e=t==null||(n=t.$exception_list)==null||(n=n[0])==null?void 0:n.type)!==null&&e!==void 0?e:"Exception";this.Jo.consumeRateLimit(r)?xi.info("Skipping exception capture because of client rate limiting.",{exception:r}):(i=this._instance.exceptions)==null||i.sendExceptionEvent(t)}},exceptions:class{constructor(t){var e,n;this.Xo=[],this.tl=new eg([new lg,new vg,new ug,new cg,new gg,new pg,new fg,new mg],(function(i){for(var r=arguments.length,s=new Array(r>1?r-1:0),o=1;r>o;o++)s[o-1]=arguments[o];return function(a,l){l===void 0&&(l=0);for(var u=[],c=a.split(` +`),d=l;c.length>d;d++){var f=c[d];if(1024>=f.length){var h=Ic.test(f)?f.replace(Ic,"$1"):f;if(!h.match(/\S*Error: /)){for(var p of s){var g=p(h,i);if(g){u.push(g);break}}if(u.length>=50)break}}}return(function(m){if(!m.length)return[];var v=Array.from(m);return v.reverse(),v.slice(0,50).map((S=>{return k({},S,{filename:S.filename||(b=v,b[b.length-1]||{}).filename,function:S.function||ti});var b}))})(u)}})("web:javascript",rg,ag)),this._instance=t,this.Xo=(e=(n=this._instance.persistence)==null?void 0:n.get_property(ia))!==null&&e!==void 0?e:[],this.el=Gr(this.il()),this.rl=new yg(this.el)}onConfigChange(){this.el=Gr(this.il()),this.rl.setConfig(this.el)}onRemoteConfig(t){var e,n,i;if(t.ok){var r=t.config;if("errorTracking"in r){var s=(e=(n=r.errorTracking)==null?void 0:n.suppressionRules)!==null&&e!==void 0?e:[],o=(i=r.errorTracking)==null?void 0:i.captureExtensionExceptions;this.Xo=s,this._instance.persistence&&this._instance.persistence.register({[ia]:this.Xo,[ra]:o})}}}get nl(){var t,e=!!this._instance.get_property(ra),n=this._instance.config.error_tracking.captureExtensionExceptions;return(t=n??e)!==null&&t!==void 0&&t}buildProperties(t,e){return this.tl.buildFromUnknown(t,{syntheticException:e?.syntheticException,mechanism:{handled:e?.handled}})}addExceptionStep(t,e){if(this.el.enabled)try{if(!X(t)||t.trim().length===0)return void Et.warn("Ignoring exception step because message must be a non-empty string");var n=(function(s){if(!s)return{sanitizedProperties:{},droppedKeys:[]};var o=[];return{sanitizedProperties:Object.keys(s).reduce(((a,l)=>_g.has(l)?(o.push(l),a):(a[l]=s[l],a)),{}),droppedKeys:o}})(this.sl(e)),i=n.sanitizedProperties,r=n.droppedKeys;r.length>0&&Et.warn("Ignoring reserved exception step fields",{droppedKeys:r}),this.rl.add(k({[qr]:t,[Vr]:new Date().toISOString()},i))}catch(s){Et.error("Failed to add exception step. Ignoring breadcrumb.",s)}}sendExceptionEvent(t){try{var e=t.$exception_list;if(this.al(e)){if(this.ol(e))return this.ll("Exception dropped: matched a suppression rule"),void Et.info("Skipping exception capture because a suppression rule matched");if(!this.nl&&this.ul(e))return this.ll("Exception dropped: thrown by a browser extension"),void Et.info("Skipping exception capture because it was thrown by an extension");if(!this._instance.config.error_tracking.__capturePostHogExceptions&&this.hl(e))return this.ll("Exception dropped: thrown by the PostHog SDK"),void Et.info("Skipping exception capture because it was thrown by the PostHog SDK")}var n=this.el.enabled&&H(t.$exception_steps)?this.dl(t):t,i=typeof(s=globalThis._posthogReleaseId)=="string"&&s.length>0?s:void 0;i&&(n.$release_id=i);try{var r=this._instance.capture("$exception",n,{_noTruncate:!0,_batchKey:"exceptionEvent",Wn:!0});return r&&this.rl.clear(),r}catch(o){return Et.error("Failed to capture exception event. Dropping this exception.",o),void this.rl.clear()}}catch(o){return void Et.error("Failed to process exception event. Ignoring this exception.",o)}var s}dl(t){try{var e=this.rl.getAttachable();return e.length===0?t:k({},t,{$exception_steps:e})}catch(n){return Et.error("Failed to read buffered exception steps. Capturing exception without steps.",n),t}}ll(t){this.el.enabled&&this.rl.add({[qr]:t,[Vr]:new Date().toISOString()})}sl(t){return he(t)?k({},t):{}}il(){var t,e;return(t=(e=this._instance.config.error_tracking)==null?void 0:e.exception_steps)!==null&&t!==void 0?t:{}}ol(t){if(t.length===0)return!1;try{var e=t.reduce(((n,i)=>{var r=i.type,s=i.value;return X(r)&&r.length>0&&n.$exception_types.push(r),X(s)&&s.length>0&&n.$exception_values.push(s),n}),{$exception_types:[],$exception_values:[]});return this.Xo.some((n=>{var i=n.values.map((r=>{var s=Lf[r.operator],o=e[r.key];if(!s||!o)return!1;var a=U(r.value)?r.value:[r.value];return a.length>0&&s(a,o)}));return n.type==="OR"?i.some(Boolean):i.every(Boolean)}))}catch(n){return Et.warn("Failed to evaluate suppression rules. Capturing the exception.",n),!1}}ul(t){return t.flatMap((e=>{var n,i;return(n=(i=e.stacktrace)==null?void 0:i.frames)!==null&&n!==void 0?n:[]})).some((e=>e.filename&&e.filename.startsWith("chrome-extension://")))}hl(t){if(t.length>0){var e,n,i,r,s=(e=(n=t[0].stacktrace)==null?void 0:n.frames)!==null&&e!==void 0?e:[],o=s[s.length-1];return(i=o==null||(r=o.filename)==null?void 0:r.includes("posthog.com/static"))!==null&&i!==void 0&&i}return!1}al(t){return!H(t)&&U(t)}}},jm=k({productTours:class{get Mr(){return this._instance.persistence}constructor(t){this.vl=null,this.cl=null,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(t.ok){var e=t.config;if("productTours"in e){var n,i;if(this.Mr&&this.Mr.register({[sl]:!!e.productTours}),!Oo(this._instance))return!this.vl&&H((n=this.Mr)==null?void 0:n.props[$i])||br.info("product tours disabled; stopping and clearing cached tours"),(i=this.vl)==null||i.stop(),this.vl=null,void this.clearCache();this.loadIfEnabled()}}}loadIfEnabled(){!this.vl&&Oo(this._instance)&&this.ai((()=>this.fl()))}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.generateProductTours?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"product-tours",(i=>{i?br.error("Could not load product tours script",i):t()}))}fl(){var t;!this.vl&&(t=B.__PosthogExtensions__)!=null&&t.generateProductTours&&(this.vl=B.__PosthogExtensions__.generateProductTours(this._instance,!0))}getProductTours(t,e){if(e===void 0&&(e=!1),!U(this.cl)||e){var n=this.Mr;if(n){var i=n.props[$i];if(U(i)&&!e)return this.cl=i,void t(i,{isLoaded:!0})}this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/product_tours/?token="+this._instance.config.token),method:"GET",timestampMode:"query",callback:r=>{if(Oo(this._instance)){var s=r.statusCode;if(s!==200||!r.json){var o="Product Tours API could not be loaded, status: "+s;return s===0?r.error||br.warn(o):br.error(o),void t([],{isLoaded:!1,error:o})}var a=U(r.json.product_tours)?r.json.product_tours:[];this.cl=a,n&&n.register({[$i]:a}),t(a,{isLoaded:!0})}else t([],{isLoaded:!0})}})}else t(this.cl,{isLoaded:!0})}getActiveProductTours(t){H(this.vl)?t([],{isLoaded:!1,error:"Product tours not loaded"}):this.vl.getActiveProductTours(t)}showProductTour(t){var e;(e=this.vl)==null||e.showTourById(t)}previewTour(t){this.vl?this.vl.previewTour(t):this.ai((()=>{var e;this.fl(),(e=this.vl)==null||e.previewTour(t)}))}dismissProductTour(){var t;(t=this.vl)==null||t.dismissTour("user_clicked_skip")}nextStep(){var t;(t=this.vl)==null||t.nextStep()}previousStep(){var t;(t=this.vl)==null||t.previousStep()}clearCache(){var t;this.cl=null,(t=this.Mr)==null||t.unregister($i)}resetTour(t){var e;(e=this.vl)==null||e.resetTour(t)}resetAllTours(){var t;(t=this.vl)==null||t.resetAllTours()}cancelPendingTour(t){var e;(e=this.vl)==null||e.cancelPendingTour(t)}}},ks),Um={siteApps:class{constructor(t){this.pl=0,this._instance=t,this.gl=[],this.apps={}}get isEnabled(){return!!this._instance.config.opt_in_site_apps}ml(t,e){if(e){var n=this.globalsForEvent(e);this.gl.push(n),this.gl.length>1e3&&(this.gl=this.gl.slice(10))}}get siteAppLoaders(){var t;return(t=B._POSTHOG_REMOTE_CONFIG)==null||(t=t[this._instance.config.token])==null?void 0:t.siteApps}initialize(){if(this.isEnabled){var t=this._instance._addCaptureHook(this.ml.bind(this));this.yl=()=>{t(),this.gl=[],this.yl=void 0}}}globalsForEvent(t){var e,n,i,r,s,o,a;if(!t)throw new Error("Event payload is required");var l={},u=this._instance.get_property("$groups")||[],c=this._instance.get_property("$stored_group_properties")||{};for(var d of Object.entries(c)){var f=d[0];l[f]={id:u[f],type:f,properties:d[1]}}var h=t.$set_once,p=t.$set;return{event:k({},sd(t,Fm),{properties:k({},t.properties,p?{$set:k({},(e=(n=t.properties)==null?void 0:n.$set)!==null&&e!==void 0?e:{},p)}:{},h?{$set_once:k({},(i=(r=t.properties)==null?void 0:r.$set_once)!==null&&i!==void 0?i:{},h)}:{}),elements_chain:(s=(o=t.properties)==null?void 0:o.$elements_chain)!==null&&s!==void 0?s:"",distinct_id:(a=t.properties)==null?void 0:a.distinct_id}),person:{properties:this._instance.get_property("$stored_person_properties")},groups:l}}bl(t){var e,n=(e=t.tagName)==null?void 0:e.toLowerCase();return n==="style"&&this._instance.config.prepare_external_dependency_stylesheet?this._instance.config.prepare_external_dependency_stylesheet(t)||(bt.error("prepare_external_dependency_stylesheet returned null"),null):n==="script"&&this._instance.config.prepare_external_dependency_script?this._instance.config.prepare_external_dependency_script(t)||(bt.error("prepare_external_dependency_script returned null"),null):t}_l(){var t,e,n,i,r,s,o,a;if(!this._instance.config.prepare_external_dependency_stylesheet&&!this._instance.config.prepare_external_dependency_script)return()=>{};var l=F?.defaultView,u=l==null||(t=l.Node)==null?void 0:t.prototype;if(!l||!u)return()=>{};if(this.pl++,this.wl)return this.kl();var c=[],d=this,f=new WeakSet,h=(m,v,S)=>{if(m!=null&&m[v]){var b=m[v];m[v]=S(b),c.push((()=>{m[v]=b}))}},p=m=>{if(f.has(m))return m;var v=d.bl(m);return v&&f.add(v),v},g=m=>m.map((v=>typeof v=="string"?v:p(v))).filter((v=>!Ve(v)));return h(u,"appendChild",(m=>function(v){var S=p(v);return S?m.call(this,S):v})),h(u,"insertBefore",(m=>function(v,S){var b=p(v);return b?m.call(this,b,S):v})),h(u,"replaceChild",(m=>function(v,S){var b=p(v);return b?m.call(this,b,S):S})),[(e=l.Element)==null?void 0:e.prototype,(n=l.Document)==null?void 0:n.prototype,(i=l.DocumentFragment)==null?void 0:i.prototype].forEach((m=>{h(m,"append",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"prepend",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))}))})),[(r=l.Element)==null?void 0:r.prototype,(s=l.CharacterData)==null?void 0:s.prototype,(o=l.DocumentType)==null?void 0:o.prototype].forEach((m=>{h(m,"before",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"after",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];return v.apply(this,g(b))})),h(m,"replaceWith",(v=>function(){for(var S=arguments.length,b=new Array(S),_=0;S>_;_++)b[_]=arguments[_];var x=g(b);return b.length&&!x.length?void 0:v.apply(this,x)}))})),h((a=l.Element)==null?void 0:a.prototype,"insertAdjacentElement",(m=>function(v,S){var b=p(S);return b?m.call(this,v,b):null})),this.wl=()=>{c.forEach((m=>m())),this.wl=void 0},this.kl()}kl(){var t=!1;return()=>{var e;t||(t=!0,this.pl--,this.pl===0&&((e=this.wl)==null||e.call(this)))}}xl(t,e){e===void 0&&(e=!0);var n=this._l();try{var i=t(n);return e&&n(),i}catch(r){throw n(),r}}setupSiteApp(t){var e=this.apps[t.id],n=()=>{var o;!e.errored&&this.gl.length&&(bt.info("Processing "+this.gl.length+" events for site app with id "+t.id),this.gl.forEach((a=>this.xl((()=>e.processEvent==null?void 0:e.processEvent(a))))),e.processedBuffer=!0),Object.values(this.apps).every((a=>a.processedBuffer||a.errored))&&((o=this.yl)==null||o.call(this))},i=!1,r=o=>{e.errored=!o,e.loaded=!0,bt.info("Site app with id "+t.id+" "+(o?"loaded":"errored")),i&&n()};try{var s=this.xl((o=>t.init({posthog:this._instance,callback(a){o(),r(a)}})),!1).processEvent;s&&(e.processEvent=s),i=!0}catch(o){bt.error(lu+t.id,o),r(!1)}if(i&&e.loaded)try{n()}catch(o){bt.error("Error while processing buffered events PostHog app with config id "+t.id,o),e.errored=!0}}Sl(){var t=this.siteAppLoaders||[];for(var e of t)this.apps[e.id]={id:e.id,loaded:!1,errored:!1,processedBuffer:!1};for(var n of t)this.setupSiteApp(n)}Cl(t){var e=this;if(Object.keys(this.apps).length!==0){var n=this.globalsForEvent(t),i=function(s){try{e.xl((()=>s.processEvent==null?void 0:s.processEvent(n)))}catch(o){bt.error("Error while processing event "+t.event+" for site app "+s.id,o)}};for(var r of Object.values(this.apps))i(r)}}onRemoteConfig(t){var e,n,i,r=this;if((e=this.siteAppLoaders)!=null&&e.length)return this.isEnabled?(this.Sl(),void this._instance.on("eventCaptured",(l=>this.Cl(l)))):void bt.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.');if((n=this.yl)==null||n.call(this),t.ok){var s=t.config;if((i=s.siteApps)!=null&&i.length)if(this.isEnabled){var o=function(){var l,u=a.id,c=a.url;B["__$$ph_site_app_"+u]=r._instance,(l=B.__PosthogExtensions__)==null||l.loadSiteApp==null||l.loadSiteApp(r._instance,c,(d=>{if(d)return bt.error(lu+u,d)}))};for(var a of s.siteApps)o()}else bt.error('PostHog site apps are disabled. Enable the "opt_in_site_apps" config to proceed.')}}}},Hm={tracingHeaders:class{constructor(t){this.Ml=void 0,this.Tl=void 0,this.El=void 0,this.Uo=()=>{var e,n,i=this.Il();i?(C(this.Ml)&&(this.Ml=(e=B.__PosthogExtensions__)==null||(e=e.tracingHeadersPatchFns)==null?void 0:e._patchXHR(i,(()=>this._instance.get_distinct_id()),this._instance.sessionManager)),C(this.Tl)&&(this.Tl=(n=B.__PosthogExtensions__)==null||(n=n.tracingHeadersPatchFns)==null?void 0:n._patchFetch(i,(()=>this._instance.get_distinct_id()),this._instance.sessionManager))):this.Qo()},this._instance=t}initialize(){this.startIfEnabledOrStop()}ai(t){var e,n;(e=B.__PosthogExtensions__)!=null&&e.tracingHeadersPatchFns?t():(n=B.__PosthogExtensions__)==null||n.loadExternalDependency==null||n.loadExternalDependency(this._instance,"tracing-headers",(i=>{if(i)return Am.error("failed to load script",i);t()}))}Pl(){var t,e;return(t=(e=this._instance.config.tracing_headers)!==null&&e!==void 0?e:this._instance.config.addTracingHeaders)!==null&&t!==void 0?t:this._instance.config.__add_tracing_headers}Il(){var t=this.Pl();return U(t)?(U(this.El)?this.El.splice(0,this.El.length,...t):this.El=[...t],t.length>0?this.El:void 0):(U(this.El)&&this.El.splice(0),this.El=t||void 0,this.El)}Qo(){var t,e;(t=this.Ml)==null||t.call(this),(e=this.Tl)==null||e.call(this),this.Ml=void 0,this.Tl=void 0}startIfEnabledOrStop(){this.Il()?this.ai(this.Uo):this.Qo()}}},Wm=k({surveys:class{get Ne(){return this._instance.config}constructor(t){this.Rl=void 0,this._surveyManager=null,this.Al=!1,this.Fl=[],this.Ll=null,this.Ol=null,this._instance=t,this._surveyEventReceiver=null}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this.Ne.disable_surveys){if(!t.ok)return Q.warn("Remote config unavailable. Not loading surveys.");var e=t.config.surveys;if(H(e))return Q.warn("Flags not loaded yet. Not loading surveys.");var n=U(e);this.Rl=n?e.length>0:e,Q.info("flags response received, isSurveysEnabled: "+this.Rl),this.loadIfEnabled()}}reset(){try{var t;(t=this._surveyEventReceiver)==null||t.reset(),localStorage.removeItem("lastSeenSurveyDate");for(var e=[],n=0;nlocalStorage.removeItem(r)))}catch{}}loadIfEnabled(){if(!this._surveyManager)if(this.Al)Q.info("Already initializing surveys, skipping...");else if(this.Ne.disable_surveys)Q.info(cu);else if(this.Ne.cookieless_mode&&this._instance.consent.isOptedOut())Q.info("Not loading surveys in cookieless mode without consent.");else{var t=B?.__PosthogExtensions__;if(t){if(!C(this.Rl)||this.Ne.advanced_enable_surveys){var e=this.Rl||this.Ne.advanced_enable_surveys;this.Al=!0;try{var n=t.generateSurveys;if(n)return void this.Dl(n,e);var i=t.loadExternalDependency;if(!i)return void this.$l(al);i(this._instance,"surveys",(r=>{r||!t.generateSurveys?this.$l("Could not load surveys script",r):this.Dl(t.generateSurveys,e)}))}catch(r){throw this.$l("Error initializing surveys",r),r}finally{this.Al=!1}}}else Q.error("PostHog Extensions not found.")}}Dl(t,e){this._surveyManager=t(this._instance,e),this._surveyEventReceiver=new $m(this._instance),Q.info("Surveys loaded successfully"),this.Nl({isLoaded:!0})}$l(t,e){Q.error(t,e),this.Nl({isLoaded:!1,error:t})}onSurveysLoaded(t){return this.Fl.push(t),this._surveyManager&&this.Nl({isLoaded:!0}),()=>{this.Fl=this.Fl.filter((e=>e!==t))}}getSurveys(t,e){if(e===void 0&&(e=!1),this.Ne.disable_surveys)return Q.info(cu),t([]);var n,i=this._instance.get_property(la);if(i&&!e)return t(i,{isLoaded:!0}),void(this.ql()&&this.getSurveys((()=>{}),!0));typeof Promise<"u"&&this.Ll?this.Ll.then((r=>t(r.surveys,r.context))):(typeof Promise<"u"&&(this.Ll=new Promise((r=>{n=r}))),this._instance._send_request({url:this._instance.requestRouter.endpointFor("api","/api/surveys/?token="+this.Ne.token),method:"GET",timestampMode:"query",timeout:this.Ne.surveys_request_timeout_ms,callback:r=>{var s;this.Ll=null;var o=r.statusCode;if(o!==200||!r.json){var a="Surveys API could not be loaded, status: "+o;o!==0?Q.error(a):r.error||Q.warn(a),this.Ol=Date.now();var l={isLoaded:!1,error:a};return t([],l),void(n==null||n({surveys:[],context:l}))}this.Ol=null;var u,c=r.json.surveys||[],d=c.filter((h=>(function(p){return!(!p.start_date||p.end_date)})(h)&&(Of(h)||(function(p){var g;return!((g=p.conditions)==null||(g=g.actions)==null||(g=g.values)==null||!g.length)})(h))));d.length>0&&((u=this._surveyEventReceiver)==null||u.register(d)),(s=this._instance.persistence)==null||s.register({[la]:c,[Yr]:Date.now()});var f={isLoaded:!0};t(c,f),n?.({surveys:c,context:f})}}))}ql(){return this.jl()&&!this.Ll&&!this.Bl()}jl(){var t=this._instance.get_property(Yr);return ke(t)&&Date.now()-t>3e5}Bl(){return ke(this.Ol)&&3e5>Date.now()-this.Ol}markSurveyAsSeen(t,e){var n,i={id:t,current_iteration:(n=e?.iteration)!==null&&n!==void 0?n:null};Df(i);try{localStorage.setItem("lastSeenSurveyDate",new Date().toISOString())}catch{}}Nl(t){for(var e of this.Fl)try{if(!t.isLoaded)return e([],t);this.getSurveys(e)}catch(n){Q.error("Error in survey callback",n)}}getActiveMatchingSurveys(t,e){if(e===void 0&&(e=!1),!H(this._surveyManager))return this._surveyManager.getActiveMatchingSurveys(t,e);Q.warn("init was not called")}Hl(t){var e=null;return this.getSurveys((n=>{var i;e=(i=n.find((r=>r.id===t)))!==null&&i!==void 0?i:null})),e}Ul(t){if(H(this._surveyManager))return{eligible:!1,reason:Er};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyEligibility(e):{eligible:!1,reason:"Survey not found"}}zl(t){if(H(this._surveyManager))return{eligible:!1,reason:Er};var e=typeof t=="string"?this.Hl(t):t;return e?this._surveyManager.checkSurveyRenderability(e):{eligible:!1,reason:"Survey not found"}}canRenderSurvey(t){if(H(this._surveyManager))return Q.warn("init was not called"),{visible:!1,disabledReason:Er};var e=this.zl(t);return{visible:e.eligible,disabledReason:e.reason}}canRenderSurveyAsync(t,e){return H(this._surveyManager)?(Q.warn("init was not called"),Promise.resolve({visible:!1,disabledReason:Er})):new Promise((n=>{this.getSurveys((i=>{var r,s=(r=i.find((a=>a.id===t)))!==null&&r!==void 0?r:null;if(s){var o=this.zl(s);n({visible:o.eligible,disabledReason:o.reason})}else n({visible:!1,disabledReason:"Survey not found"})}),e)}))}renderSurvey(t,e,n){var i;if(H(this._surveyManager))Q.warn("init was not called");else{var r=typeof t=="string"?this.Hl(t):t;if(r!=null&&r.id)if(gm.includes(r.type)){var s=F?.querySelector(e);if(s)return(i=r.appearance)!=null&&i.surveyPopupDelaySeconds?(Q.info("Rendering survey "+r.id+" with delay of "+r.appearance.surveyPopupDelaySeconds+" seconds"),void setTimeout((()=>{var o,a;Q.info("Rendering survey "+r.id+" with delay of "+((o=r.appearance)==null?void 0:o.surveyPopupDelaySeconds)+" seconds"),(a=this._surveyManager)==null||a.renderSurvey(r,s,n),Q.info("Survey "+r.id+" rendered")}),1e3*r.appearance.surveyPopupDelaySeconds)):void this._surveyManager.renderSurvey(r,s,n);Q.warn("Survey element not found")}else Q.warn("Surveys of type "+r.type+" cannot be rendered in the app");else Q.warn("Survey not found")}}displaySurvey(t,e){var n;if(H(this._surveyManager))Q.warn("init was not called");else{var i=this.Hl(t);if(i){var r=i;if((n=i.appearance)!=null&&n.surveyPopupDelaySeconds&&e.ignoreDelay&&(r=k({},i,{appearance:k({},i.appearance,{surveyPopupDelaySeconds:0})})),e.displayType!==_a.Popover&&e.initialResponses&&Q.warn("initialResponses is only supported for popover surveys. prefill will not be applied."),e.ignoreConditions===!1){var s=this.Ul(i);if(!s.eligible)return void Q.warn("Survey is not eligible to be displayed: ",s.reason)}e.displayType!==_a.Inline?this._surveyManager.handlePopoverSurvey(r,e):this.renderSurvey(r,e.selector,e.properties)}else Q.warn("Survey not found")}}cancelPendingSurvey(t){H(this._surveyManager)?Q.warn("init was not called"):this._surveyManager.cancelSurvey(t)}handlePageUnload(){var t;(t=this._surveyManager)==null||t.handlePageUnload==null||t.handlePageUnload()}}},ks),zm={toolbar:class{constructor(t){this.instance=t}Wl(t){B.ph_toolbar_state=t}Vl(){var t;return(t=B.ph_toolbar_state)!==null&&t!==void 0?t:0}initialize(){return this.maybeLoadToolbar()}maybeLoadToolbar(t,e,n){if(t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),ga(this.instance.config)||!w||!F)return!1;t=t??w.location,n=n??w.history;try{if(!e){try{w.localStorage.setItem("test","test"),w.localStorage.removeItem("test")}catch{return!1}e=w?.localStorage}var i,r=Mm||is(t.hash,"__posthog")||is(t.hash,"state"),s=r?Cc((()=>JSON.parse(atob(decodeURIComponent(r)))))||Cc((()=>JSON.parse(decodeURIComponent(r)))):null;return s&&s.action==="ph_authorize"?((i=s).source="url",i&&Object.keys(i).length>0&&(s.desiredHash?t.hash=s.desiredHash:n?n.replaceState(n.state,"",t.pathname+t.search):t.hash="")):((i=JSON.parse(e.getItem(uu)||"{}")).source="localstorage",delete i.userIntent),!(!i.token||this.instance.config.token!==i.token||(this.loadToolbar(i),0))}catch{return!1}}Zl(t){var e=B.ph_load_toolbar||B.ph_load_editor;!H(e)&&De(e)?e(t,this.instance):du.warn("No toolbar load function found")}loadToolbar(t){var e=!(F==null||!F.getElementById(Qd));if(!w||e)return!1;var n=this.instance.requestRouter.region==="custom"&&this.instance.config.advanced_disable_toolbar_metrics,i=k({token:this.instance.config.token},t,{apiURL:this.instance.requestRouter.endpointFor("ui")},n?{instrument:!1}:{});if(w.localStorage.setItem(uu,JSON.stringify(k({},i,{source:void 0}))),this.Vl()===2)this.Zl(i);else if(this.Vl()===0){var r;this.Wl(1),(r=B.__PosthogExtensions__)==null||r.loadExternalDependency==null||r.loadExternalDependency(this.instance,"toolbar",(s=>{if(s)return du.error("[Toolbar] Failed to load",s),void this.Wl(0);this.Wl(2),this.Zl(i)})),ve(w,"turbolinks:load",(()=>{this.Wl(0),this.loadToolbar(i)}))}return!0}Gl(t){return this.loadToolbar(t)}maybeLoadEditor(t,e,n){return t===void 0&&(t=void 0),e===void 0&&(e=void 0),n===void 0&&(n=void 0),this.maybeLoadToolbar(t,e,n)}}},qm=k({experiments:Me},ks),Vm={conversations:class{constructor(t){this.Ql=void 0,this._conversationsManager=null,this.Kl=!1,this.Jl=null,this.Yl=!1,this._instance=t}initialize(){this.loadIfEnabled()}onRemoteConfig(t){if(!this._instance.config.disable_conversations&&(this.Xl=t.ok,t.ok)){var e=t.config.conversations;H(e)||(gt(e)?this.Ql=e:(this.Ql=e.enabled,this.Jl=e),this.loadIfEnabled())}}reset(){var t;(t=this._conversationsManager)==null||t.reset(),this._conversationsManager=null,this.Ql=void 0,this.Jl=null,this.Xl=void 0,this.Yl=!1}loadIfEnabled(){if(!(this._conversationsManager||this.Kl||this._instance.config.disable_conversations||ga(this._instance.config)||this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut())){var t=B?.__PosthogExtensions__;if(t&&!C(this.Ql)&&this.Ql)if(this.Jl&&this.Jl.token){this.Kl=!0;try{var e=t.initConversations;if(e)return this.tu(e),void(this.Kl=!1);var n=t.loadExternalDependency;if(!n)return void this.eu(al);n(this._instance,"conversations",(i=>{i||!t.initConversations?this.eu("Could not load conversations script",i):this.tu(t.initConversations),this.Kl=!1}))}catch(i){this.eu("Error initializing conversations",i),this.Kl=!1}}else st.error("Conversations enabled but missing token in remote config.")}}tu(t){if(this.Jl)try{this._conversationsManager=t(this.Jl,this._instance),this.Yl=!1,st.info("Conversations loaded successfully")}catch(e){this.eu("Error completing conversations initialization",e)}else st.error("Cannot complete initialization: remote config is null")}eu(t,e){st.error(t,e),this._conversationsManager=null,this.Kl=!1,this.Yl=!0}show(){this._conversationsManager?this._conversationsManager.show():st.warn("Conversations not loaded yet.")}hide(){this._conversationsManager&&this._conversationsManager.hide()}isAvailable(){return this.Ql===!0&&!Ve(this._conversationsManager)}getUnavailableReason(){return this.isAvailable()?null:this._instance.config.disable_conversations?"disabled_by_config":ga(this._instance.config)?"disabled_for_toolbar":this._instance.config.cookieless_mode&&this._instance.consent.isOptedOut()?"consent_opted_out":this.Xl===!1?"remote_config_failed":C(this.Ql)?this.Xl?"disabled_in_project":"remote_config_pending":this.Ql?H(this.Jl)||!this.Jl.token?"missing_token":B!=null&&B.__PosthogExtensions__?this.Kl?"initializing":this.Yl?"load_failed":"not_loaded":"extensions_unavailable":"disabled_in_project"}isVisible(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.isVisible())!==null&&t!==void 0&&t}sendMessage(t,e,n){var i=this;return se((function*(){return i._conversationsManager?i._conversationsManager.sendMessage(t,e,n):(st.warn(bn),null)}))()}getMessages(t,e){var n=this;return se((function*(){return n._conversationsManager?n._conversationsManager.getMessages(t,e):(st.warn(bn),null)}))()}markAsRead(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.markAsRead(t):(st.warn(bn),null)}))()}getTickets(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.getTickets(t):(st.warn(bn),null)}))()}requestRestoreLink(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.requestRestoreLink(t):(st.warn(bn),null)}))()}restoreFromToken(t){var e=this;return se((function*(){return e._conversationsManager?e._conversationsManager.restoreFromToken(t):(st.warn(bn),null)}))()}restoreFromUrlToken(){var t=this;return se((function*(){return t._conversationsManager?t._conversationsManager.restoreFromUrlToken():(st.warn(bn),null)}))()}getCurrentTicketId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getCurrentTicketId())!==null&&t!==void 0?t:null}getWidgetSessionId(){var t,e;return(t=(e=this._conversationsManager)==null?void 0:e.getWidgetSessionId())!==null&&t!==void 0?t:null}Xn(){var t;(t=this._conversationsManager)==null||t.setIdentity()}ts(){var t;(t=this._conversationsManager)==null||t.clearIdentity()}}},Gm={logs:class{constructor(t){var e,n=this;this.iu=!1,this.ru=!1,this.rt=pe("[logs]"),this.nu=k({},this.rt,{error(){for(var i=arguments.length,r=new Array(i),s=0;i>s;s++)r[s]=arguments[s];r.some(yu)||n.rt.error(...r)}}),this.tr=[],this.su=[],this.Sa=0,this.au=()=>{var i,r;this.Sa=0,(i=this.ou)==null||i.onReconnect(),(r=this.lu)==null||r.onReconnect()},this._instance=t,this._instance&&(e=this._instance.config.logs)!=null&&e.captureConsoleLogs&&(this.iu=!0),w&&ve(w,"online",this.au)}uu(t,e,n,i){var r,s=(function(o,a){var l,u,c,d,f,h,p,g=(l=o?.flushIntervalMs)!==null&&l!==void 0?l:3e3,m=(u=o?.maxBufferSize)!==null&&u!==void 0?u:100,v=a!=null&&a.consoleCapture?void 0:(c=o?.maxLogsPerInterval)!==null&&c!==void 0?c:1e3,S=C(v)?Math.max(m,2048):Math.max(m,v),b=o?.resourceAttributes;return{serviceName:(d=(f=b?.["service.name"])!==null&&f!==void 0?f:o?.serviceName)!==null&&d!==void 0?d:a?.serviceNameDefault,serviceVersion:(h=b?.["service.version"])!==null&&h!==void 0?h:o?.serviceVersion,environment:(p=b?.["deployment.environment"])!==null&&p!==void 0?p:o?.environment,resourceAttributes:b,beforeSend:o?.beforeSend,flushIntervalMs:g,maxBufferSize:m,maxQueueSize:S,maxBatchRecordsPerPost:100,rateCapWindowMs:g,maxLogsPerInterval:v,backgroundFlushBudgetMs:0,terminationFlushBudgetMs:0}})((r=this._instance)==null||(r=r.config)==null?void 0:r.logs,n);return[new Zp(this.hu(t,e),s,this.nu,(()=>this.du()),(o=>o()),void 0,i),s]}vu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.ou||this.cu!==e){var n;(n=this.ou)==null||n.reset(),this.cu=e;var i=this.uu((()=>this.tr),(r=>{this.tr=r}));this.ou=i[0],this.fu=i[1]}return this.ou}pu(){var t,e=(t=this._instance)==null||(t=t.config)==null?void 0:t.logs;if(!this.lu||this.gu!==e){var n;(n=this.lu)==null||n.reset(),this.gu=e;var i=this.uu((()=>this.su),(r=>{this.su=r}),{serviceNameDefault:"posthog-browser-logs",consoleCapture:!0},_u);this.lu=i[0],this.mu=i[1]}return this.lu}initialize(){this.loadIfEnabled()}onRemoteConfig(t){var e;if(t.ok){var n=(e=t.config.logs)==null?void 0:e.captureConsoleLogs;!H(n)&&n&&(this.iu=!0,this.loadIfEnabled())}}reset(){var t,e;this.tr=[],(t=this.ou)==null||t.reset(),this.su=[],(e=this.lu)==null||e.reset(),this.Sa=0}captureLog(t){this.vu().captureLog(t)}he(t){this.pu().captureLog(t)}get logger(){return this.yu||(this.yu={trace:(t,e)=>this.captureLog({body:t,level:"trace",attributes:e}),debug:(t,e)=>this.captureLog({body:t,level:"debug",attributes:e}),info:(t,e)=>this.captureLog({body:t,level:"info",attributes:e}),warn:(t,e)=>this.captureLog({body:t,level:"warn",attributes:e}),error:(t,e)=>this.captureLog({body:t,level:"error",attributes:e}),fatal:(t,e)=>this.captureLog({body:t,level:"fatal",attributes:e})}),this.yu}flushLogs(t){t?this.bu(t):(this.ou&&this.ou.flush().catch((e=>this._u(e))),this.lu&&this.lu.flush().catch((e=>this._u(e))))}_u(t){yu(t)||this.rt.error("PostHog logs flush failed:",t)}loadIfEnabled(){if(this.iu&&!this.ru){var t=B?.__PosthogExtensions__;if(t){var e=t.loadExternalDependency;e?e(this._instance,"logs",(n=>{var i;n||(i=t.logs)==null||!i.initializeLogs?this.rt.error("Could not load logs script",n):(t.logs.initializeLogs(this._instance),this.ru=!0)})):this.rt.error(al)}else this.rt.error("PostHog Extensions not found.")}}hu(t,e){var n=this._instance;return{get isDisabled(){return!1},get optedOut(){return!n.is_capturing()},getPersistedProperty:i=>i===jt.LogsQueue?t():void 0,setPersistedProperty(i,r){var s;i===jt.LogsQueue&&e((s=r)!==null&&s!==void 0?s:[])},Ot:i=>this.Ot(i),getLibraryId:()=>ne.LIB_NAME,getLibraryVersion:()=>ne.LIB_VERSION}}Ot(t){return new Promise((e=>{if(ff(this.Sa,3))e({kind:"fatal",error:Do(void 0,"logs endpoint is unreachable, dropping batch")});else{var n=!1,i=s=>{n||(n=!0,clearTimeout(r),e(s))},r=setTimeout((()=>{this.rt.warn("Logs request timed out before receiving a response"),i({kind:"retry-later",error:Do(void 0,"logs request timed out")})}),9e4);this._instance._send_request({method:"POST",url:this.wu(),data:t,compression:"best-available",batchKey:"logs",fireCallbackOnDrop:!0,callback:s=>{var o=s.statusCode;if(this.ku(o),o>=200&&300>o)i({kind:"ok"});else if(o===413)i({kind:"too-large"});else if(o!==0&&o!==429&&500>o)i({kind:"fatal",error:new Error("logs request failed with status "+o)});else{var a;o===0?(s.error||this.rt.warn("Logs request failed before receiving an HTTP response"),i({kind:"retry-later",error:Do(s.error,"logs request failed before receiving an HTTP response")})):i({kind:"retry-later",error:(a=s.error)!==null&&a!==void 0?a:new Error("logs request failed with status "+o)})}}})}}))}ku(t){(t!==0||this._instance.__loaded)&&(this.Sa=hf(t,this.Sa,3,(()=>this.rt.warn("Log requests are failing before receiving an HTTP response; this can happen due to network issues, CORS, browser blocking, or ad blockers. Stopped sending logs; will try again when connectivity changes."))))}bu(t){this.tr.length>0&&this.xu(t,this.tr,this.fu,ne.LIB_NAME,(e=>{this.tr=e})),this.su.length>0&&this.xu(t,this.su,this.mu,_u,(e=>{this.su=e}))}xu(t,e,n,i,r){if(e.length!==0){var s=e.map((a=>a.record));r([]);var o=Nd(s,Ld(n,ne.LIB_NAME,ne.LIB_VERSION),i,ne.LIB_VERSION);this._instance._send_request({method:"POST",url:this.wu(),data:o,compression:"best-available",batchKey:"logs",transport:t})}}wu(){return this._instance.requestRouter.endpointFor("api","/i/v1/logs")+"?token="+encodeURIComponent(this._instance.config.token)}du(){var t,e={};if(e.distinctId=this._instance.get_distinct_id(),this._instance.sessionManager){var n=this._instance.sessionManager.checkAndGetSessionAndWindowId(!0),i=n.windowId,r=n.sessionStartTimestamp,s=n.lastActivityTimestamp;e.sessionId=n.sessionId,e.windowId=i,H(r)||(e.sessionStartTimestamp=r),H(s)||(e.lastActivityTimestamp=s)}if(B!=null&&(t=B.location)!=null&&t.href&&(e.currentUrl=this._instance.config.disable_capture_url_hashes?dn(B.location.href):B.location.href),this._instance.featureFlags){var o=this._instance.featureFlags.getFlags();o&&o.length>0&&(e.activeFeatureFlags=o)}return e}}},Km={metrics:class{constructor(t){this.rt=pe("[metrics]"),this._instance=t}initialize(){}vu(){var t,e,n=(t=this._instance)==null||(t=t.config)==null?void 0:t.metrics;return this.ou&&this.cu===n||((e=this.ou)==null||e.reset(),this.cu=n,this.ou=new Xp(this.hu(),(function(i){var r,s,o,a,l,u=i?.resourceAttributes;return{serviceName:(r=u?.["service.name"])!==null&&r!==void 0?r:i?.serviceName,serviceVersion:(s=u?.["service.version"])!==null&&s!==void 0?s:i?.serviceVersion,environment:(o=u?.["deployment.environment"])!==null&&o!==void 0?o:i?.environment,resourceAttributes:u,beforeSend:i?.beforeSend,flushIntervalMs:(a=i?.flushIntervalMs)!==null&&a!==void 0?a:1e4,maxSeriesPerFlush:(l=i?.maxSeriesPerFlush)!==null&&l!==void 0?l:1e3}})(n),this.rt)),this.ou}count(t,e,n){e===void 0&&(e=1),this.vu().count(t,e,n)}gauge(t,e,n){this.vu().gauge(t,e,n)}histogram(t,e,n){this.vu().histogram(t,e,n)}flush(t){if(!this.ou)return Promise.resolve();if(t){var e=this.ou.drainWindow();return e&&this.Jt(e,t),Promise.resolve()}return this.ou.flush().catch((n=>this.rt.error("PostHog metrics flush failed:",n)))}reset(){var t;(t=this.ou)==null||t.reset()}hu(){var t=this._instance,e=this;return{get isDisabled(){return!1},get optedOut(){return!t.is_capturing()},Jt:n=>e.Jt(n),getLibraryId:()=>ne.LIB_NAME,getLibraryVersion:()=>ne.LIB_VERSION}}Jt(t,e){return new Promise((n=>{var i=!1,r=o=>{i||(i=!0,clearTimeout(s),n(o))},s=setTimeout((()=>r({kind:"retry-later",error:new Error("metrics request timed out")})),9e4);this._instance._send_request(k({method:"POST",url:this.Su(),data:t,compression:"best-available",batchKey:"metrics"},e&&{transport:e},{fireCallbackOnDrop:!0,callback(o){var a=o.statusCode;if(a>=200&&300>a)r({kind:"ok"});else if(a===413)r({kind:"too-large"});else if(a!==0&&a!==429&&500>a)r({kind:"fatal",error:new Error("metrics request failed with status "+a)});else{var l;r({kind:"retry-later",error:(l=o.error)!==null&&l!==void 0?l:new Error("metrics request failed with status "+a)})}}}))}))}Su(){return this._instance.requestRouter.endpointFor("api","/i/v1/metrics")+"?token="+encodeURIComponent(this._instance.config.token)}}},Ym=k({},ks,Om,Bm,Dm,jm,Um,Wm,Hm,zm,qm,Vm,Gm,Km);Je.__defaultExtensionClasses=k({},Ym);(function(){ne.SDK_DIST_CHANNEL="npm";var t=Hi[Vn]=new Je;return(function(){function e(){e.done||(e.done=!0,Uf=!1,ie(Hi,(function(n){n._dom_loaded()})))}F!=null&&F.addEventListener?F.readyState==="complete"?e():ve(F,"DOMContentLoaded",e,{capture:!1}):w&&A.error("Browser doesn't support `document.addEventListener` so PostHog couldn't be initialized")})(),t})();const Jm=["a[href]","button:not([disabled])","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","[tabindex]:not([tabindex='-1'])"].join(",");let ht=null,ka=null,Wf="";const Ca=new Map;function zf(t){return[...t.querySelectorAll(Jm)].filter(e=>!e.hidden&&e.getAttribute("aria-hidden")!=="true"&&e.getClientRects().length>0)}function Zm(t){for(const e of document.body.children)e===t||e.tagName==="SCRIPT"||(Ca.set(e,{inert:e.inert,ariaHidden:e.getAttribute("aria-hidden")}),e.inert=!0,e.setAttribute("aria-hidden","true"))}function Xm(){for(const[t,e]of Ca)t.inert=e.inert,e.ariaHidden===null?t.removeAttribute("aria-hidden"):t.setAttribute("aria-hidden",e.ariaHidden);Ca.clear()}function qf(t){return t?.dataset.modalDismissible!=="false"&&t?.getAttribute("aria-busy")!=="true"}function Ge(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n)return!1;ht&&ht!==n&&Ke(ht,{restoreFocus:!1,force:!0}),ka=e.trigger||document.activeElement,ht=n,Wf=document.body.style.overflow,Zm(n),document.body.style.overflow="hidden",n.classList.add("open"),n.setAttribute("aria-hidden","false");const i=n.querySelector(".modal-content");i&&(i.style.transform="scale(1) translateY(0)");const r=()=>{if(ht!==n)return;((e.initialFocus?n.querySelector(e.initialFocus):n.querySelector("[data-modal-initial-focus]"))||zf(n)[0]||n.querySelector(".modal-content")||n).focus({preventScroll:!0})};return requestAnimationFrame(r),setTimeout(r,260),!0}function Ke(t,e={}){const n=typeof t=="string"?document.getElementById(t):t;if(!n||!e.force&&!qf(n))return!1;n.classList.remove("open"),n.setAttribute("aria-hidden","true"),Xm(),document.body.style.overflow=Wf,ht=null;const i=ka;return ka=null,e.restoreFocus!==!1&&i?.isConnected&&i.focus({preventScroll:!0}),!0}function wu(t,e,n="Operation in progress"){const i=typeof t=="string"?document.getElementById(t):t;i&&(i.dataset.modalDismissible=e?"false":"true",i.setAttribute("aria-busy",String(!!e)),e?i.setAttribute("aria-label",n):i.removeAttribute("aria-label"))}function Qm(t){if(!qf(t))return;const e=t.dataset.modalCloseHandler;e&&typeof window[e]=="function"?window[e]():Ke(t)}document.addEventListener("keydown",t=>{if(!ht)return;if(t.key==="Escape"){t.preventDefault(),t.stopImmediatePropagation(),Qm(ht);return}if(t.key!=="Tab"){t.stopPropagation();return}const e=zf(ht);if(!e.length){t.preventDefault(),(ht.querySelector(".modal-content")||ht).focus();return}const n=e[0],i=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),i.focus()):!t.shiftKey&&document.activeElement===i&&(t.preventDefault(),n.focus())},!0);function ev(){document.querySelectorAll(".modal-overlay").forEach(t=>{t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.setAttribute("aria-hidden",t.classList.contains("open")?"false":"true");const e=t.querySelector(".modal-content");e&&!e.hasAttribute("tabindex")&&(e.tabIndex=-1);const n=t.querySelector("h1, h2, h3");n&&(n.id||(n.id=`${t.id}-title`),t.setAttribute("aria-labelledby",n.id)),t.querySelectorAll(".modal-close").forEach(i=>{i.getAttribute("aria-label")||i.setAttribute("aria-label","Close dialog")})})}const gl=Object.freeze({free:"Free",professional:"Pro",power:"Power"}),tv=Object.freeze({free:2,professional:50,power:2e3}),nv="(contact us)",iv=Object.freeze({free:Object.freeze(["2 generations/month","Gemini model only","Code Review"]),professional:Object.freeze(["50 generations/month","All models","Code Regeneration","Code Review"]),power:Object.freeze(["2000 generations/month","All models","Code Regeneration","Bring your own key (BYOK)","Code Review","All models + early access",`API & MCP access ${nv}`])}),Vf="CodeFile",Gf="GeneratedCode",rv={CustomAction:"A",CustomWidget:"W",CustomFunction:"F",CustomClass:"C",CodeFile:"C"};function an(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function Aa(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function sv(t={},e=0){const n=Aa(t.artifactType||t.type||Vf),i=Aa(t.artifactName||t.name||t.fileName||`${Gf}-${e+1}`);return`${n||"artifact"}-${i||e+1}`}function Kf(t={},e=0){const n=an(t),i=n.artifactType||n.type||Vf,r=n.artifactName||n.name||Gf;let s=n.fileName||r;return s.endsWith(".dart")||(s+=".dart"),{id:Aa(n.id)||sv({...n,artifactType:i,artifactName:r,fileName:s},e),artifactType:i,artifactName:r,fileName:s,deployPath:n.deployPath||"",description:n.description||"",code:n.code||n.content||"",dependencies:Yf(n.dependencies),imports:Array.isArray(n.imports)?n.imports:[],publicApi:Array.isArray(n.publicApi)?n.publicApi:[],relationships:Jf(n.relationships),deployStatus:n.deployStatus||"pending",review:n.review||null,metadata:an(n.metadata),codeType:n.codeType||rv[i]||"O"}}function Yf(t){return t?Array.isArray(t)?t.map(e=>{if(typeof e=="string")return{name:e,version:null,inferred:!1};const n=an(e),i=n.name||n.package;return i?{name:i,version:n.version||null,versionRequired:!!(n.versionRequired||n.required),inferred:!!n.inferred,...n.reason?{reason:n.reason}:{}}:null}).filter(Boolean):Object.entries(an(t)).map(([e,n])=>({name:e,version:n||null,inferred:!1})):[]}function Jf(t){return t?(Array.isArray(t)?t:[t]).map(e=>{const n=an(e);return!n.from&&!n.to?null:{from:n.from||null,to:n.to||null,type:n.type||"uses",description:n.description||""}}).filter(Boolean):[]}function Pa(t){if(typeof t!="string")return null;const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{const n=e.match(/```(?:json)?\s*([\s\S]*?)```/i);if(!n)return null;try{return JSON.parse(n[1].trim())}catch{return null}}}function Xi(t,e={}){const n=[],i=typeof t=="string"?Pa(t):t,s=an(i||{});!i&&typeof t=="string"&&n.push("Structured bundle parse failed; using legacy single-artifact fallback.");const o=Array.isArray(s.artifacts)?s.artifacts:[{artifactType:s.artifactType||e.artifactType,artifactName:s.artifactName||e.artifactName,fileName:s.fileName||e.fileName,description:s.description,code:s.code||e.code||(typeof t=="string"?t:""),dependencies:s.dependencies||e.dependencies,relationships:s.relationships||e.relationships}];o.forEach((d,f)=>{!d?.artifactType&&!d?.type&&n.push(`Artifact ${f+1} has no artifactType; it will deploy as a standalone code file under lib/custom_code/ root.`)});const a=o.map((d,f)=>Kf(d,f)),l=new Map(o.map((d,f)=>[an(d).id,a[f]?.id]).filter(([d,f])=>d&&f)),u=d=>l.get(d)||d,c=Jf(s.relationships||e.relationships).map(d=>({...d,from:d.from?u(d.from):d.from,to:d.to?u(d.to):d.to}));return{schemaVersion:s.schemaVersion||e.schemaVersion||null,id:s.id||e.id||"bundle-current",title:s.title||s.name||e.title||"Generated artifact bundle",description:s.description||e.description||"",artifacts:a,dependencies:Yf(s.dependencies||e.dependencies),relationships:c,deployOrder:Array.isArray(s.deployOrder)?s.deployOrder.map(u):a.map(d=>d.id),warnings:[...n,...Array.isArray(s.warnings)?s.warnings:[]],metadata:an(s.metadata)}}function si(t){return Xi(t).artifacts[0]||Kf()}function Yt(t){if(typeof t!="string")return t??"";const e=t.trim();if(!e)return"";try{return JSON.parse(e)}catch{return t}}function oi(t){return JSON.stringify(t,null,2)}function ov(t){return oi({task:"architect",userRequest:String(t??"")})}function av(t){const e=Yt(t);return e&&typeof e=="object"&&typeof e.task=="string"?oi(e):oi({task:"generate_bundle",bundleSpec:e})}function lv(t){return oi({task:"review_bundle",generatedBundle:Yt(t),outputRequirements:{bundleReview:["status","score","summary","manualActions","findings"],scoreRange:[0,100],eachArtifact:["id","review.status","review.findings"],manualActions:{definition:"Setup the developer must perform by hand in the FlutterFlow editor that FlutterFlow will NOT do for them.",exclude:["creating the Custom Action, Widget or Code File itself - deploying the code creates it","declaring parameters or return values FlutterFlow derives from the function signature","anything that resolves as a side effect of using the action or widget in the editor","generic advice such as testing, reviewing or rebuilding the app"],preferEmpty:"Return an empty array when nothing qualifies - an empty list is the expected result for most bundles."}}})}function ml(t,e=null){const n={stage:t};return e!=null&&(n.bundle=Yt(e)),n}function cv({bundleSpec:t,artifactBundle:e,bundleReview:n,artifactId:i,userFeedback:r}){return oi({task:"regenerate_artifact",artifactId:i,bundleSpec:Yt(t),artifactBundle:Yt(e),bundleReview:Yt(n),userFeedback:String(r)})}function Zf({bundleSpec:t,artifactBundle:e,bundleReview:n,userFeedback:i}){return oi({task:"regenerate_bundle",bundleSpec:Yt(t),artifactBundle:Yt(e),bundleReview:Yt(n),userFeedback:String(i??"")})}const bu={csam:"child-safety content",dangerous:"dangerous content",harassment:"harassment",hate_speech:"hate speech",maliciousUrls:"a potentially malicious URL",malicious_uris:"a potentially malicious URL",pi_and_jailbreak:"prompt-injection or jailbreak instructions",promptInjection:"prompt-injection or jailbreak instructions",rai:"restricted content",sdp:"sensitive personal data",sexually_explicit:"sexually explicit content",virus_scan:"potentially malicious file content"},uv=["sanitizationResult","modelArmor","modelArmorResult","data","result","error"];function et(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function dv(t){return et(t)?typeof t.filterMatchState=="string"||typeof t.invocationResult=="string"||Array.isArray(t.matchedFilters)||et(t.filterSummary)||et(t.filterResults):!1}function Xf(t,e=0){if(!et(t)||e>3)return null;if(dv(t))return t;for(const n of uv){const i=t[n];if(et(i)){const r=Xf(i,e+1);if(r)return r}}return null}function ls(t){return Array.isArray(t)?t.some(ls):et(t)?t.matched===!0||t.matchState==="MATCH_FOUND"?!0:Object.values(t).some(ls):!1}function Fa(t){return Array.isArray(t)?t.some(Fa):et(t)?typeof t.executionState=="string"&&t.executionState!=="EXECUTION_SUCCESS"?!0:Object.values(t).some(Fa):!1}function Qf(t){return{csamFilterFilterResult:"csam",maliciousUriFilterResult:"malicious_uris",piAndJailbreakFilterResult:"pi_and_jailbreak",raiFilterResult:"rai",sdpFilterResult:"sdp",virusScanFilterResult:"virus_scan"}[t]||t}function fv(t,e){if(et(t))for(const[n,i]of Object.entries(t)){if(!et(i))continue;const r=et(i.categories)?i.categories:{},s=Object.entries(r).filter(([,o])=>et(o)&&o.matched===!0).map(([o])=>o);s.length>0?s.forEach(o=>e.add(o)):i.matched===!0&&e.add(Qf(n))}}function hv(t,e){if(!t)return;const n=Array.isArray(t)?t.flatMap(i=>et(i)?Object.entries(i):[]):Object.entries(t);for(const[i,r]of n){if(!ls(r))continue;const s=Qf(i),o=r?.raiFilterResult?.raiFilterTypeResults||(s==="rai"?r?.raiFilterTypeResults:null),a=et(o)?Object.entries(o).filter(([,l])=>ls(l)).map(([l])=>l):[];a.length>0?a.forEach(l=>e.add(l)):e.add(s)}}function pv(t){return bu[t]?bu[t]:String(t).replace(/([a-z])([A-Z])/g,"$1 $2").replace(/_/g," ").toLowerCase()}function Eu(t){return t.length<=1?t[0]||"content that did not pass":t.length===2?`${t[0]} and ${t[1]}`:`${t.slice(0,-1).join(", ")}, and ${t.at(-1)}`}function gv(t){const e=Xf(t);if(!e)return null;const n=new Set(Array.isArray(e.matchedFilters)?e.matchedFilters:[]);fv(e.filterSummary,n),hv(e.filterResults,n);const i=e.blocked===!0||e.filterMatchState==="MATCH_FOUND"||n.size>0,r=e.invocationResult||null,s=Fa(e.filterSummary||e.filterResults);return!i&&!s&&!["PARTIAL","FAILURE"].includes(r)?null:{kind:i?"blocked":"unavailable",invocationResult:r,matchedFilters:[...n]}}function mv(t,e){const n=gv(t);if(!n)return null;const i=[...new Set(n.matchedFilters.map(pv))],r=n.kind==="blocked",s=new Error(r?`Safety screening blocked this pipeline step for ${Eu(i)}.`:"Safety screening could not be completed. Please try again.");return s.name="ModelArmorError",s.code=r?"MODEL_ARMOR_BLOCKED":"MODEL_ARMOR_UNAVAILABLE",s.isModelArmor=!0,s.pipelineStep=e,s.userTitle=r?"Request blocked for safety":"Safety check unavailable",s.userMessage=r?`The safety check detected ${Eu(i)}. Edit your request to remove or rephrase the flagged content, then run the pipeline again.`:"The safety service did not finish all of its checks. Please wait a moment and run the pipeline again.",s.retryExplanation=r?"Trying another model would not change this safety decision.":"A fallback model was not attempted because safety screening must complete first.",s.matchedFilters=n.matchedFilters,s}function vv(t){return String(t||"").replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"")}function Su(t){const e=/^(import|export|part|library|class|enum|extension|typedef|mixin|abstract|const|final|var|late)\b/,n=[];for(const i of vv(t).split(` +`)){if(!/^[A-Za-z_$]/.test(i)||e.test(i))continue;const r=i.match(/^[\w$<>,?\s[\]]+?\s([a-zA-Z_$][\w$]*)\s*\(/);r&&n.push(r[1])}return n}function vl(t,e){const n=t.replace(/\.dart$/,"");if(e==="W")return n.replace(/(^|_)(\w)/g,(i,r,s)=>s.toUpperCase());if(e==="A"){const i=n.replace(/(^|_)(\w)/g,(r,s,o)=>o.toUpperCase());return i.charAt(0).toLowerCase()+i.slice(1)}return e==="F"?"CustomFunctions":e==="C"?t.endsWith(".dart")?t:`${t}.dart`:n}async function xu(t){const e=new TextEncoder().encode(String(t||"")),n=await globalThis.crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n),i=>i.toString(16).padStart(2,"0")).join("")}async function _v(t,e=new Map){const n={},i=new Set;for(const[o,a]of t.entries()){if(a.type==="D"||a.type==="O")continue;const l=vl(o,a.type),u={old_identifier_name:l,new_identifier_name:l,type:a.type,is_deleted:!1,current_checksum:await xu(a.content)},c=e.get(a.path);if(c!==void 0&&(u.original_checksum=await xu(c)),n[o]=u,a.type==="F"){const d=Su(a.content);(d.length>0?d:[a.functionName].filter(Boolean)).forEach(h=>i.add(h))}}const r=new Set(Su(e.get("lib/flutter_flow/custom_functions.dart")||"")),s={functions_to_rename:[],functions_to_delete:[],functions_to_add:Array.from(i).filter(o=>!r.has(o))};return{fileMapContents:JSON.stringify(n),functionsMapContents:JSON.stringify(s)}}const yv=new Set(["CustomWidget","CustomAction","CustomFunction","CustomClass","CodeFile"]),Iu={CustomWidget:"custom_code/widgets/",CustomAction:"custom_code/actions/",CustomFunction:"flutter_flow/custom_functions.dart",CustomClass:"custom_code/",CodeFile:"custom_code/"},wv=new Set(["void","dynamic","String","int","double","num","bool","Color","DateTime","DateTimeRange","LatLng","FFPlace","FFUploadedFile","DocumentReference","List"]),bv=["Struct","Record"],Ev=[{id:"required-public-param",severity:"error",message:"CustomWidget constructor uses `required` on a parameter FlutterFlow can leave unset. FlutterFlow omits unset Define Parameters fields from the constructor call, so the widget will not compile when placed. Make the parameter optional and nullable (`this.value` with `final double? value`), or give it a constructor default (`this.value = 0.0`).",detect:t=>jo(t).some(e=>/\brequired\s+this\.\w+/.test(e)),pos:"class W extends StatefulWidget { const W({required this.value}); final double value; }",neg:`class _P { const _P({required this.t}); final double t; } +class W extends StatefulWidget { const W({this.value}); final double? value; }`},{id:"non-nullable-public-field",severity:"error",message:"CustomWidget declares a non-nullable field with no constructor default. FlutterFlow omits unset Define Parameters fields, so the emitted call cannot supply it. Make the field nullable (`final double? value`) or give the parameter a default (`this.value = 0.0`).",detect:t=>jo(t).some(e=>{const n=/^\s*final\s+(?:double|int|String|bool|Color|num)\s+(\w+)\s*;/gm;let i;for(;(i=n.exec(e))!==null;){const r=i[1];if(!(new RegExp(`this\\.${r}\\s*=(?!=)`).test(e)||new RegExp(`[:,]\\s*${r}\\s*=(?!=)`).test(e)))return!0}return!1}),pos:`class W extends StatefulWidget { + const W({required this.value}); + final double value; +}`,neg:`class _P { + const _P({required this.t}); + final double t; +} +class W extends StatefulWidget { + const W({this.value = 1.0}); + final double value; +}`},{id:"asset-without-anchor",severity:"warning",message:'CustomWidget calls Image.asset with a path arriving as a String parameter. An asset reaches the build only when a FlutterFlow widget NODE references it - a filename passed as a parameter does not count, so the image renders as a broken-image icon on device. "Download Unused Project Assets" does not fix it (FlutterFlow issues 522, 2271, 3799). Keep something in the UI referencing the file, or load it over the network instead.',detect:t=>/Image\.asset\s*\(/.test(t)&&/final\s+String\??\s+\w*[Pp]ath\b/.test(t),pos:`class W extends StatefulWidget { final String? imagePath; } +var x = Image.asset(widget.imagePath);`,neg:`class W extends StatefulWidget { final String? imagePath; } +var x = Image.network(widget.imagePath);`},{id:"unsupported-param-type",severity:"error",message:"CustomWidget exposes a Flutter data type FlutterFlow cannot express as a Define Parameter: TextStyle, BoxShadow, FontWeight, FontStyle, TextDirection, TextAlign, EdgeInsets, Offset, Alignment/AlignmentGeometry, Border, BorderRadius, BoxDecoration, BoxConstraints, BorderSide, Gradient, or ThemeData. FlutterFlow's supported data types (docs.flutterflow.io/resources/data-representation/data-types) are only int, double, bool, string, Color, Image, DateTime, Json, LatLng, and the FF objects, so this parameter cannot be configured in the editor and the widget will not place or compile. Expose primitives instead (color, fontSize as double?, fontWeight via a custom enum, doubles for spacing).",detect:t=>jo(t).some(e=>/final\s+(TextStyle|BoxShadow|FontWeight|FontStyle|TextDirection|TextAlign|EdgeInsets|Offset|Alignment(?:Geometry)?|Border(?:Radius|Side)?|BoxDecoration|BoxConstraints|Gradient|LinearGradient|RadialGradient|ThemeData)\??\s+\w+\s*;/.test(e)),pos:`class W extends StatefulWidget { + const W({this.textStyle}); + final TextStyle? textStyle; + @override _S createState() => _S(); +} +class _S extends State { @override Widget build(BuildContext c) => const SizedBox(); }`,neg:`class W extends StatefulWidget { + const W({this.width}); + final double? width; + @override _S createState() => _S(); +} +class _S extends State { @override Widget build(BuildContext c) => Padding(padding: const EdgeInsets.all(8), child: const SizedBox()); }`}];function St(t,e,n){return{artifactId:t.id,artifactName:t.artifactName,artifactType:t.artifactType,severity:e,message:n}}function Qi(t){let e="",n=0;for(;n"&&(n--,n===0))return{inner:t.slice(e+1,i),end:i+1};return null}function xv(t,e){const n=new RegExp(`class\\s+${e}\\b[^{]*\\{`).exec(t);if(!n)return null;let i=0;for(let r=n.index+n[0].length-1;rIv(t).usable);function Cv(t=""){const e=Qi(t);return kv.filter(n=>n.detect(e)).map(({id:n,severity:i,message:r})=>({id:n,severity:i,message:r}))}function Av(t){const e=[],n=t.matchAll(/\bFuture\b/g);for(const i of n){let r=i.index+6,s=null;const o=r;for(;ro;if(t[r]==="<"){const u=Sv(t,r);if(!u||(s=u.inner.replace(/\s+/g," ").trim(),r=u.end,!/\s/.test(t[r]||"")))continue;for(;rku(o.functionName)===i);if(r)return r;const s=o=>!o.functionName.startsWith("_");return n.find(s)||n[0]}function Cs(t=""){return Array.from(Qi(t).matchAll(/\b(?:class|enum)\s+([A-Za-z_]\w*)/g),e=>e[1])}function Pv(t="",e=""){return _l(t,e)?.returnType||null}function Cu(t){return String(t||"").replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").toLowerCase()}function Fv(t,e){const n=Cs(e);if(n.length===0)return null;const r=String(t||"").split("/").pop().replace(/\.dart$/,"");if(n.some(l=>Cu(l)===r)||n.length>1)return null;const[o]=n,a=`${Cu(o)}.dart`;return`File name "${t}" does not match declared class "${o}". FlutterFlow accepts this, but naming the file "${a}" keeps the Code File recognisable in the editor.`}function yl(t){return String(t||"").replace(/([A-Z])/g,"_$1").toLowerCase().replace(/^_/,"")}function Rv(t,e,n=""){const i=_l(e,n)?.functionName;if(!i)return null;const r=String(t||"").split("/").pop(),s=vl(r,"A");if(s===i)return null;const o=`${yl(i)}.dart`;return`File name "${r}" does not match Action "${i}". FlutterFlow derives the action from the file name, so it looks for "${s}" and reports Action "${s}" declaration not found. Rename the file to "${o}" - FlutterFlow puts an underscore before every capital - or rename the function to "${s}".`}function Tv(t="",e=""){return _l(t,e)!==null}function $v(t,e=new Set){return(t?.match(/[A-Za-z_]\w*/g)||[]).filter(i=>wv.has(i)?!1:!bv.some(s=>i.endsWith(s))||e.has(i))}function Mv(t,{functionName:e="",declaredTypes:n=new Set}={}){const i=Pv(t,e),r=$v(i,n);if(r.length===0)return null;const[s]=r;let o;return n.has(s)?o=`uses Code File type "${s}", which FlutterFlow cannot process as an Action Return Value`:i===s?o="is not a FlutterFlow Action Return Value":o=`uses type "${s}", which is not a FlutterFlow Action Return Value`,`CustomAction return type "${i}" ${o}. Return JSON (Future) or an existing FlutterFlow Data Type (*Struct) instead.`}function Lv(t,e={}){const n=[],i=t.fileName||"",r=t.code||"";if(yv.has(t.artifactType)||n.push(St(t,"error",`Unsupported artifact type "${t.artifactType}".`)),i.endsWith(".dart")||n.push(St(t,"error","FlutterFlow custom code artifacts must use .dart files.")),!r.trim())return n.push(St(t,"warning","Generated artifact has no Dart code yet.")),n;if(t.artifactType==="CustomWidget"){/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)||n.push(St(t,"warning","CustomWidget code should declare a widget class extending StatelessWidget or StatefulWidget."));for(const s of Cv(r))n.push(St(t,s.severity,s.message))}if(t.artifactType==="CustomAction"&&!Tv(r,t.artifactName)&&n.push(St(t,"warning","CustomAction code should expose an async Future function callable from FlutterFlow.")),t.artifactType==="CustomAction"){const s=e.declaredTypes||new Set(Cs(r)),o=Mv(r,{functionName:t.artifactName,declaredTypes:s});o&&n.push(St(t,"error",o));const a=Rv(i,r,t.artifactName);a&&n.push(St(t,"error",a))}if(t.artifactType==="CustomFunction"&&/class\s+\w+\s+extends\s+(StatelessWidget|StatefulWidget)/.test(r)&&n.push(St(t,"warning","CustomFunction should be a callable function, not a widget class.")),t.artifactType==="CustomClass"||t.artifactType==="CodeFile"){const s=Fv(i,r);s&&n.push(St(t,"info",s))}return n}function Nv(t){const e=Array.isArray(t?.artifacts)?t.artifacts:[],n=new Set(e.flatMap(s=>Cs(s.code||""))),i=e.flatMap(s=>Lv(s,{declaredTypes:n})),r=e.map(s=>({artifactId:s.id,fileName:s.fileName,pathHint:Iu[s.artifactType]||Iu.CodeFile}));return{valid:i.every(s=>s.severity!=="error"),findings:i,deployHints:r}}const Au="// DO NOT REMOVE OR MODIFY THE CODE ABOVE!";function Pu(t){return(/^\s*import\s+['"]([^'"]+)['"]/.exec(t)||[])[1]||null}function Ov(t=""){const e=t.indexOf(Au);return e===-1?t:t.slice(e+Au.length).replace(/^\s*\n/,"")}const Bv=/^\s*import\s+['"][^'"]+['"]\s*;\s*(?:\/\/.*)?$/;function Dv(t="",e=""){const n=Ov(t),i=new Set((e.match(/^\s*import .*$/gm)||[]).map(Pu).filter(Boolean)),r=n.split(` +`).filter(s=>{const o=Pu(s);return o===null||!i.has(o)?!0:!Bv.test(s)}).join(` +`).replace(/^\s*\/\/ Automatic FlutterFlow imports\s*$/m,"").replace(/^\s*\n+/,"");return e+r}const jv=new Set(["flutter","flutter_test","flutter_driver","flutter_localizations"]);function eh(t){let e="",n=0;for(;n{const i=n.name||n.package;if(!i||i==="flutter")return e;const r=n.versionRequired||n.required;return e[i]=r&&n.version||"",e},{})}function qv(t){const e=new Map,n=new Map,i=[];for(const r of t)e.has(r.fileName)?i.push(`Duplicate deploy file name "${r.fileName}" for artifacts "${e.get(r.fileName)}" and "${r.artifactId}".`):e.set(r.fileName,r.artifactId),n.has(r.path)?i.push(`Duplicate deploy path "${r.path}" for artifacts "${n.get(r.path)}" and "${r.artifactId}".`):n.set(r.path,r.artifactId);return i}function Vv(t,e={}){const n=Array.isArray(t?.artifacts)?t.artifacts:[],r=(e.selectedArtifactIds||t?.deployOrder||n.map(h=>h.id)).map(h=>n.find(p=>p.id===h)).filter(Boolean),s=[...t?.warnings||[]];let o=[];r.forEach(h=>{const p=zv(h),g=h.fixedCode||h.code||"",m=h.codeType||Hv[h.artifactType]||Ze.OTHER;g.trim()||s.push(`${h.artifactName||h.id} has no generated code.`),o.push({artifactId:h.id,artifactName:h.artifactName,artifactType:h.artifactType,fileName:p,content:g,type:m,path:h.deployPath||Wv(p,m),deployPath:h.deployPath||"",deployMode:"customCodeSync"})});const a="lib/flutter_flow/custom_functions.dart",l=o.map((h,p)=>({entry:h,index:p})).filter(({entry:h})=>h.type===Ze.FUNCTION&&h.path===a);if(l.length>1){const h=l[0],p={...h.entry,artifactId:l.map(({entry:m})=>m.artifactId).join("+"),artifactName:h.entry.artifactName,content:l.map(({entry:m})=>`// ${m.artifactId} +${m.content}`).join(` + +`)},g=new Set(l.slice(1).map(({index:m})=>m));o=o.filter((m,v)=>!g.has(v)),o[h.index]=p}const u={...Fu(t?.dependencies),...r.reduce((h,p)=>({...h,...Fu(p.dependencies)}),{})},c={};r.forEach(h=>{wl(h.code||"").forEach(p=>{p in u||(c[p]="")})});const d={...c,...u},f=qv(o);return{bundleId:t?.id||"bundle-current",title:t?.title||"Generated artifact bundle",fileEntries:o,dependencies:d,relationships:t?.relationships||[],warnings:s,errors:f}}function Gv(t){return String(t||"").match(/\bclass\s+([A-Z][A-Za-z0-9_]*)\b/)?.[1]}function Kv(t){return String(t||"").split("/").pop().replace(/\.dart$/,"").split(/[^A-Za-z0-9]+/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join("")}function Yv(t,e){const i=[Kv(t),Gv(e.content),e.artifactName].find(r=>/^[A-Z][A-Za-z0-9_]*$/.test(String(r||"")));if(!i)throw new Error(`Cannot derive a FlutterFlow custom class name for ${t}.`);return i}function Jv(t,e=new Map){const n=[];for(const[i,r]of t.entries())r.type!=="C"||e.has(r.path)||n.push({artifactId:r.artifactId||i,className:Yv(i,r),content:r.content,fileName:i,path:r.path});return n}function Zv(t,e){const n=new Set(e.map(i=>i.path));return new Map(Array.from(t.entries()).filter(([,i])=>!n.has(i.path)))}const Ru={pass:0,warning:1,fail:2},Xv=["manualActions"];function rt(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function qt(...t){for(const e of t){if(typeof e=="string"&&e.trim())return e.trim();if(Array.isArray(e)&&e.length>0){const n=e.filter(i=>typeof i=="string").join(` +`);if(n)return n}}return""}function It(t){return t==null?[]:Array.isArray(t)?t:[t]}function Qv(t){const e=rt(t).value??t;if(e==null||typeof e=="string"&&e.trim()==="")return null;const n=Number(e);if(Number.isFinite(n))return Tu(n);const i=String(t||"").match(/\bscore\b[^\d]{0,12}(\d{1,3})(?:\s*\/\s*100)?/i);return i?Tu(Number(i[1])):null}function Tu(t){return t>=0&&t<=100?t:null}function at(t){return String(t||"").trim().replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}function bl(t){const e=String(t||"").toLowerCase();return/(fail|error|critical|block|reject|invalid)/.test(e)?"fail":/(warn|attention|manual|partial|incomplete|concern)/.test(e)?"warning":/(pass|success|ready|approve|valid|clean|info|notice)/.test(e)?"pass":null}function Ra(...t){return t.filter(Boolean).reduce((e,n)=>Ru[n]>Ru[e]?n:e,"pass")}function th(t,e="warning",n="review"){if(typeof t=="string")return{severity:e,message:t,suggestion:"",source:n};const i=rt(t),r=qt(i.message,i.title,i.issue,i.description,i.summary);return r?{severity:bl(i.severity||i.status||i.level)||e,message:r,suggestion:qt(i.suggestion,i.fix,i.recommendation,i.action),source:i.source||n}:null}function Ta(t,e="review"){const n=rt(t);return[["findings","warning"],["issues","warning"],["criticalIssues","fail"],["errors","fail"],["warnings","warning"],["recommendations","warning"],["requiredFixes","fail"],["suggestions","warning"]].flatMap(([r,s])=>It(n[r]).map(o=>th(o,s,e)).filter(Boolean))}function e_(t,e,n=null){if(typeof t=="string")return{id:`${n||"bundle"}-manual-${e+1}`,title:t,detail:"",location:"",timing:"unspecified",artifactId:n,source:"Code Review"};const i=rt(t),r=qt(i.title,i.action,i.step,i.message,i.name,i.description);return r?{id:i.id||`${n||"bundle"}-manual-${e+1}`,title:r,detail:qt(i.detail,i.instructions,i.description),location:qt(i.location,i.flutterFlowPath,i.path),timing:qt(i.timing,i.phase)||"unspecified",artifactId:n,source:qt(i.source)||"Code Review"}:null}function $a(t,e=null){const n=rt(t);return Xv.flatMap(i=>It(n[i])).map((i,r)=>e_(i,r,e)).filter(Boolean)}function t_(t){let e=typeof t=="string"?Pa(t):t;if(!e&&typeof t=="string")return{rawText:t,root:{}};const n=rt(e);typeof n.content=="string"&&(e=Pa(n.content)||e);const i=rt(e),r=rt(i.reviewResult||i.codeReview||i.result);return{rawText:"",root:Object.keys(r).length?r:i}}function n_(t,e){const n=[e.id,e.fileName,e.artifactName].map(at);return t.find(i=>{const r=rt(i);return[r.id,r.fileName,r.artifactName,r.name].map(at).some(s=>s&&n.includes(s))})||null}function i_(t,e){return It(t?.metadata?.compatibility?.deployHints).find(r=>at(r?.artifactId)===at(e.id)||at(r?.fileName)===at(e.fileName))?.pathHint||""}function r_(t,e){return It(t?.relationships).filter(n=>at(n?.from)===at(e.id)||at(n?.to)===at(e.id))}function s_(t,e){return It(t?.metadata?.compatibility?.findings).filter(n=>!n?.artifactId||at(n.artifactId)===at(e.id)).map(n=>th(n,"warning","Compatibility check")).filter(Boolean)}function o_(t,e,n,i){const r=n_(e,n),s=rt(r?.review||r||n.review),o=Object.keys(s).length>0,a=[...Ta(s),...s_(t,n)],l=$a(s,n.id),u=bl(s.status||s.verdict||s.outcome||s.result),c=a.length?Ra(...a.map(f=>f.severity)):null,d=Ra(u,c,o?null:"warning");return{...n,index:i,status:d,statusReason:o?qt(s.summary,s.overview,s.assessment,s.conclusion)||(a.length?`${a.length} review finding${a.length===1?"":"s"}`:"No file-level findings"):"No file-level verdict was returned",reviewComplete:o,findings:a,manualSteps:l,fixedSource:typeof s.fixedSource=="string"&&s.fixedSource.trim()?s.fixedSource.trim():null,pathHint:i_(t,n),relationships:r_(t,n)}}function a_({status:t,score:e,artifactPresentations:n,manualSteps:i}){const r=n.length;if(r===0&&i.length===0)return e==null?"Code review returned no overall summary and no score.":`Reviewed bundle with score ${e}/100.`;const s=n.reduce((a,l)=>(a[l.status]+=1,a),{pass:0,warning:0,fail:0}),o=[];return t&&o.push(`Overall verdict: ${t}.`),r&&o.push(`${r} artifact${r===1?"":"s"}: ${s.pass} pass, ${s.warning} warn, ${s.fail} fail.`),i.length&&o.push(`Do before deploy: ${i.map(a=>a.title).join("; ")}.`),e==null&&o.push("No numeric score (0-100) was returned."),o.join(" ")}function l_({bundle:t,reviewResult:e}){const n=rt(t),i=It(n.artifacts),{root:r,rawText:s}=t_(e),o=[r.bundleReview,r.overallReview,r.overall,r.bundleSummary,r.summaryReview,r.review].map(rt).find(b=>Object.keys(b).length)||{},a=It(r.artifacts||r.files||r.reviews),l=i.map((b,_)=>o_(n,a,b,_)),u=Ta(r),d=[...Ta(o),...u],f=[...$a(o),...$a(r),...l.flatMap(b=>b.manualSteps)].filter((b,_,x)=>x.findIndex(I=>I.title===b.title&&I.artifactId===b.artifactId)===_),h=bl(o.status||o.verdict||o.overallStatus||r.status||r.verdict||r.overallStatus||r.outcome),p=Ra(h,...d.map(b=>b.severity),...l.map(b=>b.status)),g=o.score??r.score??r.overallScore??s,m=Qv(g),v=qt(o.headline,o.summary,o.executiveSummary,o.overview,o.assessment,o.conclusion,r.overallSummary,r.headline,r.summary,r.executiveSummary,r.overview,r.assessment,r.conclusion,s)||a_({status:p,score:m,artifactPresentations:l,manualSteps:f}),S=l.reduce((b,_)=>(b[_.status]+=1,b),{pass:0,warning:0,fail:0});return{title:n.title||"Generated artifact bundle",description:n.description||"",status:p,score:m,summary:v,findings:d,manualSteps:f,artifacts:l,counts:S,reviewCoverage:{reviewed:l.filter(b=>b.reviewComplete).length,total:l.length},deployOrder:It(n.deployOrder),relationships:It(n.relationships),warnings:It(n.warnings),compatibility:rt(n.metadata?.compatibility)}}const c_=/^\uFEFF/;function ki(t){let e=0,n=t.length;for(;ee&&!t[n-1].trim();)n--;return t.slice(e,n).join(` +`)}function u_(t){const e=String(t??"").replace(c_,"");if(!e.trim())return"";const n=e.split(` +`),i=c=>{const d=c.trim();return/^`{3,}[A-Za-z0-9+#_.-]*$/.test(d)?c.length-c.trimStart().length:-1};let r=0,s=-1;const o=[];{let c=0;for(let d=0;d=0&&(r++,s<0&&(s=d),o.push(c+f)),c+=n[d].length+1}}if(r===0)return ki(n);{const c=Ma(e);if(!c.error&&o.every(f=>Mu(f,c.commentAndStringRanges)))return ki(n)}if(r===1){const c=ki(n.slice(0,s)),d=ki(n.slice(s+1));return d.length>=c.length?d:c}const a=[];let l=null;for(let c=0;cc.length>0);return u.length===0?"":u.join(` + +`)}function d_(t){return String(t??"").replace(/\/\*[\s\S]*?\*\//g," ").replace(/\/\/[^\n]*/g,"").replace(/'''[\s\S]*?'''/g,'""').replace(/"""[\s\S]*?"""/g,'""').replace(/'(?:\\.|[^'\\\n])*'/g,'""').replace(/"(?:\\.|[^"\\\n])*"/g,'""')}function nh(t){const e=d_(t);return Array.from(e.matchAll(/class\s+([A-Z]\w*)\s+extends\s+[A-Za-z_]\w*Widget\b/g),n=>n[1])}function ih(t){return`${yl(t)}.dart`}function f_(t){return vl(t,"W")}const $u={"(":")","[":"]","{":"}"},h_={")":"(","]":"[","}":"{"},p_=/[A-Za-z0-9_]/;function Ma(t){const e=[{kind:"code",opener:null,openedLine:0}],n=[];let i=1,r=0;const s=(c,d)=>{(c===` +`||c==="\r"&&d!==` +`)&&i++};let o=null;const a=()=>{for(const c of e)(c.kind==="string"||c.kind==="block-comment"||c.kind==="line-comment")&&n.push({start:c.startIndex,end:t.length})};for(;r0?t[r-1]:"",p=r>1?t[r-2]:"",g=(h==="r"||h==="R")&&!p_.test(p);e.push({kind:"string",quote:c,triple:f,raw:g,startIndex:r,openedLine:i}),r+=f?3:1;continue}if($u[c]){e.push({kind:"code",opener:c,openedLine:i}),r++;continue}if(h_[c]){if(d.interpolation&&c==="}"){e.pop(),r++;continue}if(d.opener&&$u[d.opener]===c){e.pop(),r++;continue}return d.opener?(a(),{error:o??`line ${i}: "${c}" closes nothing - "${d.opener}" opened on line ${d.openedLine} is still open`,commentAndStringRanges:n}):(a(),{error:o??`line ${i}: unexpected "${c}" with no matching opener`,commentAndStringRanges:n})}s(c,t[r+1]),r++}a();let l=e.length-1;for(;l>0&&e[l].kind==="line-comment";)l--;let u=o;if(!u){const c=e[l];if(!(c.kind==="code"&&!c.opener&&!c.interpolation))if(c.kind==="string")u=`unclosed ${c.triple?"triple-quoted ":""}string starting on line ${c.openedLine} was never closed`;else if(c.kind==="block-comment")u=`unterminated /* comment starting on line ${c.openedLine}`;else if(c.interpolation){const d=e.findLast(h=>h.opener);u=`unclosed "\${" expression${d?` opened on line ${d.openedLine}`:""} was never closed`}else u=`"${c.opener}" opened on line ${c.openedLine} is never closed`}return{error:u,commentAndStringRanges:n}}function g_(t){return Ma(String(t??"")).error}function Mu(t,e){return e.some(({start:n,end:i})=>t>=n&&ttypeof n=="string"?n:n?.errorMessage).filter(Boolean);return e.length>0?e.join("; "):JSON.stringify(t)}return t&&typeof t=="object"?t.errorMessage||JSON.stringify(t):String(t??"")}const m_=["gmail.com","googlemail.com","outlook.com","hotmail.com","live.com","msn.com"],v_="MAGIC_LINK_SENT",__="PLUS_ALIAS_REJECTED",y_="Please enter your primary email address. Plus aliases (such as {email}) are not allowed for {domain} accounts.",As={allowlistedDomains:m_,successCode:v_,validationCode:__,messageTemplate:y_},w_=new Set(As.allowlistedDomains),b_=As.successCode,rh=As.validationCode;function Ps(t){return typeof t=="string"?t.trim():""}function E_(t){const e=Ps(t),n=e.lastIndexOf("@");if(n<=0||n===e.length-1)return!1;const i=e.slice(0,n),r=e.slice(n+1).toLowerCase();return w_.has(r)?i.includes("+"):!1}function S_(t,e){return As.messageTemplate.replaceAll("{email}",t).replaceAll("{domain}",e)}function sh(t){if(!E_(t))return null;const e=Ps(t),n=e.lastIndexOf("@"),i=e.slice(n+1).toLowerCase();return S_(e,i)}function oh(t,e){return t?.code===rh?t.message||sh(e)||"Please enter your primary email address.":t?.code===b_||!t?.code?`Check your email — we sent a link to ${Ps(e)}`:t.message||"Something went wrong. Please try again."}const x_="ccc_auth_session",I_="ccc_subscription",k_=Object.freeze(["hasSeenWalkthrough"]);function C_(t){const e=[];for(const n of k_)t.getItem(n)!==null&&(t.removeItem(n),e.push(n));return e}function A_(){return[x_,I_]}function P_({storage:t,onIdentityChanged:e,onPlanChanged:n}){for(const i of A_())t.removeItem(i);typeof e=="function"&&e(),typeof n=="function"&&n()}function F_({sendLink:t,getEmail:e,onState:n}){let i=!1;return async function(){if(i)return{status:"busy"};i=!0;let s;try{n({status:"pending",error:null});const o=await t(e());return s={status:"sent",data:o},n({status:"sent",data:o}),s}catch(o){return s={status:"error",error:o},n({status:"error",error:o}),s}finally{i=!1}}}const R_=/^dependencies\s*:\s*(?:#.*)?$/,T_=/^(?:"([^"]+)"|'([^']+)'|([A-Za-z_][A-Za-z0-9_-]*))\s*:/;function Fs(t){const e=t.match(T_);return e?e[1]??e[2]??e[3]:null}function rr(t){const e=t.trim();return e===""||e.startsWith("#")}function di(t){const e=t.match(/^(\s*)/);return e?e[1].length:0}function Sl(t,e){const n=t.findIndex(s=>e.test(s));if(n===-1)return null;let i=n,r=null;for(let s=n+1;s=0.0.0"}`}function N_(t,e={}){const n=String(t||""),i=Object.entries(e).filter(([u])=>u&&u!=="flutter");if(i.length===0)return{yaml:n,added:[],alreadyPresent:[]};const r=n.split(` +`),s=new Set(lh(n)),o=[],a=[];for(const[u,c]of i)s.has(u)?a.push(u):(o.push([u,c]),s.add(u));if(o.length===0)return{yaml:n,added:[],alreadyPresent:a};const l=xl(r);if(l){const u=o.map(([c,d])=>Lu(l.childIndent,c,d));r.splice(l.endIndex,0,...u)}else r.length>0&&r[r.length-1].trim()!==""&&r.push(""),r.push("dependencies:"),o.forEach(([u,c])=>{r.push(Lu(" ",u,c))});return{yaml:r.join(` +`),added:o.map(([u])=>u),alreadyPresent:a}}function O_(t,e={}){const n=String(t||""),i=Object.entries(e).filter(([l])=>l&&l!=="flutter");if(i.length===0)return{yaml:n,overridden:[],skipped:[]};const r=n.split(` +`),s=Ts(n),o=[],a=[];for(const[l,u]of i){const c=s.get(l);if(!c||!c.isScalar||!String(u||"").trim()){a.push(l);continue}const d=" ".repeat(di(r[c.lineIndex]));r[c.lineIndex]=`${d}${l}: ${uh(String(u).trim())}${c.comment}`,o.push({name:l,from:c.constraint,to:u})}return{yaml:r.join(` +`),overridden:o,skipped:a}}function dh(t){const e=String(t||""),n=[];return e.trim()?(/^name:\s*\S+/m.test(e)||n.push("pubspec.yaml missing name field"),xl(e.split(` +`))||n.push("pubspec.yaml missing dependencies section"),lh(e).includes("flutter")||n.push("pubspec.yaml missing Flutter SDK dependency"),{valid:n.length===0,errors:n}):(n.push("pubspec.yaml is empty"),{valid:!1,errors:n})}const B_=">=3.0.0 <4.0.0";function La(t){const e=String(t||"").trim(),n=e[0];return n!=="'"&&n!=='"'||e[e.length-1]!==n?e:e.slice(1,-1).replaceAll(`${n}${n}`,n)}function D_(t=""){const e=Uv(t).filter(n=>!n.startsWith("dart:")&&!n.startsWith("package:"));return{selfContained:e.length===0,unresolvableImports:e}}function Nu(t,e,n){const i=[];for(const[r,s]of t){if(s.isScalar){e[r]=La(s.constraint);continue}if(s.sourceKey==="sdk"){n.add(r);continue}if(s.sourceKey===null&&s.version){e[r]=La(s.version);continue}i.push(r)}return i}function j_(t){const e=new Set,n={},i={},r=Nu(Ts(t),n,e);r.push(...Nu(M_(t,"dependency_overrides"),i,e));const s=new Set([...Object.keys(n),...e]),{sdk:o}=ch(t);return{sdkConstraint:La(o)||B_,dependencies:n,overrides:i,sdkPackages:[...e].sort(),availablePackages:s,unrepresentable:r}}function U_(t,e,n){return e.length>0?`${t} imports ${e.join(", ")}, which FlutterFlow only generates once the app is built, so it could not be compiled before the deploy.`:`${t} imports ${n.join(", ")}, which your project's pubspec.yaml does not declare with a version constraint, so it could not be compiled before the deploy.`}function H_(t,e){const{sdkConstraint:n,dependencies:i,overrides:r,sdkPackages:s,availablePackages:o,unrepresentable:a}=j_(e),l={sdkConstraint:n,dependencies:i,overrides:r,sdkPackages:s},u=[],c=[],d=a.map(f=>`Your project declares ${f} from a source that cannot be reproduced outside it, so the pre-deploy compile check runs against a scratch package graph that omits ${f}. Classes that do not import ${f} directly are still checked, but against that reduced graph, so their transitive package resolution may differ from your project's and the check is approximate for them.`);for(const f of t){const{className:h,content:p}=f,g=wl(p),m=g.filter(b=>a.includes(b));if(m.length>0){c.push({className:h,reason:`${h} was not compiled before deploying: it imports ${m.join(", ")}, which your project declares from a source that cannot be reproduced outside it, so package resolution could not be matched exactly.`});continue}const{unresolvableImports:v}=D_(p),S=g.filter(b=>!o.has(b));if(v.length>0||S.length>0){c.push({className:h,reason:U_(h,v,S)});continue}u.push({fileName:`${yl(h)}.dart`,content:p})}return{manifest:l,sources:u,skipped:c,approximate:d}}function Ou(t,e){const n=`${t}${e}`.split(` +`),i=n.pop()??"",r=[];for(const s of n){const o=fh(s);o&&r.push(o)}return{events:r,buffer:i}}function W_(t){const e=fh(t);return e?[e]:[]}function fh(t){const e=t.trim();if(!e)return null;try{const n=JSON.parse(e);return n&&typeof n=="object"&&!Array.isArray(n)?n:null}catch{return null}}const Xe=Object.freeze({COMMITTED:"committed",PARTIAL:"partial",FAILED:"failed",UNCONFIRMED:"unconfirmed"}),z_=12e4;function hh(t){return t?.unconfirmed===!0||t?.outcome===Xe.UNCONFIRMED?Xe.UNCONFIRMED:t?.partial===!0||t?.outcome===Xe.PARTIAL?Xe.PARTIAL:t?.success===!0?Xe.COMMITTED:Xe.FAILED}async function q_(t,e={}){const{onPhase:n,onLog:i}=e;let r=null,s="";const o=a=>{if(a.event==="phase"){a.message&&n&&n(a.message);return}if(a.event==="log"){a.message&&i&&i(a.message);return}r=a};if(t.body?.getReader){const a=t.body.getReader(),l=new TextDecoder;for(;;){const{done:u,value:c}=await a.read();if(u)break;const d=Ou(s,l.decode(c,{stream:!0}));s=d.buffer,d.events.forEach(o)}}else{const a=Ou("",await t.text());s=a.buffer,a.events.forEach(o)}return W_(s).forEach(o),r?{...r,success:r.success===!0||r.success===void 0&&t.ok,finalResultReceived:!0}:{success:!1,finalResultReceived:!1,httpRejected:!t.ok,httpStatus:t.status,error:t.ok?"The FlutterFlow deploy runner closed the connection before it finished.":`FlutterFlow custom class provisioning failed (HTTP ${t.status}).`}}function V_(t){return t?.finalResultReceived?hh(t):t?.httpRejected?Xe.FAILED:Xe.UNCONFIRMED}function G_(){let t=document.getElementById("fx-grid");if(!t)return null;const e=window.matchMedia("(prefers-reduced-motion: reduce)"),n=window.matchMedia("(pointer: none)");let i=t.getContext("webgl2",{alpha:!0,antialias:!1,depth:!1,stencil:!1,premultipliedAlpha:!0,powerPreference:"low-power"}),r=i?null:t.getContext("2d");if(!i&&!r)return null;const s='',o=`#version 300 es +in vec2 p; void main(){ gl_Position = vec4(p, 0.0, 1.0); }`;function a(){return["#version 300 es","precision highp float;","out vec4 o;","uniform vec2 res;","uniform vec2 design;","uniform vec2 mouse;","uniform float energy;","uniform float parallax;","uniform float t;","uniform vec3 ink;","uniform sampler2D mark;","uniform vec2 rot;","const float WARP_A = 0.0032;","void main(){"," vec2 px = gl_FragCoord.xy * (design / res);"," vec2 p = vec2(px.x, design.y - px.y);"," vec2 off = vec2(0.0, -parallax) + vec2(sin(t * 0.11), cos(t * 0.09)) * 7.0;"," vec2 g = p + off;"," vec2 gm = mouse + off;"," float base = min(design.x, design.y);"," float spacing = clamp(base / 10.0, 64.0, 118.0);"," vec2 rel = g - gm;"," float rho = length(rel) + 1e-5;"," vec2 dir = rel / rho;"," vec2 pw = gm + dir * (rho + WARP_A * rho * rho);"," vec2 cell = floor(pw / spacing);"," vec2 cw = (cell + 0.5) * spacing - gm;"," float Rc = length(cw) + 1e-5;"," float rhoC = (-1.0 + sqrt(1.0 + 4.0 * WARP_A * Rc)) / (2.0 * WARP_A);"," vec2 c = gm + (cw / Rc) * rhoC;"," float cellSize = spacing / (1.0 + 2.0 * WARP_A * rhoC);"," float sigma = spacing * 2.9;"," float f = exp(-(rhoC * rhoC) / (2.0 * sigma * sigma));"," float scale = mix(0.32, 1.42, f);"," float weight = smoothstep(0.06, 0.80, f);"," float hs = cellSize * 0.26 * scale;"," vec2 uv = (g - c) / hs;"," vec2 ruv = mat2(rot.x, rot.y, -rot.y, rot.x) * uv;"," float cov = 0.0;"," if (abs(ruv.x) <= 1.0 && abs(ruv.y) <= 1.0) cov = texture(mark, ruv * 0.5 + 0.5).a;"," float s = cov * weight * energy * 0.26;"," o = vec4(ink * s, s);","}"].join(` +`)}let l=null,u,c,d,f,h,p,g,m,v;function S(K,W){if(!i)return null;const D=i.createShader(K);return i.shaderSource(D,W),i.compileShader(D),i.getShaderParameter(D,i.COMPILE_STATUS)?D:(window.console&&console.warn("fx-grid shader: "+i.getShaderInfoLog(D)),null)}if(i){const K=S(i.VERTEX_SHADER,o),W=S(i.FRAGMENT_SHADER,a());if(K&&W&&(l=i.createProgram(),i.attachShader(l,K),i.attachShader(l,W),i.linkProgram(l),i.getProgramParameter(l,i.LINK_STATUS)||(window.console&&console.warn("fx-grid link: "+i.getProgramInfoLog(l)),l=null)),l){i.useProgram(l),i.bindBuffer(i.ARRAY_BUFFER,i.createBuffer()),i.bufferData(i.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),i.STATIC_DRAW);const D=i.getAttribLocation(l,"p");i.enableVertexAttribArray(D),i.vertexAttribPointer(D,2,i.FLOAT,!1,0,0),u=i.getUniformLocation(l,"res"),c=i.getUniformLocation(l,"design"),d=i.getUniformLocation(l,"mouse"),f=i.getUniformLocation(l,"energy"),h=i.getUniformLocation(l,"parallax"),p=i.getUniformLocation(l,"t"),g=i.getUniformLocation(l,"ink"),m=i.getUniformLocation(l,"mark"),v=i.getUniformLocation(l,"rot"),i.enable(i.BLEND),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),i.clearColor(0,0,0,0)}else{i=null;const D=t.cloneNode(!1);if(t.parentNode.replaceChild(D,t),t=D,r=t.getContext("2d"),!r)return null}}function b(K){if(!K)return null;const W=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(K);if(W){let D=W[1];return D.length===3&&(D=D[0]+D[0]+D[1]+D[1]+D[2]+D[2]),[parseInt(D.slice(0,2),16)/255,parseInt(D.slice(2,4),16)/255,parseInt(D.slice(4,6),16)/255]}try{const D=document.createElement("canvas");D.width=1,D.height=1;const ue=D.getContext("2d");ue.fillStyle="rgb(9, 8, 7)";const xe=String(ue.fillStyle);ue.fillStyle=K;const Fe=String(ue.fillStyle);if(Fe===xe)return null;const ut=/^#([0-9a-f]{6})$/i.exec(Fe);if(ut){const dt=ut[1];return[parseInt(dt.slice(0,2),16)/255,parseInt(dt.slice(2,4),16)/255,parseInt(dt.slice(4,6),16)/255]}const Lt=/rgba?\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)/i.exec(Fe);if(Lt)return[Number(Lt[1])/255,Number(Lt[2])/255,Number(Lt[3])/255]}catch{}return null}function _(){let K="";try{const W=getComputedStyle(document.documentElement);K=(W.getPropertyValue("--fx-ink")||"").trim()||(W.getPropertyValue("--fg")||"").trim()}catch{}return b(K)||[.56,.68,.88]}const x=_();let I=1920,T=1080,E=960,P=540,$=960,O=540,L=.66,N=0,G=-1e9,V=!1,M=0,R=0,Z=null,Ce=!1,oe=!1,ye=!1;const $e=64,ae=15.2;let Ie=0,Se=0;const Be=.0032,yt=0,ge=.56,Ye=.26,wt=.32,gn=.16,Re=.349;let Pe=yt;function Tt(){const K=t.getBoundingClientRect(),W=t.clientWidth,D=t.clientHeight;if(!K.width||!W||!D)return;const ue=Math.min(window.devicePixelRatio||1,2),xe=Math.max(.2,Math.min(2,K.width/W*ue)),Fe=Math.max(2,Math.round(W*xe)),ut=Math.max(2,Math.round(D*xe));(Fe!==t.width||ut!==t.height)&&(t.width=Fe,t.height=ut,i&&i.viewport(0,0,Fe,ut)),I=W,T=D,V||(E=$=I/2,P=O=T/2,V=!0)}function On(K){!l||!Ce||!i||(i.uniform2f(u,t.width,t.height),i.uniform2f(c,I,T),i.uniform2f(d,E,P),i.uniform1f(f,L),i.uniform1f(h,N),i.uniform2f(v,Math.cos(Pe),Math.sin(Pe)),i.uniform1f(p,K),i.uniform3f(g,x[0],x[1],x[2]),i.clear(i.COLOR_BUFFER_BIT),i.drawArrays(i.TRIANGLES,0,3))}function He(K,W,D){const ue=Math.max(0,Math.min(1,(D-K)/(W-K)));return ue*ue*(3-2*ue)}function Bn(K){if(!Z||!r)return;const W=r;W.setTransform(1,0,0,1,0,0),W.clearRect(0,0,t.width,t.height);const D=t.width/I;W.setTransform(D,0,0,D,0,0),W.globalAlpha=1;const ue=Math.min(I,T),xe=Math.max(64,Math.min(118,ue/10)),Fe=xe*2.9,ut=2*Fe*Fe,Lt=Math.sin(K*.11)*7,dt=Math.cos(K*.09)*7-N,lr=E+Lt,cr=P+dt,no=Fe*Math.sqrt(2*Math.log(1/.06)),gi=no+Be*no*no+xe,bp=Math.floor((lr-gi)/xe)-1,Ep=Math.ceil((lr+gi)/xe)+1,Sp=Math.floor((cr-gi)/xe)-1,xp=Math.ceil((cr+gi)/xe)+1;for(let io=Sp;io<=xp;io++){const Ip=(io+.5)*xe;for(let ro=bp;ro<=Ep;ro++){const so=(ro+.5)*xe-lr,oo=Ip-cr,ao=Math.sqrt(so*so+oo*oo)+1e-5;if(ao>gi)continue;const ur=(-1+Math.sqrt(1+4*Be*ao))/(2*Be),sc=Math.exp(-(ur*ur)/ut),oc=He(.06,.8,sc)*L*.26;if(oc<.004)continue;const rn=xe/(1+2*Be*ur)*.26*(.32+1.1*sc),ac=ur/ao,lo=lr+so*ac,co=cr+oo*ac;lo<-rn*1.6||lo>I+rn*1.6||co<-rn*1.6||co>T+rn*1.6||(W.globalAlpha=oc,W.save(),W.translate(lo,co),W.rotate(Pe),W.drawImage(Z,-rn,-rn,rn*2,rn*2),W.restore())}}W.globalAlpha=1}function $t(K){if(!oe)return;const W=R?Math.min(.05,(K-R)/1e3):.016;R=K;const ue=K-G>2400?.6:1;L+=(ue-L)*Math.min(1,W*3.2);const xe=Math.min(.05,W);Ie+=(($-E)*$e-Ie*ae)*xe,Se+=((O-P)*$e-Se*ae)*xe,E+=Ie*xe,P+=Se*xe,N=(window.scrollY||window.pageYOffset||0)*.55;const Fe=K/1e3,ut=E/(I||1)-.5,Lt=P/(T||1)-.5;let dt=ut*(ut>=0?ge:Ye)+Lt*(Lt>=0?wt:gn);dt>Re?dt=Re:dt<-Re&&(dt=-Re),Pe=yt+dt-N*6e-4,Tt(),i?On(Fe):Bn(Fe),M=requestAnimationFrame($t)}function Mt(K){if(!oe)return;const W=t.getBoundingClientRect();!W.width||!I||!T||($=(K.clientX-W.left)/W.width*I,O=(K.clientY-W.top)/W.height*T,G=performance.now())}function ct(){oe||to||e.matches||n.matches||!ye||document.hidden||(oe=!0,R=0,M=requestAnimationFrame($t))}function nn(){oe=!1,M&&(cancelAnimationFrame(M),M=0),R=0}function pi(){e.matches?(nn(),t.classList.remove("is-ready")):ye&&ct()}function Dn(){n.matches?nn():ye&&ct()}function nc(){document.hidden?nn():ye&&ct()}const ic=new IntersectionObserver(K=>{ye=K[0]?.isIntersecting||!1,ye?ct():nn()},{threshold:0});ic.observe(t),window.addEventListener("pointermove",Mt,{passive:!0,capture:!0}),window.addEventListener("resize",Tt),e.addEventListener("change",pi),n.addEventListener("change",Dn),document.addEventListener("visibilitychange",nc);function wp(){const K=(s.match(/\sd="([^"]+)"/)||[])[1],W=document.createElement("canvas");W.width=256,W.height=256;const D=W.getContext("2d");if(K&&window.Path2D){const ue=Math.min(8.533333333333333,8.421052631578947);D.setTransform(ue,0,0,ue,ue+(256-30*ue)/2,-6.4*ue),D.fillStyle="rgb(255,255,255)",D.fill(new Path2D(K),"evenodd"),D.setTransform(1,0,0,1,0,0)}try{const ue=D.getImageData(0,0,256,256),xe=ue.data;for(let Fe=3;Feoe}}const K_=120;function Y_(t,e,n){return tn?n:t}function de(t,e,n){return Y_((t-e)/(n-e),0,1)}function J_(t){return t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2}function Uo(t){return 1-Math.pow(1-t,3)}function We(t,e){return e=e===void 0?1.7:e,1+(e+1)*Math.pow(t-1,3)+e*Math.pow(t-1,2)}function Bu(t){return 1-Math.pow(2,-9*t)*Math.cos(t*15)}function te(t,e){if(t<=e[0].t)return e[0].v;for(let n=1;n8.2&&_<9.4&&(s*=1-.07*Math.sin(de(_,8.2,9.4)*Math.PI))}else if(t<53){const _=t-42;g=te(_,[{t:0,v:1},{t:2,v:0},{t:4.2,v:0},{t:4.6,v:1},{t:6.8,v:1},{t:7.4,v:0},{t:9.4,v:0},{t:10.6,v:1}]),p=te(_,[{t:0,v:1},{t:2,v:.3},{t:4.6,v:1,e:We}]),d=te(_,[{t:0,v:0},{t:2,v:.3},{t:4.6,v:.16,e:We},{t:10.6,v:0}]),h=te(_,[{t:0,v:0},{t:2,v:-40},{t:4.6,v:0,e:We}]),o=te(_,[{t:0,v:0},{t:4.6,v:-.12},{t:10.6,v:0}])}else if(t<60){const _=t-53;c=te(_,[{t:0,v:1},{t:.35,v:0},{t:.45,v:0},{t:.7,v:1}]);const x=de(_,.45,2.2);a=x>0?-2.6*(1-Bu(x)):0,g=te(_,[{t:0,v:1},{t:.57,v:0},{t:.67,v:0},{t:.92,v:1}]);const I=de(_,.67,2.42);f=I>0?-2.6*(1-Bu(I)):0,s=1-.05*(Math.sin(de(_,1.9,2.5)*Math.PI)+Math.sin(de(_,2.5,3.1)*Math.PI))}else if(t<74){let x=function(P){return[te(P,[{t:0,v:0},{t:.25,v:1},{t:.5,v:1},{t:.72,v:.14},{t:.82,v:.14},{t:1,v:0}]),te(P,[{t:0,v:0},{t:.08,v:-.62},{t:.25,v:-.62},{t:.33,v:.62},{t:.7,v:.62},{t:.82,v:-.62},{t:1,v:-.62}])]};var b=x;const _=t-60,I=1-de(_,12,14),T=x(de(_,0,12)),E=x(de(_-.5,0,12));n=T[0]*I,i=(T[1]+.05*Math.sin(_*7))*I,o=(E[0]-T[0])*.6*I,a=(E[1]-T[1])*.6*I,h=(E[0]-T[0])*30*I,S=de(_,0,.4)*I}else if(t<85.4){const _=t-74,x=te(_,[{t:0,v:0},{t:4,v:1},{t:8,v:.24},{t:9.6,v:1,e:We},{t:11.4,v:0}]);o=x*.5,d=-x*.5,l=te(_,[{t:0,v:0},{t:4,v:6},{t:8,v:20},{t:9.6,v:38,e:We},{t:11.4,v:0}]),h=-l*.7,a=te(_,[{t:0,v:0},{t:8,v:0},{t:9.6,v:.4},{t:11.4,v:0}])}else if(t<96.4){const _=t-85.4,x=de(_,0,5.6),I=de(_,5.6,7.6),T=.72*Math.min(1,_/.6)*(1-I);d=Math.cos(x*Math.PI*2)*T,f=Math.sin(x*Math.PI*2)*T*.55,h=x*360*(1-I);const E=te(_,[{t:0,v:0},{t:7.6,v:0},{t:8.2,v:1,e:Uo},{t:8.6,v:.55},{t:9.4,v:0}]);o=-.16*E,d+=.16*E,l=-6*E,h+=6*E,s=1+.05*E,m=1+.9*E}else if(t<108.6){const _=t-96.4,x=de(_,9.6,12.2);n=te(_,[{t:0,v:0},{t:2.1,v:1},{t:4.8,v:.08},{t:7.5,v:1},{t:9.6,v:0}])*(1-x),i=-.35*Math.abs(Math.sin(de(_,0,9.6)*Math.PI*3))*(1-x);const I=Math.sin(_*6.2)*(1-x);u=1+.12*I,p=1-.12*I,l=I*8,h=-I*8,o=.06*I,d=-.06*I,S=de(_,0,.4)*(1-x)}else{const _=t-108.6,x=Math.sin(de(_,0,8)*Math.PI),I=1-de(_,8,11.4);s=1+.04*x*I,i=-.1*x*I,r=2*x*I,m=1+.5*Math.sin(de(_,0,6)*Math.PI),v=1+.1*Math.sin(de(_,0,6)*Math.PI)}return e.x=n,e.y=i,e.rot=r,e.scale=s,e.ax=o,e.ay=a,e.ar=l,e.asc=u,e.afade=c,e.bx=d,e.by=f,e.br=h,e.bsc=p,e.bfade=g,e.hfade=m,e.hsc=v,e.shd=S,e}function Z_(t={}){const e=t.arena||document.querySelector(".pipeline-glyph.logo-loop");if(!e)return null;const n=e.querySelector(".loop-mark"),i=e.querySelector(".loop-piece-a"),r=e.querySelector(".loop-piece-b"),s=e.querySelector(".loop-halo"),o=e.querySelector(".loop-shadow");if(!n||!i||!r||!s||!o)return null;const a=t.reducedMotion||window.matchMedia("(prefers-reduced-motion: reduce)"),l=K_;let u=34,c=0,d=0;function f(){u=n.offsetWidth||34,c=Math.max(0,e.offsetWidth-u-4),d=Math.max(0,(e.offsetHeight-u)/2-2),e.style.setProperty("--mark-c",u/2+"px")}function h(M){const R=Math.min(1,Math.max(0,M.x))*c,Z=M.y*d;n.style.transform="translate3d("+R.toFixed(2)+"px,"+Z.toFixed(2)+"px,0) rotate("+M.rot.toFixed(2)+"deg) scale("+M.scale.toFixed(3)+")",i.style.transform="translate3d("+(M.ax*u).toFixed(2)+"px,"+(M.ay*u).toFixed(2)+"px,0) rotate("+M.ar.toFixed(2)+"deg) scale("+M.asc.toFixed(3)+")",i.style.opacity=M.afade.toFixed(3),r.style.transform="translate3d("+(M.bx*u).toFixed(2)+"px,"+(M.by*u).toFixed(2)+"px,0) rotate("+M.br.toFixed(2)+"deg) scale("+M.bsc.toFixed(3)+")",r.style.opacity=M.bfade.toFixed(3),s.style.transform="scale("+M.hsc.toFixed(3)+")",s.style.opacity=(.09*M.hfade).toFixed(3),o.style.transform="translateX("+R.toFixed(2)+"px) scaleX("+(.75+.4*Math.abs(M.x)).toFixed(3)+")",o.style.opacity=(M.shd*.5).toFixed(3)}let p=0,g=0,m=0,v=!1,S=!1,b=!1,_=0;function x(){return b||a.matches||document.hidden||!e.offsetParent?!1:S}function I(M){if(!v)return;if(m=requestAnimationFrame(I),!x()){E();return}const R=g?(M-g)/1e3:0;g=M,p=(p+Math.min(R,.1))%l,_+=1,h(Ci(p))}function T(){v||b||x()&&(v=!0,g=0,m=requestAnimationFrame(I))}function E(){v=!1,m&&(cancelAnimationFrame(m),m=0),g=0}function P(){x()?T():E()}function $(){a.matches?(E(),h(Ci(0))):P()}function O(){f(),v&&h(Ci(p))}function L(){g=0,P()}const N=new IntersectionObserver(M=>{S=M[0]?M[0].isIntersecting:!1,P()},{threshold:0});N.observe(e),window.addEventListener("resize",O),a.addEventListener("change",$),document.addEventListener("visibilitychange",L);function G(){b||(b=!0,E(),N.disconnect(),window.removeEventListener("resize",O),a.removeEventListener("change",$),document.removeEventListener("visibilitychange",L))}window.addEventListener("pagehide",G);function V(M){p=(M%l+l)%l,h(Ci(p))}return f(),h(Ci(0)),P(),{isRunning:()=>v,currentTime:()=>p,frameCount:()=>_,seek:V,dispose:G}}const X_=/^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/;function Jt(t){const e=String(t||"").trim().match(X_);return e?{major:Number(e[1]),minor:Number(e[2]),patch:Number(e[3]),prerelease:e[4]?e[4].split("."):[]}:null}function Q_(t,e){if(t.length===0&&e.length===0)return 0;if(t.length===0)return 1;if(e.length===0)return-1;for(let n=0;n0)}function ty(t){const e=Jt(t);return e?e.major>0?`${e.major+1}.0.0`:`0.${e.minor+1}.0`:null}function Il(t){let e=String(t??"").trim();if((e.startsWith("'")||e.startsWith('"'))&&(e=e.slice(1,-1).trim()),e===""||e==="any"||e==="*")return{min:null,minInclusive:!1,max:null,maxInclusive:!1};if(e.startsWith("^")){const o=e.slice(1).trim();return Jt(o)?{min:o,minInclusive:!0,max:ty(o),maxInclusive:!1}:null}if(Jt(e))return{min:e,minInclusive:!0,max:e,maxInclusive:!0};const n={min:null,minInclusive:!1,max:null,maxInclusive:!1},i=/(>=|<=|>|<)\s*([0-9][0-9A-Za-z.+-]*)/g;let r=!1,s;for(;(s=i.exec(e))!==null;){const[,o,a]=s;if(!Jt(a))return null;r=!0,o===">="||o===">"?(n.min=a,n.minInclusive=o===">="):(n.max=a,n.maxInclusive=o==="<=")}return r?n:null}function Du(t,e){const n=Il(t);if(!n||!Jt(e))return!1;if(n.min!==null){const i=cs(e,n.min);if(i<0||i===0&&!n.minInclusive)return!1}if(n.max!==null){const i=cs(e,n.max);if(i>0||i===0&&!n.maxInclusive)return!1}return!0}function ny(t,e){const n=Il(t);if(!n||!Jt(e))return!1;if(n.max===null)return!0;const i=cs(n.max,e);return i>0?!0:i===0&&n.maxInclusive}function zn(t){const e=Il(t);return e?e.min:null}const iy="https://pub.dev/api/packages/",ry=8e3;function sy(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:i=null}=e,r=Array.isArray(t?.versions)?t.versions:[];let s=null;for(const o of r){const a=o?.version;if(!a||o.retracted||ey(a))continue;const l=o.pubspec?.environment||{};n&&l.sdk&&!Du(l.sdk,n)||i&&l.flutter&&!Du(l.flutter,i)||(!s||cs(a,s)>0)&&(s=a)}return s?{version:s,constraint:`^${s}`}:null}async function oy(t,e={}){const{dartSdkFloor:n=null,flutterSdkFloor:i=null,fetchImpl:r=fetch}=e;let s;try{const a=await r(`${iy}${encodeURIComponent(t)}`,{signal:AbortSignal.timeout(ry)});if(!a.ok)return{name:t,constraint:null,version:null,error:a.status===404?`"${t}" was not found on pub.dev`:`pub.dev returned ${a.status} for "${t}"`};s=await a.json()}catch(a){return{name:t,constraint:null,version:null,error:`could not reach pub.dev for "${t}" (${a.message})`}}const o=sy(s,{dartSdkFloor:n,flutterSdkFloor:i});return o?{name:t,...o,error:null}:{name:t,constraint:null,version:null,error:n?`no published "${t}" release supports Dart ${n}`:`no published "${t}" release could be read`}}async function ay(t,e={}){const n=await Promise.all(t.map(i=>oy(i,e)));return new Map(n.map(({name:i,...r})=>[i,r]))}async function ly(t,e={},n={}){const{resolveVersions:i=ay}=n,r=Object.entries(e).filter(([c])=>c&&c!=="flutter"),s=ch(t),o={dartSdkFloor:zn(s.sdk),flutterSdkFloor:zn(s.flutter)},a={additions:{},overrides:{},kept:[],warnings:[],sdk:o};if(r.length===0)return a;const l=Ts(t),u=[];for(const[c,d]of r){const f=l.get(c);if(!f){u.push(c);continue}const h=zn(d);if(!h){a.kept.push({name:c,constraint:f.constraint});continue}if(!f.isScalar){a.warnings.push(`"${c}" is declared in your project from a git, path, or SDK source, but the generated code needs at least ${h}. Left as-is — update it yourself if the build fails.`),a.kept.push({name:c,constraint:f.constraint});continue}if(ny(f.constraint,h)){a.kept.push({name:c,constraint:f.constraint});continue}a.overrides[c]=`^${h}`,a.warnings.push(`"${c}" was pinned to ${f.constraint} in your project, which cannot resolve the ${h} the generated code needs. Raising it to ^${h} — this changes a dependency the rest of your app also uses.`)}if(u.length>0){const c=await i(u,o);for(const d of u){const f=c.get(d);if(f?.constraint){a.additions[d]=f.constraint;continue}const h=e[d]||"";if(zn(h)){a.additions[d]=`^${zn(h)}`,a.warnings.push(`Could not confirm "${d}" version on pub.dev (${f?.error||"lookup failed"}). Using ^${zn(h)} from the AI's recommendation — verify this is current.`);continue}a.additions[d]=">=0.0.0",a.warnings.push(`Could not determine a version for "${d}" (${f?.error||"lookup failed"}) and the AI supplied none. Added with a wide-open >=0.0.0 constraint — pin a concrete version in FlutterFlow before deploying.`)}}return a}const cy={"&":"&","<":"<",">":">",'"':""","'":"'"};function Zt(t){return String(t??"").replace(/[&<>"']/g,e=>cy[e])}function z(t){return t?Zt(t).replace(/\n/g,"
    "):""}function Kt(t){return Zt(t).replace(/\r?\n/g," ")}function $s(t,e={}){const n=t?.pipelineStep;if(n!=null&&e[n]!=null)return e[n];const i=t?.message||"";return i.includes("Code Generator")?2:i.includes("Code Review")?3:1}function gh(t){if(!t)return{kind:"generic",title:"Generation failed",message:"An unknown error occurred. Please try again.",detail:"",canRetry:!0,canEdit:!0,canUpgrade:!1};if(t.isModelArmor){const n=t.code==="MODEL_ARMOR_BLOCKED";return{kind:"safety",title:t.userTitle||"Request blocked for safety",message:t.userMessage||t.message,detail:t.retryExplanation||"",canRetry:!n,canEdit:!0,canUpgrade:!1}}if(t.isUsageLimit)return{kind:"quota",title:"Monthly limit reached",message:t.message||"You've used all your generations for this period.",detail:"",canRetry:!1,canEdit:!1,canUpgrade:!0};const e=t.message||"";return/timed out after/i.test(e)?{kind:"timeout",title:"Request timed out",message:"The generation service took too long to respond.",detail:e,canRetry:!0,canEdit:!0,canUpgrade:!1}:/unreachable|failed to fetch|load failed|cors/i.test(e)?{kind:"network",title:"Connection problem",message:"We couldn't reach the generation service. Check your connection and try again.",detail:e,canRetry:!0,canEdit:!0,canUpgrade:!1}:{kind:"generic",title:"Generation failed",message:e||"An unexpected error occurred.",detail:"",canRetry:!0,canEdit:!0,canUpgrade:!1}}function uy(t){const e={"Integration Audit Report":"📋","Critical Issues":"❌",Warnings:"⚠️",Recommendations:"✅","Overall Score":"📊"};for(const[n,i]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return i;return"📄"}function dy(t){const e={critical:"❌",warning:"⚠️",recommendation:"✅",score:"📊",issue:"🔍",fix:"🔧"};for(const[n,i]of Object.entries(e))if(t.toLowerCase().includes(n.toLowerCase()))return i;return"📝"}function fy(t){return t.includes("class ")&&t.includes("extends ")||t.includes("StatelessWidget")||t.includes("StatefulWidget")||t.includes("import 'package:flutter/")?"dart":t.includes("def ")||t.includes("import ")||t.includes("print(")?"python":t.includes("function ")||t.includes("const ")||t.includes("console.")?"javascript":"dart"}function ai(t){if(!t)return"";if(typeof t!="string")return String(t);const e=/```(?:\w+)?\n?([\s\S]*?)```/,n=t.match(e);return n?n[1].trim():t.trim()}function ju(t){return t=Zt(t),t=t.replace(/\*\*(.*?)\*\*/g,'$1'),t=t.replace(/\*(.*?)\*/g,'$1'),t=t.replace(/`(.*?)`/g,'$1'),t=t.replace(/\b(FAIL|ERROR|CRITICAL)\b/g,'$1'),t=t.replace(/\b(WARN|WARNING)\b/g,'$1'),t=t.replace(/\b(PASS|SUCCESS|OK)\b/g,'$1'),t}function mh(t,e="dart",n=globalThis.hljs){if(!t)return"";const i=ai(t);try{return n.highlight(i,{language:e}).value}catch(r){console.warn("Syntax highlighting failed:",r);try{return n.highlight(i,{language:"json"}).value}catch{return Zt(i)}}}function Ms(t,e={}){const{highlighter:n=globalThis.hljs}=e;let i='
    ';const r=String(t??"").split(` +`);let s=!1,o="";for(const a of r){if(a.startsWith("```")){if(s){const l=fy(o),u=mh(o.trim(),l,n);i+=`
    +
    ${u}
    +
    `,o="",s=!1}else s=!0;continue}if(s){o+=a+` +`;continue}if(a.startsWith("# ")){const l=a.substring(2).trim();i+=`
    +

    + ${uy(l)} + ${Zt(l)} +

    +
    `;continue}if(a.startsWith("## ")){const l=a.substring(3).trim();i+=`
    +

    + ${dy(l)} + ${Zt(l)} +

    +
    `;continue}if(/^[-*+]\s+/.test(a)||/^\d+\.\s+/.test(a)){const l=a.replace(/^([-*+]|\d+\.)\s+/,"").trim();i+=`
    + • + ${ju(l)} +
    `;continue}a.trim()!==""&&(i+=`

    ${ju(a)}

    `)}return i+="
    ",` +
    +
    +
    + Live Audit Report +
    + ${i} +
    + `}const hy=[[/gradient stroke\s*$/i," and an animated percentage label"],[/gauge\s*$/i," with a gradient stroke and animated fill"],[/rating\s*(bar|widget)?\s*$/i," with half-star support and haptic feedback"],[/list\s*$/i," with swipe-to-delete and an undo snackbar"],[/pad\s*$/i," that exports a transparent PNG"],[/carousel\s*$/i," with parallax cards and page indicators"],[/(button|cta)\s*$/i," with a loading spinner and success state"],[/(chart|graph)\s*$/i," that animates from a Firestore stream"],[/action\s*(that|to)?\s*$/i," uploads an image to Firebase Storage and returns the URL"],[/timer\s*$/i," with pause, resume and a completion callback"],[/map\s*$/i," with clustered markers and a custom info window"],[/^a\s+\w*$/i," widget that"],[/(picker|selector)\s*$/i," with search and multi-select"]],py=220,gy=6;function Uu(t,e){return!!(t&&t.trim())&&!e}function my(t,e=""){if(typeof t!="string"||!t||t===e||t.trim().lengthi.test(t));return n?n[1]:null}function vy(){let t="",e="";return{get active(){return t},resolve(n){return t=my(n,e)??"",t},dismiss(){t=""},accept(n){if(!t)return null;const i=n+t;return e=i,t="",i}}}function _y({onSubmit:t}){const e=document.getElementById("composer"),n=document.getElementById("pipeline-input"),i=document.getElementById("hero-send");if(!e||!n||!i||typeof t!="function")return;const r=e.querySelector(".ghost .typed"),s=e.querySelector(".ghost .suggest"),o=document.getElementById("tab-hint"),a=document.getElementById("suggest-status"),l=Array.from(document.querySelectorAll("#example-chips .chip")),u=document.getElementById("btn-add-images"),c=document.getElementById("prompt-image-input"),d=window.matchMedia("(prefers-reduced-motion: reduce)"),f=vy();let h=!1,p=!1,g=!1,m=!1,v=null,S=null;function b(){i.disabled=!Uu(n.value,p||g||m)}function _(){r&&(r.textContent=n.value)}function x(){s&&(s.textContent=""),_(),e.classList.remove("has-suggest"),o&&(o.hidden=!0,o.tabIndex=-1),a&&(a.textContent="")}function I(R){s&&(s.textContent=R),_(),e.classList.add("has-suggest"),o&&(o.hidden=!1,o.tabIndex=0,o.setAttribute("aria-label","Accept suggestion: "+R.trim())),a&&(a.textContent="Suggestion: "+R+". Press Tab to accept.")}function T(){f.dismiss(),x()}function E(){if(h||p)return;const R=f.resolve(n.value);R&&I(R)}function P(){clearTimeout(v),!h&&(v=setTimeout(E,py))}function $(){const R=f.accept(n.value);return R===null?!1:(n.value=R,x(),b(),!0)}function O(R){p=R,e.classList.toggle("is-busy",R),i.classList.toggle("is-busy",R),i.setAttribute("aria-label",R?"Generating":"Generate"),n.readOnly=R,l.forEach(Z=>{Z.disabled=R}),u&&(u.disabled=R),c&&(c.disabled=R),b()}async function L(){if(Uu(n.value,p||g||m)){T(),O(!0);try{await t()}finally{O(!1)}}}function N(){g=!1,S&&(clearInterval(S),S=null),e.classList.remove("is-demo-typing"),b()}function G(){l.forEach(R=>{R.classList.remove("is-active"),R.setAttribute("aria-pressed","false")})}function V(){try{n.focus({preventScroll:!0}),n.setSelectionRange(n.value.length,n.value.length)}catch{}}function M(R){const Z=R.dataset.prompt||"";if(N(),clearTimeout(v),v=null,T(),l.forEach(oe=>{const ye=oe===R;oe.classList.toggle("is-active",ye),oe.setAttribute("aria-pressed",String(ye))}),d.matches||!Z){n.value=Z,_(),b(),V();return}n.value="",_(),g=!0,b(),e.classList.add("is-demo-typing");let Ce=0;S=setInterval(()=>{Ce+=1,n.value=Z.slice(0,Ce),_(),Ce>=Z.length?(N(),V()):b()},22)}return l.forEach(R=>{R.setAttribute("aria-pressed","false"),R.addEventListener("click",()=>M(R))}),n.addEventListener("keydown",R=>{if(g&&R.key==="Enter"&&!R.shiftKey&&!R.isComposing&&!h){R.preventDefault();return}N(),R.key==="Tab"&&!R.shiftKey&&f.active?(R.preventDefault(),$()):R.key==="Escape"?(clearTimeout(v),v=null,T()):R.key==="Enter"&&!R.shiftKey&&!R.isComposing&&!h&&(R.preventDefault(),L())}),n.addEventListener("input",()=>{N(),G(),T(),b(),P()}),n.addEventListener("compositionstart",()=>{h=!0}),n.addEventListener("compositionend",()=>{h=!1,T(),b(),P()}),n.addEventListener("scroll",()=>{r&&r.parentNode&&(r.parentNode.scrollTop=n.scrollTop)}),o&&o.addEventListener("click",()=>{$(),n.focus({preventScroll:!0})}),i.addEventListener("click",L),n.addEventListener("pointerdown",()=>{N(),G()}),_(),b(),{setAttachmentsPending(R){m=!!R,b()}}}const yy="https://ccc-ffai-runner-y5cyj3473a-uw.a.run.app/deployCustomClasses";const vt="https://4tgke4.buildship.run",vh={professional:"price_1T2ldCKszA2slvDXatdeCpbI",power:"price_1T2le9KszA2slvDXR4mPvw7M"},us="ccc_auth_session",Na="ccc_signin_return",wy=1800*1e3,Hu=new WeakSet;let q={email:null,sessionToken:null,isVerified:!1};function $n(t={}){return{tier:"free",status:"none",periodEnd:null,isLoading:!1,isResolved:!1,error:null,...t}}let ce=$n({isResolved:!0}),Oa=Promise.resolve();const by=`${vt}/service/runpipeline`,Ey="bs_user_id",Sy="bs_identity_token",xy=`${vt}/authUserCheck`;let ft={userId:null,token:null,status:null,resolved:!1};const ds=tv,fs="ccc_subscription",Wu=3,Iy=new Set(["active","trialing","paid"]),hs="google/gemini-3.7-flash",$r=["anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta","openrouter/free","openrouter/deepseek/deepseek-v4-pro"],ky={"google/gemini-3.7-flash":"Gemini 3.7 Flash","anthropic/claude-opus-5":"Claude Opus 5","openai/gpt-5.6-sol":"GPT-5.6 Sol","z-ai/glm-5.2":"GLM 5.2","moonshotai/kimi-k3":"Kimi K3","openrouter/auto-beta":"OpenRouter: Auto Router","openrouter/free":"OpenRouter: Free Models","openrouter/deepseek/deepseek-v4-pro":"DeepSeek v4 Pro"};function on(t){return ky[t]||t}const Cy=new Set(["google/gemini-3.7-flash","anthropic/claude-opus-5","openai/gpt-5.6-sol","z-ai/glm-5.2","moonshotai/kimi-k3","openrouter/auto-beta"]);function Ay(t){return Cy.has(t)}const Ba=4,Ho=8*1024*1024,Py="https://4tgke4.buildship.run/service/runpipeline-image";let Ne=[];const hn=[],Fy=3e4;let _h=null;function Ry(t){return new Promise(e=>{const n=new FileReader;n.onload=()=>e(n.result),n.onerror=()=>e(null),n.readAsDataURL(t)})}async function Ty(t,e){const n=new FormData;return n.append("file",t),(await fetch(Py,{method:"POST",body:n,signal:e})).json()}function $y(t){if(Array.isArray(t)){const e=t[0];if(e&&typeof e=="object")for(const n of Object.keys(e)){if(n==="item"||n==="index")continue;const i=e[n];if(i&&typeof i=="object"){if(typeof i.file=="string")return i.file;if(typeof i.url=="string")return i.url}if(typeof i=="string")return i}return""}return typeof t=="string"?t:t&&typeof t=="object"&&(t.url||t.fileUrl||t.file_url||t.downloadUrl||t.imageUrl||t.image_url||t.file)||""}async function My(t,e,n){const i=await Ry(t);i&&Ne.includes(e)&&(e.dataUrl=i,ln());let r="";if(i)try{r=$y(await Ty(t,n))}catch{r=""}return Ne.includes(e)?!i||!r?(Ne.splice(Ne.indexOf(e),1),ln(),"failed"):(e.url=r,ln(),"added"):"dropped"}function yh(t){const e=hn.indexOf(t);e>=0&&hn.splice(e,1),bh()}function wh(t){t.controller.abort(),yh(t);const e=Ne.indexOf(t.slot);e>=0&&(Ne.splice(e,1),ln())}function bh(){_h?.setAttachmentsPending(hn.length>0)}async function Ly(t){const e=Array.from(t.target.files||[]);if(!e.length)return;if(t.target.value="",y.isRunning){Ee("Wait for the current generation to finish before attaching images.","info");return}const n=e.filter(u=>u.size>Ho);n.length&&Ee(`Skipped ${n.length} image(s) over the ${(Ho/1024/1024).toFixed(0)} MB limit.`,"warning");const i=e.filter(u=>u.size<=Ho);if(!i.length)return;const r=Ba-Ne.length,s=i.slice(0,r);if(i.length>r&&Ee(`You can attach up to ${Ba} images.`,"info"),!s.length)return;const o=s.map(u=>{const c={dataUrl:null,name:u.name,url:null};Ne.push(c);const d={slot:c,controller:new AbortController},f=setTimeout(()=>d.controller.abort(),Fy);return d.job=My(u,c,d.controller.signal),hn.push(d),d.job.finally(()=>{clearTimeout(f),yh(d)}),d.job});ln(),bh();const l=(await Promise.all(o)).filter(u=>u==="failed").length;l&&Ee(`${l} image(s) could not be uploaded and were not attached.`,"error")}function Ny(t){const e=Ne[t],n=hn.find(i=>i.slot===e);if(n){wh(n);return}Ne.splice(t,1),ln()}function ln(){const t=document.getElementById("prompt-image-thumbnails"),e=document.getElementById("prompt-image-btn-label");t&&(t.innerHTML="",Ne.forEach((n,i)=>{const r=document.createElement("div");r.className="prompt-img-thumb"+(n.url?"":" is-pending"),r.innerHTML=(n.dataUrl?`Prompt image`:"")+``,t.appendChild(r)}),e&&(e.textContent=Ne.length>=Ba?"Image limit reached":"Add images"))}function Eh(){const t=document.getElementById("prompt-image-upload");if(!t)return;const e=document.getElementById("code-generator-model"),n=Ay(e?.value);t.classList.toggle("hidden",!n),!n&&Ne.length&&(hn.slice().forEach(wh),Ne=[],ln())}const Pn="ccc_usage",Sh="google/gemini-3.7-flash",xh="google/gemini-3.7-flash",Sr="google/gemini-3.7-flash",Li={professional:11,power:49},Da={en_US:"USD",en_GB:"GBP",en_AU:"AUD",en_NZ:"NZD",en_CA:"CAD",en_IN:"INR",en_SG:"SGD",en_HK:"HKD",en_PH:"PHP",en_ZA:"ZAR",en:"USD",de:"EUR",fr:"EUR",es:"EUR",it:"EUR",nl:"EUR",pt_PT:"EUR",pt_BR:"BRL",pt:"BRL",ja:"JPY",ko:"KRW",zh_CN:"CNY",zh_TW:"TWD",zh:"CNY",th:"THB",vi:"VND",id:"IDR",ms_MY:"MYR",ms:"MYR",sv:"SEK",nb:"NOK",da:"DKK",pl:"PLN",cs:"CZK",hu:"HUF",ro:"RON",tr:"TRY",ar:"AED",he:"ILS",ru:"RUB",uk:"UAH"},Mr={AUD:1,USD:.65,EUR:.6,GBP:.52,CAD:.88,NZD:1.08,JPY:97,KRW:870,INR:54,SGD:.87,HKD:5.08,BRL:3.18,CNY:4.7,TWD:20.5,THB:22.5,VND:16200,IDR:10200,MYR:2.88,SEK:6.8,NOK:6.95,DKK:4.48,PLN:2.6,CZK:15.2,HUF:238,RON:2.98,TRY:20.9,AED:2.39,ILS:2.38,PHP:36.4,ZAR:11.8,RUB:58,UAH:26.8,CHF:.57,MXN:11.1,ARS:580,CLP:610,COP:2700,PEN:2.44};let Lr={...Mr};async function Oy(){const t=new AbortController,e=setTimeout(()=>t.abort(),5e3);try{const n=await fetch("https://open.er-api.com/v6/latest/AUD",{signal:t.signal});if(!n.ok)return;const i=await n.json();if(i.result!=="success"||!i.rates)return;const r=i.rates,s={AUD:1},o=new Set([...Object.keys(Mr),...Object.values(ja),...Object.values(Da)]);for(const a of o)a!=="AUD"&&(typeof r[a]=="number"&&r[a]>0?s[a]=r[a]:Mr[a]&&(s[a]=Mr[a]));Lr=s}catch{}finally{clearTimeout(e)}}const ja={"America/Sao_Paulo":"BRL","America/Fortaleza":"BRL","America/Recife":"BRL","America/Bahia":"BRL","America/Belem":"BRL","America/Manaus":"BRL","America/Cuiaba":"BRL","America/Campo_Grande":"BRL","America/Araguaina":"BRL","America/Noronha":"BRL","America/Rio_Branco":"BRL","America/Porto_Velho":"BRL","America/Boa_Vista":"BRL","America/Maceio":"BRL","America/Santarem":"BRL","America/Eirunepe":"BRL","Europe/London":"GBP","Europe/Paris":"EUR","Europe/Berlin":"EUR","Europe/Madrid":"EUR","Europe/Rome":"EUR","Europe/Amsterdam":"EUR","Europe/Brussels":"EUR","Europe/Vienna":"EUR","Europe/Lisbon":"EUR","Europe/Dublin":"EUR","Europe/Helsinki":"EUR","Europe/Athens":"EUR","Europe/Bucharest":"RON","Europe/Budapest":"HUF","Europe/Warsaw":"PLN","Europe/Prague":"CZK","Europe/Copenhagen":"DKK","Europe/Stockholm":"SEK","Europe/Oslo":"NOK","Europe/Zurich":"CHF","Europe/Istanbul":"TRY","Europe/Moscow":"RUB","Europe/Kiev":"UAH","Europe/Kyiv":"UAH","Asia/Tokyo":"JPY","Asia/Seoul":"KRW","Asia/Shanghai":"CNY","Asia/Taipei":"TWD","Asia/Hong_Kong":"HKD","Asia/Singapore":"SGD","Asia/Kolkata":"INR","Asia/Calcutta":"INR","Asia/Bangkok":"THB","Asia/Ho_Chi_Minh":"VND","Asia/Jakarta":"IDR","Asia/Kuala_Lumpur":"MYR","Asia/Dubai":"AED","Asia/Jerusalem":"ILS","Asia/Tel_Aviv":"ILS","Asia/Manila":"PHP","Pacific/Auckland":"NZD","Australia/Sydney":"AUD","Australia/Melbourne":"AUD","Australia/Brisbane":"AUD","Australia/Perth":"AUD","Australia/Adelaide":"AUD","Australia/Hobart":"AUD","Australia/Darwin":"AUD","Australia/Lord_Howe":"AUD","America/Toronto":"CAD","America/Vancouver":"CAD","America/Edmonton":"CAD","America/Winnipeg":"CAD","America/Halifax":"CAD","America/St_Johns":"CAD","America/Regina":"CAD","America/New_York":"USD","America/Chicago":"USD","America/Denver":"USD","America/Los_Angeles":"USD","America/Phoenix":"USD","America/Anchorage":"USD","Pacific/Honolulu":"USD","America/Mexico_City":"MXN","America/Cancun":"MXN","America/Tijuana":"MXN","America/Argentina/Buenos_Aires":"ARS","America/Santiago":"CLP","America/Bogota":"COP","America/Lima":"PEN","Africa/Johannesburg":"ZAR"};function kl(){try{const s=Intl.DateTimeFormat().resolvedOptions().timeZone;if(s&&ja[s])return ja[s]}catch{}const e=(navigator.language||"en-US").replace("-","_"),n=Da[e];if(n)return n;const i=e.split("_")[0],r=Da[i];return r||"USD"}function Ni(t,e){const n=Lr[e]??Lr.USD,i=t*n,r=Math.round(i*100)/100;try{return new Intl.NumberFormat("en-US",{style:"currency",currency:e,minimumFractionDigits:0,maximumFractionDigits:r>=100||r%1===0?0:2}).format(r)}catch{return new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",minimumFractionDigits:0,maximumFractionDigits:2}).format(t*Lr.USD)}}const pt="ccc_api_key_",At="ccc_session_api_key_",Ft="ccc_encryption_key",er="ccc_encryption_key_scope",By="ccc_keystore",ps="keys",tr="ccc_encryption_key_version";let Ua=null,gs=null,nr=!1,ms=!1,zu=!1;class vs extends Error{constructor(){super("Secure browser key storage is unavailable."),this.name="CredentialStorageUnavailableError"}}function qu(){if(zu)return;zu=!0;const t="Secure browser key storage is unavailable. Existing credentials were left untouched; new credentials will be available only in this tab session.";console.warn(t),document.body&&Ee(t,"warning")}function Ih(){return localStorage.getItem(tr)||""}function Ha(){return crypto.randomUUID?.()||Ch(crypto.getRandomValues(new Uint8Array(16)))}function Dy(){const t=Ih();if(t)return t;const e=Ha();return localStorage.setItem(tr,e),e}function li(){Ua=null,gs=null,nr=!1,ms=!1}window.addEventListener("storage",t=>{t.key===tr&&li()});function jy(){return new Promise((t,e)=>{const n=indexedDB.open(By,1);n.onupgradeneeded=()=>{const i=n.result;i.objectStoreNames.contains(ps)||i.createObjectStore(ps)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}async function Cl(t,e){const n=await jy();return new Promise((i,r)=>{const s=n.transaction(ps,t);let o;try{o=e(s.objectStore(ps))}catch(l){n.close(),r(l);return}let a;o.onsuccess=()=>{a=o.result},o.onerror=()=>r(o.error),s.oncomplete=()=>{n.close(),i(a)},s.onerror=()=>{n.close(),r(s.error||new Error("Encryption key transaction failed."))},s.onabort=()=>{n.close(),r(s.error||new Error("Encryption key transaction aborted."))}})}function Uy(t){return t instanceof CryptoKey&&t.algorithm?.name==="AES-GCM"&&t.extractable===!1&&t.usages.includes("encrypt")&&t.usages.includes("decrypt")}async function Hy(){const t=await Cl("readonly",e=>e.get(Ft));return Uy(t)?t:null}async function kh(t){await Cl("readwrite",e=>e.put(t,Ft))}async function Wy(){li();try{await Cl("readwrite",t=>t.delete(Ft))}catch(t){console.warn("Could not delete the stored encryption key:",t)}}async function zy(){const t=sessionStorage.getItem(Ft);if(!t)return null;const e=await crypto.subtle.importKey("jwk",JSON.parse(t),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await kh(e),sessionStorage.removeItem(Ft),sessionStorage.removeItem(er),localStorage.removeItem(pt+"salt"),e}async function Vu(t){const e=sessionStorage.getItem(Ft);if(e)return ms=sessionStorage.getItem(er)!=="session",crypto.subtle.importKey("jwk",JSON.parse(e),{name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);if(!t)throw new vs;const n=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),i=await crypto.subtle.exportKey("jwk",n);return sessionStorage.setItem(Ft,JSON.stringify(i)),sessionStorage.setItem(er,"session"),ms=!1,crypto.subtle.importKey("jwk",i,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}async function qy(t){if(sessionStorage.getItem(er)==="session"&&sessionStorage.getItem(Ft))return qu(),nr=!0,Vu(t);try{const e=await Hy();if(e)return e;const n=await zy();if(n)return n;const i=await crypto.subtle.generateKey({name:"AES-GCM",length:256},!1,["encrypt","decrypt"]);return await kh(i),i}catch(e){return console.warn("IndexedDB encryption-key storage failed:",e),qu(),nr=!0,Vu(t)}}async function Al(t={}){const{allowSessionFallbackCreation:e=!0}=t,n=Dy();gs!==n&&li();const i=Ua||qy(e);Ua=i,gs=n;try{return await i}catch(r){throw li(),r}}async function Vy(t){const e=await Al(),n=gs,i=new TextEncoder,r=crypto.getRandomValues(new Uint8Array(12)),s=await crypto.subtle.encrypt({name:"AES-GCM",iv:r},e,i.encode(t)),o=new Uint8Array(r.length+s.byteLength);return o.set(r),o.set(new Uint8Array(s),r.length),{ciphertext:Ch(o),keyVersion:n,sessionFallback:nr}}async function Gy(t,e={}){const{isSessionCredential:n=!1}=e;try{const i=await Al({allowSessionFallbackCreation:!1});if(nr&&!n&&!ms)throw new vs;const r=Ky(t),s=r.slice(0,12),o=r.slice(12),a=await crypto.subtle.decrypt({name:"AES-GCM",iv:s},i,o);return new TextDecoder().decode(a)}catch(i){if(i instanceof vs)throw i;return console.error("Decryption failed:",i),null}}function Ch(t){const e=new Uint8Array(t);let n="";for(let i=0;i0}let Mn="",ci="",Wi=null,Ku=0,tt="not-configured";async function Pl(){sessionStorage.getItem(Ft)&&await Al(),Mn=await Te("flutterflow"),ci=await Te("flutterflow_project_id"),e0(),tn(),Mn?$l():(tt="not-configured",mt())}let _s=!1;function Ah(){const t=document.getElementById("api-keys-modal");Ge(t),Tl(),Mn&&Ml(Mn)}function Fl(){_s=!1,Ah()}function Jy(){_s=!0;const t=document.getElementById("walkthrough-modal");t&&Ke(t),Ah()}function Ph(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("api-keys-modal");e&&Ke(e);const n=_s;if(_s=!1,n){const i=document.getElementById("walkthrough-modal");i&&(tt==="connected"&&Rl(),Ge(i))}}let Xt=1;function Fh(){const t=document.querySelector(".wt-steps");return t?Array.from(t.querySelectorAll(".wt-step-card")):[]}function Ls(){const t=Fh();t.length&&t.forEach((e,n)=>{const i=n+1;e.classList.remove("wt-current","wt-done","wt-pending");const r=e.querySelector(".wt-step-num");i===Xt?(e.classList.add("wt-current"),r&&(r.textContent=i)):i0&&Xt<=t&&(Xt++,Ls())}function Zy(){const t=document.getElementById("walkthrough-modal");t&&(Xt=1,Ls(),Ge(t))}function Xy(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("walkthrough-modal");e&&Ke(e);const n=document.getElementById("walkthrough-dont-show");n&&n.checked&&localStorage.setItem("hasSeenWalkthrough","true")}function Rh(){if(q.isVerified&&Rt()&&ce.tier!=="free")return;if(!localStorage.getItem("hasSeenWalkthrough")){const e=document.getElementById("walkthrough-modal");e&&(Xt=1,Ls(),Ge(e))}}async function Tl(){const t=document.getElementById("flutterflow-api-key-input");Mn?(t.value="",t.placeholder="Key saved (enter new to replace)"):t.placeholder="Enter your FlutterFlow API key",Qy()}function Qy(){Yu("flutterflow","flutterflow-key-status"),Yu("flutterflow_project_id","flutterflow-project-status")}function Yu(t,e){const n=document.getElementById(e);if(!n)return;const i=n.querySelector(".key-status-dot"),r=n.querySelector("span");kt(t)?(i.className="key-status-dot configured",r.className="text-green-600",r.textContent="User key configured"):(i.className="key-status-dot missing",r.className="text-gray-500",r.textContent="Not configured")}function tn(){const t=y.step2Result&&y.step2Result.length>0,e=document.getElementById("btn-deploy-to-ff");e&&e.classList.toggle("hidden",!t)}function e0(){const t=document.getElementById("api-keys-status");if(!t)return;const e=t.querySelectorAll(".key-status-dot"),n=["flutterflow"];e.forEach((i,r)=>{const s=n[r];s==="flutterflow"?kt("flutterflow")&&kt("flutterflow_project_id")?(i.className="key-status-dot configured",i.title="FlutterFlow (Fully configured)"):kt("flutterflow")||kt("flutterflow_project_id")?(i.className="key-status-dot env",i.title="FlutterFlow (Partially configured)"):(i.className="key-status-dot missing",i.title="FlutterFlow (Not configured)"):kt(s)?(i.className="key-status-dot configured",i.title=s.charAt(0).toUpperCase()+s.slice(1)+" (User key)"):(i.className="key-status-dot missing",i.title=s.charAt(0).toUpperCase()+s.slice(1)+" (Not configured)")}),tn()}async function t0(){const t=document.getElementById("flutterflow-api-key-input"),e=document.getElementById("flutterflow-projects-select"),n=t.value.trim();n&&await Gu("flutterflow",n);const i=e?.value.trim()||"";if(i){if(!Ns(i)){Ee("The selected FlutterFlow project has an unexpected ID format.","error"),e.focus();return}await Gu("flutterflow_project_id",i)}await Pl(),n&&await $l(),Tl();const r=document.querySelector("#api-keys-modal .bg-blue-500"),s=r.textContent;r.textContent="Saved!",r.classList.remove("bg-blue-500","hover:bg-blue-600"),r.classList.add("bg-green-500"),setTimeout(()=>{r.textContent=s,r.classList.remove("bg-green-500"),r.classList.add("bg-blue-500","hover:bg-blue-600"),Ph()},1e3)}async function n0(){if(!confirm("Are you sure you want to clear all stored API keys?"))return;localStorage.setItem(tr,Ha()),li(),localStorage.removeItem(pt+"flutterflow"),localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow"),sessionStorage.removeItem(At+"flutterflow_project_id"),sessionStorage.removeItem(Ft),sessionStorage.removeItem(er),localStorage.removeItem(pt+"salt"),await Wy(),localStorage.setItem(tr,Ha()),localStorage.removeItem(pt+"flutterflow"),localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow"),sessionStorage.removeItem(At+"flutterflow_project_id"),await Pl();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML=''),Tl()}function Ns(t){return!t||t.trim().length<5||t.includes(" ")?!1:/^[a-zA-Z0-9-]+$/.test(t)}function mt(){const t=document.getElementById("acct-ff-dot"),e=document.getElementById("acct-ff-status"),n=document.getElementById("acct-ff-endpoint"),i=document.getElementById("acct-ff-project");if(n){const o=_t();n.textContent=o.includes("staging")?"Staging":"Production"}if(i&&(i.textContent=ci||"—"),!e)return;let r,s;if(!kt("flutterflow"))r="Not connected — add your FlutterFlow API key",s="";else switch(tt){case"connected":r="Connected to FlutterFlow",s="ok";break;case"no-projects":r="Key accepted — no projects found",s="warn";break;case"unauthorized":r="API key rejected (401/403) — re-enter your key",s="bad";break;case"network-error":r="Could not reach FlutterFlow — check your network",s="bad";break;default:r="Checking connection…",s="warn";break}e.textContent=r,t&&(t.className=`acct-dot${s?" "+s:""}`)}async function $l(){const t=await Te("flutterflow");if(!t||!kt("flutterflow"))return tt="not-configured",mt(),null;tt="validating",mt();try{const n=await new fi(t,"","main",_t()).listProjects();return tt=n&&n.length>0?"connected":"no-projects",mt(),n}catch(e){const n=String(e&&e.message||"");return tt=/(401|403)|denied|unauthorized|scoped|list permission/i.test(n)?"unauthorized":"network-error",mt(),null}}function i0(){ci="",localStorage.removeItem(pt+"flutterflow_project_id"),sessionStorage.removeItem(At+"flutterflow_project_id")}function r0(){i0();const t=document.getElementById("flutterflow-projects-select");t&&(t.innerHTML='',t.value=""),kt("flutterflow")?(tt="validating",Ml(Mn)):tt="not-configured",mt()}function s0(t,e){const n=document.getElementById(t);n&&(n.value?e?n.style.borderColor="#22c55e":n.style.borderColor="#ef4444":n.style.borderColor="")}function o0(){const t=document.getElementById("flutterflow-api-key-input");t&&(t.addEventListener("input",e=>{const n=e.target.value.trim().length>0;s0("flutterflow-api-key-input",n)}),t.addEventListener("blur",a0(async e=>{const n=e.target.value.trim();n&&await Ml(n)},500)))}function a0(t,e){let n;return function(...r){const s=()=>{clearTimeout(n),t(...r)};clearTimeout(n),n=setTimeout(s,e)}}async function Ml(t){const e=document.getElementById("flutterflow-projects-select"),n=document.getElementById("flutterflow-projects-error");if(!e){console.error("Projects dropdown element not found");return}e.innerHTML='',n&&n.classList.add("hidden"),(kt("flutterflow")||t)&&(tt="validating"),mt();try{const r=await new fi(t,"","main",_t()).listProjects();if(!r||r.length===0){tt="no-projects",mt(),e.innerHTML='';return}tt="connected",mt(),e.innerHTML='',r.forEach(s=>{const o=document.createElement("option");o.value=s.id||s.projectId||"",o.textContent=s.name||s.projectName||`Project ${s.id}`,e.appendChild(o)}),ci&&(e.value=ci)}catch(i){console.error("Failed to fetch projects:",i);const r=String(i&&i.message||"");tt=/(401|403)|denied|unauthorized|scoped|list permission/i.test(r)?"unauthorized":"network-error",mt(),e.innerHTML='',n&&(n.textContent=`Failed to load projects: ${i.message}`,n.classList.remove("hidden"))}}function l0(t){const e=document.getElementById(t),i=e.nextElementSibling.querySelector("svg");e.type==="password"?(e.type="text",i.innerHTML=` + + `):(e.type="password",i.innerHTML=` + + + `)}let y={step1Result:null,step2Result:null,step3Result:null,bundleSpec:null,artifactBundle:null,bundleReview:null,selectedArtifactId:null,resultsViewMode:"summary",currentStep:0,isRunning:!1,runId:0,submittedPrompt:"",submittedImages:[]};function c0(){y.step1Result=null,y.step2Result=null,y.step3Result=null,y.bundleSpec=null,y.artifactBundle=null,y.bundleReview=null,y.selectedArtifactId=null,y.resultsViewMode="summary"}function u0(){y.bundleSpec=Xi(y.step1Result,{artifactType:"CustomWidget",artifactName:"GeneratedWidget"})}function Os(){const t=si(y.bundleSpec);y.artifactBundle=Xi(y.step2Result,{id:y.bundleSpec?.id,title:y.bundleSpec?.title,description:y.bundleSpec?.description,artifactType:t.artifactType,artifactName:t.artifactName,fileName:t.fileName,dependencies:t.dependencies,relationships:y.bundleSpec?.relationships,code:y.step2Result||""});const e=Nv(y.artifactBundle);y.artifactBundle={...y.artifactBundle,warnings:[...y.artifactBundle.warnings,...e.findings.map(n=>n.message)],metadata:{...y.artifactBundle.metadata,compatibility:e}},y.selectedArtifactId=si(y.artifactBundle).id}function Bs(){const t=Xi(y.step3Result,{id:y.artifactBundle?.id,title:y.artifactBundle?.title}),e=new Map(t.artifacts.map(i=>[i.id,i.review])),n=new Map(t.artifacts.filter(i=>{const r=i.review;return r&&typeof r.fixedSource=="string"&&r.fixedSource.trim()}).map(i=>[i.id,i.review.fixedSource.trim()]));y.bundleReview=Xi({id:y.artifactBundle?.id,title:y.artifactBundle?.title,artifacts:y.artifactBundle?.artifacts?.map(i=>{const r=n.get(i.id)||null;return{...i,review:e.get(i.id)||i.review||y.step3Result||null,...r?{fixedCode:r}:{}}})||[],relationships:y.artifactBundle?.relationships,warnings:y.artifactBundle?.warnings})}function Th(){const t=Ll();return{artifactType:t.artifactType||"CustomWidget",artifactName:t.artifactName||"GeneratedWidget",fileName:t.fileName||""}}function Ll(){const t=y.artifactBundle||y.bundleSpec||null;return(Array.isArray(t?.artifacts)?t.artifacts:[]).find(n=>n.id===y.selectedArtifactId)||si(t)}function Nl(){return Ll().code||y.step2Result||""}async function d0(){try{await Pl()}catch(t){return console.error("checkConnection: initializeApiKeys failed:",t),!1}return!0}const Nr={production:"https://api.flutterflow.io/v2/",staging:"https://api.flutterflow.io/v2-staging/"};function f0(t,e){const n=e?.trim()?` (${e.trim().slice(0,200)})`:"";return t===401?`Your FlutterFlow API key was rejected (401 Unauthorized)${n}. Re-enter a current key under API Keys settings, then try again.`:`Listing FlutterFlow projects was denied (403)${n}. The key may be scoped to sync a single project without list permission - verify the key's access in FlutterFlow, re-enter it under API Keys settings, then retry.`}class fi{constructor(e,n,i="main",r=Nr.production){this.apiKey=e,this.baseUrl=r,this._projectId=n,this._branchName=i,this._endpoint=r}get projectId(){return this._projectId}get branchName(){return this._branchName==="main"?"":this._branchName}async exportProjectZip(){console.log(`Exporting code from FlutterFlow project: ${this.projectId}, branch: ${this.branchName||"main"}`);const e=[{project:{path:`projects/${this.projectId}`},...this.branchName?{branch_name:this.branchName}:{},export_as_module:!1,include_assets_map:!1,format:!1,export_as_debug:!1},{project_id:this.projectId,branch_name:this.branchName,include_assets:!1,export_as_module:!1}];let n=null;for(const i of e)try{const r=await fetch(`${this.baseUrl}exportCode`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify(i)});if(!r.ok){const a=await r.text();n=new Error(`Export failed: ${r.status} - ${a}`);continue}const s=await r.json(),o=s?.value?.project_zip||s?.project_zip;if(!o){n=new Error("Export response did not include project source.");continue}return o}catch(r){n=r}throw n||new Error("Export failed for an unknown reason.")}async fetchProjectSource(){const e=await this.exportProjectZip(),n=await JSZip.loadAsync(e,{base64:!0}),i=Object.keys(n.files).filter(a=>!n.files[a].dir&&(a==="pubspec.yaml"||a.endsWith("/pubspec.yaml"))).sort((a,l)=>a.split("/").length-l.split("/").length)[0];if(!i)throw new Error("Export did not contain a pubspec.yaml.");const r=i.slice(0,i.length-12),s=new Map,o=Object.keys(n.files).filter(a=>{if(n.files[a].dir||!a.startsWith(r))return!1;const l=a.slice(r.length);return l==="lib/flutter_flow/custom_functions.dart"||l.startsWith("lib/custom_code/")&&l.endsWith(".dart")});return await Promise.all(o.map(async a=>{s.set(a.slice(r.length),await n.files[a].async("string"))})),{pubspecYaml:await n.files[i].async("string"),files:s}}async pushCodeWithRetry(e,n=3){const i=[Nr.production,Nr.staging],r=Math.max(0,i.indexOf(this._endpoint));for(let s=0;ssetTimeout(d,1e3*(s+1)));continue}return l}catch(l){console.warn(`Push to ${a} failed: ${l.message}, trying next...`),await new Promise(u=>setTimeout(u,1e3*(s+1)))}}throw new Error("All API endpoints failed after retries")}async pushCode(e){return this.pushCodeWithRetry(e)}parseProjectsResponse(e){if(e?.success&&typeof e.value=="string")try{const i=JSON.parse(e.value);if(i&&Array.isArray(i.entries))return i.entries.map(r=>({id:r.id,name:r.project?.name||r.id}))}catch(i){console.error("Failed to parse stringified project value:",i)}const n=e?.projects||e?.items||e?.entries||(Array.isArray(e)?e:[]);return Array.isArray(n)?n:[]}async listProjects(){console.log("Listing projects for API key");const e=[`${this.baseUrl}listProjects`,"https://api.flutterflow.io/v2/l/listProjects"];let n=0,i="";for(const r of e){const s=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${this.apiKey}`},body:JSON.stringify({project_type:"ALL",deserialize_response:!0})});if(s.ok)return r!==e[0]&&console.log(`listProjects answered on legacy path ${r}`),this.parseProjectsResponse(await s.json());if(n=s.status,i=await s.text(),console.warn(`listProjects via ${r} returned ${n}: ${i}`),s.status===401||s.status===403)throw new Error(f0(s.status,i));if(s.status!==404)throw new Error(`List projects failed: ${s.status} - ${i}`)}throw new Error(`List projects failed: ${n} - ${i}`)}}async function Ol(t){const e=t.clone();let n;try{n=await t.json()}catch{const s=await e.text();if(!t.ok)return{success:!1,responseCode:t.status,errorMessage:s||`HTTP ${t.status}`,errorMap:new Map};throw new Error(`Invalid JSON response: ${s}`)}if(!t.ok){let r=n.message||`HTTP ${t.status}`,s=new Map;if(n.errors)s=new Map(Object.entries(n.errors));else if(!n.message&&typeof n=="object"){const o=Object.keys(n).filter(a=>a.endsWith(".dart")&&Array.isArray(n[a]));o.length>0&&(s=new Map(Object.entries(n)),r=o.flatMap(l=>n[l].map(u=>`${l}: ${u.errorMessage}`)).join(` +`)||`HTTP ${t.status}`)}return{success:!1,responseCode:t.status,errorMessage:r,errorMap:s}}let i={};if(n.value)try{i=typeof n.value=="string"?JSON.parse(n.value):n.value}catch(r){console.warn("Ignoring malformed push response value:",r)}return{success:!0,responseCode:t.status,errorMap:new Map(Object.entries(i))}}function Bl(t,e){return{401:"Authentication failed. Please check your FlutterFlow API key.",403:"Access denied. You may not have permission to modify this project.",404:"Project not found. Please check your Project ID.",409:"Conflict detected. The project may have been modified elsewhere.",422:"Validation failed: Invalid request format",429:"Rate limit exceeded. Please try again in a few minutes.",500:"FlutterFlow server error. Please try again later.",503:"FlutterFlow service temporarily unavailable."}[t]||`FlutterFlow API error: ${`HTTP ${t}`}`}const J={ACTION:"A",WIDGET:"W",FUNCTION:"F",CODE_FILE:"C",DEPENDENCIES:"D",OTHER:"O"},$h=/class\s+\w+\s+extends\s+(?:StatelessWidget|StatefulWidget)\b/,Mh=/extends\s+State<\w+>/;function h0(t,e=""){if(t==="pubspec.yaml")return J.DEPENDENCIES;if(!t.endsWith(".dart")||t.endsWith("index.dart"))return J.OTHER;if(t==="custom_functions.dart")return J.FUNCTION;if(e){const n=$h.test(e),i=Mh.test(e);if(n||i)return J.WIDGET;if(/^\s*Future(?:<[^>]+>)?\s+\w+\s*\(/m.test(e))return J.ACTION;if(e.match(/^\s*(String|int|double|bool|List|Map|dynamic|void)\s+\w+\s*\(/m))return J.FUNCTION}return J.CODE_FILE}function Lh(t,e){switch(e){case J.ACTION:return`lib/custom_code/actions/${t}`;case J.WIDGET:return`lib/custom_code/widgets/${t}`;case J.FUNCTION:return"lib/flutter_flow/custom_functions.dart";case J.CODE_FILE:return`lib/custom_code/${t}`;case J.DEPENDENCIES:return"pubspec.yaml";case J.OTHER:return`lib/custom_code/${t}`;default:return t}}async function Dl(t,e=new Map){return _v(t,e)}const Wa=new Map;function Nh(t){return`${t.baseUrl}|${t.projectId}|${t.branchName}`}function Ds(t){Wa.delete(Nh(t))}class ys extends Error{constructor(e){super(e),this.name="UnconfirmedDeployError",this.outcome=Xe.UNCONFIRMED}}function p0(t,e,n){return new Promise((i,r)=>{let s=!1;const o=(l,u,c)=>{s||(s=!0,c==="resolve"?i(u):r(u))},a=setTimeout(()=>{s||(s=!0,n(i,r))},e);t.then(l=>{clearTimeout(a),o(i,l,"resolve")},l=>{clearTimeout(a),o(r,l,"reject")})})}async function jl(t,e,n,i,r=""){const s=Jv(e,n);if(s.length===0)return{remoteFiles:n,syncFileMap:e,unverified:[],approximate:[]};const o=H_(s,r),a={...o.manifest,sources:o.sources},l=o.skipped.map(f=>f.reason);l.forEach(f=>console.warn(`[custom class deploy] ${f}`));const u=o.approximate;u.forEach(f=>console.warn(`[custom class deploy] ${f}`)),console.log(`Provisioning ${s.length} new FlutterFlow custom code file(s) before sync.`),Oe.set("provision");const c=await fetch(yy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:t.apiKey,projectId:t.projectId,baseUrl:t.baseUrl,commitMessage:i,customClasses:s,verification:a,stream:!0})}),d=await p0(q_(c,{onPhase:f=>Oe.setSubstatus(f),onLog:f=>console.log(`[custom class deploy] ${f}`)}),z_,(f,h)=>h(new ys("The deploy is still working on the FlutterFlow server, but this browser tab has stopped waiting. Your custom classes may or may not have been written — the outcome is not yet known. Open your FlutterFlow project to reconcile before retrying the deploy.")));if(!d.finalResultReceived)throw V_(d)===Xe.FAILED?new Error(d.error||`FlutterFlow custom class provisioning failed (HTTP ${d.httpStatus}).`):new ys("The connection to the FlutterFlow deploy runner dropped before it reported a result. The deploy may still be finishing on the server; open your FlutterFlow project to reconcile before retrying.");if(!d.success){const f=d.details?` ${d.details}`:"";throw new Error(`${d.error||"FlutterFlow custom class provisioning failed."}${f}`)}return Ds(t),d.verificationSkipped&&(console.warn(`[custom class deploy] ${d.verificationSkipped}`),l.push(d.verificationSkipped)),{remoteFiles:n,syncFileMap:Zv(e,s),unverified:l,approximate:u,provisionSucceeded:!0}}async function Ul(t,e={}){const n=Nh(t);let i=Wa.get(n);if(i===void 0){try{i=await t.fetchProjectSource()}catch(l){throw new Error(`Could not read your project's pubspec.yaml (${l.message}). Deploy was stopped so your existing package dependencies aren't overwritten. Check your FlutterFlow API key and project, then try again.`)}const a=dh(i.pubspecYaml);if(!a.valid)throw new Error(`Your project's pubspec.yaml could not be read reliably (${a.errors.join("; ")}). Deploy was stopped so your existing package dependencies aren't overwritten.`);Wa.set(n,i)}const r=await ly(i.pubspecYaml,e),s=O_(i.pubspecYaml,r.overrides),o=N_(s.yaml,r.additions);return r.warnings.forEach(a=>console.warn(`[pubspec] ${a}`)),o.added.length>0&&console.log("Adding dependencies:",o.added.map(a=>`${a}: ${r.additions[a]||"any"}`).join(", "),r.sdk.dartSdkFloor?`(resolved for Dart ${r.sdk.dartSdkFloor})`:""),r.kept.forEach(({name:a,constraint:l})=>console.log(`Keeping your existing ${a}: ${l||"(non-version source)"}`)),{...o,overridden:s.overridden,warnings:r.warnings,remoteFiles:i.files}}function g0(t){const e=[],n=[];t.content.length>5e4&&n.push("Code file is large (>50KB). This may take longer to commit."),t.content.length>1e5&&e.push("Code file is too large (>100KB). Consider splitting into smaller components.");const i=t.content.split(` +`).length;i>500&&n.push(`Code has ${i} lines. Consider breaking it into smaller widgets.`),t.content.includes("setState")&&t.codeType===J.ACTION&&n.push("Using setState in a Custom Action may not work as expected. Consider using a Custom Widget."),t.content.includes("dynamic")&&!t.content.includes("?")&&n.push('Code uses "dynamic" types. Consider adding explicit types for better null safety.'),t.content.match(/Color\(0xFF[0-9A-Fa-f]{6}\)/)&&n.push("Code contains hardcoded colors. Consider using FlutterFlowTheme.of(context) for theme consistency.");const r=t.content.match(/print\s*\(/g);r&&r.length>3&&n.push(`Code contains ${r.length} print statements. Consider removing debug prints before committing.`);const s=g_(t.content);if(s&&e.push(`FlutterFlow cannot format this code - ${s}. Fix or regenerate before committing.`),t.codeType===J.WIDGET){const o=nh(t.content),a=f_(t.fileName);if(o.length===0)e.push("No public widget class found (must extend StatelessWidget or StatefulWidget).");else if(!o.includes(a)){const l=`${ih(o[0])}`;e.push(`Widget class name "${o[0]}" does not match the file name "${t.fileName}". FlutterFlow derives the widget from the file name, so it will report "No widget ${a} found". Rename the file to "${l}" or the class to match before committing.`)}}return{canProceed:e.length===0,issues:e,warnings:n}}function Oh(t,e={}){const{artifactType:n="CustomWidget",artifactName:i="GeneratedCode",fileName:r}=e,s=u_(t);let o=r||i;if(n==="CustomFunction")o="custom_functions.dart";else if(n==="CustomWidget"){const u=nh(s)[0],c=u?ih(u):null;c&&o!==c?(console.warn(`Commit file name "${o}" does not match declared widget class "${u}"; renaming to "${c}" so FlutterFlow can find the widget.`),o=c):o.endsWith(".dart")||(o+=".dart")}else o.endsWith(".dart")||(o+=".dart");let a=J.CODE_FILE;switch(n){case"CustomAction":a=J.ACTION;break;case"CustomWidget":a=J.WIDGET;break;case"CustomFunction":a=J.FUNCTION;break;case"CustomClass":case"CodeFile":a=J.CODE_FILE;break}let l="";return a===J.WIDGET?l=`// Automatic FlutterFlow imports +import '/flutter_flow/flutter_flow_theme.dart'; +import '/flutter_flow/flutter_flow_util.dart'; +import 'package:flutter/material.dart'; +// Begin custom widget code +// DO NOT REMOVE OR MODIFY THE CODE ABOVE! + +`:a===J.ACTION?l=`// Automatic FlutterFlow imports +import '/flutter_flow/flutter_flow_theme.dart'; +import '/flutter_flow/flutter_flow_util.dart'; +import 'package:flutter/material.dart'; +// Begin custom action code +// DO NOT REMOVE OR MODIFY THE CODE ABOVE! + +`:a===J.FUNCTION&&(l=`// Automatic FlutterFlow imports +import 'dart:convert'; +import 'dart:math' as math; + +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:intl/intl.dart'; +import 'package:timeago/timeago.dart' as timeago; +import '/flutter_flow/lat_lng.dart'; +import '/flutter_flow/place.dart'; +import '/flutter_flow/uploaded_file.dart'; + +`),{content:Dv(s,l),fileName:o,codeType:a,artifactType:n,artifactName:i}}function m0(t){const e={};for(const n of wl(t))e[n]="";return e}function v0(t,e={}){return{timestamp:new Date().toISOString(),artifactType:t.artifactType,artifactName:t.artifactName,codeType:t.codeType,fileName:t.fileName,generatedFrom:e.step1Result?"pipeline":"direct",model:e.selectedModel||"unknown",codeSize:t.content.length}}function _0(t,e,n,i=new Set,r=""){const s=[],o=$h.test(e),a=Mh.test(e);return n===J.WIDGET&&!o&&!a&&s.push("No widget class definition found (must extend StatelessWidget or StatefulWidget)"),{valid:s.length===0,errors:s}}function js(t){const e=[],n=[];if(!t||t.size===0)return e.push("No files to commit"),{valid:!1,errors:e,warnings:n};const i=new Set(Array.from(t.values()).flatMap(r=>Cs(r.content||"")));for(const[r,s]of t.entries()){if((!s.content||s.content.trim().length===0)&&e.push(`File ${r} is empty`),s.content&&s.content.length>1e5&&n.push(`File ${r} is very large (>100KB)`),r.endsWith(".dart")){const o=_0(r,s.content,s.type,i,s.artifactName);o.valid||e.push(...o.errors.map(a=>`${r}: ${a}`))}if(r==="pubspec.yaml"){const o=dh(s.content);o.valid||e.push(...o.errors)}}return{valid:e.length===0,errors:e,warnings:n}}const ee={IDLE:"IDLE",PREPARING:"PREPARING",VALIDATING:"VALIDATING",PUSHING:"PUSHING",SUCCESS:"SUCCESS",ERROR:"ERROR"},Y={currentState:ee.IDLE,startTime:null,endTime:null,error:null,result:null,filesProcessed:0,totalFiles:0,reset(){this.currentState=ee.IDLE,this.startTime=null,this.endTime=null,this.error=null,this.result=null,this.filesProcessed=0,this.totalFiles=0},setState(t){if(!Object.values(ee).includes(t)){console.error(`Invalid commit state: ${t}`);return}this.currentState=t,t===ee.PREPARING&&(this.startTime=Date.now()),(t===ee.SUCCESS||t===ee.ERROR)&&(this.endTime=Date.now()),typeof window<"u"&&window.dispatchEvent&&window.dispatchEvent(new CustomEvent("commitStateChange",{detail:{state:t,commitState:this}})),console.log(`Commit state changed to: ${t}`)},setError(t){this.error=t,this.setState(ee.ERROR)},setSuccess(t){this.result=t,this.setState(ee.SUCCESS)},setProgress(t,e){this.filesProcessed=t,this.totalFiles=e},getElapsedTime(){return this.startTime?(this.endTime||Date.now())-this.startTime:null},isInProgress(){return this.currentState===ee.PREPARING||this.currentState===ee.VALIDATING||this.currentState===ee.PUSHING}};async function y0(t,e,n={}){let{codeType:i="W"}=n;const{pubspecDeps:r={},artifactName:s=e}=n;i==="CustomWidget"&&(i=J.WIDGET),i==="CustomAction"&&(i=J.ACTION),i==="CustomFunction"&&(i=J.FUNCTION),i==="CustomClass"&&(i=J.CODE_FILE),i==="CodeFile"&&(i=J.CODE_FILE),Y.reset(),Y.setState(ee.PREPARING);try{const o=await Te("flutterflow"),a=await Te("flutterflow_project_id");if(!o||!a)throw new Error("FlutterFlow credentials not configured. Please set your API key and Project ID in the API Keys settings.");if(!Ns(a))throw new Error("Invalid FlutterFlow Project ID format.");const l=_t(),u=new fi(o,a,"main",l);Y.setState(ee.VALIDATING);const c=new Map,d=i||h0(e,t),f=Lh(e,d);c.set(e,{artifactName:s,content:t,type:d,path:f}),Y.setProgress(0,c.size);const h=js(c);if(!h.valid)throw new Error(`Validation failed: +${h.errors.join(` +`)}`);const p=await Ul(u,r),g=p.yaml,m=await jl(u,c,p.remoteFiles,`Provision ${s} custom class`,g),v=await Dl(m.syncFileMap,m.remoteFiles),S=new Map(m.syncFileMap);S.set("pubspec.yaml",{content:g,type:"D",path:"pubspec.yaml"}),Oe.set("package");const b=await Hl(S),_={project_id:a,zipped_custom_code:b,uid:`web_${Date.now()}`,branch_name:u.branchName,serialized_yaml:g,file_map:v.fileMapContents,functions_map:v.functionsMapContents};Y.setState(ee.PUSHING),Y.setProgress(1,c.size),Ds(u),Oe.set("push");const x=await u.pushCode(_),I=await Ol(x);if(I.success)Y.setSuccess({fileCount:c.size,projectId:a,warnings:I.errorMap&&I.errorMap.size>0?Array.from(I.errorMap.entries()):[]});else{const T=I.errorMessage||Bl(I.responseCode);throw new Error(T)}return{success:!0,message:`Successfully committed ${e} to FlutterFlow project ${a}`,addedDependencies:p.added,unverified:m.unverified,approximate:m.approximate,warnings:I.errorMap?Array.from(I.errorMap.entries()):[]}}catch(o){return console.error("Commit failed:",o),Y.setError(o),{success:!1,error:o.message,state:Y.currentState}}}async function Hl(t){const e=new JSZip;for(const[n,i]of t.entries())e.file(n,i.content);return e.generateAsync({type:"base64",compression:"DEFLATE",compressionOptions:{level:6}})}async function w0(t,e={}){const{artifactType:n,artifactName:i,fileName:r,pipelineResult:s}=e;console.log(`Starting commit for ${i} (${n})`);let o=!1;const a={projectId:null,endpoint:_t(),artifactType:n,artifactName:i,fileName:r};try{Y.setState(ee.PREPARING);const l=Oh(t,{artifactType:n,artifactName:i,fileName:r}),u=m0(l.content);console.log("Detected dependencies:",u),Y.setState(ee.VALIDATING);const c=await Te("flutterflow"),d=Wi||await Te("flutterflow_project_id");if(!c)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!d)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ns(d))throw new Error("Invalid FlutterFlow Project ID format.");const f=new Map;f.set(l.fileName,{artifactName:i,content:l.content,type:l.codeType,path:Lh(l.fileName,l.codeType),functionName:l.codeType===J.FUNCTION?i:void 0}),Y.setProgress(0,f.size);const h=js(f);if(!h.valid)throw new Error(`File validation failed: +${h.errors.join(` +`)}`);h.warnings.length>0&&console.warn("Validation warnings:",h.warnings),Y.setState(ee.PUSHING);const p=_t(),g=new fi(c,d,"main",p),m=await Ul(g,u),v=m.yaml,S=await jl(g,f,m.remoteFiles,`Provision ${i} custom class`,v);a.projectId=d,o=S.provisionSucceeded===!0;const b=await Dl(S.syncFileMap,S.remoteFiles),_=new Map(S.syncFileMap);_.set("pubspec.yaml",{content:v,type:J.DEPENDENCIES,path:"pubspec.yaml"}),Oe.set("package");const x=await Hl(_),I={project_id:d,zipped_custom_code:x,uid:`web_${Date.now()}`,branch_name:g.branchName,serialized_yaml:v,file_map:b.fileMapContents,functions_map:b.functionsMapContents};Y.setProgress(1,f.size),Ds(g),Oe.set("push");const T=await g.pushCode(I),E=await Ol(T);if(E.success){const P={...v0(l,s),projectId:d};return Y.setSuccess({...P,fileCount:f.size,warnings:E.errorMap?Array.from(E.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${l.fileName} to FlutterFlow`,metadata:P,targetIdentity:a,addedDependencies:m.added,unverified:S.unverified,approximate:S.approximate,warnings:E.errorMap?Array.from(E.errorMap.entries()):[],elapsedTime:Y.getElapsedTime()}}else{const P=E.errorMessage||Bl(E.responseCode),$=new Error(P);throw $.errorMap=E.errorMap,$}}catch(l){console.error("Commit execution failed:",l),Y.setError(l);let u=new Map;if(l.errorMap)u=l.errorMap;else if(l.message&&l.message.includes("{"))try{const c=l.message.match(/\{[\s\S]*\}/);if(c){const d=JSON.parse(c[0]);u=new Map(Object.entries(d))}}catch(c){console.warn("Failed to parse error map from commit response:",c)}return l instanceof ys?{success:!1,unconfirmed:!0,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:o?{success:!1,partial:!0,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:{success:!1,error:l.message,errorMap:u,targetIdentity:a,state:Y.currentState,elapsedTime:Y.getElapsedTime()}}}async function b0(t,e={}){const{pipelineResult:n}=e;let i=!1;const r={projectId:null,endpoint:_t(),artifactType:"Bundle",artifactName:t?.title,fileName:t?.fileEntries?`${t.fileEntries.length} artifacts`:"bundle"};try{if(Y.setState(ee.PREPARING),t.errors?.length>0)throw new Error(`Bundle validation failed: +${t.errors.join(` +`)}`);const s=new Map(t.fileEntries.map(I=>[I.fileName,{artifactId:I.artifactId,artifactName:I.artifactName,content:I.content,type:I.type,path:I.path,functionName:I.type===J.FUNCTION?I.artifactName:void 0}]));Y.setProgress(0,s.size);const o=js(s);if(!o.valid)throw new Error(`File validation failed: +${o.errors.join(` +`)}`);Y.setState(ee.VALIDATING);const a=await Te("flutterflow"),l=Wi||await Te("flutterflow_project_id");if(!a)throw new Error("FlutterFlow API Key not configured. Please add it in API Keys settings.");if(!l)throw new Error("FlutterFlow Project ID not configured. Please add it in API Keys settings.");if(!Ns(l))throw new Error("Invalid FlutterFlow Project ID format.");Y.setState(ee.PUSHING);const u=_t(),c=new fi(a,l,"main",u),d=await Ul(c,t.dependencies),f=d.yaml,h=await jl(c,s,d.remoteFiles,`Provision ${t.title} custom classes`,f);r.projectId=l,i=h.provisionSucceeded===!0;const p=await Dl(h.syncFileMap,h.remoteFiles),g=new Map(h.syncFileMap);g.set("pubspec.yaml",{content:f,type:J.DEPENDENCIES,path:"pubspec.yaml"}),Oe.set("package");const m=await Hl(g),v={project_id:l,zipped_custom_code:m,uid:`web_${Date.now()}`,branch_name:c.branchName,serialized_yaml:f,file_map:p.fileMapContents,functions_map:p.functionsMapContents};Y.setProgress(1,s.size),Ds(c),Oe.set("push");const S=await c.pushCode(v),b=await Ol(S);if(b.success){const I={...n,artifactType:"Bundle",artifactName:t.title,fileName:`${t.fileEntries.length} artifacts`,codeSize:t.fileEntries.reduce((T,E)=>T+E.content.length,0),projectId:l};return Y.setSuccess({...I,fileCount:s.size,warnings:b.errorMap?Array.from(b.errorMap.entries()):[]}),{success:!0,message:`Successfully committed ${t.fileEntries.length} artifacts to FlutterFlow`,metadata:I,targetIdentity:r,addedDependencies:d.added,unverified:h.unverified,approximate:h.approximate,warnings:b.errorMap?Array.from(b.errorMap.entries()):[],elapsedTime:Y.getElapsedTime()}}const _=b.errorMessage||Bl(b.responseCode),x=new Error(_);throw x.errorMap=b.errorMap,x}catch(s){console.error("Bundle commit execution failed:",s),Y.setError(s);const o=s.errorMap||new Map;return s instanceof ys?{success:!1,unconfirmed:!0,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:i?{success:!1,partial:!0,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}:{success:!1,error:s.message,errorMap:o,targetIdentity:r,state:Y.currentState,elapsedTime:Y.getElapsedTime()}}}async function E0(t,e=[]){const n=ml("architect");try{return await Es("architect",Sh,ov(t),n,e)}catch(i){throw i.isModelArmor||i.isUsageLimit||i.isPipelineCancel?i:new Error(`Prompt Architect failed: ${i.message}`)}}async function Us(t,e,n=[],i){const r=av(t),s=ml("generator",y.bundleSpec);try{return await Es("generator",e,r,s,n)}catch(o){if(o.isModelArmor||o.isUsageLimit||o.isPipelineCancel)throw o;if(e!==Sr){console.warn(`Code Generator failed with ${e}, retrying with fallback model:`,o.message),Cw(e,Sr,i);try{return await Es("generator",Sr,r,s,n)}catch(a){throw a.isModelArmor||a.isUsageLimit||a.isPipelineCancel?a:new Error(`Code Generator failed: primary (${e}): ${o.message} | fallback (${Sr}): ${a.message}`)}}throw new Error(`Code Generator failed: ${o.message}`)}}async function Hs(t,e=null){const n={...ml("review",y.artifactBundle||y.bundleSpec),architect_output:e};try{return await Es("review",xh,lv(t),n)}catch(i){throw i.isModelArmor||i.isUsageLimit||i.isPipelineCancel?i:new Error(`Code Review failed: ${i.message}`)}}function ws(t,e){const n=document.getElementById(`step${t}-item`),i=document.getElementById(`step${t}-status`);!n||!i||(n.classList.remove("active","completed","error"),i.classList.remove("running","completed","error"),e==="active"?(n.classList.add("active"),i.classList.add("running"),i.innerHTML=` + + `):e==="completed"?(n.classList.add("completed"),i.classList.add("completed"),i.innerHTML=` + + `):e==="error"?(n.classList.add("error"),i.classList.add("error"),i.innerHTML=` + + `):i.innerHTML=` + + `)}function Ae(t,e){const n=document.getElementById(`step${t}-loading`),i=document.getElementById(`step${t}-result`);e?(n.classList.remove("hidden"),i.classList.add("hidden"),ws(t,"active")):(n.classList.add("hidden"),i.classList.remove("hidden"),ws(t,"completed"))}function S0(t){const e=document.getElementById(`${t}-content`),n=document.getElementById(`${t}-chevron`);e.classList.contains("open")?(e.classList.remove("open"),n&&(n.style.transform="rotate(0deg)")):(e.classList.add("open"),n&&(n.style.transform="rotate(180deg)"))}function x0(t){nt(parseInt(t.replace("step","")))}function nt(t){for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-item`);a&&a.classList.remove("active")}const e=document.getElementById(`step${t}-item`);e&&e.classList.add("active"),Ln();const n=document.getElementById("ready-state");n&&n.classList.add("hidden");for(let o=1;o<=3;o++){const a=document.getElementById(`step${o}-content`);a&&a.classList.add("hidden")}const i=document.getElementById(`step${t}-content`);i&&i.classList.remove("hidden");const r=document.getElementById("stage-title"),s={1:"Prompt Architect",2:"Code Generator",3:"Code Review"};r&&(r.textContent=s[t]||"Active Workflow Stage")}function I0(t){const e=document.getElementById(t);if(!e)return;const n=e.dataset.raw||e.textContent;navigator.clipboard.writeText(n).then(()=>{const r=e.closest(".code-container")?.querySelector(".copy-btn");r&&(r.classList.add("copied"),r.innerHTML=' Copied!',setTimeout(()=>{r.classList.remove("copied"),r.innerHTML=' Copy'},2e3))}).catch(i=>{console.warn("Failed to copy to clipboard:",i)})}function za(t){const e=qa(t);console.log(`Step 1 (Prompt Architect): ${on(Sh)}`),console.log(e!==t?`Step 2 (Code Generator): ${on(t)} → ${on(e)} (Free Tier fallback)`:`Step 2 (Code Generator): ${on(t)}`),console.log(`Step 3 (Code Review): ${on(xh)}`)}function Bh(){return{step1Result:y.step1Result,step2Result:y.step2Result,step3Result:y.step3Result,artifactBundle:y.artifactBundle,bundleReview:y.bundleReview,selectedArtifactId:y.selectedArtifactId}}function k0(t){if(!t)return;Object.assign(y,t),new Set((y.artifactBundle?.artifacts||[]).map(n=>n.id)).has(y.selectedArtifactId)||(y.selectedArtifactId=si(y.artifactBundle)?.id||null)}const Dh="results-replacement-error";function C0(t,{stage:e=2,runId:n,retry:i}){if(!re(n))return;const r=document.getElementById(Dh);if(!r)return;const s=gh(t),o=document.getElementById("results-replacement-error-title"),a=document.getElementById("results-replacement-error-message"),l=document.getElementById("results-replacement-error-retry"),u=document.getElementById("results-replacement-error-upgrade");o&&(o.textContent=`${Vs[e]||"Regeneration"}: ${s.title}`),a&&(a.textContent=s.message),r.hidden=!1;let c=null;u&&(u.hidden=!s.canUpgrade,s.canUpgrade&&(u.textContent="View plans",u.onclick=()=>ui(),c=u)),l&&(l.hidden=s.canUpgrade,s.canUpgrade||(l.onclick=()=>{Wl(),typeof i=="function"&&i()},l.textContent="Retry",c=l)),(c||r).focus({preventScroll:!0})}function Wl(){const t=document.getElementById(Dh);t&&(t.hidden=!0)}function jh(t,{previous:e,stage:n,runId:i,retry:r}){re(i)&&(t.isUsageLimit&&cn(),k0(e),or(),en(!0),ar(),eo(),C0(t,{stage:n,runId:i,retry:r}),tn())}async function Uh(){if(console.log("runRefinement called"),y.isRunning)return;const t=document.getElementById("code-generator-model").value;y.isRunning=!0;const e=Gs();zl("standardRegenerate",y.step2Result,y.step1Result);const n=document.querySelectorAll(".btn-refine-action"),i=Bh();n.forEach(r=>{r.disabled=!0,r.innerHTML=` + + + Refining...`});try{Wl();const r=Ll(),s=r.id,o=cv({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,artifactId:r.id,userFeedback:"Fix the issues listed in the audit report."});Zs({runId:e}),Pt(2,e),nt(2),Ae(2,!0);const a=await Us(o,t,[],e);if(!re(e))return;y.step2Result=a,Os(),Qt(2,e);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,e),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(e))return;y.step3Result=c,Bs(),Qt(3,e),y.artifactBundle?.artifacts?.some(h=>h.id===s)?y.selectedArtifactId=s:y.selectedArtifactId=si(y.artifactBundle)?.id||null;const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f)}catch(r){if(console.error("Refinement failed:",r),!re(e))return;const s=$s(r,{architect:2,generator:2,review:3});jh(r,{previous:i,stage:s,runId:e,retry:Uh})}finally{n.forEach(r=>{r.disabled=!1,r.textContent="Refine & Regenerate"}),re(e)&&(y.isRunning=!1,tn())}}async function zl(t,e,n){const i=`${vt}/connectFeedback`,r={type:t,code:e,input:n};try{const s=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!s.ok){const a=await s.text();return console.error(`callEndpoint failed: ${s.status} ${s.statusText}`,a),{success:!1,status:s.status,error:a}}const o=await s.json();return console.log("Telemetry success:",o),o}catch(s){return console.error("callEndpoint failed:",s),{success:!1,error:s.message}}}function A0(){const t=document.getElementById("ff-error-paste-input");t&&(t.value="")}async function Hh(){const t=document.getElementById("ff-error-paste-input"),e=t?.value?.trim();if(!e){t?.focus(),t?.classList.add("ring-2","ring-red-400","border-red-300"),setTimeout(()=>t?.classList.remove("ring-2","ring-red-400","border-red-300"),2e3);return}if(!y.step2Result){Ee("No generated code found. Please run the full pipeline first.","warning");return}if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const i=Gs();zl("flutterflowError",y.step2Result,e);const r=document.getElementById("btn-fix-from-errors");r&&(r.disabled=!0,r.innerHTML=` + + Fixing…`);const s=Bh();try{Wl();const o=Zf({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:e});vp(),Zs({runId:i}),Pt(2,i),nt(2),Ae(2,!0);const a=await Us(o,n,[],i);if(!re(i))return;y.step2Result=a,Os(),Qt(2,i);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=c,Bs(),Qt(3,i);const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f),t&&(t.value="")}catch(o){if(console.error("Fix from errors failed:",o),!re(i))return;const a=$s(o,{architect:2,generator:2,review:3});jh(o,{previous:s,stage:a,runId:i,retry:Hh})}finally{r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),re(i)&&(y.isRunning=!1,tn())}}async function ir(){if(console.log("runThinkingPipeline called"),y.isRunning)return;localStorage.setItem("hasSeenWalkthrough","true");const t=document.getElementById("pipeline-input").value,e=document.getElementById("code-generator-model").value,n=Ne.slice();if(!t.trim()){Ee("Please describe your FlutterFlow widget first.","warning");return}y.isRunning=!0;const i=Gs();try{if(await Oa,!re(i)||(hn.length&&await Promise.allSettled(hn.map(v=>v.job)),!re(i))||!await X0()||!re(i)||(await V0(),!re(i)))return;const r=qa(e);t.length,c0(),y.submittedPrompt=t,y.submittedImages=n.filter(v=>v.url),Ka(!0),za(r),Ln();const s=document.getElementById("ready-state");s&&s.classList.add("hidden");const o=document.getElementById("paywall-exhausted");o&&o.classList.add("hidden"),Zs({prompt:t,runId:i}),Rw(),nt(1),Pt(1,i),Ae(1,!0);const a=y.submittedImages.map(v=>({url:v.url})),l=await E0(t,a);if(!re(i))return;y.step1Result=l,u0(),Qt(1,i);const u=document.getElementById("step1-output"),c=ai(y.step1Result);u.textContent=c,u.dataset.raw=c,Ae(1,!1),nt(2),Pt(2,i),Ae(2,!0);const d=await Us(y.step1Result,r,a,i);if(!re(i))return;y.step2Result=d,Os(),Qt(2,i);const f=document.getElementById("step2-output"),h=ai(y.step2Result);f.textContent=h,f.dataset.raw=h,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const p=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=p,Bs(),Qt(3,i);const g=document.getElementById("step3-output");g.textContent=y.step3Result,Ae(3,!1),or();const m=Ms(y.step3Result);Tw(),ar(h,m)}catch(r){if(r.isPipelineCancel||console.error("Pipeline failed:",r),!re(i))return;const s=$s(r,{architect:1,generator:2,review:3});r.isUsageLimit?cn():(r.message,qa(document.getElementById("code-generator-model").value),void 0),nt(s),Ae(s,!1),hp(r,{stage:s,runId:i}),ws(s,"error")}finally{re(i)&&(y.isRunning=!1,Ka(!1),tn())}}function P0(){const t=document.getElementById("code-generator-model").value,e=[hs,"anthropic/claude-opus-5","openai/gpt-5.6-sol"].filter(i=>i!==t),n=prompt(`Retry with different model? + +Current: ${t} + +Options: +1. ${e[0]} +2. ${e[1]} + +Enter 1 or 2:`);n==="1"?(document.getElementById("code-generator-model").value=e[0],ir()):n==="2"&&(document.getElementById("code-generator-model").value=e[1],ir())}async function F0(){const t=Nl();if(!t){Ee("No code to commit. Please run the pipeline first.","warning");return}const e=await Te("flutterflow"),n=await Te("flutterflow_project_id");if(!e||!n){Ee("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Fl();return}if(y.artifactBundle?.artifacts?.length>1){await R0();return}const{artifactType:i,artifactName:r,fileName:s}=Th(),o=Oh(t,{artifactType:i,artifactName:r,fileName:s}),a=g0(o);if(!a.canProceed){Ee(`Pre-commit checks failed: ${a.issues.join("; ")}`,"error");return}Gl(o,a,null,null)}async function R0(){const t=await Te("flutterflow"),e=await Te("flutterflow_project_id");if(!t||!e){Ee("FlutterFlow credentials not configured. Add your API Key and Project ID in settings.","warning"),Fl();return}const n=Vv(y.artifactBundle);if(n.errors.length>0){Ee(`Bundle validation failed: ${n.errors.join("; ")}`,"error");return}const i=new Map(n.fileEntries.map(a=>[a.fileName,{content:a.content,type:a.type,path:a.path}])),r=js(i),s={canProceed:r.valid&&n.errors.length===0,issues:[...n.errors,...r.errors],warnings:[...n.warnings,...r.warnings]};if(!s.canProceed){Ee(`Bundle validation failed: ${s.issues.join("; ")}`,"error");return}const o={content:n.fileEntries.map(a=>`// ${a.fileName} +${a.content}`).join(` + +`),fileName:`${n.fileEntries.length} files`,codeType:"bundle",artifactType:"Bundle",artifactName:n.title};Gl(o,s,n.dependencies,n)}function T0(t){let e=t.errorMap||new Map;!(e instanceof Map)&&typeof e=="object"&&(e=new Map(Object.entries(e)));let n=`
    +

    FlutterFlow Commit Failed

    +

    ${z(t.error)}

    `;if(e&&e.size>0){n+=`
    +

    Errors:

    +
      `;for(const[r,s]of e.entries()){const o=El(s);n+=`
    • + ${z(r)}: ${z(o)} +
    • `}n+="
    "}n+="
    ",n+=`
    + +
    `;const i=document.getElementById("step3-output");i&&(i.innerHTML=n,document.getElementById("btn-regenerate-from-error")?.addEventListener("click",()=>{Wh(t.error,e)}))}async function Wh(t,e){if(y.isRunning)return;const n=document.getElementById("code-generator-model").value;y.isRunning=!0;const i=Gs(),r=document.getElementById("btn-regenerate-from-error");r&&(r.disabled=!0,r.innerHTML=` + + Fixing...`);try{let s=`The previous code had the following errors when committing to FlutterFlow: + +`;if(e&&e.size>0)for(const[h,p]of e.entries()){const g=El(p);s+=`File: ${h} +Error: ${g} + +`}else s+=`${t} +`;const o=Zf({bundleSpec:y.step1Result,artifactBundle:JSON.stringify(y.artifactBundle||y.step2Result),bundleReview:y.step3Result,userFeedback:s});Zs({runId:i}),Pt(2,i),nt(2),Ae(2,!0);const a=await Us(o,n,[],i);if(!re(i))return;y.step2Result=a,Os(),Qt(2,i);const l=document.getElementById("step2-output"),u=ai(y.step2Result);l.textContent=u,l.dataset.raw=u,Ae(2,!1),nt(3),Pt(3,i),Ae(3,!0);const c=await Hs(y.step2Result,y.step1Result);if(!re(i))return;y.step3Result=c,Bs(),Qt(3,i);const d=document.getElementById("step3-output");d.textContent=y.step3Result,Ae(3,!1),or();const f=Ms(y.step3Result);ar(u,f)}catch(s){if(console.error("Regeneration failed:",s),!re(i))return;const o=$s(s,{architect:2,generator:2,review:3});s.isUsageLimit&&cn(),nt(o),Ae(o,!1),hp(s,{stage:o,runId:i,retry:()=>Wh(t,e)}),ws(o,"error")}finally{r&&(r.disabled=!1,r.textContent="Fix Errors & Regenerate"),re(i)&&(y.isRunning=!1,tn())}}async function $0(){const t=document.getElementById("ff-status-dot"),e=document.getElementById("ff-status-text");if(!t||!e)return;const n=await Te("flutterflow"),i=await Te("flutterflow_project_id");n&&i?(t.className="w-2 h-2 rounded-full bg-green-500",e.textContent="FlutterFlow credentials configured",e.className="text-green-600"):n||i?(t.className="w-2 h-2 rounded-full bg-yellow-500",e.textContent="FlutterFlow credentials incomplete",e.className="text-yellow-600"):(t.className="w-2 h-2 rounded-full bg-red-500",e.textContent="FlutterFlow credentials not configured",e.className="text-red-600")}async function zh(t){try{const e=await fetch(`${vt}/auth/send-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t})});if(!e.ok)throw new Error(`Failed to send magic link: HTTP ${e.status}`);return e.json()}catch(e){throw console.error("sendMagicLink failed:",{email:t,message:e.message,stack:e.stack}),e}}async function M0(t){try{const n=await(await fetch(`${vt}/auth/verify-magic-link`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t})})).json();if(n.error||!n.email||!n.sessionToken)throw new Error(n.error||"Invalid or expired link");return n}catch(e){throw console.error("verifyMagicLink failed:",{message:e.message,stack:e.stack}),e}}async function L0(t){try{const e=await fetch(`${vt}/auth/refresh-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:t})});if(!e.ok)return console.error("refreshSession: non-OK response",{url:`${vt}/auth/refresh-session`,status:e.status}),null;const n=await e.json();return n.error||!n.email||!n.sessionToken?(console.warn("refreshSession: validation failed",{error:n.error,hasEmail:!!n.email,hasToken:!!n.sessionToken}),null):n}catch(e){return console.error("refreshSession: fetch failed",{url:`${vt}/auth/refresh-session`,message:e.message,stack:e.stack}),null}}function Ju(t,e){const n=Vh(),i=(q.email||n.email)!==t;q.email=t,q.sessionToken=e,q.isVerified=!0,ce=$n({isLoading:!0}),localStorage.setItem(us,JSON.stringify({email:t,sessionToken:e})),i&&Xh()}function qh(){q.email=null,q.sessionToken=null,q.isVerified=!1,ce=$n({isResolved:!0}),localStorage.removeItem(us),localStorage.removeItem(fs)}function Vh(){try{const t=localStorage.getItem(us);if(!t)return{email:null,sessionToken:null};const e=JSON.parse(t);return!e.email||!e.sessionToken?{email:null,sessionToken:null}:e}catch(t){return console.warn("getStoredSession: failed to parse auth session:",t),localStorage.removeItem(us),{email:null,sessionToken:null}}}async function N0(){const e=new URLSearchParams(window.location.search).get("token");if(e){window.history.replaceState({},"",window.location.pathname+window.location.hash);try{const{email:n,sessionToken:i}=await M0(e);Ju(n,i),Gh();const r=Zu();r&&!window.location.hash&&(window.location.hash=r)}catch(n){Zu();const i=n.message||"Sign-in link invalid or expired.";Ee(i,"error"),Ws(),Yn(i,"error")}}else{const{email:n,sessionToken:i}=Vh();if(n&&i){const r=await L0(i);r?Ju(r.email,r.sessionToken):qh()}}ql()}function O0(){try{localStorage.setItem(Na,JSON.stringify({hash:window.location.hash||"#home",ts:Date.now()}))}catch(t){console.warn("rememberSignInReturnSurface: failed to persist return surface:",t)}}function Zu(){try{const t=localStorage.getItem(Na);if(localStorage.removeItem(Na),!t)return null;const{hash:e,ts:n}=JSON.parse(t);return!e||typeof n!="number"||Date.now()-n>wy?null:e}catch(t){return console.warn("consumeSignInReturnSurface: failed to read return surface:",t),null}}function Ws(){const t=document.getElementById("signin-modal");if(!t)return;O0(),document.getElementById("signin-email-input")?.removeAttribute("aria-invalid"),Yn(""),Ge(t)}function Gh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("signin-modal");e&&Ke(e)}function Yn(t,e){const n=document.getElementById("signin-message");n&&(n.textContent=t||"",n.classList.remove("signin-message-success","signin-message-error"),e&&n.classList.add(`signin-message-${e}`))}async function B0(){const t=document.getElementById("signin-email-input"),e=document.getElementById("signin-submit-btn"),n=Ps(t?.value);if(!n||!/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(n)||n.length>254){t?.setAttribute("aria-invalid","true"),Yn("Please enter a valid email address.","error");return}t?.removeAttribute("aria-invalid"),e&&(e.disabled=!0,e.textContent="Sending…");const r=sh(n);r&&Yn(r,"error");try{const s=await zh(n),o=s?.code===rh;t&&!o&&(t.value=""),t?.setAttribute("aria-invalid",String(o)),Yn(oh(s,n),o?"error":"success"),e&&(e.disabled=!1,e.textContent=o?"Send Sign-in Link":"Sent!",o||setTimeout(()=>{e.textContent==="Sent!"&&(e.textContent="Send Sign-in Link")},2500))}catch(s){console.error("handleMagicLinkRequest: sendMagicLink failed",{email:n,err:s}),Yn("Something went wrong. Please try again.","error"),e&&(e.disabled=!1,e.textContent="Send Sign-in Link")}}function D0(){q.email=null,q.sessionToken=null,q.isVerified=!1,ce=$n({isResolved:!0}),P_({storage:window.localStorage,onIdentityChanged:ql,onPlanChanged:qs})}const j0=F_({sendLink:zh,getEmail:()=>q.email||"",onState:U0});function U0(t){const e=document.getElementById("send-new-link-btn"),n=document.getElementById("send-new-link-msg");if(!e||!n)return;if(t.status==="pending"){e.disabled=!0,e.textContent="Sending…",n.className="acct-access-msg",n.textContent="Sending a fresh sign-in link…";return}if(t.status==="sent"){e.disabled=!1,e.textContent="Send new link",n.className="acct-access-msg",n.textContent=oh(t.data,q.email||"")||"Link sent — check your email.";return}e.disabled=!1,e.textContent="Send new link",n.className="acct-access-msg error";const i=t.error?.message?`Couldn't send a link right now. ${t.error.message}`:"Couldn't send a link right now. Please try again.";n.textContent=i}async function H0(){await j0()}function W0(){const t=C_(window.localStorage),e=t.length?`Cleared disposable UI caches: ${t.join(", ")}.`:"Nothing disposable to clear.";Ee(`${e} Your run count, identity and stored keys are kept.`,"info")}function z0(){const t=document.getElementById("delete-unavailable-modal");t&&Ge(t,{trigger:document.activeElement})}function q0(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("delete-unavailable-modal");e&&Ke(e)}function ql(){const t=q.isVerified&&!!q.email,e=document.getElementById("auth-signedout"),n=document.getElementById("auth-signedin"),i=document.getElementById("auth-guest-usage");e&&e.classList.toggle("hidden",t),n&&n.classList.toggle("hidden",!t),i&&i.classList.toggle("hidden",t);const r=document.getElementById("auth-user-email");r&&(r.textContent=q.email||"");const s=document.getElementById("access-signed-email");s&&(s.textContent=q.email||""),tw(),qs()}async function Kh(){try{if(typeof FingerprintJS>"u"){console.warn("resolveIdentity: FingerprintJS not loaded, skipping");return}const e=await(await FingerprintJS.load()).get(),n=e.visitorId,i=await fetch(xy,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({fingerprint:e.visitorId,cookie_id:n})});if(!i.ok)throw new Error(`Identity check HTTP ${i.status}`);const r=await i.json();if(ft.userId=r.user_id,ft.token=r.identity_token||null,ft.status=r.status,ft.resolved=!0,sessionStorage.setItem(Ey,r.user_id),ft.token&&sessionStorage.setItem(Sy,ft.token),r.usage_count!==void 0){const s=pn(),a=(r.usage_month||s)===s?r.usage_count:0;localStorage.setItem(Pn,JSON.stringify({count:a,month:s})),cn()}console.log(`Identity resolved: ${r.status} (${r.user_id.slice(0,8)}...) usage: ${r.usage_count??"n/a"}`)}catch(t){console.error("resolveIdentity failed:",t)}}let Wo=null;function V0(t=5e3){return ft.resolved?Promise.resolve():(Wo||(Wo=Kh().catch(e=>{console.warn("ensureIdentityReady: identity resolution failed",e)})),Promise.race([Wo,new Promise(e=>setTimeout(e,t))]))}function Yh(){const t=pn();try{const e=localStorage.getItem(Pn);return e?JSON.parse(e):{count:0,month:t}}catch(e){return console.warn("getUsageData: failed to parse usage storage",{key:Pn,month:t,err:e}),localStorage.removeItem(Pn),{count:0,month:t}}}function pn(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function sr(){const t=Yh();return t.month!==pn()?{count:0,month:pn()}:t}function G0(){const e={count:sr().count+1,month:pn()};return localStorage.setItem(Pn,JSON.stringify(e)),e}function hi(){return!!ce.isLoading}function Rt(){return!!ce.isResolved}function K0(t){if(!t)return null;const e=String(t).toLowerCase().replace(/[^a-z0-9]+/g,"_");return e==="pro"||e==="professional_plan"?"professional":e==="power_developer"||e==="power_plan"?"power":Object.prototype.hasOwnProperty.call(ds,e)?e:null}function Y0(t){return t&&Object.entries(vh).find(([,e])=>e===t)?.[0]||null}function xr(...t){return t.find(e=>e!=null&&e!=="")}function J0(...t){return t.find(e=>e&&typeof e=="object")||{}}function Z0(t){const e=t.data&&typeof t.data=="object"?t.data:t,n=J0(e.subscription,e.stripeSubscription,e.currentSubscription,e.customer?.subscriptions?.data?.[0],e.subscriptions?.data?.[0],e.subscriptions?.[0]),i=e.metadata||n.metadata||e.customer?.metadata||{},r=xr(e.priceId,e.price_id,e.stripePriceId,e.stripe_price_id,n.priceId,n.price_id,n.plan?.id,n.price?.id,n.items?.data?.[0]?.price?.id,n.items?.[0]?.price?.id,n.lines?.data?.[0]?.price?.id),s=xr(e.status,e.subscriptionStatus,e.subscription_status,n.status,"none"),o=K0(xr(e.tier,e.plan,e.planId,e.plan_id,e.subscriptionTier,e.subscription_tier,e.product,e.productName,n.tier,n.plan,i.tier,i.plan)),a=Iy.has(String(s).toLowerCase()),l=e.active===!0||e.isSubscribed===!0||e.subscribed===!0||e.hasSubscription===!0,u=o||Y0(r)||(a||l?"professional":"free");return $n({tier:u,status:s,periodEnd:xr(e.periodEnd,e.currentPeriodEnd,e.current_period_end,n.current_period_end,n.periodEnd,null),isResolved:!0})}function zs(){return ds[ce.tier]??ds.free}async function X0(){if(q.isVerified&&(!Rt()||hi())&&(await Zh({force:!0}),qs()),q.isVerified&&!Rt())return Ee("Could not verify your subscription. Please refresh or try Manage billing.","error"),!1;const{count:t}=sr(),e=zs();if(t>=e)return Jh(t,e,{openModal:!0}),!1;const n=Math.floor(e*.8);if(t>=n){const i=e-t;Ee(`${i} run${i===1?"":"s"} remaining this month.`,"warning")}return!0}function Xu(){const t=document.getElementById("paywall-exhausted");t&&t.classList.add("hidden")}function Jh(t,e,n={}){en(!0);const i=document.getElementById("walkthrough-modal");i&&Ke(i,{restoreFocus:!1});const r=document.getElementById("ready-state");r&&r.classList.add("hidden");const s=document.getElementById("preview-frame-container");s&&(s.style.display="none");const o=document.getElementById("main-stage-container");o&&o.classList.add("visible");const a=document.getElementById("results-view");a&&a.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar");const l=document.getElementById("pipeline-progress");l&&l.classList.remove("visible");const u=document.getElementById("paywall-exhausted");if(!u){Ee(`You've used all ${e} runs for this month. Upgrade to continue.`,"error"),ui();return}const c=document.getElementById("paywall-exhausted-text");if(c){const f=ce.tier;f==="free"?c.textContent=`You've used all ${e} free generations this month. Upgrade to Pro for 50 generations/month and access to all AI models.`:c.textContent=`You've used all ${e} generations this month on your ${f} plan. Your limit resets next month.`}const d=document.getElementById("paywall-signin-btn");d&&d.classList.toggle("hidden",q.isVerified),u.classList.remove("hidden"),n.openModal&&ui()}function qa(t){return ce.tier==="free"&&$r.includes(t)?hs:t}function Q0(){const t=document.getElementById("code-options-content"),e=document.getElementById("code-generator-model");if(!t||!e)return;const n=ce.tier,r=!(q.isVerified&&!Rt())&&n==="free";Array.from(e.options).forEach(o=>{const a=on(o.value),l=$r.includes(o.value);o.textContent=l&&r?`${a} (PRO)`:a,o.disabled=!1}),r&&$r.includes(e.value)&&(e.value=hs),e.disabled=!1,Hu.has(e)||(e.addEventListener("change",()=>{Rt()&&ce.tier==="free"&&$r.includes(e.value)&&(e.value=hs,ui()),za(e.value),Eh()}),Hu.add(e));let s=document.getElementById("model-selector-free-notice");r?(s||(s=document.createElement("p"),s.id="model-selector-free-notice",s.className="text-xs text-gray-400 mt-1",t.appendChild(s)),s.innerHTML='Free plan — Gemini only. '):s&&s.remove(),za(e.value)}function Vl(){const t=q.isVerified&&!!q.email,e=t&&hi(),n=!t||Rt(),i=sr(),r=n?i.count:0,s=n?zs():0,o=Math.max(0,s-r),a=`${r} / ${s} runs this month`,l=gl,u=n?ce.tier||"free":null,c=document.getElementById("topbar-credits-count");c&&(e?c.textContent="…":n?c.textContent=String(o):c.textContent="—");const d=document.getElementById("credits-balance");d&&(e?d.textContent="Checking plan…":n?d.textContent=a:d.textContent="Plan check failed");const f=document.getElementById("usage-dialog-tier");f&&(e?f.textContent="Checking…":n?f.textContent=l[u]||"Free":f.textContent="Unavailable");const h=document.getElementById("usage-dialog-status");h&&(e?h.textContent="Verifying your subscription…":n?h.textContent="Runs reset at the start of each month.":h.textContent="Could not verify your subscription. Try again or sign out.");const p=document.getElementById("usage-counter");if(p)if(e&&t)p.textContent="Checking plan…",p.className="text-xs text-gray-500";else if(!n&&t)p.textContent="Plan check failed",p.className="text-xs text-red-600 font-medium";else{p.textContent=a;const g=s>0?r/s:0;p.className=g>=1?"text-xs text-red-600 font-medium":g>=.8?"text-xs text-yellow-600 font-medium":"text-xs text-gray-500"}if(!t){const g=document.getElementById("guest-usage-text");if(g){const m=Yh(),v=m.month===pn()?m.count??0:0;g.textContent=`${v} / ${ds.free} generations used`}}ew()}function ew(){if(!(q.isVerified&&!!q.email))return;const e=hi(),n=Rt(),i=sr(),r=n?i.count:0,s=n?zs():0,o=Math.max(0,s-r),a=n?ce.tier||"free":null,l={free:"Free",professional:"Pro",power:"Power"}[a]||"Free",u=q.email||"",c=u.split("@")[0]||u,d=document.getElementById("acct-avatar");d&&(d.textContent=(u[0]||"?").toUpperCase());const f=document.getElementById("acct-name");f&&(f.textContent=c||"—");const h=document.getElementById("acct-plan-tier"),p=document.getElementById("acct-plan-price"),g=document.getElementById("acct-plan-note"),m=document.getElementById("acct-renewal");if(h&&(h.textContent=e?"Checking…":n?l:"Plan unavailable"),p)if(e)p.textContent="—";else if(!n)p.textContent="—";else if(a==="free")p.textContent="$0 / month";else{const E=Ni(Li[a]??0,kl());p.textContent=`${E} / month`}if(g&&(e?g.textContent="Verifying your subscription…":n?a==="free"?g.textContent="No subscription. Upgrade for more generations.":g.textContent="billed monthly through Stripe":g.textContent="Could not verify your subscription. Check billing or sign out."),m){const E=Date.parse(ce.periodEnd||""),P=n&&a!=="free"&&!!ce.periodEnd&&!Number.isNaN(E);if(e)m.textContent="";else if(!n)m.textContent="";else if(a==="free")m.textContent="";else if(P){const $=new Date(E).toLocaleDateString(void 0,{year:"numeric",month:"long",day:"numeric"});m.textContent=`Renews ${$} · reset at the start of each month.`}else m.textContent="Renewal date is not available for this period."}const v=document.getElementById("acct-left-count"),S=document.getElementById("acct-left-limit"),b=document.getElementById("acct-reset-note");v&&(v.textContent=e?"…":n?String(o):"—"),S&&(S.textContent=e?"…":n?String(s):"—"),b&&(e?b.textContent="Checking plan…":n?b.textContent="Runs reset at the start of each month.":b.textContent="Plan check failed. Refresh or manage billing.");const _=document.getElementById("acct-used-count"),x=document.getElementById("acct-meter-fill"),I=document.getElementById("acct-meter-meta"),T=document.getElementById("acct-meter-track");if(_&&(_.textContent=e?"…":n?String(r):"—"),x){const E=n&&s>0?Math.min(100,Math.round(r/s*100)):0;x.style.width=`${E}%`}if(I)if(e)I.textContent="Checking…";else if(!n)I.textContent="Plan check failed";else if(s===0)I.textContent=`${r} of ${s}`;else{const E=Math.round(r/s*100);I.textContent=`${r} of ${s} · ${E}%`}T&&(e?T.setAttribute("aria-label","Checking usage…"):n?T.setAttribute("aria-label",`${r} of ${s} generations used`):T.setAttribute("aria-label","Usage unavailable")),mt()}function cn(){if(Vl(),q.isVerified&&(hi()||!Rt())){Xu();return}const{count:t}=sr(),e=zs();t>=e&&!y.isRunning?Jh(t,e):Xu()}function tw(){Vl()}async function Zh(t={}){const e=t.force===!0;if(!q.isVerified||!q.sessionToken){ce=$n({isResolved:!0});return}ce={...ce,isLoading:!0,error:null};const n=localStorage.getItem(fs);if(!e&&n)try{const{data:i,email:r,ts:s,version:o}=JSON.parse(n);if(o===Wu&&r===q.email&&Date.now()-s<300*1e3){ce={...i,isLoading:!1,isResolved:i.isResolved!==!1};return}}catch(i){console.warn("Failed to parse subscription cache:",i,"| raw value:",n)}try{const r=await(await fetch(`${vt}/stripe/get-subscription`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:q.sessionToken,user_id:ft.userId})})).json();if(r.error){if(["unauthorized","invalid session","expired session"].some(o=>String(r.error).toLowerCase().includes(o))){qh(),ql();return}ce=$n({isResolved:!1,error:r.error});return}ce=Z0(r),localStorage.setItem(fs,JSON.stringify({version:Wu,data:ce,email:q.email,ts:Date.now()}))}catch(i){console.error("fetchSubscription failed:",i),ce={...ce,isLoading:!1,isResolved:!1,error:i.message}}}function Xh(){localStorage.removeItem(fs)}async function nw(t){if(!q.isVerified||!q.sessionToken){Qh(),Ws();return}if(!vh[t]){Ee("Invalid plan selected.","error");return}const e=document.getElementById(`checkout-btn-${t}`);e&&(e.disabled=!0,e.textContent="Redirecting…");try{const i=await(await fetch(`${vt}/stripe/create-checkout-session-intl`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tierId:t,sessionToken:q.sessionToken,currency:kl()})})).json();if(i.error||!i.url)throw new Error(i.error||"Failed to create checkout session");const{url:r}=i;window.location.href=r}catch(n){console.error("startCheckout failed:",n),e&&(e.disabled=!1,e.textContent="Subscribe"),Ee("Could not start checkout. Please try again.","error")}}async function iw(t){if(!q.isVerified||!q.sessionToken){Ws();return}const e=t||document.getElementById("manage-billing-btn"),n=e?e.textContent:"";e&&(e.disabled=!0,e.textContent="Loading…");try{const r=await(await fetch(`${vt}/stripe/create-portal-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionToken:q.sessionToken})})).json();if(r.error||!r.url)throw new Error(r.error||"Failed to open billing portal");const{url:s}=r;window.location.href=s}catch(i){console.error("openCustomerPortal failed:",i),e&&(e.disabled=!1,e.textContent=n),Ee("Could not open billing portal. Please try again.","error")}}const bs=new Set;function rw(){bs.forEach(t=>t.abort()),bs.clear()}async function Es(t,e,n,i={},r=[]){const o=new AbortController;bs.add(o);let a=!1;const l=setTimeout(()=>{a=!0,o.abort()},12e4);try{const u=await fetch(by,{method:"POST",headers:{"Content-Type":"application/json",...ft.token?{Authorization:`Bearer ${ft.token}`}:{}},signal:o.signal,body:JSON.stringify({user_id:ft.userId,step:t,model:e,prompt:n,images:r,context:i})}),c=await u.text();let d={};try{d=c?JSON.parse(c):{}}catch{d={}}if(u.status===429){d.serverCount!==void 0&&(localStorage.setItem(Pn,JSON.stringify({count:d.serverCount,month:pn()})),cn());const p=new Error(d.message||"Monthly usage limit reached. Upgrade to continue.");throw p.isUsageLimit=!0,p.pipelineStep=t,p}const f=mv(d,t);if(f)throw f;if(console.log(`[BuildShip] ${t} response keys:`,Object.keys(d),"content type:",typeof d.content),!u.ok)throw new Error(`${d.message||d.error||"BuildShip pipeline error"} (HTTP ${u.status})`);if(t==="generator")if(d.usage_status==="success"&&Number.isFinite(d.usage_count)){const p=pn();(d.usage_month||p)===p&&(localStorage.setItem(Pn,JSON.stringify({count:d.usage_count,month:p})),cn())}else G0(),cn();let h=d.output||d.content;if(!h){const p=c?` (body: ${c.slice(0,120)})`:"";throw new Error(`BuildShip returned no output for step "${t}"${p}`)}return Array.isArray(h)&&(h=h.map(p=>typeof p=="string"?p:p.text||"").join("")),typeof h!="string"&&(h=JSON.stringify(h)),h}catch(u){if(u.name==="AbortError"){if(a)throw new Error(`BuildShip ${t} timed out after ${12e4/1e3}s`);const c=new Error(`BuildShip ${t} request cancelled`);throw c.isPipelineCancel=!0,c}throw u instanceof TypeError?new Error(`BuildShip unreachable: ${u.message}`):u}finally{clearTimeout(l),bs.delete(o)}}let Va=!1;function sw(){const e=new URLSearchParams(window.location.search).get("checkout");return e==="success"?(window.history.replaceState({},"",window.location.pathname+window.location.hash),Xh(),Va=!0):e==="cancel"&&(window.history.replaceState({},"",window.location.pathname+window.location.hash),Ee("Checkout cancelled.","info")),e}function ow(){if(!Va)return;Va=!1;const t=ce.tier!=="free";Ee(t?"Subscription active! Your plan is live.":"Checkout complete — confirming your subscription. Check Manage billing if it does not update.",t?"success":"info")}function qs(){const t=q.isVerified&&!!q.email,e=ce.tier,n=t&&hi(),i=!t||Rt(),r=document.getElementById("subscription-tier-badge");if(r){const a=gl,l={free:"bg-gray-100 text-gray-600",professional:"bg-indigo-100 text-indigo-700",power:"bg-purple-100 text-purple-700",unresolved:"bg-red-50 text-red-600"};r.textContent=n?"Checking…":i?a[e]||"Free":"Plan unavailable",r.className=`inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${i?l[e]||l.free:l.unresolved}`}const s=document.getElementById("upgrade-prompt");s&&s.classList.toggle("hidden",!t||n||!i||e!=="free");const o=document.getElementById("manage-billing-btn");o&&o.classList.toggle("hidden",!t||n||i&&e==="free"),aw(i?e:null),Q0(),Eh(),cn(),_p()}function aw(t){const e=["bg-gray-100","text-gray-500","cursor-default"];Object.entries({professional:{btnId:"checkout-btn-professional",defaultText:"Subscribe"},power:{btnId:"checkout-btn-power",defaultText:"Subscribe"}}).forEach(([r,{btnId:s,defaultText:o}])=>{const a=document.getElementById(s);a&&(r===t?(a.disabled=!0,a.textContent="Current plan",a.classList.add(...e)):(a.disabled=!1,a.textContent=o,a.classList.remove(...e)))});const i=document.getElementById("free-tier-current");i&&i.classList.toggle("hidden",t!=="free")}function lw(){document.querySelectorAll(".pm-card[data-tier]").forEach(t=>{const e=t.dataset.tier,n=iv[e];if(!n)return;const i=t.querySelector("ul.pm-features");if(i){i.innerHTML="";for(const r of n){const s=document.createElement("li");s.textContent=r,i.appendChild(s)}}})}function Ga(){const t=kl(),e=document.getElementById("pro-price"),n=document.getElementById("power-price"),i=document.getElementById("plans-pro-price"),r=document.getElementById("plans-power-price"),s=document.getElementById("pro-price-note"),o=document.getElementById("power-price-note"),a=document.getElementById("plans-pro-price-note"),l=document.getElementById("plans-power-price-note");e&&(e.textContent=Ni(Li.professional,t)),n&&(n.textContent=Ni(Li.power,t)),i&&(i.textContent=Ni(Li.professional,t)),r&&(r.textContent=Ni(Li.power,t));const u="billed monthly";s&&(s.textContent=u),o&&(o.textContent=u),a&&(a.textContent=u),l&&(l.textContent=u)}function ui(){Ga();const t=document.getElementById("pricing-modal");t&&Ge(t),Oy().then(()=>Ga())}function Qh(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("pricing-modal");e&&Ke(e)}function Ee(t,e="info"){const n={success:"bg-green-600 text-white",error:"bg-red-600 text-white",warning:"bg-amber-500 text-white",info:"bg-gray-800 text-white"},i=document.createElement("div");i.className=`fixed bottom-6 left-1/2 -translate-x-1/2 px-5 py-3 rounded-lg text-sm font-medium shadow-lg z-50 transition-opacity duration-300 ${n[e]||n.info}`,i.textContent=t,document.body.appendChild(i),setTimeout(()=>{i.style.opacity="0",setTimeout(()=>i.remove(),300)},3500)}document.addEventListener("DOMContentLoaded",async()=>{ev(),hljs.configure({tabReplace:" ",classPrefix:"hljs-"}),cw(),window.__heroField=G_(),window.__pipelineLogo=Z_(),_h=_y({onSubmit:ir}),Oa=(async()=>{try{await N0(),sw(),await Zh()}catch(n){console.warn("Startup auth/subscription initialization failed:",n)}})(),await Oa,ow(),qs(),Ga(),lw(),await d0(),o0();const t=document.getElementById("flutterflow-endpoint-select");if(t){const n=_t();t.value=n}Rh(),Kh();const e=document.getElementById("pipeline-input");e&&(e.addEventListener("input",()=>{Xt===2&&e.value.trim().length>0&&(Rl(),Ls())}),e.addEventListener("blur",()=>{const n=document.getElementById("walkthrough-modal");Xt===2&&n&&Ge(n)}),e.addEventListener("keydown",n=>{if(n.key==="Tab"){const i=document.getElementById("walkthrough-modal");Xt===2&&i&&setTimeout(()=>{Ge(i)},100)}})),window.addEventListener("commitStateChange",n=>{const{state:i}=n.detail;i===ee.PREPARING||i===ee.VALIDATING||i===ee.PUSHING?(Oe.phaseId||op(),ed(i)):(i===ee.SUCCESS||i===ee.ERROR)&&(ed(i),setTimeout(Kl,1e3))}),tc()});function cw(){const t=document.getElementById("preview-frame-container");t&&(t.style.display="")}function uw(){const t=document.getElementById("welcome-video-player");t&&(t.addEventListener("click",Ln),document.addEventListener("keydown",Ln))}function Ln(){const t=document.getElementById("preview-frame-container"),e=document.getElementById("main-stage-container"),n=document.getElementById("ready-state");t&&(t.style.display="none"),e&&e.classList.add("visible"),n&&n.classList.remove("hidden");const i=document.getElementById("welcome-video-player");i&&i.removeEventListener("click",Ln),document.removeEventListener("keydown",Ln),Rh()}let zi=null;async function dw(){const t=document.getElementById("confirm-project-select");if(!t)return;const e=++Ku,n=()=>e===Ku,i=await Te("flutterflow"),r=await Te("flutterflow_project_id");if(n()){if(!i){t.innerHTML='',t.disabled=!0;return}t.disabled=!1,t.innerHTML='';try{const o=await new fi(i,"","main",_t()).listProjects();if(!n())return;if(!o||o.length===0){t.innerHTML='';return}t.innerHTML='',o.forEach(a=>{const l=document.createElement("option");l.value=a.id||a.projectId||"",l.textContent=a.name||a.projectName||`Project ${a.id}`,t.appendChild(l)}),r&&(t.value=r)}catch(s){if(!n())return;console.error("Failed to load projects for deploy:",s),t.innerHTML=''}}}function fw(){return document.getElementById("confirm-project-select")?.value?.trim()||null}function Gl(t,e,n,i=null){zi={codeInfo:t,checks:e,deps:n,bundlePlan:i},document.getElementById("confirm-file-name").textContent=t.fileName,document.getElementById("confirm-artifact-type").textContent=t.artifactType,document.getElementById("confirm-file-size").textContent=`${(t.content.length/1024).toFixed(1)} KB`,document.getElementById("confirm-line-count").textContent=i?`${i.fileEntries.length} files`:t.content.split(` +`).length,dw();const r=document.getElementById("confirm-deps-list"),s=document.getElementById("confirm-deps-section");n&&Object.keys(n).length>0?(r.innerHTML=Object.entries(n).map(([u,c])=>{const d=c?`at least ${Zt(c)}`:"version resolved from your project";return`
  • • ${Zt(u)}: ${d}
  • `}).join(""),s.classList.remove("hidden")):s.classList.add("hidden");const o=document.getElementById("confirm-warnings-list"),a=document.getElementById("confirm-warnings-section");e.warnings&&e.warnings.length>0?(o.innerHTML=e.warnings.map(u=>`
  • • ${Zt(u)}
  • `).join(""),a.classList.remove("hidden")):a.classList.add("hidden"),document.getElementById("confirm-code-preview").textContent=t.content,document.getElementById("code-preview-content").classList.add("hidden"),document.getElementById("code-preview-chevron").style.transform="rotate(0deg)";const l=document.getElementById("commit-confirm-modal");l&&Ge(l)}function ep(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-confirm-modal");e&&Ke(e),zi=null}function hw(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("commit-success-modal");e&&Ke(e);const n=["success-message","success-project-id","success-file-name","success-artifact-type","success-time","success-size"];for(const s of n){const o=document.getElementById(s);o&&(o.textContent="")}const i=document.getElementById("success-warnings-section");i&&i.classList.add("hidden");const r=document.getElementById("success-warnings-list");r&&(r.innerHTML="")}function tp(t){const e=(m,v)=>{const S=document.getElementById(m);S&&(S.textContent=v||"")},n=t.metadata?.fileName||"",i=t.metadata?.projectId||"",r=t.metadata?.artifactType||"",s=t.elapsedTime?`${(t.elapsedTime/1e3).toFixed(1)}s`:"",o=t.metadata?.codeSize?`${(t.metadata.codeSize/1024).toFixed(1)} KB`:"";e("success-message",t.message||"Code committed successfully!"),e("success-project-id",i),e("success-file-name",n),e("success-artifact-type",r),e("success-time",s),e("success-size",o);const a=t.addedDependencies||[],l=document.getElementById("success-deps-row");l&&l.classList.toggle("hidden",a.length===0),e("success-deps",a.join(", "));const u=document.getElementById("success-open-ff-link");u&&i&&(u.href=`https://app.flutterflow.io/project/${i}`);const c=document.getElementById("success-warnings-section"),d=document.getElementById("success-warnings-list"),f=t.unverified||[],h=t.approximate||[],p=t.warnings||[];(p.length>0||f.length>0||h.length>0)&&c&&d&&(d.innerHTML=[...f.map(m=>`
  • Not verified before deploying: ${z(String(m))}
  • `),...h.map(m=>`
  • Verified approximately: ${z(String(m))}
  • `),...p.map(([m,v])=>`
  • ${z(m)}: ${z(String(v))}
  • `)].join(""),c.classList.remove("hidden"));const g=document.getElementById("commit-success-modal");g&&Ge(g)}function np(t){Kl(),T0(t)}function ip(t,{heading:e,title:n,guidance:i}){const r=t.targetIdentity||{},s=document.getElementById("commit-terminal-modal");if(!s)return!1;const o=(h,p)=>{const g=document.getElementById(h);g&&(g.textContent=p||"")};o("terminal-heading",e),o("terminal-title",n),o("terminal-message",t.error||t.message||"");const a=document.getElementById("terminal-identity-list");if(a){const h=[["Project",r.projectId||t.metadata?.projectId],["Endpoint",r.endpoint],["File",r.fileName||t.metadata?.fileName],["Artifact",r.artifactType||t.metadata?.artifactType]];a.innerHTML=h.map(([p,g])=>`
    ${z(p)}:${z(String(g??"—"))}
    `).join("")}const l=document.getElementById("terminal-file-outcomes");let u=t.errorMap;u&&!(u instanceof Map)&&(u=new Map(Object.entries(u))),l&&u&&u.size>0?(l.innerHTML=[...u.entries()].map(([h,p])=>`
  • ${z(h)}: ${z(El(p))}
  • `).join(""),l.classList.remove("hidden")):l&&l.classList.add("hidden");const c=document.getElementById("terminal-guidance");c&&(c.innerHTML=i);const d=document.getElementById("terminal-open-ff-link"),f=r.projectId||t.metadata?.projectId;return d&&(d.href=f?`https://app.flutterflow.io/project/${f}`:"https://app.flutterflow.io/"),Ge(s),!0}function rp(t){ip(t,{heading:"Deploy partially applied",title:"Some custom classes reached FlutterFlow, but the deploy did not fully complete.",guidance:"The custom classes the runner confirmed are already in your project and are not lost. Review the per-file errors above, fix them in FlutterFlow or regenerate, then deploy again. Open the project to see exactly what landed."})}function sp(t){ip(t,{heading:"Deploy outcome not yet known",title:"This browser stopped waiting before the FlutterFlow server reported a result.",guidance:"The deploy may still be finishing on the server — it was not cancelled. Open your FlutterFlow project and confirm whether the class landed before retrying, so you do not push a duplicate or build on top of an unknown state."})}function pw(t){t&&t.target!==t.currentTarget||Ke(document.getElementById("commit-terminal-modal"))}function gw(){const t=document.getElementById("code-preview-content"),e=document.getElementById("code-preview-chevron");t.classList.contains("hidden")?(t.classList.remove("hidden"),e.style.transform="rotate(90deg)"):(t.classList.add("hidden"),e.style.transform="rotate(0deg)")}const Qu={prepare:{message:"Preparing your code...",start:4,end:14},validate:{message:"Checking FlutterFlow credentials...",start:14,end:22},project:{message:"Reading your FlutterFlow project...",start:22,end:40},provision:{message:"Creating custom classes in FlutterFlow...",start:40,end:82},package:{message:"Packaging files for upload...",start:82,end:88},push:{message:"Pushing to FlutterFlow...",start:88,end:97},done:{message:"Complete!",start:100,end:100}},mw=[{after:0,text:"Starting a FlutterFlow build runner..."},{after:12,text:"Preparing the FlutterFlow AI workspace..."},{after:35,text:"Uploading your custom classes..."},{after:60,text:"FlutterFlow is applying the changes..."},{after:100,text:"Still working — this can take a couple of minutes..."}],Oe={sequence:[],phaseId:null,phaseStartedAt:null,timer:null,substatus:null,liveSubstatus:!1,start({withProvisioning:t=!1}={}){this.sequence=["prepare","validate","project"],t&&this.sequence.push("provision"),this.sequence.push("package","push","done");const e=document.getElementById("commit-progress-overlay");e&&(wu(e,!0,"Deploying to FlutterFlow"),Ge(e)),this.set("prepare")},set(t,e=null){if(!(!Qu[t]||t===this.phaseId)){if(!this.sequence.includes(t)){const n=this.sequence.indexOf("package");this.sequence.splice(n===-1?this.sequence.length:n,0,t)}this.phaseId=t,this.phaseStartedAt=Date.now(),this.substatus=e,this.liveSubstatus=!1,this.render(),this.timer&&clearInterval(this.timer),t!=="done"&&(this.timer=setInterval(()=>this.render(),500))}},setSubstatus(t){t&&(this.liveSubstatus=!0,this.substatus=t,this.render())},render(){const t=Qu[this.phaseId];if(!t)return;const e=(Date.now()-this.phaseStartedAt)/1e3,n=t.start+(t.end-t.start)*(1-Math.exp(-e/25));if(this.phaseId==="provision"&&!this.liveSubstatus){const o=mw.filter(a=>e>=a.after).pop();o&&(this.substatus=o.text)}const i=this.sequence.indexOf(this.phaseId),s=[`Step ${i===-1?1:i+1} of ${this.sequence.length}`];e>=5&&s.push(vw(e)),ap(this.phaseId==="done"?100:n,t.message,s.join(" · "),this.substatus)},stop(){this.timer&&clearInterval(this.timer),this.timer=null,this.phaseId=null;const t=document.getElementById("commit-progress-overlay");t&&(wu(t,!1),Ke(t,{force:!0,restoreFocus:!1}))}};function vw(t){const e=Math.floor(t);return e<60?`${e}s elapsed`:`${Math.floor(e/60)}m ${String(e%60).padStart(2,"0")}s elapsed`}function op(t){Oe.start(t)}function Kl(){Oe.stop()}function ap(t,e,n,i=null){const r=document.getElementById("commit-progress-bar"),s=document.getElementById("progress-message"),o=document.getElementById("progress-detail"),a=document.getElementById("progress-substatus");r&&(r.style.width=`${Math.round(t*10)/10}%`),s&&(s.textContent=e),o&&(o.textContent=n),a&&(a.textContent=i||"",a.classList.toggle("hidden",!i))}function ed(t){const e={[ee.PREPARING]:"prepare",[ee.VALIDATING]:"validate",[ee.PUSHING]:"project",[ee.SUCCESS]:"done"};if(t===ee.ERROR){Oe.timer&&clearInterval(Oe.timer),Oe.timer=null,ap(100,"Failed","Error occurred");return}const n=e[t];n&&Oe.set(n)}function _w(t){return t.bundlePlan?t.bundlePlan.fileEntries.some(e=>e.type===J.CODE_FILE):t.codeInfo?.codeType===J.CODE_FILE}let lp=!1;function cp(t){lp=t;const e=document.querySelector("#commit-confirm-modal button[data-deploy-confirm]");e&&(e.disabled=t),[...document.querySelectorAll("[data-deploy-start]"),...document.querySelectorAll("#btn-deploy-to-ff")].forEach(i=>{i.disabled=t})}function td(t){Kl(),cp(!1);const e=hh(t);e===Xe.COMMITTED?tp(t):e===Xe.PARTIAL?rp(t):e===Xe.UNCONFIRMED?sp(t):np(t)}async function yw(){if(!zi){console.error("No pending commit data");return}if(lp){console.warn("Deploy already in flight; ignoring duplicate confirm.");return}const t=zi;if(zi=null,Wi=fw(),ep(),cp(!0),op({withProvisioning:_w(t)}),t.bundlePlan){const o=await b0(t.bundlePlan,{pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});Wi=null,td(o);return}const{codeInfo:e}=t,{artifactType:n,artifactName:i,fileName:r}=Th(),s=await w0(e.content,{artifactType:n,artifactName:i,fileName:r,pipelineResult:{step1Result:y.step1Result,selectedModel:document.getElementById("code-generator-model")?.value}});Wi=null,td(s)}window.runThinkingPipeline=ir;window.toggleStep=x0;window.toggleSection=S0;window.selectWorkflowStep=nt;window.copyCode=I0;window.retryWithDifferentModel=P0;window.openApiKeysModal=Fl;window.closeApiKeysModal=Ph;window.walkthroughConnectAccount=Jy;window.closeWalkthroughModal=Xy;window.openWalkthroughModal=Zy;window.advanceWalkthrough=Rl;window.commitToFlutterFlow=y0;function ww(){const t=document.getElementById("pipeline-input");t&&t.focus()}function bw(){const t=document.getElementById("advanced-settings");t&&(t.open=!0);const e=document.getElementById("code-generator-model");e&&(e.scrollIntoView({behavior:"smooth",block:"center"}),e.focus(),e.click())}window.focusPromptInput=ww;window.openModelSelector=bw;window.handlePromptImageSelect=Ly;window.removePromptImage=Ny;window.saveApiKeys=t0;window.validateFlutterFlowConnection=$l;window.clearAllApiKeys=n0;window.toggleKeyVisibility=l0;window.handleWelcomeVideoEnd=uw;window.dismissWelcomeVideo=Ln;window.initiateCommitToFlutterFlow=F0;window.updateFlutterFlowCredentialStatus=$0;window.openCommitConfirmModal=Gl;window.closeCommitConfirmModal=ep;window.closeCommitSuccessModal=hw;window.closeCommitTerminalModal=pw;window.showCommitPartialModal=rp;window.showCommitUnconfirmedModal=sp;window.showCommitSuccessModal=tp;window.showCommitFailureModal=np;window.toggleCodePreview=gw;window.confirmCommitToFlutterFlow=yw;window.runRefinement=Uh;window.regenerateFromPastedErrors=Hh;window.clearErrorInput=A0;window.setFlutterFlowEndpoint=Yy;window.getFlutterFlowEndpoint=_t;window.commitProgress=Oe;window.openSignInModal=Ws;window.closeSignInModal=Gh;window.handleMagicLinkRequest=B0;window.handleSignOut=D0;window.handleSendNewLink=H0;window.handleClearCache=W0;window.handleDeleteAccount=z0;window.closeDeleteUnavailableModal=q0;window.startCheckout=nw;window.openCustomerPortal=iw;window.openPricingModal=ui;window.closePricingModal=Qh;let Or=null,up=null,Nn={1:"pending",2:"pending",3:"pending"},Yl=1,Jl=null;const Vs={1:"Prompt Architect",2:"Code Generator",3:"Code Review"},Ew={1:"Understanding your prompt",2:"Generating Dart code",3:"Running the code audit"},Sw={1:"Prompt understood",2:"Dart code generated",3:"Code audit complete"};function Gs(){return y.runId+=1,y.runId}function re(t){return t===void 0||t===y.runId}function xw(){y.runId+=1}function Zl(t){return document.getElementById(`pdot-${t}`)}function Ka(t){const e=document.getElementById("btn-run-pipeline")||document.getElementById("hero-send");e&&(e.disabled=t,e.classList.toggle("is-busy",t),t?e.setAttribute("aria-busy","true"):e.removeAttribute("aria-busy"))}function Ks(t){const e=document.getElementById("pipeline-progress");e&&(e.dataset.runState=t)}function Fn(t,e){Nn[t]=e;const n=Zl(t);if(!n)return;n.dataset.state=e,n.disabled=e==="pending"||e==="skipped";const i=Vs[t],r={pending:"not started",active:"in progress",done:"complete",failed:"failed",skipped:"not run"};n.setAttribute("aria-label",`Step ${t} of 3, ${i}: ${r[e]||e}`),e==="active"?n.setAttribute("aria-current","step"):n.removeAttribute("aria-current")}function Iw(){return[1,2,3].filter(t=>Nn[t]==="done").length}function Ys(){const t=document.getElementById("pipeline-progress-fill");t&&(t.style.width=`${Iw()/3*100}%`);const e=document.getElementById("progress-stage-count");e&&(e.textContent=`Step ${Yl} of 3`)}function Js(t,{done:e=!1}={}){const n=document.getElementById("progress-title-text"),i=document.getElementById("progress-substep-text"),r=Nn[t],s=e||r==="done";if(n&&(n.textContent=s?Sw[t]:Ew[t]),i){const o=s?" — complete":r==="failed"?" — stopped":"";i.textContent=`Step ${t} of 3 — ${Vs[t]}${o}`}}function kw(t){Nn[t]==="pending"||Nn[t]==="skipped"||(Jl=t,[1,2,3].forEach(e=>{const n=Zl(e);n&&n.setAttribute("aria-pressed",String(e===t))}),Js(t))}function Xl(){Jl=null,[1,2,3].forEach(t=>{const e=Zl(t);e&&e.removeAttribute("aria-pressed")})}function dp(t){const e=document.getElementById("pipeline-note");e&&(e.textContent=t||"",e.hidden=!t)}function Cw(t,e,n){re(n)&&dp(`${on(t)} did not answer. Continuing on ${on(e)}.`)}function Ql(){const t=document.getElementById("pipeline-failure");if(!t)return;t.hidden=!0;const e=document.getElementById("pipeline-failure-actions");e&&e.replaceChildren()}const Aw=1120;function Pw(){const t=getComputedStyle(document.documentElement).getPropertyValue("--t-morph").trim(),e=Number.parseFloat(t);return Number.isFinite(e)&&e>0?e:Aw}let Xn=null,Br=null;function Fw(){return window.matchMedia?.("(prefers-reduced-motion: reduce)").matches===!0}function un(){if(Br){try{Br.cancel()}catch{}Br=null}Xn&&(Xn.remove(),Xn=null),window.removeEventListener("resize",un)}function fp(t,e){if(un(),Fw()||!t||!e||!document.body||typeof Element.prototype.animate!="function")return;const n=t.getBoundingClientRect(),i=e.getBoundingClientRect();if(!n.width||!n.height||!i.width||!i.height)return;const r=document.createElement("div");r.className="composer-morph",r.setAttribute("aria-hidden","true"),r.style.cssText=`left:${i.left}px;top:${i.top}px;width:${i.width}px;height:${i.height}px;opacity:0;`,document.body.appendChild(r);const s=n.left+n.width/2-(i.left+i.width/2),o=n.top+n.height/2-(i.top+i.height/2),a=n.width/i.width,l=n.height/i.height,u=`translate(${s}px,${o}px) scale(${a},${l})`,c=r.animate([{transform:u,opacity:0,offset:0,easing:"cubic-bezier(.2,0,0,1)"},{transform:u,opacity:1,offset:.14,easing:"cubic-bezier(.4,0,.2,1)"},{transform:`translate(${s}px,${o}px) scale(${a*.93},${l*.93})`,opacity:1,offset:.28,easing:"cubic-bezier(.32,1.38,.5,1)"},{transform:"translate(0px,0px) scale(1,1)",opacity:1,offset:1}],{duration:Pw(),fill:"both"});Xn=r,Br=c,window.addEventListener("resize",un),c.onfinish=()=>{if(Xn!==r)return;const d=r.animate([{opacity:1},{opacity:0}],{duration:260,fill:"forwards"});d.onfinish=()=>{Xn===r&&un()}}}function Rw(){const e=document.getElementById("composer")?.getBoundingClientRect();e&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{fp({getBoundingClientRect:()=>e},document.getElementById("main-stage-container"))})})}function Tw(){fp(document.getElementById("pipeline-progress"),document.getElementById("main-stage-container"))}window.addEventListener("hashchange",un);window.addEventListener("popstate",un);function Zs(t={}){const{prompt:e=null,runId:n}=t;if(!re(n))return;Qs(),en(!0);const i=document.getElementById("pipeline-progress"),r=document.getElementById("results-view"),s=document.getElementById("ready-state");if(s&&s.classList.add("hidden"),r&&r.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),i&&i.classList.add("visible"),Ks("running"),e!==null){const a=document.getElementById("pipeline-submitted-prompt");a&&(a.textContent=e)}up=Date.now();const o=document.getElementById("progress-elapsed");o&&(o.textContent="0s"),Nn={1:"pending",2:"pending",3:"pending"},Xl(),Ql(),dp(""),[1,2,3].forEach(a=>Fn(a,"pending")),Pt(1,n),$w()}function Pt(t,e){re(e)&&(Yl=t,Xl(),[1,2,3].forEach(n=>{n===t?Fn(n,"active"):nt&&Fn(n,"pending")}),Js(t),Ys())}function Qt(t,e){re(e)&&(Fn(t,"done"),Jl===null&&Js(t,{done:!0}),Ys())}function hp(t,{stage:e=1,runId:n,retry:i=pp}={}){if(!re(n))return;Xs(),Qs(),un(),Ks("failed"),en(!0);const r=document.getElementById("pipeline-progress");r&&r.classList.add("visible");const s=document.getElementById("results-view");s&&s.classList.remove("visible"),document.body.classList.remove("results-fullscreen","results-with-sidebar"),Fn(e,"failed"),[1,2,3].forEach(p=>{p>e&&Fn(p,"pending")}),Yl=e,Xl(),Js(e),Ys();const o=gh(t),a=document.getElementById("pipeline-failure"),l=document.getElementById("pipeline-failure-title"),u=document.getElementById("pipeline-failure-message"),c=document.getElementById("pipeline-failure-hint"),d=document.getElementById("pipeline-failure-actions");if(!a||!l||!u||!d)return;if(a.dataset.kind=o.kind,l.textContent=`${Vs[e]}: ${o.title}`,u.textContent=o.message,c){const p=o.detail&&o.detail!==o.message?o.detail:"";c.textContent=p,c.hidden=!p}d.replaceChildren();const f=[o.canUpgrade&&{id:"upgrade",label:"View plans",variant:"primary",onClick:()=>ui()},o.canRetry&&{id:"retry",label:"Retry",variant:o.canUpgrade?"secondary":"primary",onClick:i},o.canEdit&&{id:"edit",label:"Edit prompt",variant:"secondary",onClick:Ya}].filter(Boolean);!o.canEdit&&!o.canRetry&&f.push({id:"edit",label:"Back to prompt",variant:"secondary",onClick:Ya}),f.forEach(p=>{const g=document.createElement("button");g.type="button",g.textContent=p.label,g.dataset.action=p.id,g.dataset.variant=p.variant,g.addEventListener("click",p.onClick),d.appendChild(g)}),a.hidden=!1;const h=d.querySelector("button");h&&h.focus({preventScroll:!0})}function Ya(){xw(),rw(),y.isRunning=!1,Ka(!1),tn(),Ks("settled"),un(),Xs(),Qs(),Ql();const t=document.getElementById("pipeline-progress");t&&t.classList.remove("visible"),en(!1);const e=document.getElementById("pipeline-input");e&&(y.submittedPrompt&&(e.value=y.submittedPrompt,e.dispatchEvent(new Event("input",{bubbles:!0}))),e.focus({preventScroll:!0}),e.setSelectionRange(e.value.length,e.value.length))}function pp(){const t=document.getElementById("pipeline-input");t&&y.submittedPrompt&&(t.value=y.submittedPrompt,t.dispatchEvent(new Event("input",{bubbles:!0}))),Ne=y.submittedImages.slice(),ln(),Ql(),ir()}function $w(){Xs(),Or=setInterval(()=>{const t=(Date.now()-up)/1e3,e=document.getElementById("progress-elapsed");e&&(e.textContent=`${Math.floor(t)}s`)},250)}function Xs(){Or&&(clearInterval(Or),Or=null)}let qi=null;function Qs(){qi&&(clearTimeout(qi),qi=null)}function or(){Xs(),Qs(),Ks("settled"),Ys();const t=document.getElementById("pipeline-progress-fill");qi=setTimeout(()=>{qi=null;const e=document.getElementById("pipeline-progress");e&&e.classList.remove("visible"),t&&(t.style.width="0%")},400)}function Rn(t,e=""){const n={pass:'',warning:'',fail:'',info:''};return``}function gp(t){return{pass:"Passed review",warning:"Needs attention",fail:"Blocking issues"}[t]||"Needs attention"}function Mw(){return l_({bundle:y.artifactBundle,reviewResult:y.step3Result})}function Lw(t){return` +
    + ${Rn(t.severity)} +
    +
    ${z(t.message)}
    + ${t.suggestion?`
    ${z(t.suggestion)}
    `:""} + ${z(t.source)} +
    +
    + `}function Nw(t){return` +
  • +
    + ${z(t.title)} + ${t.detail&&t.detail!==t.title?`

    ${z(t.detail)}

    `:""} +
    +
  • + `}function Ow(t){const e=document.getElementById("results-summary-detail"),n=document.getElementById("results-title");if(!e)return;n&&(n.textContent=t.title);const i=t.score,r=i==null?"neutral":i>=80?"pass":i>=60?"warning":"fail",s=i==null?"":i>=80?"Strong":i>=60?"Needs work":"High risk",o=t.findings.length?` +
      + ${t.findings.map(u=>` +
    • + ${Rn(u.severity)} + + ${z(u.message)} + ${u.suggestion?`${z(u.suggestion)}`:""} + +
    • + `).join("")} +
    + `:"",a=t.warnings.length?` +
    +

    ${Rn("warning")} Bundle

    +
      + ${t.warnings.map(u=>`
    • ${z(u)}
    • `).join("")} +
    +
    + `:"",l=t.manualSteps.length?` +
    +

    ${Rn("info")} Complete in FlutterFlow

    +

    For your information — these don't block the deploy. Finish them by hand in the FlutterFlow editor once the code is pushed.

    +
      + ${t.manualSteps.map(u=>` +
    • + ${z(u.title)} + ${u.detail&&u.detail!==u.title?`${z(u.detail)}`:""} +
    • + `).join("")} +
    +
    + `:"";e.innerHTML=` +
    +
    +

    ${z(t.summary)}

    + ${o} + ${a} + ${l} +
    +
    + +
    + Is the generated code correct? +
    + + +
    + +
    +
    +
    + `}function Bw(t){const e=t.artifacts.find(l=>l.id===y.selectedArtifactId)||t.artifacts[0];if(!e)return"";const n={pass:{icon:"pass",message:"No file-specific issues were found."},warning:{icon:"warning",message:"This file needs attention, but Code Review did not return a specific finding."},fail:{icon:"fail",message:"This file is blocked, but Code Review did not return a specific finding."}}[e.status],i=e.findings.length?e.findings.map(Lw).join(""):`
    ${Rn(n.icon)} ${z(n.message)}
    `,r=e.dependencies?.length?e.dependencies.map(l=>` +
  • ${z(l.name)}${l.version?` ${z(l.version)}`:""}${l.reason?`

    ${z(l.reason)}

    `:""}
  • + `).join(""):'
  • No external packages
  • ',s=e.imports?.length?e.imports.map(l=>`${z(l)}`).join(""):'No imports returned',o=e.publicApi?.length?e.publicApi.map(l=>`${z(l)}`).join(""):'No public API signature returned',a=e.relationships.length?e.relationships.map(l=>` +
  • ${z(l.from||"Bundle")} ${z(l.type)} ${z(l.to||"Bundle")}${l.description?`

    ${z(l.description)}

    `:""}
  • + `).join(""):'
  • No relationships for this file
  • ';return` +
    +
    + ${Rn(e.status)} ${z(gp(e.status))} +

    ${z(e.artifactName)}

    + ${e.description?`

    ${z(e.description)}

    `:""} +
    +
    + ${z(e.artifactType)} + ${z(e.fileName)} +
    +
    +
    +

    Code Review findings

    + ${i} +
    + ${e.manualSteps.length?` +
    +

    Manual FlutterFlow steps for this file

    +
      ${e.manualSteps.map(Nw).join("")}
    +
    + `:""} +
    + File details +
    +
    +

    Dependencies

    +
      ${r}
    +
    +
    +

    Deployment

    +
    +
    Status
    ${z(e.deployStatus||"pending")}
    +
    Order
    ${e.index+1} of ${t.artifacts.length}
    +
    Path hint
    ${z(e.pathHint||"Not returned")}
    +
    +
    +
    +
    +

    Public API

    +
    ${o}
    +
    +
    +

    Imports

    +
    ${s}
    +
    +
    +

    Relationships

    +
      ${a}
    +
    +
    + `}function Dw(t){const e=document.getElementById("bundle-strip"),n=document.getElementById("results-summary-tab"),i=document.getElementById("artifact-tabs"),r=document.getElementById("results-file-count");if(n){const s=y.resultsViewMode==="summary";n.classList.toggle("active",s),n.setAttribute("role","tab"),n.setAttribute("aria-selected",String(s)),n.setAttribute("aria-controls","results-summary-detail"),n.tabIndex=s?0:-1}if(i&&(i.setAttribute("role","tablist"),i.setAttribute("aria-label","Artifacts in this bundle")),!t.artifacts.length){r&&(r.textContent="0 files"),e&&e.classList.remove("visible"),i&&(i.innerHTML=""),nd();return}if(r){const s=t.artifacts.length;r.textContent=`${s} ${s===1?"file":"files"}`}i&&(i.innerHTML=t.artifacts.map(s=>{const o=y.resultsViewMode==="file"&&s.id===y.selectedArtifactId;return` + + `}).join(""),i.onclick=s=>{const o=s.target.closest(".artifact-tab");o?.dataset?.artifactId&&ec(o.dataset.artifactId)},nd()),e&&e.classList.add("visible")}function nd(){const t=document.getElementById("bundle-strip");!t||t.dataset.tabKeyboard==="bound"||(t.dataset.tabKeyboard="bound",t.addEventListener("keydown",e=>{if(e.defaultPrevented)return;const n=[document.getElementById("results-summary-tab"),...Array.from(document.querySelectorAll("#artifact-tabs .artifact-tab"))].filter(Boolean);if(!n.length||!n.includes(document.activeElement))return;let i=-1;const r=n.indexOf(document.activeElement);if(e.key==="ArrowRight")i=(r+1)%n.length;else if(e.key==="ArrowLeft")i=(r-1+n.length)%n.length;else if(e.key==="Home")i=0;else if(e.key==="End")i=n.length-1;else return;e.preventDefault();const s=n[i];if(!s)return;if(s.id==="results-summary-tab")mp();else{const a=s.dataset.artifactId;a&&ec(a)}const o=s.id==="results-summary-tab"?document.getElementById("results-summary-tab"):document.querySelector(`#artifact-tabs .artifact-tab[data-artifact-id="${s.dataset.artifactId}"]`);o&&o.focus()}))}function eo(){document.body.classList.add("results-fullscreen"),document.body.classList.add("results-with-sidebar");const t=document.getElementById("results-view"),e=document.getElementById("results-code-output"),n=document.getElementById("results-audit-output"),i=document.getElementById("results-summary-detail"),r=document.getElementById("artifact-results-split"),s=Mw(),o=Nl();if(i&&(i.setAttribute("role","tabpanel"),i.setAttribute("aria-labelledby","results-summary-tab")),r){r.setAttribute("role","tabpanel");const a=s?.artifacts?.find(l=>l.id===y.selectedArtifactId);r.setAttribute("aria-labelledby",a?`artifact-tab-${a.id}`:"results-summary-tab")}if(Ow(s),Dw(s),e&&(e.textContent=""),e){const a=mh(o);e.innerHTML=a}n&&(n.innerHTML=Bw(s)),i&&i.classList.toggle("hidden",y.resultsViewMode!=="summary"),r&&r.classList.toggle("hidden",y.resultsViewMode!=="file"),t&&t.classList.add("visible")}function ar(t,e){en(!0),y.selectedArtifactId||(y.selectedArtifactId=si(y.artifactBundle).id),y.resultsViewMode="summary",document.body.classList.add("results-fullscreen");const n=document.getElementById("step3-output");n&&(n.textContent=""),eo(),tn(),jw()}function jw(){const t=document.getElementById("btn-feedback-up"),e=document.getElementById("btn-feedback-down"),n=document.getElementById("results-feedback-status");t&&(t.className="feedback-btn",t.setAttribute("aria-pressed","false"),t.disabled=!1,t.removeAttribute("aria-disabled")),e&&(e.className="feedback-btn",e.setAttribute("aria-pressed","false"),e.disabled=!1,e.removeAttribute("aria-disabled")),n&&(n.textContent=""),Ja=!1}function ec(t){y.selectedArtifactId=t,y.resultsViewMode="file",eo()}function mp(){y.resultsViewMode="summary",eo()}function Uw(){const t=document.getElementById("btn-copy-results"),e=document.getElementById("results-copy-status"),n=Nl(),i=(r,s)=>{e&&(e.textContent=r,e.classList.toggle("ok",!!s),e.classList.toggle("fail",!s))};if(!navigator.clipboard?.writeText){i("Copying isn't supported in this browser.",!1);return}navigator.clipboard.writeText(n).then(()=>{if(i("Copied to clipboard",!0),t){t.classList.add("copied");const r=t.querySelector("span");if(r){const s=r.textContent;r.textContent="Copied!",setTimeout(()=>{t.classList.remove("copied"),r.textContent=s},2e3)}}}).catch(()=>{i("Clipboard permission was denied. Select the code to copy it manually.",!1)})}let Ja=!1;async function Hw(t){const e=document.getElementById("btn-feedback-up"),n=document.getElementById("btn-feedback-down"),i=document.getElementById("results-feedback-status");if(!e||!n||Ja)return;const r=l=>{i&&(i.textContent="",i.offsetWidth,i.textContent=l)},s=l=>{Ja=l,[e,n].forEach(u=>{u.disabled=l,u.setAttribute("aria-disabled",String(l))})},o=t==="up"?"thumbsUp":"thumbsDown";s(!0),r("Submitting review feedback…");const a={type:o,code:y.step2Result,input:y.step1Result};try{const l=await zl(a.type,a.code,a.input);if(!l||l.success!==!0){s(!1),r("Review feedback could not be sent. Tap again to retry.");return}e.classList.toggle("active-up",t==="up"),n.classList.toggle("active-down",t==="down"),e.setAttribute("aria-pressed",String(t==="up")),n.setAttribute("aria-pressed",String(t==="down")),s(!1),r("Review feedback saved.")}catch{s(!1),r("Review feedback could not be sent. Tap again to retry.")}}function Ww(){const t=document.getElementById("error-input-panel");if(t){t.classList.remove("hidden"),t.style.display="flex";const e=document.getElementById("ff-error-paste-input");e&&setTimeout(()=>e.focus(),100)}}function vp(){const t=document.getElementById("error-input-panel");t&&(t.classList.add("hidden"),t.style.display="none")}function en(t){const e=document.getElementById("generation-stage");e&&(t?(e.hidden=!1,e.inert=!1,requestAnimationFrame(()=>e.classList.add("is-active"))):(e.classList.remove("is-active"),e.inert=!0,setTimeout(()=>{e.classList.contains("is-active")||(e.hidden=!0)},260)))}function _p(){const t=q.isVerified&&!!q.email,e=ce.tier||"free",n=t&&hi(),i=!t||Rt(),s=n?"Checking…":i?gl[e]||"Free":"—",o=document.getElementById("topbar-plan");o&&(o.textContent=s);const a=document.getElementById("topbar-avatar");a&&(a.textContent=(q.email||"?")[0].toUpperCase()),Vl();const l=document.getElementById("plans-free-current");l&&l.classList.toggle("hidden",e!=="free"||!i);const u=document.getElementById("plans-checkout-btn-professional");if(u){const d=e==="professional"&&i;u.disabled=d,u.textContent=d?"Current plan":"Subscribe"}const c=document.getElementById("plans-checkout-btn-power");if(c){const d=e==="power"&&i;c.disabled=d,c.textContent=d?"Current plan":"Subscribe"}}function zw(){_p();const t=document.getElementById("credits-modal");t&&Ge(t)}function qw(t){if(t&&t.target!==t.currentTarget)return;const e=document.getElementById("credits-modal");e&&Ke(e)}function yp(t,e=!0,n=!0){if(t=["home","account","plans"].includes(t)?t:"home",document.querySelectorAll(".view[data-view]").forEach(r=>{r.dataset.view===t?(r.hidden=!1,r.removeAttribute("inert"),requestAnimationFrame(()=>{r.classList.add("is-active"),n&&r.focus({preventScroll:!0})})):(r.classList.remove("is-active"),r.setAttribute("inert","true"),setTimeout(()=>{r.classList.contains("is-active")||(r.hidden=!0)},260))}),t!=="home")en(!1);else{const r=document.getElementById("main-stage-container");r&&r.classList.contains("visible")&&en(!0)}if(document.querySelectorAll(".nav-link[data-view]").forEach(r=>{const s=r.dataset.view===t;r.setAttribute("aria-current",s?"page":null),s||r.removeAttribute("aria-current")}),e){const r=t==="home"?"":`#${t}`;window.location.hash!==r&&window.history.pushState({view:t},"",r||"#")}}let id=!1;function tc(){const t=window.location.hash.replace(/^#/,"");yp(t||"home",!1,id),id=!0}window.addEventListener("popstate",t=>{tc()});window.addEventListener("hashchange",()=>{tc()});window.copyResultsCode=Uw;window.selectArtifact=ec;window.selectResultsSummary=mp;window.submitResultsFeedback=Hw;window.showErrorInputPanel=Ww;window.hideErrorInputPanel=vp;window.setGenerationStageVisible=en;window.switchView=yp;window.selectPipelineStage=kw;window.editPipelinePrompt=Ya;window.retryPipelineRun=pp;window.openCreditsModal=zw;window.closeCreditsModal=qw; diff --git a/dist/index.html b/dist/index.html index 2d33759..d8c11b3 100644 --- a/dist/index.html +++ b/dist/index.html @@ -251,6 +251,21 @@ object-fit: cover; display: block; } + .prompt-img-thumb.is-pending img { opacity: 0.55; } + .prompt-img-thumb.is-pending::after { + content: ""; + position: absolute; + inset: 0; + margin: auto; + pointer-events: none; + width: 16px; + height: 16px; + border-radius: 9999px; + border: 2px solid rgba(15, 23, 42, 0.15); + border-top-color: rgba(15, 23, 42, 0.6); + animation: prompt-img-spin 0.8s linear infinite; + } + @keyframes prompt-img-spin { to { transform: rotate(360deg); } } .prompt-img-remove { position: absolute; top: 3px; @@ -916,6 +931,99 @@ .results-action-bar .btn-error-regen { flex-grow: 1.45; } + .results-action-scope { + flex: 0 0 auto; + display: block; + margin: 10px 24px 4px; + font-size: 11px; + color: var(--muted, #64748b); + text-align: center; + } + .results-replacement-error { + border: 1px solid #fbbf24; + background: #fffbeb; + border-radius: var(--radius-lg, 16px); + margin: 0 24px 12px; + padding: 12px 14px; + } + .results-replacement-error-body { + display: flex; + align-items: center; + gap: 10px; + flex-wrap: wrap; + } + .results-replacement-error-icon { + width: 20px; + height: 20px; + flex: 0 0 20px; + color: #d97706; + } + .results-replacement-error-text { + display: flex; + flex-direction: column; + gap: 2px; + flex: 1 1 200px; + min-width: 180px; + } + .results-replacement-error-text strong { + color: #b45309; + font-size: 12.5px; + } + .results-replacement-error-text span { + color: #92400e; + font-size: 12px; + } + .results-replacement-error .btn-header-action { + min-height: 36px; + padding: 6px 14px; + } + /* The shared .btn-header-action sets display:flex, which would otherwise + override the hidden attribute; the replacement banner shows only the + action that can resolve the failure (upgrade vs retry). */ + .results-replacement-error .btn-header-action[hidden] { + display: none; + } + + /* Shared-control styling for the pasted-build-error input overlay. */ + .error-input-card { + background: var(--surface, #fff); + border: 1px solid var(--border, #e5e7eb); + border-radius: var(--radius-lg, 16px); + box-shadow: 0 16px 48px -12px rgba(0, 0, 0, 0.18); + padding: 20px; + display: flex; + flex-direction: column; + gap: 12px; + } + .error-input-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + } + .error-input-textarea { + width: 100%; + min-height: 160px; + resize: vertical; + background: #fffbf0; + border-color: #fcd34d; + color: #78350f; + font-family: "DM Mono", "SFMono-Regular", ui-monospace, monospace; + font-size: 12.5px; + line-height: 1.6; + } + .error-input-textarea:focus-visible { + border-color: #f59e0b; + box-shadow: 0 0 0 3px color-mix(in srgb, #f59e0b 35%, transparent); + } + .btn-error-input-cancel { + background: transparent; + color: var(--muted, #64748b); + border: 1px solid var(--border, #e5e7eb); + } + .btn-error-input-cancel:hover:not(:disabled) { + background: var(--surface-sunken, #f1f5f9); + } .btn-deploy-results { background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%); color: #fff; @@ -1524,6 +1632,11 @@ .hidden { display: none !important; } + .sr-only { + position: absolute; width: 1px; height: 1px; + padding: 0; margin: -1px; overflow: hidden; + clip: rect(0 0 0 0); white-space: nowrap; border: 0; + } @media (max-width: 980px) { .results-split { grid-template-columns: minmax(0, 1fr); overflow-y: auto; } @@ -1576,6 +1689,11 @@ color: #dc2626; border-color: #fca5a5; } + .feedback-btn:disabled { + opacity: 0.5; + cursor: default; + pointer-events: none; + } /* ── Pipeline Progress Bar ───────────────────────── */ .pipeline-progress { @@ -1940,6 +2058,80 @@ font-family: "Delight", "DM Sans", sans-serif; } + /* ── Sign In Modal ─────────────────────────────────── */ + .signin-modal-content { + max-width: 420px; + border-radius: var(--radius-xl); + background: var(--surface); + } + .signin-modal-body { + padding: clamp(24px, 5vw, 32px); + } + .signin-modal-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 16px; + margin-bottom: 24px; + } + .signin-modal-header h2 { + font-family: var(--font-display); + font-size: var(--fs-h4); + font-weight: var(--fw-bold); + color: var(--fg); + letter-spacing: var(--ls-heading); + margin-bottom: 6px; + } + .signin-modal-header p { + font-size: var(--fs-small); + color: var(--muted-2); + line-height: var(--lh-body); + } + .signin-label { + display: block; + font-size: var(--fs-caption); + font-weight: var(--fw-ui); + color: var(--muted); + margin-bottom: 8px; + } + .signin-input { + width: 100%; + min-height: var(--control-h); + padding: 12px 16px; + margin-bottom: 18px; + font-family: var(--font-body); + font-size: var(--fs-body); + color: var(--fg); + background: var(--surface-sunken); + border: 1px solid var(--border); + border-radius: var(--radius-control); + transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease); + } + .signin-input::placeholder { color: var(--muted-2); } + .signin-input:focus { + outline: none; + border-color: var(--accent); + box-shadow: 0 0 0 4px var(--accent-soft); + } + .signin-input[aria-invalid="true"] { + border-color: var(--bad); + box-shadow: 0 0 0 4px var(--bad-soft); + } + .signin-submit { + width: 100%; + font-size: var(--fs-body); + } + .signin-message { + min-height: 1.5em; + margin-top: 16px; + text-align: center; + font-size: var(--fs-small); + line-height: var(--lh-body); + color: var(--muted-2); + } + .signin-message-success { color: var(--ok); } + .signin-message-error { color: var(--bad); } + #usage-counter { font-size: 12px; color: var(--muted-2); } #subscription-tier-badge { display: inline-flex; @@ -1952,369 +2144,195 @@ color: var(--accent); } - /* ── Walkthrough Modal Redesign ─────────────────────── */ - .wt-hero { - display: flex; - align-items: center; - gap: 28px; - padding: 32px 32px 24px; - background: linear-gradient(168deg, #f0f4ff 0%, #f8f9ff 40%, #fff 100%); - position: relative; - overflow: hidden; - } + /* ── Walkthrough / Tutorial Modal (new visual system) ─── */ + .wt-modal { max-width: 640px; overflow: hidden; background: var(--surface); } - .wt-hero::before { - content: ''; - position: absolute; - top: -40px; - right: -40px; - width: 180px; - height: 180px; - background: radial-gradient(circle, rgba(139, 92, 246, 0.06) 0%, transparent 70%); - border-radius: 50%; - pointer-events: none; + .wt-topbar { + display: flex; align-items: center; justify-content: space-between; + gap: 16px; padding: 18px 24px; + border-bottom: 1px solid var(--border); } - - .wt-illustration { - position: relative; - width: 200px; - height: 200px; - flex-shrink: 0; + .wt-title { + font-family: var(--font-display); + font-size: var(--fs-h4); + font-weight: var(--fw-bold); + color: var(--fg); + letter-spacing: var(--ls-heading); } - .wt-orbit { - position: absolute; - inset: 0; - border-radius: 50%; - border: 2px solid transparent; - animation: wt-orbit-spin 20s linear infinite; + .wt-hero { padding: 22px 24px 0; } + .wt-hero-kicker { + font-family: var(--font-mono); + font-size: var(--fs-micro); + font-weight: 600; + letter-spacing: var(--ls-mono); + text-transform: uppercase; + color: var(--accent); + margin-bottom: 8px; } - - .wt-orbit-1 { - border-image: linear-gradient(135deg, rgba(99, 102, 241, 0.3), rgba(168, 85, 247, 0.15), transparent 60%) 1; - border-radius: 50%; - border: 2px solid rgba(99, 102, 241, 0.15); + .wt-hero-heading { + font-family: var(--font-display); + font-size: var(--fs-h3); + font-weight: var(--fw-black); + color: var(--fg); + letter-spacing: var(--ls-heading); + line-height: 1.15; } - - .wt-orbit-2 { - inset: 16px; - border: 2px dashed rgba(139, 92, 246, 0.12); - animation-direction: reverse; - animation-duration: 28s; + .wt-hero-sub { + margin: 8px 0 16px; + font-size: var(--fs-small); + color: var(--muted); + line-height: var(--lh-body); + max-width: 58ch; } - - .wt-orbit-3 { - inset: 32px; - border: 1.5px solid rgba(59, 130, 246, 0.1); - animation-duration: 15s; + .wt-video { + border-radius: var(--radius-md); + overflow: hidden; + border: 1px solid var(--border-strong); + background: oklch(16% 0.02 265); + aspect-ratio: 16 / 9; } + .wt-video video { display: block; width: 100%; height: 100%; object-fit: cover; } - @keyframes wt-orbit-spin { - to { transform: rotate(360deg); } + .wt-steps { + list-style: none; + margin: 20px 0 0; + padding: 0 24px; + display: grid; gap: 10px; } - - .wt-center-gem { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 72px; - height: 72px; + .wt-step-card { + display: flex; align-items: flex-start; gap: 14px; + padding: 14px 16px; + border: 1px solid var(--border); + border-radius: var(--radius-sm); + background: var(--surface); + transition: border-color var(--t-fast) var(--ease), + box-shadow var(--t-fast) var(--ease), + opacity var(--t-fast) var(--ease); } - - .wt-gem-shape { - width: 100%; - height: 100%; - filter: drop-shadow(0 4px 12px rgba(99, 102, 241, 0.3)); + .wt-step-card.wt-current { + border-color: var(--accent); + box-shadow: 0 0 0 3px var(--accent-soft); } + .wt-step-card.wt-pending { opacity: 0.72; } - .wt-code-tag { - position: absolute; - font-family: 'DM Mono', monospace; - font-size: 13px; - font-weight: 500; - color: #8b5cf6; - background: rgba(255, 255, 255, 0.9); - backdrop-filter: blur(4px); - padding: 4px 8px; - border-radius: 6px; - box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06); - line-height: 1; + .wt-step-num { + flex: none; width: 28px; height: 28px; border-radius: 50%; + display: grid; place-items: center; + font-family: var(--font-mono); + font-size: var(--fs-caption); + font-weight: 600; + color: var(--fg); + border: 1px solid var(--border-strong); + background: var(--surface-sunken); } + .wt-current .wt-step-num { background: var(--accent); border-color: var(--accent); color: var(--on-dark); } + .wt-done .wt-step-num { background: var(--ok); border-color: var(--ok); color: var(--on-dark); } - .wt-code-tag-1 { bottom: 28px; left: 4px; color: #6366f1; } - .wt-code-tag-2 { bottom: 32px; right: 0px; color: #7c3aed; } - - .wt-gear { - position: absolute; - color: #94a3b8; - opacity: 0.5; - animation: wt-gear-spin 8s linear infinite; + .wt-step-body { flex: 1; min-width: 0; } + .wt-step-title { + display: block; + font-family: var(--font-body); + font-size: var(--fs-body); + font-weight: var(--fw-bold); + color: var(--fg); + letter-spacing: -0.01em; } - .wt-gear-1 { top: 12px; right: 28px; width: 22px; height: 22px; } - .wt-gear-2 { top: 36px; right: 8px; width: 16px; height: 16px; animation-direction: reverse; animation-duration: 12s; } - - @keyframes wt-gear-spin { - to { transform: rotate(360deg); } + .wt-step-desc { + display: block; margin-top: 3px; + font-size: var(--fs-caption); + color: var(--muted); + line-height: 1.5; } - - .wt-sparkle { - position: absolute; - width: 8px; - height: 8px; - animation: wt-sparkle-pulse 2s ease-in-out infinite; + .wt-step-link { + margin-top: 9px; padding: 0; + background: none; border: none; cursor: pointer; + font-family: var(--font-body); + font-size: var(--fs-small); + font-weight: var(--fw-bold); + color: var(--accent); + text-decoration: none; } - .wt-sparkle::before, - .wt-sparkle::after { - content: ''; - position: absolute; - background: currentColor; - border-radius: 1px; + .wt-step-link:hover { text-decoration: underline; } + + .wt-upgrade { + margin: 16px 24px 0; padding: 14px 18px; + border: 1px dashed var(--border-strong); + border-radius: var(--radius-sm); + background: var(--surface-sunken); + display: flex; flex-wrap: wrap; align-items: center; + justify-content: space-between; gap: 12px; } - .wt-sparkle::before { - width: 2px; - height: 100%; - left: 50%; - transform: translateX(-50%); + .wt-info-text { + flex: 1 1 250px; + font-size: var(--fs-small); color: var(--muted); + line-height: var(--lh-body); } - .wt-sparkle::after { - width: 100%; - height: 2px; - top: 50%; - transform: translateY(-50%); + .wt-info-text strong { font-weight: var(--fw-bold); color: var(--fg); } + .wt-upgrade-btn { + padding: 10px 16px; + background: var(--accent); color: var(--on-dark); + font-family: var(--font-body); + font-size: var(--fs-small); font-weight: var(--fw-bold); + border: none; border-radius: var(--radius-control); + cursor: pointer; + transition: box-shadow var(--t-fast) var(--ease), transform var(--t-fast) var(--ease); } + .wt-upgrade-btn:hover { box-shadow: var(--shadow-control); } - .wt-sparkle-1 { top: 20px; left: 24px; color: #818cf8; animation-delay: 0s; } - .wt-sparkle-2 { top: 8px; left: 80px; color: #a78bfa; animation-delay: 0.6s; } - .wt-sparkle-3 { top: 44px; left: 56px; color: #6366f1; animation-delay: 1.2s; font-size: 6px; } - .wt-sparkle-4 { bottom: 16px; right: 44px; color: #818cf8; animation-delay: 0.3s; } + .wt-footer { + display: flex; align-items: center; justify-content: space-between; + gap: 12px; padding: 16px 24px 20px; + } + .wt-dont-show { display: flex; align-items: center; gap: 8px; cursor: pointer; } + .wt-dont-show input[type="checkbox"] { + width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; + } + .wt-dont-show span { font-size: var(--fs-caption); color: var(--muted-2); } + .wt-gotit-btn { + min-height: var(--control-h); + padding: 10px 20px; + background: var(--fg); color: var(--surface); + font-family: var(--font-body); + font-size: var(--fs-body); font-weight: var(--fw-bold); + border: none; border-radius: var(--radius-control); + cursor: pointer; + display: flex; align-items: center; gap: 6px; + transition: background-color var(--t-fast) var(--ease); + } + .wt-gotit-btn:hover { background: oklch(from var(--fg) calc(l + 0.12) c h); } + .wt-gotit-btn svg { width: 15px; height: 15px; } - @keyframes wt-sparkle-pulse { - 0%, 100% { opacity: 0.3; transform: scale(0.8); } - 50% { opacity: 1; transform: scale(1.2); } + @media (max-width: 640px) { + .wt-hero { padding: 18px 16px 0; } + .wt-steps { padding: 0 16px; } + .wt-upgrade { margin-left: 16px; margin-right: 16px; flex-direction: column; align-items: stretch; } + .wt-upgrade-btn { text-align: center; } + .wt-footer { padding-left: 16px; padding-right: 16px; } } - .wt-free-badge { - position: absolute; - top: 8px; - left: 50%; - transform: translateX(-50%); - background: linear-gradient(135deg, #22c55e, #16a34a); - color: #fff; - font-family: 'Delight', 'Outfit', sans-serif; - font-size: 10px; - font-weight: 700; - letter-spacing: 0.08em; - padding: 3px 12px; - border-radius: 4px; - box-shadow: 0 2px 8px rgba(34, 197, 94, 0.3); - z-index: 2; + /* ── Pricing Modal Redesign ─────────────────────── */ + .pm-inner { + padding: 0; + overflow: hidden; } - .wt-hero-text { - flex: 1; - min-width: 0; + .pm-header { + padding: 28px 32px 0; } - .wt-hero-heading { + .pm-title { font-family: 'Delight', 'Outfit', sans-serif; - font-size: 26px; + font-size: 20px; font-weight: 700; color: var(--fg); letter-spacing: -0.03em; - line-height: 1.2; - } - - .wt-info-card { - margin: 0 24px; - padding: 20px 24px; - background: linear-gradient(135deg, #eef2ff 0%, #f0f4ff 50%, #ede9fe 100%); - border-radius: 14px; - text-align: center; - position: relative; + margin-bottom: 3px; } - .wt-info-text { - font-family: 'Delight', 'DM Sans', sans-serif; - font-size: 14px; - color: #334155; - line-height: 1.6; - margin-bottom: 16px; - } - - .wt-info-text strong { - font-weight: 700; - color: #1e293b; - } - - .wt-upgrade-btn { - display: block; - width: 100%; - padding: 14px 24px; - background: linear-gradient(135deg, #8b5cf6 0%, #6366f1 50%, #4f46e5 100%); - color: #fff; - font-family: 'Delight', 'DM Sans', sans-serif; - font-size: 14px; - font-weight: 600; - border: none; - border-radius: 10px; - cursor: pointer; - letter-spacing: -0.01em; - transition: all 0.2s ease; - box-shadow: 0 4px 14px -3px rgba(99, 102, 241, 0.4); - } - - .wt-upgrade-btn:hover { - transform: translateY(-1px); - box-shadow: 0 6px 20px -3px rgba(99, 102, 241, 0.5); - background: linear-gradient(135deg, #7c3aed 0%, #4f46e5 50%, #4338ca 100%); - } - - .wt-steps { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 14px; - padding: 20px 24px 0; - } - - .wt-step-card { - background: #fff; - border: 1px solid #e8ebf0; - border-radius: 12px; - padding: 18px; - transition: border-color 0.2s, box-shadow 0.2s; - } - - .wt-step-card:hover { - border-color: #c7d2fe; - box-shadow: 0 2px 8px rgba(99, 102, 241, 0.08); - } - - .wt-step-num { - width: 28px; - height: 28px; - background: #3b82f6; - color: #fff; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - font-size: 13px; - font-weight: 700; - font-family: 'Delight', 'DM Sans', sans-serif; - margin-bottom: 10px; - } - - .wt-step-title { - font-family: 'Delight', 'Outfit', sans-serif; - font-size: 14px; - font-weight: 600; - color: #1e293b; - margin-bottom: 4px; - } - - .wt-step-desc { - font-size: 12.5px; - color: #64748b; - line-height: 1.5; - margin-bottom: 10px; - } - - .wt-step-link { - font-size: 12.5px; - font-weight: 600; - color: #3b82f6; - text-decoration: none; - cursor: pointer; - background: none; - border: none; - padding: 0; - font-family: 'Delight', 'DM Sans', sans-serif; - transition: color 0.15s; - } - .wt-step-link:hover { color: #2563eb; } - - .wt-footer { - display: flex; - align-items: center; - justify-content: space-between; - padding: 16px 24px 20px; - } - - .wt-dont-show { - display: flex; - align-items: center; - gap: 8px; - cursor: pointer; - } - - .wt-dont-show input[type="checkbox"] { - width: 16px; - height: 16px; - border-radius: 4px; - border: 1.5px solid #cbd5e1; - accent-color: #3b82f6; - cursor: pointer; - } - - .wt-dont-show span { - font-size: 12px; - color: #94a3b8; - font-family: 'Delight', 'DM Sans', sans-serif; - } - - .wt-gotit-btn { - padding: 10px 22px; - background: #3b82f6; - color: #fff; - font-family: 'Delight', 'DM Sans', sans-serif; - font-size: 14px; - font-weight: 600; - border: none; - border-radius: 10px; - cursor: pointer; - transition: background 0.15s; - display: flex; - align-items: center; - gap: 6px; - } - .wt-gotit-btn:hover { background: #2563eb; } - - .wt-gotit-btn svg { - width: 16px; - height: 16px; - } - - @media (max-width: 640px) { - .wt-hero { flex-direction: column; text-align: center; gap: 16px; padding: 24px; } - .wt-illustration { width: 160px; height: 160px; } - .wt-hero-heading { font-size: 22px; } - .wt-steps { grid-template-columns: 1fr; } - .wt-info-card { margin: 0 16px; } - } - - /* ── Pricing Modal Redesign ─────────────────────── */ - .pm-inner { - padding: 0; - overflow: hidden; - } - - .pm-header { - padding: 28px 32px 0; - } - - .pm-title { - font-family: 'Delight', 'Outfit', sans-serif; - font-size: 20px; - font-weight: 700; - color: var(--fg); - letter-spacing: -0.03em; - margin-bottom: 3px; - } - - .pm-subtitle { - font-size: 13px; - color: #94a3b8; + .pm-subtitle { + font-size: 13px; + color: #94a3b8; font-family: 'Delight', 'DM Sans', sans-serif; } @@ -2848,6 +2866,15 @@ transition: opacity var(--t-fast) var(--ease); } .composer.has-suggest .ghost .suggest { opacity: 1; } + /* Demo caret (prototype): a real text cursor — hard blink on a 1.05s cadence + with a soft brand afterglow. Shown while a chip fills the prompt. */ + @keyframes caret-blink { 0%,45% { opacity:1; } 46%,100% { opacity:0; } } + .composer.is-demo-typing .ghost .typed::after { + content:""; display:inline-block; width:2px; height:1.05em; margin-right:-2px; vertical-align:-.15em; + background:var(--accent); border-radius:1px; + box-shadow:0 0 7px 1px oklch(from var(--accent) l c h / .5); + animation:caret-blink 1.05s step-end infinite; + } .composer .tab-hint { position: absolute; right: 64px; @@ -2909,6 +2936,20 @@ cursor: pointer; } .icon-btn svg { width: 18px; height: 18px; } + .prompt-image-upload { + display: flex; + align-items: center; + gap: 4px; + } + .prompt-image-upload.hidden { display: none; } + .prompt-image-thumbnails { + display: flex; + align-items: center; + gap: 4px; + } + .prompt-image-thumbnails:empty { display: none; } + .composer .prompt-img-thumb { width: 40px; height: 40px; border-radius: 8px; } + .composer .prompt-img-remove { width: 16px; height: 16px; top: 2px; right: 2px; font-size: 11px; } .icon-btn:hover { background: oklch(95% 0.01 260); color: var(--fg); } .send { position: absolute; @@ -2931,6 +2972,7 @@ .send:disabled { background: var(--disabled-bg); color: var(--disabled-fg); box-shadow: none; cursor: not-allowed; } .send.is-busy .send-arrow { display: none; } .send.is-busy .send-spin { display: block; animation: spin 900ms linear infinite; } + .composer.is-busy .field { pointer-events: none; } @keyframes spin { to { transform: rotate(360deg); } } .chips { @@ -3047,7 +3089,205 @@ color: var(--accent); } + /* Account overview — real identity, plan, usage and honest history. + Every number below is written by renderAccountOverview() from the same + metered/session/subscription state the topbar reads; nothing here is + illustrative, and no renewal/member date is ever fabricated. */ + .acct-head { padding: 4px 0 22px; } + .acct-eyebrow { + font-family: var(--font-mono); + font-size: 11.5px; + font-weight: 500; + letter-spacing: 0.15em; + text-transform: uppercase; + color: var(--accent); + margin-bottom: 12px; + } + .acct-title { + font-family: var(--font-display); + font-size: clamp(28px, 5vw, 40px); + line-height: 1.06; + letter-spacing: -0.03em; + font-weight: var(--fw-bold); + margin: 0; + } + .acct-lead { + margin: 14px 0 0; + font-size: 15px; + line-height: 1.6; + color: var(--muted); + max-width: 62ch; + } + + .acct-grid { + display: grid; + grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(0, 1fr)); + gap: 16px; + margin: 0 0 16px; + } + .acct-card { + border: 1px solid var(--border); + border-radius: var(--radius-md); + background: var(--surface); + padding: 20px; + } + .acct-card-head { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + } + .acct-card-head h2 { + font-family: var(--font-display); + font-size: 17px; + font-weight: var(--fw-bold); + letter-spacing: -0.02em; + margin: 0; + } + .acct-card-head .acct-meta { + font-family: var(--font-mono); + font-size: 11px; + color: var(--muted-2); + } + + .acct-who { display: flex; align-items: center; gap: 14px; } + .acct-avatar { + width: 52px; height: 52px; flex: none; + border-radius: 50%; + display: grid; place-items: center; + background: var(--fg); color: var(--surface); + font-size: 19px; font-weight: 600; + } + .acct-name { + font-family: var(--font-display); + font-size: 19px; font-weight: var(--fw-bold); + letter-spacing: -0.02em; margin: 0; + } + .acct-email { + font-family: var(--font-mono); + font-size: 12.5px; color: var(--muted); + margin: 3px 0 0; overflow-wrap: anywhere; + } + .acct-since { + font-size: 12.5px; color: var(--muted-2); margin: 7px 0 0; + } + + .acct-k { + font-family: var(--font-mono); + font-size: 10.5px; letter-spacing: 0.11em; text-transform: uppercase; + color: var(--muted-2); margin: 0; + } + .acct-v { + font-size: clamp(26px, 3vw, 32px); + font-weight: var(--fw-bold); + letter-spacing: -0.035em; + line-height: 1.05; + margin: 10px 0 0; + overflow-wrap: anywhere; + } + .acct-v .acct-unit { font-size: 15px; color: var(--muted); font-weight: 500; letter-spacing: 0; } + .acct-n { + font-size: 12.5px; color: var(--muted); margin: 8px 0 0; + } + + .acct-identity { margin-bottom: 16px; } + .acct-usage-meter { margin-bottom: 16px; } + .acct-meter { margin-top: 18px; } + .acct-meter-track { + height: 10px; border-radius: 999px; + background: var(--track); overflow: hidden; + } + .acct-meter-fill { + height: 100%; border-radius: 999px; + background: var(--accent); + width: 0%; + transition: width 700ms var(--ease, ease); + } + .acct-meter-meta { + display: flex; align-items: baseline; justify-content: space-between; + gap: 14px; flex-wrap: wrap; + margin-top: 12px; font-size: 13px; color: var(--muted); + } + .acct-meter-meta .acct-num { font-family: var(--font-mono); font-size: 13px; color: var(--fg); } + .acct-counter { font-family: var(--font-mono); font-size: 12px; } + + .acct-empty { + margin-top: 14px; + padding: 16px; + border: 1px dashed var(--border-strong); + border-radius: var(--radius-sm, 10px); + background: var(--surface-sunken); + font-size: 13.5px; + line-height: 1.6; + color: var(--muted); + } + .acct-empty p { margin: 0 0 6px; } + .acct-empty p:last-child { margin-bottom: 0; } + .acct-empty a { color: var(--accent); text-decoration: underline; } + + .acct-connection { margin-bottom: 16px; } + .acct-conn-row { + display: flex; align-items: center; gap: 10px; + margin-top: 14px; font-size: 14px; + } + .acct-dot { + width: 9px; height: 9px; border-radius: 50%; flex: none; + background: var(--muted-2); + } + .acct-dot.ok { background: var(--ok); } + .acct-dot.warn { background: var(--warn); } + .acct-dot.bad { background: var(--bad); } + .acct-conn-spacer { flex: 1; } + .acct-kv { margin: 12px 0 0; } + .acct-row { + display: flex; align-items: baseline; justify-content: space-between; + gap: 16px; padding: 8px 0; border-bottom: 1px solid var(--border); + font-size: 13.5px; + } + .acct-row:last-child { border-bottom: 0; } + .acct-row dt { color: var(--muted); } + .acct-row dd { margin: 0; font-family: var(--font-mono); font-size: 13px; text-align: right; overflow-wrap: anywhere; } + + .acct-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; } + .acct-actions .btn-action { flex: 1 1 auto; } + .btn-action.ghost { + background: transparent; color: var(--muted); + border: 1px solid var(--border); + } + .btn-action.sm { padding: 7px 12px; font-size: 12.5px; flex: none; } + + .acct-access-row { + display: flex; align-items: baseline; justify-content: space-between; + gap: 16px; padding: 11px 0; border-bottom: 1px solid var(--border); + font-size: 13.5px; + } + .acct-access-row:last-child { border-bottom: 0; } + .acct-access-row p { margin: 0; color: var(--muted); } + .acct-access-row p:first-child { color: var(--fg); font-weight: 500; flex: none; } + .acct-access-action { align-items: center; } + .acct-access-action .btn-action { flex: none; } + .acct-access-desc { font-size: 12px !important; line-height: 1.45; } + .acct-access-msg { + min-height: 1.25rem; margin: 0 0 10px 0; padding-top: 2px; + font-size: 12.5px; color: var(--muted); + } + .acct-access-msg.error { color: var(--bad); } + .acct-danger-zone { + border: 1px solid var(--bad-soft); + background: color-mix(in oklab, var(--bad-soft), transparent 55%); + } + .acct-danger-zone .acct-card-head h2 { color: var(--bad); } + .acct-danger-note { font-size: 12.5px; line-height: 1.55; color: var(--muted); margin: 0 0 14px 0; max-width: 52ch; } + /* Mobile compact */ + @media (max-width: 920px) { + .acct-grid { grid-template-columns: 1fr; } + /* The connection row's Configure button is non-shrinking (flex: none); + on narrow screens the long status text pushes it past the viewport, + so drop it onto its own full-width line instead. */ + .acct-conn-row { flex-wrap: wrap; } + .acct-conn-row .btn-action { flex: 1 1 100%; } + } @media (max-width: 920px) { .hero { padding: 24px 16px 28px; } .headline { font-size: clamp(34px, 10vw, 56px); line-height: 1.08; } @@ -3070,10 +3310,11 @@ } @media (prefers-reduced-motion: reduce) { .view, .generation-stage { transition: none; } + .send.is-busy .send-spin { animation: none; opacity: 0.6; } } - - + +