momentic 3.10.2 → 3.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/cli.js CHANGED
@@ -168,7 +168,7 @@ ${this.decisions.map(t=>t.toString()).join(`
168
168
  `).map((o,r)=>r>0?`${n}${o}`:o).join(`
169
169
  `)}logWithLevelHelper(t,n,...o){if(t<this.minLogLevel)return;let r=this.forcedStream??(t>=40?"stderr":"stdout"),i=(...d)=>r==="stderr"?console.error(...d):console.log(...d),s;Array.isArray(o[0])?(s=o[0],o=o.slice(1)):typeof o[0]=="object"&&!(o[0]instanceof Error)&&Object.entries(o[0]).length&&(s={...o[0],...this.logBindings},o=o.slice(1));let a=dl.level===0,l=a&&t===50?"Error:":a&&t===40?"Warning:":"",c=[];if(l&&c.push(l),c.push(...o),i(n(...c)),s&&!Array.isArray(s)){let d=Object.entries(s);for(let[u,p]of d){let m=p;if(p instanceof Error){m=p.message,i(n(` ${u}:`,m)),i(n(" stack:",p.stack));let g=Object.entries(p).filter(([f])=>f!=="message"&&f!=="stack");for(let[f,y]of g){if(y instanceof Error){i(n(` ${u}.${f}:`,y.message)),y.stack&&i(n(` ${u}.${f}.stack:`,y.stack));continue}if(typeof y=="object"&&y!==null){let S=this.indentMultiline(ul(y,void 0,2)," ");i(n(` ${u}.${f}:`,S));continue}i(n(` ${u}.${f}:`,y));}}else typeof p=="object"?(m=ul(p,void 0,2),m=this.indentMultiline(m),i(n(` ${u}:`,m))):i(n(` ${u}:`,m));}}else if(s)for(let d of s){let u=d;typeof d=="object"&&(u=ul(d,void 0,2),u=u.split(`
170
170
  `).map((p,m)=>m>0?` ${p}`:p).join(`
171
- `)),i(" ",n(u));}}setMinLevel(t){typeof t=="string"?this.minLogLevel=ZS[t]:this.minLogLevel=t;}setOutputStream(t){this.forcedStream=t;}log(...t){this.logWithLevel(30,dl.reset,...t);}info(...t){this.logWithLevel(30,dl.white,...t);}debug(...t){this.logWithLevel(20,dl.dim,...t);}warn(...t){this.logWithLevel(40,dl.yellow,...t);}error(...t){this.logWithLevel(50,dl.red,...t);}success(...t){this.logWithLevel(30,dl.green,...t);}dimmed(...t){this.logWithLevel(30,dl.dim,...t);}underline(...t){this.logWithLevel(30,dl.underline,...t);}bold(...t){this.logWithLevel(30,dl.bold,...t);}grey(...t){this.logWithLevel(30,dl.grey,...t);}child(t){let n=new e(this.minLogLevel,{...this.logBindings,...t});return n.forcedStream=this.forcedStream,n}async flush(){}bindings(){return this.logBindings}},R=aM._internalSingleton(),zr={info:()=>{},error:()=>{},debug:()=>{},warn:()=>{},child:()=>zr,flush:async()=>{},bindings:()=>({})},kC={},cM=({logger:e,logKey:t,maxCount:n,intervalMs:o},r,i,...s)=>{let a=kC[t];a?clearTimeout(a.timer):(a={count:0,totalCount:0},kC[t]=a),a.totalCount++,a.count<n&&(a.count++,e.debug(r,i,...s)),a.timer=setTimeout(()=>{let l=kC[t];l?.totalCount!==l?.count&&e.debug({logKey:t,totalCount:l?.totalCount,count:l?.count},`Debug logs were rate-limited for ${t}`),delete kC[t];},o);};var nV=1e4,oV=1,vg=ll.extend({browserType:z.enum(dc).optional(),slowMoMs:z.number().optional().refine(e=>e===void 0||e<=nV&&e>=-1,{message:`Slow motion must be between 0 and ${nV} milliseconds`}),basicAuthorization:z.object({username:z.string().optional(),password:z.string().optional()}).optional(),geolocation:z.object({latitude:z.number().refine(e=>e>=-90&&e<=90,{message:"Latitude must be between -90 and 90 degrees"}),longitude:z.number().refine(e=>e>=-180&&e<=180,{message:"Longitude must be between -180 and 180 degrees"})}).optional(),disableJavaScript:z.boolean().optional(),locale:z.string().optional(),timezone:z.enum(CC).optional(),colorScheme:z.enum(["light","dark"]).optional()}),rV=["extraHeaders","basicAuthorization","localChromeExtensionPaths","proxy"],dM=z.object({useMemory:z.boolean().optional(),failureRecovery:z.boolean().optional().describe("undefined means inherit org settings")}),uM=dM.extend({disableAICaching:z.boolean().optional(),failureRecoveryInstructions:z.string().optional()}),dge=z.object({viewport:bd.optional()}),Ns=dge.extend(uM.shape).extend(vg.shape),DC=z.object({cron:z.string().refine(e=>isValidCron(e),{error:"Invalid cron expression."}).default("0 0 */1 * *"),enabled:z.boolean().default(false),env:z.string().optional(),timeZone:z.string().default("America/Los_Angeles"),jobKey:z.string().optional()}),FC=z.object({onSuccess:z.boolean().default(false),failureMessage:z.string().optional(),onFailure:z.boolean().default(true),successMessage:z.string().optional()}),uge=z.object({name:z.string(),required:z.boolean().optional(),defaultValue:z.string().describe("this is not optional because we need a value when the editor is first loaded")}),iV=uge.array(),pge=z.object({name:z.string(),value:z.string()}),BC=pge.array(),sV=z.object({name:z.string(),default:z.boolean().optional(),fixtures:L$.array().optional()});var ga=dM.extend({agentConfig:z.record(z.string(),z.string()).optional(),aiFailureAnalysis:z.boolean().optional(),classification:$G.optional(),triage:jG.optional(),healing:jE.optional(),explore:VE.optional(),select:V$.optional()}),mge=z.object({cliOnly:z.boolean().optional(),neverShowUsageBanner:z.boolean().optional(),hideInternalTraceInfo:z.boolean().optional(),bypassUsageLimits:z.boolean().optional()}),eb=z.object({fakerConstantSeed:z.boolean().optional(),isolateCachesByEnvironment:z.boolean().optional()}),hge=z.enum(["flaky_tests","low_test_coverage","frequent_bugs","fix_flaky_tests","migrate_tests","increase_test_coverage","catch_more_bugs"]),gge=z.enum(["ios","android","web"]),fge=z.enum(["selenium","playwright","cypress","puppeteer","maestro","appium","detox","manual_qa","nothing_yet","other"]),yge=z.enum(["advertisement","ai_search","google_search","hacker_news","linkedin","reddit","referral_from_customer","twitter_x","word_of_mouth","youtube","other"]),Sge=z.object({helpIntents:z.array(hge).optional(),helpIntentOtherText:z.string().optional(),deviceTypeIntent:gge.optional(),currentTestingTool:fge.optional(),heardAboutSource:yge.optional()}),bge=z.object({discovery:Sge.optional(),needsToCompleteOnboarding:z.boolean().optional(),wizardCompletedAt:z.iso.datetime().optional()}),Rg=z.object({ai:ga.optional(),githubAppInstallationId:z.number().nullish(),githubAppSummaryMessageEnabled:z.boolean().nullish(),githubReleaseAppInstallationId:z.number().nullish(),gitlabAppAccessToken:z.string().nullish(),gitlabAppBaseUrl:z.string().nullish(),browser:YO.optional(),internal:mge.optional(),advanced:eb.optional(),onboarding:bge.optional()});function aV(e){try{return Rg.parse(e)}catch{return R.warn("Cloud settings contain values this version of the CLI does not support. Please upgrade. Falling back to defaults."),Rg.parse({})}}z.object({globalOverrides:z.record(z.string(),z.string()).optional(),agentConfig:z.record(z.string(),z.string()).optional()});z.record(z.string(),z.string()).nullish();var pc=(n=>(n.CANNOT_FIX_TEST="CANNOT_FIX_TEST",n.FIXED="FIXED",n))(pc||{}),lV=z.object({index:z.int().nonnegative(),section:GO,step:Lt}),Tge=z.object({additions:lV.array(),deletions:lV.array()}),tb=z.object({subAgentStatus:z.enum(pc).default("CANNOT_FIX_TEST"),rootCause:z.string(),solution:z.string(),verificationNotes:z.string().optional().default(""),diffs:Tge.optional(),pullRequestUrl:z.string().optional(),branchUrl:z.string().optional()}),cV=tb.optional().catch(void 0),dV=z.object({subAgentStatus:z.literal("FIXED").default("FIXED"),rootCause:z.string(),solution:z.string(),verificationNotes:z.string().optional().default(""),gitPatch:z.string().min(1)});var Ls={WEBHOOK:"WEBHOOK",CRON:"CRON",MANUAL:"MANUAL",CLI:"CLI"},ht=(a=>(a.PENDING="PENDING",a.RUNNING="RUNNING",a.PASSED="PASSED",a.FAILED="FAILED",a.CANCELLED="CANCELLED",a.RETRYING="RETRYING",a.WAITING_FOR_USER="WAITING_FOR_USER",a))(ht||{});var nb=(r=>(r.NOT_ATTEMPTED="NOT_ATTEMPTED",r.PERM_HEAL_SUCCEEDED="PERM_HEAL_SUCCEEDED",r.PERM_HEAL_FAILED="PERM_HEAL_FAILED",r.PERM_HEAL_ON_SUCCESS_FAILED="PERM_HEAL_ON_SUCCESS_FAILED",r))(nb||{});var ob=z.enum(nb).default("NOT_ATTEMPTED"),UC=(n=>(n.BEFORE_ALL="BEFORE_ALL",n.AFTER_ALL="AFTER_ALL",n))(UC||{});var Age=z.object({attempts:z.int().nonnegative()}),vo=z.string().pipe(z.coerce.date()).or(z.date()),is=z.object({id:z.string(),runKey:z.string(),organizationId:z.string(),executionType:Lu.optional().default("WEB"),createdAt:vo,createdBy:z.string(),flake:z.boolean().nullish(),scheduledAt:vo.or(z.null()),startedAt:vo.or(z.null()),updatedAt:vo.nullish(),finishedAt:vo.or(z.null()),resolvedBaseUrl:z.string().nullish(),environmentName:z.string().nullish(),gitBranchName:z.string().nullish(),gitMainBranch:z.string().nullish(),githubRepository:z.string().nullish(),gitlabProjectPath:z.string().nullish(),labels:z.array(z.string()).optional(),gitOriginUrl:z.string().nullish(),gitCommitSha:z.string().nullish(),gitCommitShaShort:z.string().nullish(),gitCommitAuthorName:z.string().nullish(),gitCommitTimestamp:vo.nullish(),gitCommitMessage:z.string().nullish(),schemaVersion:z.string().nullish(),cliVersion:z.string().nullish(),section:z.enum(UC).nullish(),status:z.enum(ht),healStatus:ob,healDetails:cV.nullish(),trigger:z.enum(Ls),attempts:z.number(),runAttempts:z.array(z.object({id:z.string(),status:z.enum(ht),startedAt:vo.or(z.null()),finishedAt:vo.or(z.null())})).optional(),videos:z.array(z.string()).optional(),failureReason:z.string().nullish(),failureDetails:$j.nullish(),failureRecoveryDetails:Age.nullish(),pipelineId:z.string().nullish(),resolvedInputs:z.record(z.string(),z.string()).nullish(),quarantined:z.boolean().nullish().default(false),quarantinedReason:z.string().nullish(),localTestId:z.string().nullish(),testId:z.string().nullish(),testName:z.string().nullish(),description:z.string().nullish(),directory:z.string().nullish(),test:z.object({name:z.string(),id:z.string()}).nullish().default(null),suiteId:z.string().nullish(),aiSettings:ga.nullish(),stepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),beforeStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),afterStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish()}),Ege={id:true,status:true,healStatus:true,healDetails:true,testName:true,localTestId:true,testId:true,test:{select:{name:true,id:true}},finishedAt:true,failureReason:true,failureDetails:true},HC=is.pick({...Ege,test:true}),uV=is.omit({failureReason:true,failureDetails:true,test:true}),pM=is.extend({stepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),beforeStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),afterStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),resolvedInputs:z.record(z.string(),z.string()).nullish(),test:z.object({name:z.string(),id:z.string(),description:z.string().nullish(),baseUrl:z.string().nullish(),advanced:Ns.nullish()}).nullish()}).extend(eM.shape),pV=e=>e.includes("PASSED")&&e.includes("FAILED");var Cge=z.object({category:z.string(),reasoning:z.string(),citations:z.array(Vo).optional()}),vge=z.object({testInputs:z.record(z.string(),z.string()).optional(),envName:z.string().optional(),urlOverride:z.string().optional()}),Rge=z.object({reason:z.string().optional(),message:z.string().optional()}),wge=z.object({runId:z.string().optional(),testId:z.string(),testName:z.string(),filePath:z.string(),labels:z.array(z.string()).optional(),status:z.enum(ht),startedAt:z.string(),finishedAt:z.string(),durationMs:z.number(),attempts:z.number(),quarantined:z.boolean(),recovered:z.boolean(),parameters:vge.optional(),failure:Rge.nullable(),classification:Cge.nullable()}),Ige=z.object({testId:z.string(),testName:z.string(),filePath:z.string(),labels:z.array(z.string()).optional(),quarantined:z.boolean()}),xge=z.object({total:z.number(),executed:z.number(),skipped:z.number(),passed:z.number(),failed:z.number(),cancelled:z.number(),quarantined:z.number(),recovered:z.number()}),mV=z.object({version:z.literal(1),runGroup:z.object({startedAt:z.string(),finishedAt:z.string(),durationMs:z.number()}),summary:xge,runs:z.array(wge),skipped:z.array(Ige)});var hV=z.enum(["error","warning","passing"]);var gV=z.enum(["safe_to_merge","confirm_intended_change","investigate_regression","fix_test","resolve_infra","review_coverage"]);var fV=z.object({kind:gV,detail:z.string().min(1).max(280)}),Am=z.object({riskLevel:z.string(),headline:z.string().min(1).max(200).describe("One-sentence summary of what happened in this run. Plain text, no markdown."),overview:z.string().min(1).max(280).optional().describe("One plain-text sentence giving the bottom line of the run. No markdown."),summaryMarkdown:z.string().min(1).max(4e3).describe("Markdown body. Several short paragraphs or a tight list. No emojis, no top-level heading. Max 5 sentences."),recommendedAction:fV.optional()}),yV=Am.extend({riskLevel:hV.describe("Traffic-light validation signal. Use passing when validation is trustworthy with no real concern, warning when review or follow-up is needed, and error when the evidence shows the PR may hide or cause a product regression or another material concern that requires review."),headline:z.string().min(1).max(60).describe("Short, factual, title-case status of the validation signal, 6 words max, no punctuation. Describe the outcome only - never name the process or mode (no 'dry run', 'auto-heal', 'triage', 'pending'); those are shown separately. Examples: 'Review Required', 'Sign In Failing Across 5 Tests', 'All Tests Passed'."),overview:z.string().min(1).max(280).describe("The bottom-line verdict in one plain sentence: what the Momentic validation means for user-visible behavior and how trustworthy the signal is. This is the conclusion only, not the evidence. No markdown, headings, lists, or emojis. Do not prescribe a merge decision (use recommendedAction)."),summaryMarkdown:z.string().min(1).max(1e3).describe("The supporting evidence behind the overview, in GitHub-flavored markdown: a few short sentences or a tight list with the specific tests, errors, and signals that justify the verdict. Must carry information the overview does not - never paraphrase or restate the overview. Do not prescribe a merge decision or restate repair mechanics. Max 4 sentences. No emojis or top-level heading."),recommendedAction:fV.extend({kind:gV.describe("The kind of action a reviewer should take. safe_to_merge = signal is trustworthy and can be merged as-is; confirm_intended_change = a product or UI change was detected (or a heal relaxed an expectation) and a human must confirm it is intentional; investigate_regression = evidence points to a real product bug or regression to investigate before merging; fix_test = a broken or stale test or test setup needs repair; resolve_infra = an infrastructure or environment problem needs resolving and a re-run; review_coverage = quarantine has materially reduced coverage that should be reviewed."),detail:z.string().min(1).max(280).describe("One plain-text sentence naming the specific next step (e.g. 'Confirm the new success-indicator color is an intended design change'). No markdown.")}).describe("The single most important next step a reviewer should take. Omit entirely when the signal is clean and there is genuinely nothing to do.").optional()});var SV=z.object({id:z.string(),status:z.enum(ht),trigger:z.enum(Ls),createdAt:vo,startedAt:vo.nullish(),finishedAt:vo.nullish(),gitCommitSha:z.string().nullish(),gitCommitShaShort:z.string().nullish(),gitCommitTimestamp:vo.nullish(),gitBranchName:z.string().nullish(),gitOriginUrl:z.string().nullish(),gitCommitMessage:z.string().nullish(),gitCommitAuthorName:z.string().nullish(),githubRepository:z.string().nullish(),gitlabProjectPath:z.string().nullish(),pipelineId:z.string().nullish(),ciProvider:z.string().nullish(),cliVersion:z.string().nullish(),labels:z.string().array().optional(),healRiskSummary:Am.optional(),localSuiteName:z.string().optional(),suite:z.object({id:z.string(),name:z.string()}).nullish(),runs:z.object({executionType:Lu,status:z.enum(ht),environmentName:z.string().nullish()}).array()}),bV=SV.pick({id:true,createdAt:true,startedAt:true,finishedAt:true,status:true,trigger:true,suite:true,localSuiteName:true}).extend({runs:HC.array()}),TV=SV.extend({runs:is.array()});var Pge=z.object({type:z.literal("TARGETING"),name:z.string().optional().describe("Target name to disambiguate for steps with multiple targets"),elementLocationDecisions:_$.array(),pageState:z.string().optional(),targetSource:z.enum(jl).optional(),targetUpdateTime:z.string().optional()}),Oge=z.object({type:z.literal("AI_LOCATION"),matched:z.boolean(),pageState:z.string().optional(),ragUsed:z.boolean().optional(),thoughts:z.string().optional()}),Mge=z.object({type:z.literal("ASSERTION"),relevantElementsSerialized:z.string().array().optional(),pageState:z.string().optional(),ragUsed:z.boolean().optional()}),AV=z.discriminatedUnion("type",[Pge,Oge,Mge]);var Nge=z.object({id:z.string(),name:z.string()});Nge.extend(z.object({createdAt:vo,createdBy:z.string(),schedule:DC,notification:FC,environment:z.object({name:z.string()}).nullish(),beforeTests:z.object({id:z.string()}).array().nullish(),afterTests:z.object({id:z.string()}).array().nullish()}).shape);var EV=z.object({id:z.guid(),orgId:z.string(),createdAt:vo,startedAt:vo.or(z.null()),finishedAt:vo.or(z.null()),status:z.enum(ht),trigger:z.enum(Ls),suite:z.object({id:z.string(),name:z.string()}).nullish(),runs:is.array()});EV.pick({id:true,createdAt:true,startedAt:true,finishedAt:true,status:true,trigger:true,suite:true});var CV=EV.extend({runs:HC.array()});function vV({beforeStatus:e,mainStatus:t,afterStatus:n}){return e==="FAILED"?"FAILED":e==="CANCELLED"?"CANCELLED":n==="FAILED"?"FAILED":n==="CANCELLED"?"CANCELLED":t==="FAILED"?"FAILED":t==="CANCELLED"?"CANCELLED":"PASSED"}function GC(e,t){return e.some(r=>t?.onlyQuarantined?r.status==="FAILED":!r.quarantined&&r.status==="FAILED")?"FAILED":e.some(r=>r.status==="CANCELLED")?"CANCELLED":"PASSED"}function RV(e){switch(e){case "PASSED":return "SUCCESS";case "FAILED":return "FAILED";case "CANCELLED":return "CANCELLED";case "RUNNING":case "PENDING":case "RETRYING":case "WAITING_FOR_USER":return "RUNNING"}}var mM=z.object({content:z.string(),ids:z.string().array(),tokenLength:z.number()}),Lge=z.object({chunks:mM.array()});z.object({ids:z.string().array(),score:z.number(),tokenLength:z.number()});Lge.extend({description:z.string().describe("Input to pass to RAG engine"),tokenLimit:z.number()});var wV=z.object({ids:z.number().array()}),IV=z.object({indices:z.number().array()});var mc=(n=>(n.Interactive="interactive",n.Runner="runner",n))(mc||{}),kge=z.enum(mc),mr=z.object({disableCache:z.boolean().optional(),useMemory:z.boolean().optional(),clientMode:kge.optional(),loggerTags:z.record(z.string(),z.string()).optional(),langfuseSessionId:z.string().optional(),agentConfigVersion:z.string().optional(),cacheBustReason:z.enum(gS).optional()});mr.extend({chunks:mM.array(),description:z.string().describe("Input to pass to AI"),type:z.union([z.literal("locator"),z.literal("assertion"),z.literal("ai-action")]),softTokenLimit:z.number(),mediumTokenLimit:z.number().optional(),hardTokenLimit:z.number(),callId:z.string().optional()});var Dge=z.object({screenshotBase64AfterCommand:z.string(),urlAfterCommand:z.string(),serializedCommand:z.string(),elementInteracted:z.string().optional(),thoughts:z.string().optional()}),xV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string(),source:x$.optional().catch(void 0),isTieBreakerCall:z.boolean().optional(),memory:z.discriminatedUnion("type",[rl,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional(),firstPassModelResults:bC.array().optional(),knowledgeBaseSection:z.string().optional()}),_V=z.object({target:z.string().or(z.number()),browserState:z.string().optional(),screenshot:z.string().optional(),boundingBox:z.object({x:z.number(),y:z.number(),height:z.number(),width:z.number()}).optional()}),PV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string().optional(),returnSchema:z.string().optional()}),OV=z.object({goal:z.string(),emulatorState:z.string(),screenshot:z.string().optional(),returnSchema:z.string().optional()}),hM=z.union([z.literal("NEGATED_CHECK"),z.literal("CONDITIONAL_CHECK")]),MV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string(),url:z.string(),contextChoice:um.optional(),memory:z.discriminatedUnion("type",[lm,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional(),source:hM.optional(),recoveryHint:z.string().optional(),knowledgeBaseSection:z.string().optional()}),NV=z.object({command:Iu}),gM=z.object({goal:z.string(),browserState:z.string(),startingScreenshot:z.string().optional(),screenshot:z.string(),url:z.string(),history:Dge.array(),actionHint:z.string().optional(),lastError:z.string().optional()}),LV=z.object({results:xC.array(),errorMessage:z.string(),errorStack:z.string().optional()}),kV=z.object({results:xC.array(),goal:z.string(),errorMessage:z.string()}),DV=z.object({failedResults:xC.array(),nextStepsSerialized:z.string().array(),currentUrl:z.string(),currentPageState:z.string(),currentScreenshot:z.string(),customInstructions:z.string().optional(),testDescription:z.string().optional()});z.object({description:z.string(),type:z.union([z.literal("locator"),z.literal("assertion"),z.literal("ai-action")]),excerpt:z.string()});var FV=z.object({type:z.string(),browserContext:z.string(),currentStep:z.string(),screenshot:z.string()}),BV=z.object({description:z.string(),browserState:z.string().optional(),screenshot:z.string()}),Fge=z.enum(["locator","assertion"]);z.object({completionType:Fge,currentGoal:z.string(),pastGoal:z.string().optional(),currentScreenshot:z.string(),pastScreenshot:z.string(),pastResult:z.union([z.boolean(),z.number()])});z.object({goal:z.string()});var UV=z.object({keywords:z.array(z.string())});var jC=(i=>(i.LOCATOR="locator",i.ASSERTION="assertion",i.VISUAL_ASSERTION="visual-assertion",i.TEXT_EXTRACTION="text-extraction",i.FAILURE_RECOVERY="failure-recovery",i))(jC||{}),Bge=["locator","assertion","visual-assertion","text-extraction","failure-recovery"];z.enum(jC);var Uge=new Set(Bge);function Hge(e){return Uge.has(e)}var Gge=z.enum(["v1","v2","v3","v4"]),jge=z.string().regex(/^v\d+\.\d+$/).describe("pinned sub-version like v3.1");z.union([Gge,jge,z.string().describe("for people with special configurations")]);var Ig={locator:"v4.2",assertion:"v4.1","visual-assertion":"v4.0","text-extraction":"v3.0","failure-recovery":"v2.1"},HV={locator:{v4:["v4.2","v4.1","v4.0"],v3:["v3.3","v3.2","v3.1","v3.0"],v2:["v2.2","v2.1","v2.0"],v1:["v1.0"]},assertion:{v4:["v4.1","v4.0"],v3:["v3.2","v3.1","v3.0"],v2:["v2.3","v2.2","v2.1","v2.0"],v1:["v1.0"]},"visual-assertion":{v4:["v4.0"],v3:["v3.2","v3.1","v3.0"],v2:["v2.0"],v1:["v1.0"]},"text-extraction":{v3:["v3.0"],v2:["v2.0"],v1:["v1.0"]},"failure-recovery":{v2:["v2.1","v2.0"],v1:["v1.0"]}},GV=(s=>(s.ANDROID_LOCATOR="android-locator",s.IOS_LOCATOR="ios-locator",s.ANDROID_ASSERTION="android-assertion",s.IOS_ASSERTION="ios-assertion",s.ANDROID_TEXT_EXTRACTION="android-text-extraction",s.IOS_TEXT_EXTRACTION="ios-text-extraction",s))(GV||{});z.enum(GV);var $ge={locator:["v1"],assertion:["v1"],"visual-assertion":["v1"],"text-extraction":["v1"]};function Vge(e){let t=$ge[e];if(!t)return new Set;let n=HV[e],o=new Set;for(let r of t){o.add(r);for(let i of n[r]??[])o.add(i);}return o}function $C(e){for(let[t,n]of Object.entries(e)){if(!Hge(t))continue;let o=HV[t];if(!o)continue;let r=new Set;for(let[i,s]of Object.entries(o)){r.add(i);for(let a of s)r.add(a);}if(!r.has(n)){let i=[...r].sort();throw new ne("UserConfigurationError",`Invalid agent config: "${n}" is not a valid version for "${t}". Valid versions: ${i.join(", ")}`)}if(Vge(t).has(n))throw new ne("UserConfigurationError",`Agent config "${n}" for "${t}" is no longer supported because it relies on a legacy model. Upgrade to a newer version.`)}}var Td=O__default.object({id:O__default.guid(),envKey:O__default.string().optional(),skipped:O__default.boolean().optional(),retries:O__default.number().optional()});var Du=(r=>(r.PRESET="MOBILE_PRESET_STEP",r.MODULE="MOBILE_MODULE_STEP",r.AI_ACTION="MOBILE_AI_ACTION_STEP",r.CONDITIONAL="MOBILE_CONDITIONAL_STEP",r))(Du||{});var xg=Td.extend({type:O__default.literal("MOBILE_CONDITIONAL_STEP")});var ai=z.object({id:z.string(),name:mC,baseUrl:hC,description:z.string().optional().nullish(),schemaVersion:z.string(),advanced:Ns,retries:z.number().optional().nullish(),envs:z.array(sV).nullish(),parameters:iV.nullish(),disabled:z.boolean().optional(),labels:z.array(z.string()).optional().catch([])}),jV=z.enum(["INHERIT","ENABLED","DISABLED"]);var Wge=Ns.extend({failureRecovery:jV.optional(),useMemory:jV.optional()});ai.pick({name:true,description:true,baseUrl:true,retries:true,disabled:true,parameters:true}).extend({advanced:Wge});ai.pick({name:true,description:true,baseUrl:true,retries:true,disabled:true,advanced:true,parameters:true});var qge=z.object({labels:z.array(z.string()).optional(),outputs:BC.nullish()}),to=ai.extend(qge.shape),Kge=z.object({createdAt:z.coerce.date(),updatedAt:z.coerce.date(),updatedBy:z.string().nullable(),schedule:DC,notification:FC,createdBy:z.string(),organizationId:z.string(),folderId:z.string().nullable().optional()}),Yge=ai.extend(Kge.shape);Yge.extend(ec.shape);var fM=ai.extend(ec.shape);ai.extend(hd.shape);var Jge="test",Xge="module",Qge="mobile-test",Zge="mobile-module",efe="test/v2",tfe="module/v2",nfe="mobile-test/v2",ofe="mobile-module/v2";var ke=(l=>(l.TEST=`momentic/${Jge}`,l.MODULE=`momentic/${Xge}`,l.TEST_V2=`momentic/${efe}`,l.MODULE_V2=`momentic/${tfe}`,l.MOBILE_TEST=`momentic/${Qge}`,l.MOBILE_MODULE=`momentic/${Zge}`,l.MOBILE_TEST_V2=`momentic/${nfe}`,l.MOBILE_MODULE_V2=`momentic/${ofe}`,l))(ke||{});ai.merge(hd);var rfe=Qn.extend({steps:z.array(z.record(z.string(),z.unknown().optional())),schemaVersion:z.string()}),sb=rfe.extend({fileType:z.literal(ke.MODULE)});z.object({test:z.string().describe("YAML for the test, including metadata and steps"),modules:z.record(z.string(),z.string()).describe("Map of module name to YAML for the module")});function VC(e){if(e===void 0)return "__undefined__";if(e===null)return null;if(typeof e!="object")return e;if(Array.isArray(e))return e.map(VC);let t={};for(let[n,o]of Object.entries(e))t[n]=VC(o);return t}var ife=/^[a-z0-9]+(?:-[a-z0-9]+){2,}$/,$V=36,wo=z.union([z.guid().max($V,"V2 IDs must be 36 characters or fewer"),z.string().max($V,"V2 IDs must be 36 characters or fewer").regex(ife,"V2 IDs must be lowercase kebab-case with at least three words, e.g. silver-river-lantern")],{error:"ID must be a UUID or lowercase kebab-case with at least three words, e.g. silver-river-lantern (36 characters max)"});var zC=O.discriminatedUnion("type",[O.object({type:O.literal("SCREEN")}),O.object({type:O.literal("OPEN_APP")}),O.object({type:O.literal("OPEN_WEBVIEW")})]),Ad=O.object({type:O.literal("description"),description:O.string()}),SM=O.object({type:O.literal("CUSTOM_COORDINATES"),startX:O.number().describe("Starting X coordinate in pixels"),startY:O.number().describe("Starting Y coordinate in pixels"),deltaPixels:O.number().describe("Number of pixels to scroll in the specified direction")}),WC=O.discriminatedUnion("type",[...zC.options,O.object({type:O.literal("CUSTOM"),target:Ad}),SM]);function sfe(e){return e.toLowerCase().replaceAll("_"," ")}function bM(e){switch(e.type){case "CUSTOM":return e.target.description;case "CUSTOM_COORDINATES":return `custom coordinates (x: ${e.startX}, y: ${e.startY}, delta: ${e.deltaPixels}px)`;case "SCREEN":case "OPEN_APP":case "OPEN_WEBVIEW":return sfe(e.type);default:{throw new Error("Unreachable")}}}var afe=O.object({type:O.literal("coordinates"),xPercent:O.number(),yPercent:O.number()}),lfe=O.object({type:O.literal("absolute_percent"),x:O.number(),y:O.number()}),_g=O.discriminatedUnion("type",[Ad,afe,lfe]);var cfe=O.object({x1:O.number(),y1:O.number(),x2:O.number(),y2:O.number(),tolerance:O.nativeEnum(ns),preciseTolerance:O.boolean().optional()}),dfe=O.object({width:O.number(),height:O.number(),tolerance:O.nativeEnum(ns),preciseTolerance:O.boolean().optional()}),TM=O.object({requiredText:O.string().optional(),requiredAttributes:O.record(O.string(),O.string()).optional(),requiredBounds:O.boolean().optional(),position:cfe.optional(),shape:dfe.optional()}),VV=O.object({xPath:O.string(),requirements:TM.optional()}),ufe=O.object({type:O.literal("CUSTOM"),target:Ad,cache:O.lazy(()=>zV).optional()}),pfe=O.object({pixelDelta:O.number().describe("Number of pixels to scroll in the specified direction"),scrollableElement:O.union([zC,ufe,SM]),direction:O.enum(["up","down"])}),zV=O.object({type:O.literal("NATIVE"),bounds:O.number().array().optional(),resolvedDescription:O.string().optional(),xPath:O.string().optional(),elementOnlySerializedXml:O.string().optional(),scrollDetails:pfe.optional(),requirements:TM.optional(),requiredRelatedElements:VV.array().optional(),memory:rl.optional()}),mfe=O.object({type:O.literal("WEBVIEW"),resolvedDescription:O.string().optional(),xPath:O.string().optional(),browserCache:$l.optional(),memory:rl.optional()}),qC=O.union([zV,mfe]);var hfe=O.object({left:O.number(),top:O.number(),right:O.number(),bottom:O.number()});O.object({newViewportBounds:hfe});var gfe=O.object({type:O.literal("CUSTOM"),target:Ad,cache:O.lazy(()=>YV).optional()}),WV=O.object({pixelDelta:O.number().describe("Number of pixels to scroll in the specified direction"),scrollableElement:O.union([zC,gfe,SM]),direction:O.enum(["up","down"])}),qV=(n=>(n.Native="native",n.Appium="appium",n))(qV||{}),AM=O.tuple([O.number(),O.number(),O.number(),O.number()]),KV=VV.extend({bounds:AM.optional(),browserCache:$l.optional()}),YV=O.object({type:O.literal("NATIVE"),bounds:AM.optional(),resolvedDescription:O.string().optional(),sourceTree:O.nativeEnum(qV).optional(),xPath:O.string().optional(),elementOnlySerializedXml:O.string().optional(),scrollDetails:WV.optional(),requirements:TM.optional(),requiredRelatedElements:KV.array().optional(),memory:rl.optional()}),ffe=O.object({type:O.literal("WEBVIEW"),bounds:AM.optional(),resolvedDescription:O.string().optional(),xPath:O.string().optional(),scrollDetails:WV.optional(),browserCache:$l.optional(),requiredRelatedElements:KV.array().optional(),memory:rl.optional()}),KC=O.discriminatedUnion("type",[YV,ffe]);var zt=(_=>(_.AI_CHECK="AI_CHECK",_.AI_EXTRACT="AI_EXTRACT",_.TAP="TAP",_.TYPE="TYPE",_.PRESS="PRESS",_.PRESS_KEYBOARD="PRESS_KEYBOARD",_.OPEN_APP="OPEN_APP",_.KILL_APP="KILL_APP",_.OPEN_NOTIFICATION_DRAWER="OPEN_NOTIFICATION_DRAWER",_.SWIPE="SWIPE",_.SCROLL_TO="SCROLL_TO",_.SCREEN_CHECK="SCREEN_CHECK",_.ELEMENT_CHECK="ELEMENT_CHECK",_.VISUAL_DIFF="VISUAL_DIFF",_.DRAG_AND_DROP="DRAG_AND_DROP",_.JAVASCRIPT="JAVASCRIPT",_.REQUEST="REQUEST",_.WAIT="WAIT",_.ADD_FILE="ADD_FILE",_.INSTALL_APP="INSTALL_APP",_.UNINSTALL_APP="UNINSTALL_APP",_.TOGGLE_SETTINGS="TOGGLE_SETTINGS",_.ROTATE_ORIENTATION="ROTATE_ORIENTATION",_.ADB_COMMAND="ADB_COMMAND",_.APPIUM_EXECUTE="APPIUM_EXECUTE",_.STATE="STATE",_))(zt||{}),Je=O__default.object({id:O__default.guid(),disableCache:O__default.boolean().optional()}),Pg=O__default.object({updatedAt:O__default.coerce.date().optional(),updatedAtLoggerTags:O__default.record(O__default.string(),O__default.string()).optional()}),ya=Pg.extend({target:qC}),YC=Pg.extend({fromTarget:qC,toTarget:qC}),hc=Pg.extend({target:KC}),JV=Pg.extend({fromTarget:KC,toTarget:KC}),Ed=e=>{switch(e.type){case "description":return e.description;case "coordinates":return `${Math.round(e.xPercent*100)}%, ${Math.round(e.yPercent*100)}%`;case "absolute_percent":return `x: ${e.x}%, y: ${e.y}%`}};var XV=Je.extend({type:O__default.literal("ADB_COMMAND"),command:O__default.string(),jsonArgs:O__default.string().optional()});var yfe=O__default.string().trim(),ZV=Je.extend({type:O__default.literal("INSTALL_APP"),uri:yfe});var ez=Je.extend({type:O__default.literal("OPEN_NOTIFICATION_DRAWER")});var ab=(r=>(r.AIRPLANE_MODE="AIRPLANE_MODE",r.DATA="DATA",r.WIFI="WIFI",r.LOCATION="LOCATION",r))(ab||{}),nz=Je.extend({type:O__default.literal("TOGGLE_SETTINGS"),settingsType:O__default.nativeEnum(ab)});var rz=Je.extend({type:O__default.literal("UNINSTALL_APP"),packageName:O__default.string()});var JC=Je.extend({type:O__default.literal("APPIUM_EXECUTE"),command:O__default.string(),jsonArgs:O__default.string().optional()});var iz=Je.extend({type:O__default.literal("ADD_FILE"),file:O__default.string(),storageLocation:O__default.string()});var Cd=Je.extend({type:O__default.literal("AI_CHECK"),assertion:O__default.string(),timeoutSecs:O__default.number().optional(),contextChoice:um.optional(),cache:Pg.extend({memory:lm.optional()}).optional()});var sz=Je.extend({type:O__default.literal("AI_EXTRACT"),goal:O__default.string(),schema:O__default.string().optional()});var Og=Je.extend({type:O__default.literal("JAVASCRIPT"),code:O__default.string(),timeout:O__default.number().int().max(600).optional().describe("Max seconds for the code to complete")});var az=Je.extend({type:O__default.literal("KILL_APP")});var cb=(n=>(n.HOME="HOME",n.POWER="POWER",n))(cb||{}),XC=(s=>(s.BACK="BACK",s.APP_SWITCHER="APP_SWITCHER",s.SEARCH="SEARCH",s.VOLUME_UP="VOLUME_UP",s.VOLUME_DOWN="VOLUME_DOWN",s.VOLUME_MUTE="VOLUME_MUTE",s))(XC||{}),QC=Je.extend({type:O__default.literal("PRESS"),key:O__default.nativeEnum(cb),longPress:O__default.boolean().optional()}),lz=QC.extend({key:O__default.nativeEnum(XC).or(O__default.nativeEnum(cb))}),cz=QC;var dz=Je.extend({type:O__default.literal("REQUEST")}).merge(SS);var xM=(n=>(n.PORTRAIT="PORTRAIT",n.LANDSCAPE="LANDSCAPE",n))(xM||{}),pz=Je.extend({type:O__default.literal("ROTATE_ORIENTATION"),orientation:O__default.nativeEnum(xM)});var Afe=O__default.object({type:O__default.literal("CONTENT"),negated:O__default.boolean().optional(),value:O__default.string()}),Ng=Je.extend({type:O__default.literal("SCREEN_CHECK"),assertion:Afe,timeout:O__default.number().int().min(0).max(eg).optional().describe("max seconds to wait for the assertion to be true")});var mz=Je.extend({type:O__default.literal("STATE")});var hz=Je.extend({type:O__default.literal("VISUAL_DIFF"),path:O__default.string().describe("path to the golden screenshot to compare against"),threshold:O__default.number().min(0).max(1).optional().describe("max allowed fraction of differing pixels before the diff fails (default 0.1)")});O__default.object({created:O__default.boolean(),goldenPath:O__default.string(),threshold:O__default.number(),goldenScreenshotBase64:O__default.string().optional(),currentScreenshotBase64:O__default.string().optional(),diffScreenshotBase64:O__default.string().optional(),goldenScreenshotSnapshotId:O__default.string().optional(),currentScreenshotSnapshotId:O__default.string().optional(),diffScreenshotSnapshotId:O__default.string().optional(),diffPercent:O__default.number().optional(),pass:O__default.boolean().optional(),dimensionMismatch:O__default.boolean().optional()});var fz=Je.extend({type:O__default.literal("WAIT"),timeoutSecs:O__default.number()});var db=O__default.discriminatedUnion("type",[mz,Cd,sz,Og,fz,dz,pz,Ng,hz,iz,az]);O__default.discriminatedUnion("type",[...db.options,QC]);var PM=Je.extend({type:O__default.literal("DRAG_AND_DROP"),fromTarget:Ad,toTarget:Ad,hoverDuration:O__default.number().optional(),dragDuration:O__default.number().optional()}),ub=PM.extend({cache:YC.optional()}),pb=PM.extend({cache:JV.optional()});var OM=Je.extend({type:O__default.literal("ELEMENT_CHECK"),target:_g,assertion:KE,timeout:O__default.number().int().min(0).max(eg).optional().describe("max seconds to wait for the assertion to be true")}),Em=OM.extend({cache:ya.optional()}),Cm=OM.extend({cache:hc.optional()});var mb=(n=>(n.ENTER="ENTER",n.BACKSPACE="BACKSPACE",n))(mb||{}),ZC=(t=>(t.CLOSE_KEYBOARD="CLOSE_KEYBOARD",t))(ZC||{}),bz={repeat:O__default.number().int().min(1).optional(),keyPressDelayMs:O__default.number().min(0).optional()},Tz=Je.extend({type:O__default.literal("PRESS_KEYBOARD"),key:O__default.nativeEnum(mb),...bz}),Az=Je.extend({type:O__default.literal("PRESS_KEYBOARD"),key:O__default.nativeEnum(ZC).or(O__default.nativeEnum(mb)),...bz});var Ez=Je.extend({type:O__default.literal("OPEN_APP"),packageName:O__default.string(),activityName:O__default.string().optional(),intentExtras:O__default.string().optional()}),Cz=Je.extend({type:O__default.literal("OPEN_APP"),packageName:O__default.string(),intentExtras:O__default.string().optional()});var MM=Je.extend({type:O__default.literal("SCROLL_TO"),target:Ad,direction:O__default.enum(["down","up"]),scrollableElement:WC,scrollStepPercent:O__default.number().min(.1).max(1).optional().describe("How much of the container height to scroll at each step (0.1 to 1.0). Default is 0.9 (90%)."),maxScrollAttempts:O__default.number().int().min(1).max(50).optional().describe("Maximum number of scroll attempts before giving up. Default is 20.")}),hb=MM.extend({cache:ya.optional()}),gb=MM.extend({cache:hc.optional()});var NM=Je.extend({type:O__default.literal("SWIPE"),direction:O__default.enum(["up","down","left","right"]),scrollableElement:WC,viewportPercent:O__default.number().optional(),durationMs:O__default.number().optional(),relativePosition:WE.optional()}),fb=NM.extend({cache:ya.optional()}),yb=NM.extend({cache:hc.optional()});var LM=Je.extend({type:O__default.literal("TAP"),target:_g,longPress:O__default.boolean().optional(),longPressDurationMs:O__default.number().optional(),iterations:O__default.number().optional(),tapDelayMs:O__default.number().optional(),relativePosition:WE.optional(),doubleTap:O__default.boolean().optional(),doubleTapDelayMs:O__default.number().optional()}),Sb=LM.extend({cache:ya.optional()}),bb=LM.extend({cache:hc.optional()});var Tb=(r=>(r.AUTO="auto",r.PROGRAMMATIC="programmatic",r.LONG_PRESS="long-press",r.BACKSPACE="backspace",r))(Tb||{});var kM=Je.extend({type:O__default.literal("TYPE"),target:_g.optional(),keyPressDelayMs:O__default.number().optional(),text:O__default.string(),clearContent:O__default.boolean().optional(),forceClearContent:O__default.boolean().optional(),replaceStrategy:O__default.nativeEnum(Tb).optional()});var Ab=kM.extend({cache:ya.optional()}),Eb=kM.extend({cache:hc.optional()});var Cb=O__default.discriminatedUnion("type",[...db.options,Sb,Ab,lz,Az,rz,ZV,XV,JC,ub,ez,hb,fb,nz,Em,Ez]);var vb=O__default.discriminatedUnion("type",[...db.options,bb,Eb,cz,Tz,Cz,yb,pb,gb,Cm,JC]);var wz=O__default.union([O__default.string(),O__default.record(O__default.string(),O__default.unknown().optional())]),nv=Td.extend({type:O__default.literal("MOBILE_PRESET_STEP"),keyPressDelayMs:O__default.number().optional()}),Bu=nv.extend({command:Cb}),Uu=nv.extend({command:vb}),kg=O__default.object({moduleId:O__default.string(),inputs:O__default.record(O__default.string(),O__default.string()).optional()}),Rb=Td.merge(kg.extend({type:O__default.literal("MOBILE_MODULE_STEP")}));kg.extend({steps:O__default.lazy(()=>gc.array())});kg.extend({steps:O__default.lazy(()=>vd.array())});var DM=(n=>(n.V2="2",n.V3="3",n))(DM||{});var FM=O__default.nativeEnum(DM),wfe=Gl.extend({platform:O__default.literal("ANDROID"),resolvedGoal:O__default.string(),steps:O__default.lazy(()=>Bu.array()),autoGeneratedPostcondition:O__default.string().optional()}),Ife=Gl.extend({platform:O__default.literal("IOS"),resolvedGoal:O__default.string(),steps:O__default.lazy(()=>Uu.array()),autoGeneratedPostcondition:O__default.string().optional()}),BM=O__default.discriminatedUnion("platform",[wfe,Ife]),Hu=Td.extend({type:O__default.literal("MOBILE_AI_ACTION_STEP"),text:O__default.string(),version:FM.optional(),cache:BM.optional(),precondition:O__default.string().optional(),postcondition:O__default.string().optional()});var _fe=O__default.discriminatedUnion("type",[Cd,Ng,Em,Og]),UM=nv.extend({command:_fe}),Pfe=O__default.discriminatedUnion("type",[Cd,Ng,Cm,Og]),HM=nv.extend({command:Pfe}),Ofe=O__default.object({assertion:UM,steps:O__default.lazy(()=>gc.array())}),Mfe=O__default.object({assertion:HM,steps:O__default.lazy(()=>vd.array())}),Nfe=xg.extend({blocks:O__default.lazy(()=>Ofe.array()),elseSteps:O__default.lazy(()=>gc.array()).optional()}),Lfe=xg.extend({blocks:O__default.lazy(()=>Mfe.array()),elseSteps:O__default.lazy(()=>vd.array()).optional()}),gc=O__default.discriminatedUnion("type",[Bu,Rb,Hu,Nfe]),vd=O__default.discriminatedUnion("type",[Uu,Rb,Hu,Lfe]);O__default.union([gc.array(),vd.array()]);var GM=O__default.object({parameterNames:O__default.string().array(),defaultParameters:O__default.record(O__default.string(),O__default.string()).optional(),parameterEnums:O__default.record(O__default.string(),O__default.string().array()).optional()}),ov=O__default.object({moduleId:wo,name:O__default.string(),description:O__default.string().nullish(),platform:O__default.nativeEnum(cl).optional().default("ANDROID"),parameters:GM.optional(),enabled:O__default.boolean().nullish(),schemaVersion:O__default.string()}),jM=ov.omit({name:true}),kfe=jM.extend({steps:wz.array()});O__default.object({fileType:O__default.literal(ke.MOBILE_MODULE)}).merge(kfe);var Iz=ov.omit({platform:true,schemaVersion:true});({ANDROID:Iz.extend({platform:O__default.literal("ANDROID"),steps:gc.array()}),IOS:Iz.extend({platform:O__default.literal("IOS"),steps:vd.array()})});var Dg=(t=>(t.MODULE="RESOLVED_MOBILE_MODULE",t))(Dg||{}),xz=O__default.object({description:O__default.string().optional(),name:O__default.string().describe("name of the module"),parameters:GM.optional()}),_z=kg.merge(xz).extend({platform:O__default.literal("ANDROID"),get steps(){return ml.array()}}),Pz=kg.merge(xz).extend({platform:O__default.literal("IOS"),get steps(){return hl.array()}});O__default.discriminatedUnion("platform",[_z,Pz]);var $M=Td.merge(_z).extend({type:O__default.literal("RESOLVED_MOBILE_MODULE")}),VM=Td.merge(Pz).extend({type:O__default.literal("RESOLVED_MOBILE_MODULE")});O__default.discriminatedUnion("platform",[$M,VM]);var Dfe=O__default.object({assertion:UM,get steps(){return ml.array()}}),zM=xg.extend({get blocks(){return Dfe.array()},get elseSteps(){return ml.array().optional()}}),Ffe=O__default.object({assertion:HM,get steps(){return hl.array()}}),WM=xg.extend({get blocks(){return Ffe.array()},get elseSteps(){return hl.array().optional()}}),ml=O__default.discriminatedUnion("type",[$M,Bu,Hu,zM]),hl=O__default.discriminatedUnion("type",[VM,Uu,Hu,WM]);function Oz(e){return Object.values(Dg).includes(e)||Object.values(Du).includes(e)}var Mz=(i=>(i.PRECONDITION="PRECONDITION",i.REPLAY="REPLAY",i.GENERATE="GENERATE",i.AUTOHEAL="AUTOHEAL",i.POSTCONDITION="POSTCONDITION",i))(Mz||{}),Nz=z.enum(["pending","running","success","failed"]),Lz=z.object({type:z.literal("THOUGHT"),text:z.string(),blockId:z.string().optional()}),kz=z.object({type:z.literal("TOOL_CALL"),toolName:z.string()}),Dz=z.object({type:z.literal("PHASE"),phase:z.nativeEnum(Mz),failureMessage:z.string().optional()}),Bfe=z.object({type:z.literal("STEP_UPDATE"),stepIndex:z.number(),step:ml,status:Nz,message:z.string().optional(),afterSnapshotId:z.string().optional()}),Ufe=z.object({type:z.literal("STEP_UPDATE"),stepIndex:z.number(),step:hl,status:Nz,message:z.string().optional(),afterSnapshotId:z.string().optional()}),Fz=z.object({type:z.literal("POSTCONDITION_AUTOGENERATED"),postcondition:z.string()}),Hfe=z.object({type:z.literal("CACHED_STEPS_GENERATED"),cachedSteps:Bu.array(),resolvedGoal:z.string()}),Gfe=z.object({type:z.literal("CACHED_STEPS_GENERATED"),cachedSteps:Uu.array(),resolvedGoal:z.string()}),Bz=z.discriminatedUnion("type",[Lz,kz,Dz,Bfe,Hfe,Fz]),Uz=z.discriminatedUnion("type",[Lz,kz,Dz,Ufe,Gfe,Fz]);var fc=O__default.object({message:O__default.string().optional(),startTime:O__default.number(),endTime:O__default.number(),status:O__default.nativeEnum(Nt),trace:O__default.unknown().optional().optional(),beforeSnapshot:O__default.string().optional(),afterSnapshot:O__default.string().optional(),data:O__default.unknown().optional().optional().describe("output data from the step"),aiSuggested:O__default.boolean().optional(),beforeTestContext:Tg.optional(),afterTestContext:Tg.optional()}),Hz=fc.merge(Bu).extend({previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),jfe=fc.merge(Rb).extend({steps:O__default.lazy(()=>Ds.array()),name:O__default.string().optional(),previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),$fe=fc.merge(Hu).extend({steps:O__default.lazy(()=>Ds.array()),previousAttempts:O__default.lazy(()=>Ds.array()).optional(),failureRecoveryReason:O__default.string().optional(),trajectory:Bz.array().optional()}),Vfe=fc.merge(zM).extend({assertionResult:Hz.optional(),steps:O__default.lazy(()=>Ds.array()),previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),Ds=O__default.discriminatedUnion("type",[Hz,jfe,$fe,Vfe]),Gz=fc.merge(Uu).extend({previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),zfe=fc.merge(Rb).extend({steps:O__default.lazy(()=>Fs.array()),name:O__default.string().optional(),previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Wfe=fc.merge(Hu).extend({steps:O__default.lazy(()=>Fs.array()),previousAttempts:O__default.lazy(()=>Fs.array()).optional(),failureRecoveryReason:O__default.string().optional(),trajectory:Uz.array().optional()}),qfe=fc.merge(WM).extend({assertionResult:Gz.optional(),steps:O__default.lazy(()=>Fs.array()),previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Fs=O__default.discriminatedUnion("type",[Gz,zfe,Wfe,qfe]);var Kfe=fc.extend({index:O__default.number().optional(),userFacingStepReference:O__default.string().optional(),description:O__default.string()}),jz=Kfe.extend({beforeScreenshot:O__default.string().optional(),afterScreenshot:O__default.string().optional()});var $z=z.object({attributesRequired:z.array(z.string()).optional(),textRequired:z.boolean().optional(),boundsRequired:z.boolean().optional(),positionSpecificity:z.enum(ns).optional(),shapeSpecificity:z.enum(ns).optional()}),Yfe=z.object({id:z.number(),requirements:$z}).array();z.object({thoughts:z.string(),id:z.number(),updatedMemory:mS.optional(),inWebview:z.boolean().optional(),requirements:$z.optional(),additionalElements:Yfe.optional()});var Jfe=z.literal("SCROLL_TO"),Vz=z.object({description:z.string(),screenXml:z.string(),screenshot:z.string(),source:Jfe.optional(),memory:z.discriminatedUnion("type",[rl,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional()}),zz=z.object({assertion:z.string(),screenXml:z.string(),screenshot:z.string(),contextChoice:um.optional(),memory:z.discriminatedUnion("type",[lm,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional()});z.object({thoughts:z.string(),result:z.boolean(),relevantElements:z.array(z.number()).optional(),updatedMemory:hS.optional()});var Wz=z.object({failedResults:jz.array(),nextStepsSerialized:z.string().array(),currentScreenXml:z.string(),currentScreenshot:z.string(),customInstructions:z.string().optional(),testDescription:z.string()}),qz=(o=>(o.LEGITIMATE="LEGITIMATE",o.RECOVERABLE="RECOVERABLE",o.INELIGIBLE="INELIGIBLE",o))(qz||{});z.object({thoughts:z.string(),scenario:z.enum(qz),instructions:z.string().nullish(),reasonSummary:z.string().nullish()});z.looseObject({type:z.literal("response.create")});var Kz=z.union([z.looseObject({response:z.looseObject({id:z.string()}),sequence_number:z.number(),type:z.literal("response.completed")}),z.looseObject({code:z.string().nullable(),message:z.string(),sequence_number:z.number(),type:z.literal("error")})]);var Yz="ui_states.jsonl";z.object({stepId:z.string(),parentStepIdChain:z.array(z.string()),fingerprintHash:z.string(),minhash:z.array(z.number().int()),canonicalUrl:z.string(),capturedAt:z.number().describe("Unix timestamp in milliseconds")});var Fg=(s=>(s.TestRun="test-run",s.MobileTestRun="mobile-test-run",s.CreditsUsed="credits-used",s.CreditsUsedV2="credits-used-v2",s.StepsExecuted="steps-executed",s.LLMTokensUsed="llm-tokens-used",s))(Fg||{}),ss=(c=>(c.TestRunner="test-runner",c.Editor="editor",c.Mcp="mcp",c.Explore="explore",c.Heal="heal",c.ResultClassification="result-classification",c.GithubPrSummary="github-pr-summary",c.AppGraph="app-graph",c.RunViewer="run-viewer",c))(ss||{}),Xfe=3;function Qfe(e){return e==="MODULE"||e==="CONDITIONAL"||e==="WHILE_LOOP"||e==="SECTION"||e==="RESOLVED_MODULE"}function Jz(e){if(!Qfe(e))switch(e){case "PRESET_ACTION":return 0;case "AI_ACTION":return 3;case "AI_ACTION_DYNAMIC":return 5;default:(n=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})();}}function Xz(e){switch(e.type){case "AI_EXTRACT":case "AI_ASSERTION":return Xfe;case "CAPTCHA":return 3;case "CLICK":case "TYPE":case "SELECT_OPTION":case "HOVER":case "ELEMENT_CHECK":case "FOCUS":case "BLUR":case "SCROLL_DOWN":case "SCROLL_LEFT":case "SCROLL_RIGHT":case "SCROLL_UP":case "MOUSE_DRAG":return e.useSelector||!e.target||e.target.type!=="description"?0:1;case "DRAG":return e.useSelector?0:1;case "VISUAL_DIFF":case "TAB":case "JAVASCRIPT":case "NAVIGATE":case "WAIT":case "SUCCESS":case "AUTH_LOAD":case "AUTH_SAVE":case "COOKIE":case "DIALOG":case "FILE_UPLOAD":case "GO_BACK":case "GO_FORWARD":case "LOCAL_STORAGE":case "NEW_TAB":case "CLOSE_TAB":case "PAGE_CHECK":case "PRESS":case "KEY_DOWN":case "KEY_UP":case "COPY":case "PASTE":case "REFRESH":case "REQUEST":case "GRAPHQL_REQUEST":case "WAIT_FOR_URL":case "REGISTER_REQUEST_LISTENER":case "AWAIT_LISTENER":case "RECORD_REQUESTS":case "GET_RECORDED_REQUESTS":case "SET_HEADER":case "MOCK_ROUTE":case "REMOVE_ROUTE_MOCK":case "OFFLINE_MODE":return 0;default:(n=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})();}}var qM=z.object({name:z.string(),value:z.string(),url:z.string().optional(),domain:z.string().optional(),path:z.string().optional(),expires:z.number().default(Date.now()/1e3+60*60*24*365),httpOnly:z.boolean().optional(),secure:z.boolean().default(true),sameSite:z.union([z.literal("Strict"),z.literal("Lax"),z.literal("None")]).default("None")});function rv(e,t){let n=[],o=splitCookiesString(e);for(let r of o){let i=parseString(r,{decodeValues:false});if(!i.name)throw new Error("Name missing from cookie");if(!i.value)continue;let s;if(i.sameSite){let d=i.sameSite.trim().toLowerCase();if(d==="strict")s="Strict";else if(d==="lax")s="Lax";else if(d==="none")s="None";else throw new Error(`Invalid sameSite setting in cookie: ${d}`)}i.httpOnly===void 0&&(i.httpOnly=false),!i.path&&i.domain&&(i.path="/"),!i.domain&&t&&(i.domain=t);let a=qM.parse({...i,expires:i.expires?i.expires.getTime()/1e3:void 0,sameSite:s});n.push(a);let l=[a.name,...Object.keys(a)].map(d=>d.toLowerCase()),c=r.match(/\b(\S+)=([^;]*)/g);if(c)for(let d of c){let[u,p]=d.split("=");if(!u||!p)throw new Error(`Invalid key-value pair in cookie: ${d}`);l.includes(u.toLowerCase())||n.push({...a,name:u,value:p});}}return n}var tye=z.object({origin:z.string(),localStorage:z.array(z.object({name:z.string(),value:z.string()})),sessionStorage:z.array(z.object({name:z.string(),value:z.string()})).optional()}),nye=z.object({entries:z.record(z.string(),z.array(z.tuple([z.unknown().optional(),z.unknown().optional()]))),version:z.number().optional()}),iv=z.object({cookies:qM.array().optional(),origins:tye.array().optional(),idb:z.record(z.string(),nye).optional().describe("key is db name")});function Qz(e,t){let n=[];return e.cloneSync()?.serializeSync()?.cookies.forEach(o=>{let r=qM.safeParse({name:o.key,...o});if(!r.success)return;let i=r.data;!i.domain&&!i.url&&(i.domain=t),n.push(i);}),n}var as={type:true,cache:true},Zz=[Cd.pick(as),Em.pick(as),Sb.pick(as),Ab.pick(as),fb.pick(as),hb.pick(as),ub.pick(as)],KM=O__default.discriminatedUnion("type",Zz),eW=[Cd.pick(as),Cm.pick(as),bb.pick(as),Eb.pick(as),yb.pick(as),pb.pick(as),gb.pick(as)],YM=O__default.discriminatedUnion("type",eW);Object.values(zt).filter(e=>Zz.some(t=>t.shape.type.safeParse(e).success));Object.values(zt).filter(e=>eW.some(t=>t.shape.type.safeParse(e).success));var JM=O__default.object({type:O__default.literal("MOBILE_AI_ACTION_STEP"),cache:BM}),sv=O__default.union([KM,JM]),av=O__default.union([YM,JM]);var XM=(s=>(s.US_EAST_1="us-east1",s.US_EAST_2="us-east2",s.US_WEST_1="us-west1",s.US_WEST_2="us-west2",s.EU_NORTH_1="eu-north1",s.AS_SOUTH_1="as-south1",s))(XM||{}),QM=(o=>(o.US="us",o.EU="eu",o.AS="as",o))(QM||{}),tW=(t=>(t.LOCAL="local",t))(tW||{}),ZM=O__default.nativeEnum(XM).or(O__default.nativeEnum(QM)),eN=O__default.nativeEnum(XM).or(O__default.nativeEnum(QM)).or(O__default.nativeEnum(tW)),rye="closest";eN.or(O__default.literal(rye));var Ug=(n=>(n.ANDROID_14="14",n.ANDROID_15="15",n))(Ug||{});var lv=(t=>(t.IOS_26="26",t))(lv||{});var iye=["1.56.1-lim.1","1.60.0-lim.1"],nW=O__default.enum(iye);var oW=O__default.nativeEnum(Ug).or(O__default.nativeEnum(lv));var sye=O__default.object({disableMomenticAccessibilityTree:O__default.boolean().optional(),autoGrantPermissions:O__default.boolean().optional().describe("Automatically grant app permission prompts during the run. Android only."),autoAcceptAlerts:O__default.boolean().optional().describe("Automatically accept native alert dialogs. iOS only."),autoDismissAlerts:O__default.boolean().optional().describe("Automatically dismiss native alert dialogs. iOS only."),disableXmlSnapshots:O__default.boolean().optional().describe("Skip collecting XML snapshots during test runs. This can speed up test runs, but will cause the run viewer to show less information."),browserSettings:vg.optional(),locale:O__default.string().optional().describe("Device locale code (e.g. 'fr', 'en-us'). Sets the device language and region. iOS and Android.")}),aye="avdId",lye="iosDeviceType",cye="iosVersion",tN=sye.extend({region:eN.optional().describe('Where the emulator runs: "local" for an emulator on your machine, or a region for hosted emulators. Defaults to hosted emulators.'),remoteEmulatorSettings:O__default.object({androidVersion:O__default.nativeEnum(Ug).optional()}).optional(),localEmulatorSettings:O__default.object({[aye]:Eg,[lye]:Eg,[cye]:Eg}).optional(),geolocation:O__default.object({latitude:O__default.number().refine(e=>e>=-90&&e<=90,{message:"Latitude must be between -90 and 90 degrees"}),longitude:O__default.number().refine(e=>e>=-180&&e<=180,{message:"Longitude must be between -180 and 180 degrees"})}).optional(),waitForStability:O__default.boolean().optional().describe("wait for stability before every targeting action")});var Ib=O__default.object({retries:O__default.number().optional().describe("number of retries to run"),defaultChannel:O__default.string().optional().describe("Default app release channel to use when installing from managed mobile artifacts."),defaultTag:O__default.string().optional().describe("Default app artifact tag to use. If not set, the latest available tag is used."),defaultEnv:O__default.string().optional().describe("Default mobile environment name to load variables from at runtime."),defaultApkFilePath:Eg.describe("APK to install when using the emulator in the local region."),defaultAppFilePath:Eg.describe("App file (e.g. .app or .ipa) to install when using the emulator in the local region."),emulator:tN.optional().describe("Emulator configuration for local or remote mobile execution, including region and local emulator overrides."),ai:uM.optional().describe("AI behavior overrides for this mobile test, such as memory and failure recovery settings.")}),rW=O__default.object({id:wo,description:O__default.string(),schemaVersion:O__default.string(),settings:Ib.optional(),disabled:O__default.boolean().optional(),labels:O__default.array(O__default.string()).optional()}),Hg=rW.extend({platform:O__default.literal("ANDROID").optional().default("ANDROID")}),Gg=rW.extend({platform:O__default.literal("IOS")}),iW=O__default.discriminatedUnion("platform",[Hg,Gg]),sW=O__default.object({fileType:O__default.literal(ke.MOBILE_TEST)}),aW=sW.merge(Hg),lW=sW.merge(Gg);O__default.discriminatedUnion("platform",[aW,lW]);var cW=Hg.merge(O__default.object({steps:O__default.array(gc)})),dW=Gg.merge(O__default.object({steps:O__default.array(vd)}));O__default.discriminatedUnion("platform",[cW,dW]);var dye=aW.merge(cW),uye=lW.merge(dW);O__default.discriminatedUnion("platform",[dye,uye]);O__default.object({name:O__default.string(),steps:O__default.array(gc).optional(),settings:Ib.optional()});var uW=Hg.extend({steps:ml.array(),beforeSteps:ml.array().optional(),afterSteps:ml.array().optional()}),pW=Gg.extend({steps:hl.array(),beforeSteps:hl.array().optional(),afterSteps:hl.array().optional()});O__default.discriminatedUnion("platform",[uW,pW]);var pye=uW.extend({name:O__default.string()}),mye=pW.extend({name:O__default.string()});O__default.discriminatedUnion("platform",[pye,mye]);var Pr=O__default.object({startTime:O__default.number(),endTime:O__default.number().optional(),durationMs:O__default.number().optional(),error:O__default.string().optional(),result:O__default.unknown().optional().optional(),attributes:O__default.record(O__default.string(),O__default.unknown().optional()),subSpans:O__default.lazy(()=>Oye.array())});var nN=Pr.extend({type:O__default.literal("SECTION"),name:O__default.string()}),hye=Pr.extend({type:O__default.literal("GET_PAGE_STATE")}),gye=Pr.extend({type:O__default.literal("GET_PAGE_SCREENSHOT")}),fye=Pr.extend({type:O__default.literal("SMART_WAITING")}),yye=Pr.extend({type:O__default.literal("SCROLL_ELEMENT_INTO_VIEW")}),Sye=Pr.extend({type:O__default.literal("AI_LOCATOR_CALL"),screenshotSnapshotId:O__default.string().optional(),result:O__default.object({id:O__default.number(),thoughts:O__default.string(),citations:Vo.array().optional()}).optional()}),bye=Pr.extend({type:O__default.literal("AI_ASSERTION_CALL"),screenshotSnapshotId:O__default.string().optional(),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({thoughts:O__default.string(),result:O__default.boolean(),citations:Vo.array().optional()}).optional()}),Tye=Pr.extend({type:O__default.literal("AI_EXTRACTION_CALL"),screenshotSnapshotId:O__default.string().optional(),browserStateSnapshotId:O__default.string().optional(),result:O__default.object({thoughts:O__default.string().optional(),result:O__default.unknown().optional().optional()}).optional()}),Aye=Pr.extend({type:O__default.literal("ELEMENT_ASSERTION"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()}),Eye=Pr.extend({type:O__default.literal("BROWSER_INTERACTION"),name:O__default.string(),coordinates:O__default.object({x:O__default.number(),y:O__default.number()}).optional(),value:O__default.string().optional(),selector:O__default.string().optional()}),Cye=Pr.extend({type:O__default.literal("CACHE_RESOLUTION"),resolutionMethod:O__default.string().optional(),cacheMissReason:O__default.nativeEnum(Wh).optional(),targetSource:O__default.string().optional(),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({serializedElement:O__default.string()}).optional()}),vye=Pr.extend({type:O__default.literal("TARGET_RESOLUTION"),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({serializedElement:O__default.string()}).optional()}),Rye=Pr.extend({type:O__default.literal("LOCATOR_REDIRECT"),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({outcome:O__default.string(),logs:O__default.string().array().optional(),serializedElement:O__default.string().optional(),relativeClickPoint:O__default.object({x:O__default.number(),y:O__default.number()}).optional(),force:O__default.boolean().optional()}).optional()}),wye=Pr.extend({type:O__default.literal("WAIT_FOR_STABILITY")}),Iye=Pr.extend({type:O__default.literal("GENERIC"),name:O__default.string()}),xye=Pr.extend({type:O__default.literal("PAGE_ASSERTION"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()}),_ye=Pr.extend({type:O__default.literal("AUTO_FOLLOW_NEW_TABS"),result:O__default.object({followed:O__default.boolean()}).optional()}),Pye=Pr.extend({type:O__default.literal("VISUAL_DIFF"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()});function mW(e){return e.type==="CACHE_RESOLUTION"||e.type==="TARGET_RESOLUTION"}var Oye=O__default.discriminatedUnion("type",[nN,hye,gye,fye,yye,Sye,bye,Tye,Aye,Eye,vye,Cye,Rye,wye,xye,Pye,Iye,_ye]);z.object({testId:z.string(),sessionId:z.string()});var hW=z.object({uploadUrl:z.string(),id:z.string()});new Set(Object.values(Vn));var bn={AI_ACTION_DYNAMIC:"Ask AI achieve a specific goal. Fully dynamic and does not save the steps for reuse. Our most capable AI agent.",CONDITIONAL:"Execute steps based on the outcome of a conditional check",RESOLVED_MODULE:"A list of steps that can be reused in multiple tests.",AI_ASSERTION:"Ask AI to verify whether something is true on the page.",CLICK:"Click on an element on the page.",DIALOG:"Specify how native browser dialogs should be handled.",AI_EXTRACT:"Ask AI to extract data from the page.",BLUR:"Remove focus from an element on the page.",TYPE:"Type the specified text into an element.",PRESS:"Press the specified keys using the keyboard. (e.g. Control+A)",NAVIGATE:"Navigate to the specified URL.",GO_BACK:"Go back in browser history.",GO_FORWARD:"Go forward in browser history.",REFRESH:"Refresh the page. This will not clear cookies or session data.",TAB:"Switch to different tab in the browser.",NEW_TAB:"Create and switch to a new tab in the browser.",CLOSE_TAB:"Close a specified open tab or current tab if none specified.",COOKIE:"Set a cookie that will persist throughout the browser session.",LOCAL_STORAGE:"Set a localStorage value that will persist throughout the browser session",REQUEST:"Make an API request to a URL.",GRAPHQL_REQUEST:"Make a GraphQL request to a URL.",JAVASCRIPT:"Run JavaScript code in the browser or a Node.js environment.",DRAG:"Click and drag an element to another location.",WAIT_FOR_URL:"Wait for the active page's URL to match a target value or pattern.",COPY:"Copy the specified value to the browser clipboard.",PASTE:"Paste the browser clipboard contents.",SET_HEADER:"Set a header.",MOCK_ROUTE:"Mock network requests to a specific URL.",REMOVE_ROUTE_MOCK:"Remove a previously set route mock."};var Mye=z.string().refine(e=>iu.valid(e),{error:"must be a valid semver string"});function oN(e){return iu.parse(e)||void 0}function xb(e){if(e!==void 0)return e===true||e==="true"||e==="1"}var fW="on-fail";function yW(e){return e==="on-fail"?"on-fail":e==="false"?false:!!e}var SW=(n=>(n.CLI="cli",n.MobileCLI="mobile-cli",n))(SW||{}),Nye=z.nativeEnum(SW),bW=(o=>(o.Error="error",o.Warn="warn",o.Info="info",o))(bW||{}),Lye=z.nativeEnum(bW),kye=z.object({id:z.string(),level:Lye,versionRange:z.string(),announcement:z.string()});z.object({cliType:Nye,version:Mye});var TW=z.object({announcements:z.array(kye)});var _b=55555,cv="momentic-code-eval.js";z.object({body:z.string(),to:z.string(),from:z.string()});z.object({from:z.string().optional(),to:z.string(),timeout:z.number().optional(),beforeDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional()});z.object({timeoutMs:z.number().nonnegative().optional()}).optional();z.object({phoneNumber:z.string(),leaseToken:z.string()});var Dye=z.union([z.string(),z.date()]).transform(e=>e instanceof Date?e:new Date(e)),AW=z.object({phoneNumber:z.string(),expiresAt:Dye,leaseToken:z.string()});z.object({to:z.email(),from:z.string(),subject:z.string(),body:z.string(),html:z.string().optional()});z.object({inbox:z.string().transform(e=>e.toLowerCase()),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),timeout:z.number().optional(),trimWhitespace:z.boolean().optional()});z.object({inbox:z.string(),limit:z.number().optional(),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),trimWhitespace:z.boolean().optional()});var EW=z.object({email:z.string(),prefix:z.string(),expiresAt:z.coerce.date()}),dv=(n=>(n.RAW="RAW",n.RESPONSE="RESPONSE",n))(dv||{}),CW=z.object({body:z.string().nullish(),status:z.number().optional(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}),Fye=z.object({url:z.string(),options:z.object({method:z.string(),body:z.string().nullish(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}).optional()}).optional(),Bye=z.object({body:z.string().nullish(),options:z.object({status:z.number(),statusText:z.string().optional(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}).optional()}).optional(),vW=z.object({result:z.unknown().optional(),variableUpdates:z.record(z.string(),z.unknown().optional()).optional(),persistentVariableUpdates:z.record(z.string(),z.unknown().optional()).optional(),error:z.string().optional(),success:z.boolean()});z.object({id:z.string().optional(),orgId:z.string(),momenticLambdaAuthHash:z.string(),code:z.string(),fragment:z.boolean(),state:z.object({env:z.record(z.string(),z.unknown().optional()),request:Fye,response:Bye,additionalBindings:z.record(z.string(),z.unknown().optional()).optional()}),timeoutMs:z.number().optional(),disallowVariableUpdates:z.boolean().optional(),responseSerialization:z.enum(dv).optional()});var Gu=9e4;var Uye=O.object({url:O.string(),lineNumber:O.number(),columnNumber:O.number()}),RW=O.object({timestamp:O.number(),text:O.string(),type:O.string(),tabIndex:O.number(),args:O.unknown().optional().array().optional(),url:O.string().optional(),location:Uye.optional()}),wW=RW.array(),rN=wW.array();var Pb=class{async getConsoleLogsForRunAttempt(t,n,o){}async getNetworkLogsForRunAttempt(t,n,o){}async getHtmlSnapshot(t,n){}async getA11yTreeSnapshot(t,n){}async getScreenshot(t,n){}async storeConsoleLogsForRunAttempt(t,n,o,r){}async storeNetworkLogsForRunAttempt(t,n,o,r){}listVideoAssetPaths(){return []}close(){}async storeScreenshot(t,n,o){}async storeOnDemandScreenshotById(t,n,o,r){}async storeHtmlSnapshot(t,n,o){}};var Hye=z.object({name:z.string(),version:z.string(),comment:z.string().optional()}),Gye=z.object({name:z.string(),version:z.string(),comment:z.string().optional()}),jye=z.object({onContentLoad:z.number().optional(),onLoad:z.number().optional(),comment:z.string().optional()}),Ob=z.object({startedDateTime:z.string(),id:z.string(),title:z.string().optional(),pageTimings:jye,comment:z.string().optional()}),$ye=z.array(Ob),Vye=z.object({name:z.string(),value:z.string(),path:z.string().optional(),domain:z.string().optional(),expires:z.string().optional(),httpOnly:z.boolean().optional(),secure:z.boolean().optional(),comment:z.string().optional()}),xW=z.array(Vye),zye=z.object({name:z.string(),value:z.string(),comment:z.string().optional()}),_W=z.array(zye),Wye=z.object({name:z.string(),value:z.string(),comment:z.string().optional()}),qye=z.array(Wye),Kye=z.object({name:z.string(),value:z.string().optional(),fileName:z.string().optional(),contentType:z.string().optional(),comment:z.string().optional()}),Yye=z.array(Kye),Jye=z.object({mimeType:z.string(),params:Yye,text:z.string(),comment:z.string().optional(),_redactedReason:z.string().optional()}),Xye=z.object({method:z.string(),url:z.string(),httpVersion:z.string().optional(),cookies:xW,headers:_W,queryString:qye,postData:Jye.optional(),headersSize:z.number().optional(),bodySize:z.number().optional(),comment:z.string().optional()}),Qye=z.object({size:z.number().optional(),compression:z.number().optional(),mimeType:z.string().optional(),text:z.string().optional(),encoding:z.string().optional(),comment:z.string().optional(),_redactedReason:z.string().optional()}),Zye=z.object({status:z.number(),statusText:z.string(),httpVersion:z.string().optional(),cookies:xW,headers:_W,content:Qye,redirectURL:z.string().optional(),headersSize:z.number().optional(),bodySize:z.number().optional(),comment:z.string().optional(),_mocked:z.boolean().optional()}),IW=z.object({expires:z.string().optional(),lastAccess:z.string(),eTag:z.string(),hitCount:z.number(),comment:z.string().optional()}),eSe=z.object({beforeRequest:IW.optional(),afterRequest:IW.optional(),comment:z.string().optional()}),tSe=z.object({blocked:z.number().optional(),dns:z.number().optional(),connect:z.number().optional(),send:z.number(),wait:z.number(),receive:z.number(),ssl:z.number().optional(),comment:z.string().optional()}),Mb=z.object({pageref:z.string().optional(),startedDateTime:z.string(),time:z.number().optional(),request:Xye,response:Zye.optional(),cache:eSe.optional(),timings:tSe,serverIPAddress:z.string().optional(),connection:z.string().optional(),comment:z.string().optional(),_resourceType:z.string().optional()}),nSe=z.array(Mb),oSe=z.object({version:z.string().default("1.1"),creator:Hye.optional(),browser:Gye.optional(),pages:$ye.optional(),entries:nSe,comment:z.string().optional()});z.object({log:oSe});z.record(z.string(),Ob);z.record(z.string(),Mb);function iN(e,t){return {log:{version:"1.2",creator:{name:"Momentic, Inc.",version:"1.0.0"},pages:Object.values(e).sort((n,o)=>new Date(n.startedDateTime).getTime()-new Date(o.startedDateTime).getTime()),entries:Object.values(t).sort((n,o)=>new Date(n.startedDateTime).getTime()-new Date(o.startedDateTime).getTime())}}}var sN=(b=>(b.DisableClickhouseCaches="disable_clickhouse_caches",b.ShowZeroOpacityElements="show_zero_opacity_elements",b.VisualActions="visual_actions",b.RagV2="rag_v2",b.DisableSecondaryCacheResolution="disable_secondary_cache_resolution",b.GlobalLocatorRedirect="global_locator_redirect",b.FakerConstantSeed="faker_constant_seed",b.AutoExpandIframes="auto_expand_iframes",b.MobileNewAiActionStepsUseV3="mobile_new_ai_action_steps_use_v3",b.PerformanceInsights="performance_insights",b.ShowKnowledgeBase="show_knowledge_base",b.AppGraphBackend="app_graph_backend",b.AppGraphUI="app_graph_ui",b.ClassificationUI="classification_ui",b.HealingUI="healing_ui",b.ExploreUI="explore_ui",b.SlackNotifications="slack_notifications",b.SlackNotificationDms="slack_notification_dms",b.ResultClassificationCache="result_classification_cache",b))(sN||{});var ju=z.union([z.string(),z.number(),z.boolean(),z.null(),z.record(z.string(),z.lazy(()=>ju)),z.array(z.lazy(()=>ju))]),Nb=class{flags;payloads;constructor(t,n){this.flags=t,this.payloads=n;}isBooleanFlagEnabled(t){return process.env&&process.env[`MOMENTIC_FLAG_OVERRIDE_${t.toUpperCase()}`]==="true"?true:process.env&&process.env[`MOMENTIC_FLAG_OVERRIDE_${t.toUpperCase()}`]==="false"?false:this.flags[t]===true}getAllFlags(){let t=cloneDeep(this.flags);return Object.entries(t).forEach(([n,o])=>{typeof o=="boolean"&&Object.values(sN).includes(n)&&(t[n]=this.isBooleanFlagEnabled(n));}),t}getFlagPayload(t){let n=this.payloads[t];if(n!==void 0){if(typeof n=="string")try{return JSON.parse(n)}catch{return n}return n}}refresh(){throw new Error("Not implemented")}};var Lb={".123":"application/vnd.lotus-1-2-3",".3dml":"text/vnd.in3d.3dml",".3g2":"video/3gpp2",".3gp":"video/3gpp",".a":"application/octet-stream",".aab":"application/x-authorware-bin",".aac":"audio/x-aac",".aam":"application/x-authorware-map",".aas":"application/x-authorware-seg",".abw":"application/x-abiword",".acc":"application/vnd.americandynamics.acc",".ace":"application/x-ace-compressed",".acu":"application/vnd.acucobol",".acutc":"application/vnd.acucorp",".adp":"audio/adpcm",".aep":"application/vnd.audiograph",".afm":"application/x-font-type1",".afp":"application/vnd.ibm.modcap",".ai":"application/postscript",".aif":"audio/x-aiff",".aifc":"audio/x-aiff",".aiff":"audio/x-aiff",".air":"application/vnd.adobe.air-application-installer-package+zip",".ami":"application/vnd.amiga.ami",".apk":"application/vnd.android.package-archive",".application":"application/x-ms-application",".apr":"application/vnd.lotus-approach",".asc":"application/pgp-signature",".asf":"video/x-ms-asf",".asm":"text/x-asm",".aso":"application/vnd.accpac.simply.aso",".asx":"video/x-ms-asf",".atc":"application/vnd.acucorp",".atom":"application/atom+xml",".atomcat":"application/atomcat+xml",".atomsvc":"application/atomsvc+xml",".atx":"application/vnd.antix.game-component",".au":"audio/basic",".avi":"video/x-msvideo",".aw":"application/applixware",".azf":"application/vnd.airzip.filesecure.azf",".azs":"application/vnd.airzip.filesecure.azs",".azw":"application/vnd.amazon.ebook",".bat":"application/x-msdownload",".bcpio":"application/x-bcpio",".bdf":"application/x-font-bdf",".bdm":"application/vnd.syncml.dm+wbxml",".bh2":"application/vnd.fujitsu.oasysprs",".bin":"application/octet-stream",".bmi":"application/vnd.bmi",".bmp":"image/bmp",".book":"application/vnd.framemaker",".box":"application/vnd.previewsystems.box",".boz":"application/x-bzip2",".bpk":"application/octet-stream",".btif":"image/prs.btif",".bz":"application/x-bzip",".bz2":"application/x-bzip2",".c":"text/x-c",".c4d":"application/vnd.clonk.c4group",".c4f":"application/vnd.clonk.c4group",".c4g":"application/vnd.clonk.c4group",".c4p":"application/vnd.clonk.c4group",".c4u":"application/vnd.clonk.c4group",".cab":"application/vnd.ms-cab-compressed",".car":"application/vnd.curl.car",".cat":"application/vnd.ms-pki.seccat",".cc":"text/x-c",".cct":"application/x-director",".ccxml":"application/ccxml+xml",".cdbcmsg":"application/vnd.contact.cmsg",".cdf":"application/x-netcdf",".cdkey":"application/vnd.mediastation.cdkey",".cdx":"chemical/x-cdx",".cdxml":"application/vnd.chemdraw+xml",".cdy":"application/vnd.cinderella",".cer":"application/pkix-cert",".cgm":"image/cgm",".chat":"application/x-chat",".chm":"application/vnd.ms-htmlhelp",".chrt":"application/vnd.kde.kchart",".cif":"chemical/x-cif",".cii":"application/vnd.anser-web-certificate-issue-initiation",".cil":"application/vnd.ms-artgalry",".cla":"application/vnd.claymore",".class":"application/java-vm",".clkk":"application/vnd.crick.clicker.keyboard",".clkp":"application/vnd.crick.clicker.palette",".clkt":"application/vnd.crick.clicker.template",".clkw":"application/vnd.crick.clicker.wordbank",".clkx":"application/vnd.crick.clicker",".clp":"application/x-msclip",".cmc":"application/vnd.cosmocaller",".cmdf":"chemical/x-cmdf",".cml":"chemical/x-cml",".cmp":"application/vnd.yellowriver-custom-menu",".cmx":"image/x-cmx",".cod":"application/vnd.rim.cod",".com":"application/x-msdownload",".conf":"text/plain",".cpio":"application/x-cpio",".cpp":"text/x-c",".cpt":"application/mac-compactpro",".crd":"application/x-mscardfile",".crl":"application/pkix-crl",".crt":"application/x-x509-ca-cert",".csh":"application/x-csh",".csml":"chemical/x-csml",".csp":"application/vnd.commonspace",".css":"text/css",".cst":"application/x-director",".csv":"text/csv",".cu":"application/cu-seeme",".curl":"text/vnd.curl",".cww":"application/prs.cww",".cxt":"application/x-director",".cxx":"text/x-c",".daf":"application/vnd.mobius.daf",".dataless":"application/vnd.fdsn.seed",".davmount":"application/davmount+xml",".dcr":"application/x-director",".dcurl":"text/vnd.curl.dcurl",".dd2":"application/vnd.oma.dd2+xml",".ddd":"application/vnd.fujixerox.ddd",".deb":"application/x-debian-package",".def":"text/plain",".deploy":"application/octet-stream",".der":"application/x-x509-ca-cert",".dfac":"application/vnd.dreamfactory",".dic":"text/x-c",".diff":"text/plain",".dir":"application/x-director",".dis":"application/vnd.mobius.dis",".dist":"application/octet-stream",".distz":"application/octet-stream",".djv":"image/vnd.djvu",".djvu":"image/vnd.djvu",".dll":"application/x-msdownload",".dmg":"application/octet-stream",".dms":"application/octet-stream",".dna":"application/vnd.dna",".doc":"application/msword",".docm":"application/vnd.ms-word.document.macroenabled.12",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".dot":"application/msword",".dotm":"application/vnd.ms-word.template.macroenabled.12",".dotx":"application/vnd.openxmlformats-officedocument.wordprocessingml.template",".dp":"application/vnd.osgi.dp",".dpg":"application/vnd.dpgraph",".dsc":"text/prs.lines.tag",".dtb":"application/x-dtbook+xml",".dtd":"application/xml-dtd",".dts":"audio/vnd.dts",".dtshd":"audio/vnd.dts.hd",".dump":"application/octet-stream",".dvi":"application/x-dvi",".dwf":"model/vnd.dwf",".dwg":"image/vnd.dwg",".dxf":"image/vnd.dxf",".dxp":"application/vnd.spotfire.dxp",".dxr":"application/x-director",".ecelp4800":"audio/vnd.nuera.ecelp4800",".ecelp7470":"audio/vnd.nuera.ecelp7470",".ecelp9600":"audio/vnd.nuera.ecelp9600",".ecma":"application/ecmascript",".edm":"application/vnd.novadigm.edm",".edx":"application/vnd.novadigm.edx",".efif":"application/vnd.picsel",".ei6":"application/vnd.pg.osasli",".elc":"application/octet-stream",".eml":"message/rfc822",".emma":"application/emma+xml",".eol":"audio/vnd.digital-winds",".eot":"application/vnd.ms-fontobject",".eps":"application/postscript",".epub":"application/epub+zip",".es3":"application/vnd.eszigno3+xml",".esf":"application/vnd.epson.esf",".et3":"application/vnd.eszigno3+xml",".etx":"text/x-setext",".exe":"application/x-msdownload",".ext":"application/vnd.novadigm.ext",".ez":"application/andrew-inset",".ez2":"application/vnd.ezpix-album",".ez3":"application/vnd.ezpix-package",".f":"text/x-fortran",".f4v":"video/x-f4v",".f77":"text/x-fortran",".f90":"text/x-fortran",".fbs":"image/vnd.fastbidsheet",".fdf":"application/vnd.fdf",".fe_launch":"application/vnd.denovo.fcselayout-link",".fg5":"application/vnd.fujitsu.oasysgp",".fgd":"application/x-director",".fh":"image/x-freehand",".fh4":"image/x-freehand",".fh5":"image/x-freehand",".fh7":"image/x-freehand",".fhc":"image/x-freehand",".fig":"application/x-xfig",".fli":"video/x-fli",".flo":"application/vnd.micrografx.flo",".flv":"video/x-flv",".flw":"application/vnd.kde.kivio",".flx":"text/vnd.fmi.flexstor",".fly":"text/vnd.fly",".fm":"application/vnd.framemaker",".fnc":"application/vnd.frogans.fnc",".for":"text/x-fortran",".fpx":"image/vnd.fpx",".frame":"application/vnd.framemaker",".fsc":"application/vnd.fsc.weblaunch",".fst":"image/vnd.fst",".ftc":"application/vnd.fluxtime.clip",".fti":"application/vnd.anser-web-funds-transfer-initiation",".fvt":"video/vnd.fvt",".fzs":"application/vnd.fuzzysheet",".g3":"image/g3fax",".gac":"application/vnd.groove-account",".gdl":"model/vnd.gdl",".geo":"application/vnd.dynageo",".gex":"application/vnd.geometry-explorer",".ggb":"application/vnd.geogebra.file",".ggt":"application/vnd.geogebra.tool",".ghf":"application/vnd.groove-help",".gif":"image/gif",".gim":"application/vnd.groove-identity-message",".gmx":"application/vnd.gmx",".gnumeric":"application/x-gnumeric",".gph":"application/vnd.flographit",".gqf":"application/vnd.grafeq",".gqs":"application/vnd.grafeq",".gram":"application/srgs",".gre":"application/vnd.geometry-explorer",".grv":"application/vnd.groove-injector",".grxml":"application/srgs+xml",".gsf":"application/x-font-ghostscript",".gtar":"application/x-gtar",".gtm":"application/vnd.groove-tool-message",".gtw":"model/vnd.gtw",".gv":"text/vnd.graphviz",".gz":"application/x-gzip",".h":"text/x-c",".h261":"video/h261",".h263":"video/h263",".h264":"video/h264",".hbci":"application/vnd.hbci",".hdf":"application/x-hdf",".hh":"text/x-c",".hlp":"application/winhlp",".hpgl":"application/vnd.hp-hpgl",".hpid":"application/vnd.hp-hpid",".hps":"application/vnd.hp-hps",".hqx":"application/mac-binhex40",".htke":"application/vnd.kenameaapp",".htm":"text/html",".html":"text/html",".hvd":"application/vnd.yamaha.hv-dic",".hvp":"application/vnd.yamaha.hv-voice",".hvs":"application/vnd.yamaha.hv-script",".icc":"application/vnd.iccprofile",".ice":"x-conference/x-cooltalk",".icm":"application/vnd.iccprofile",".ico":"image/x-icon",".ics":"text/calendar",".ief":"image/ief",".ifb":"text/calendar",".ifm":"application/vnd.shana.informed.formdata",".iges":"model/iges",".igl":"application/vnd.igloader",".igs":"model/iges",".igx":"application/vnd.micrografx.igx",".iif":"application/vnd.shana.informed.interchange",".imp":"application/vnd.accpac.simply.imp",".ims":"application/vnd.ms-ims",".in":"text/plain",".ipk":"application/vnd.shana.informed.package",".irm":"application/vnd.ibm.rights-management",".irp":"application/vnd.irepository.package+xml",".iso":"application/octet-stream",".itp":"application/vnd.shana.informed.formtemplate",".ivp":"application/vnd.immervision-ivp",".ivu":"application/vnd.immervision-ivu",".jad":"text/vnd.sun.j2me.app-descriptor",".jam":"application/vnd.jam",".jar":"application/java-archive",".java":"text/x-java-source",".jisp":"application/vnd.jisp",".jlt":"application/vnd.hp-jlyt",".jnlp":"application/x-java-jnlp-file",".joda":"application/vnd.joost.joda-archive",".jpe":"image/jpeg",".jpeg":"image/jpeg",".jpg":"image/jpeg",".jpgm":"video/jpm",".jpgv":"video/jpeg",".jpm":"video/jpm",".js":"application/javascript",".json":"application/json",".kar":"audio/midi",".karbon":"application/vnd.kde.karbon",".kfo":"application/vnd.kde.kformula",".kia":"application/vnd.kidspiration",".kil":"application/x-killustrator",".kml":"application/vnd.google-earth.kml+xml",".kmz":"application/vnd.google-earth.kmz",".kne":"application/vnd.kinar",".knp":"application/vnd.kinar",".kon":"application/vnd.kde.kontour",".kpr":"application/vnd.kde.kpresenter",".kpt":"application/vnd.kde.kpresenter",".ksh":"text/plain",".ksp":"application/vnd.kde.kspread",".ktr":"application/vnd.kahootz",".ktz":"application/vnd.kahootz",".kwd":"application/vnd.kde.kword",".kwt":"application/vnd.kde.kword",".latex":"application/x-latex",".lbd":"application/vnd.llamagraphics.life-balance.desktop",".lbe":"application/vnd.llamagraphics.life-balance.exchange+xml",".les":"application/vnd.hhe.lesson-player",".lha":"application/octet-stream",".link66":"application/vnd.route66.link66+xml",".list":"text/plain",".list3820":"application/vnd.ibm.modcap",".listafp":"application/vnd.ibm.modcap",".log":"text/plain",".lostxml":"application/lost+xml",".lrf":"application/octet-stream",".lrm":"application/vnd.ms-lrm",".ltf":"application/vnd.frogans.ltf",".lvp":"audio/vnd.lucent.voice",".lwp":"application/vnd.lotus-wordpro",".lzh":"application/octet-stream",".m13":"application/x-msmediaview",".m14":"application/x-msmediaview",".m1v":"video/mpeg",".m2a":"audio/mpeg",".m2v":"video/mpeg",".m3a":"audio/mpeg",".m3u":"audio/x-mpegurl",".m4u":"video/vnd.mpegurl",".m4v":"video/x-m4v",".ma":"application/mathematica",".mag":"application/vnd.ecowin.chart",".maker":"application/vnd.framemaker",".man":"text/troff",".mathml":"application/mathml+xml",".mb":"application/mathematica",".mbk":"application/vnd.mobius.mbk",".mbox":"application/mbox",".mc1":"application/vnd.medcalcdata",".mcd":"application/vnd.mcd",".mcurl":"text/vnd.curl.mcurl",".mdb":"application/x-msaccess",".mdi":"image/vnd.ms-modi",".me":"text/troff",".mesh":"model/mesh",".mfm":"application/vnd.mfmp",".mgz":"application/vnd.proteus.magazine",".mht":"message/rfc822",".mhtml":"message/rfc822",".mid":"audio/midi",".midi":"audio/midi",".mif":"application/vnd.mif",".mime":"message/rfc822",".mj2":"video/mj2",".mjp2":"video/mj2",".mkv":"video/x-matroska",".mlp":"application/vnd.dolby.mlp",".mmd":"application/vnd.chipnuts.karaoke-mmd",".mmf":"application/vnd.smaf",".mmr":"image/vnd.fujixerox.edmics-mmr",".mny":"application/x-msmoney",".mobi":"application/x-mobipocket-ebook",".mov":"video/quicktime",".movie":"video/x-sgi-movie",".mp2":"audio/mpeg",".mp2a":"audio/mpeg",".mp3":"audio/mpeg",".mp4":"video/mp4",".mp4a":"audio/mp4",".mp4s":"application/mp4",".mp4v":"video/mp4",".mpa":"video/mpeg",".mpc":"application/vnd.mophun.certificate",".mpe":"video/mpeg",".mpeg":"video/mpeg",".mpg":"video/mpeg",".mpg4":"video/mp4",".mpga":"audio/mpeg",".mpkg":"application/vnd.apple.installer+xml",".mpm":"application/vnd.blueice.multipass",".mpn":"application/vnd.mophun.application",".mpp":"application/vnd.ms-project",".mpt":"application/vnd.ms-project",".mpy":"application/vnd.ibm.minipay",".mqy":"application/vnd.mobius.mqy",".mrc":"application/marc",".ms":"text/troff",".mscml":"application/mediaservercontrol+xml",".mseed":"application/vnd.fdsn.mseed",".mseq":"application/vnd.mseq",".msf":"application/vnd.epson.msf",".msh":"model/mesh",".msi":"application/x-msdownload",".msl":"application/vnd.mobius.msl",".msty":"application/vnd.muvee.style",".mts":"model/vnd.mts",".mus":"application/vnd.musician",".musicxml":"application/vnd.recordare.musicxml+xml",".mvb":"application/x-msmediaview",".mwf":"application/vnd.mfer",".mxf":"application/mxf",".mxl":"application/vnd.recordare.musicxml",".mxml":"application/xv+xml",".mxs":"application/vnd.triscape.mxs",".mxu":"video/vnd.mpegurl",".n-gage":"application/vnd.nokia.n-gage.symbian.install",".nb":"application/mathematica",".nc":"application/x-netcdf",".ncx":"application/x-dtbncx+xml",".ngdat":"application/vnd.nokia.n-gage.data",".nlu":"application/vnd.neurolanguage.nlu",".nml":"application/vnd.enliven",".nnd":"application/vnd.noblenet-directory",".nns":"application/vnd.noblenet-sealer",".nnw":"application/vnd.noblenet-web",".npx":"image/vnd.net-fpx",".nsf":"application/vnd.lotus-notes",".nws":"message/rfc822",".o":"application/octet-stream",".oa2":"application/vnd.fujitsu.oasys2",".oa3":"application/vnd.fujitsu.oasys3",".oas":"application/vnd.fujitsu.oasys",".obd":"application/x-msbinder",".obj":"application/octet-stream",".oda":"application/oda",".odb":"application/vnd.oasis.opendocument.database",".odc":"application/vnd.oasis.opendocument.chart",".odf":"application/vnd.oasis.opendocument.formula",".odft":"application/vnd.oasis.opendocument.formula-template",".odg":"application/vnd.oasis.opendocument.graphics",".odi":"application/vnd.oasis.opendocument.image",".odp":"application/vnd.oasis.opendocument.presentation",".ods":"application/vnd.oasis.opendocument.spreadsheet",".odt":"application/vnd.oasis.opendocument.text",".oga":"audio/ogg",".ogg":"audio/ogg",".ogv":"video/ogg",".ogx":"application/ogg",".onepkg":"application/onenote",".onetmp":"application/onenote",".onetoc":"application/onenote",".onetoc2":"application/onenote",".opf":"application/oebps-package+xml",".oprc":"application/vnd.palm",".org":"application/vnd.lotus-organizer",".osf":"application/vnd.yamaha.openscoreformat",".osfpvg":"application/vnd.yamaha.openscoreformat.osfpvg+xml",".otc":"application/vnd.oasis.opendocument.chart-template",".otf":"application/x-font-otf",".otg":"application/vnd.oasis.opendocument.graphics-template",".oth":"application/vnd.oasis.opendocument.text-web",".oti":"application/vnd.oasis.opendocument.image-template",".otm":"application/vnd.oasis.opendocument.text-master",".otp":"application/vnd.oasis.opendocument.presentation-template",".ots":"application/vnd.oasis.opendocument.spreadsheet-template",".ott":"application/vnd.oasis.opendocument.text-template",".oxt":"application/vnd.openofficeorg.extension",".p":"text/x-pascal",".p10":"application/pkcs10",".p12":"application/x-pkcs12",".p7b":"application/x-pkcs7-certificates",".p7c":"application/pkcs7-mime",".p7m":"application/pkcs7-mime",".p7r":"application/x-pkcs7-certreqresp",".p7s":"application/pkcs7-signature",".pas":"text/x-pascal",".pbd":"application/vnd.powerbuilder6",".pbm":"image/x-portable-bitmap",".pcf":"application/x-font-pcf",".pcl":"application/vnd.hp-pcl",".pclxl":"application/vnd.hp-pclxl",".pct":"image/x-pict",".pcurl":"application/vnd.curl.pcurl",".pcx":"image/x-pcx",".pdb":"application/vnd.palm",".pdf":"application/pdf",".pfa":"application/x-font-type1",".pfb":"application/x-font-type1",".pfm":"application/x-font-type1",".pfr":"application/font-tdpfr",".pfx":"application/x-pkcs12",".pgm":"image/x-portable-graymap",".pgn":"application/x-chess-pgn",".pgp":"application/pgp-encrypted",".pic":"image/x-pict",".pkg":"application/octet-stream",".pki":"application/pkixcmp",".pkipath":"application/pkix-pkipath",".pl":"text/plain",".plb":"application/vnd.3gpp.pic-bw-large",".plc":"application/vnd.mobius.plc",".plf":"application/vnd.pocketlearn",".pls":"application/pls+xml",".pml":"application/vnd.ctc-posml",".png":"image/png",".pnm":"image/x-portable-anymap",".portpkg":"application/vnd.macports.portpkg",".pot":"application/vnd.ms-powerpoint",".potm":"application/vnd.ms-powerpoint.template.macroenabled.12",".potx":"application/vnd.openxmlformats-officedocument.presentationml.template",".ppa":"application/vnd.ms-powerpoint",".ppam":"application/vnd.ms-powerpoint.addin.macroenabled.12",".ppd":"application/vnd.cups-ppd",".ppm":"image/x-portable-pixmap",".pps":"application/vnd.ms-powerpoint",".ppsm":"application/vnd.ms-powerpoint.slideshow.macroenabled.12",".ppsx":"application/vnd.openxmlformats-officedocument.presentationml.slideshow",".ppt":"application/vnd.ms-powerpoint",".pptm":"application/vnd.ms-powerpoint.presentation.macroenabled.12",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".pqa":"application/vnd.palm",".prc":"application/x-mobipocket-ebook",".pre":"application/vnd.lotus-freelance",".prf":"application/pics-rules",".ps":"application/postscript",".psb":"application/vnd.3gpp.pic-bw-small",".psd":"image/vnd.adobe.photoshop",".psf":"application/x-font-linux-psf",".ptid":"application/vnd.pvi.ptid1",".pub":"application/x-mspublisher",".pvb":"application/vnd.3gpp.pic-bw-var",".pwn":"application/vnd.3m.post-it-notes",".pwz":"application/vnd.ms-powerpoint",".py":"text/x-python",".pya":"audio/vnd.ms-playready.media.pya",".pyc":"application/x-python-code",".pyo":"application/x-python-code",".pyv":"video/vnd.ms-playready.media.pyv",".qam":"application/vnd.epson.quickanime",".qbo":"application/vnd.intu.qbo",".qfx":"application/vnd.intu.qfx",".qps":"application/vnd.publishare-delta-tree",".qt":"video/quicktime",".qwd":"application/vnd.quark.quarkxpress",".qwt":"application/vnd.quark.quarkxpress",".qxb":"application/vnd.quark.quarkxpress",".qxd":"application/vnd.quark.quarkxpress",".qxl":"application/vnd.quark.quarkxpress",".qxt":"application/vnd.quark.quarkxpress",".ra":"audio/x-pn-realaudio",".ram":"audio/x-pn-realaudio",".rar":"application/x-rar-compressed",".ras":"image/x-cmu-raster",".rcprofile":"application/vnd.ipunplugged.rcprofile",".rdf":"application/rdf+xml",".rdz":"application/vnd.data-vision.rdz",".rep":"application/vnd.businessobjects",".res":"application/x-dtbresource+xml",".rgb":"image/x-rgb",".rif":"application/reginfo+xml",".rl":"application/resource-lists+xml",".rlc":"image/vnd.fujixerox.edmics-rlc",".rld":"application/resource-lists-diff+xml",".rm":"application/vnd.rn-realmedia",".rmi":"audio/midi",".rmp":"audio/x-pn-realaudio-plugin",".rms":"application/vnd.jcp.javame.midlet-rms",".rnc":"application/relax-ng-compact-syntax",".roff":"text/troff",".rpm":"application/x-rpm",".rpss":"application/vnd.nokia.radio-presets",".rpst":"application/vnd.nokia.radio-preset",".rq":"application/sparql-query",".rs":"application/rls-services+xml",".rsd":"application/rsd+xml",".rss":"application/rss+xml",".rtf":"application/rtf",".rtx":"text/richtext",".s":"text/x-asm",".saf":"application/vnd.yamaha.smaf-audio",".sbml":"application/sbml+xml",".sc":"application/vnd.ibm.secure-container",".scd":"application/x-msschedule",".scm":"application/vnd.lotus-screencam",".scq":"application/scvp-cv-request",".scs":"application/scvp-cv-response",".scurl":"text/vnd.curl.scurl",".sda":"application/vnd.stardivision.draw",".sdc":"application/vnd.stardivision.calc",".sdd":"application/vnd.stardivision.impress",".sdkd":"application/vnd.solent.sdkm+xml",".sdkm":"application/vnd.solent.sdkm+xml",".sdp":"application/sdp",".sdw":"application/vnd.stardivision.writer",".see":"application/vnd.seemail",".seed":"application/vnd.fdsn.seed",".sema":"application/vnd.sema",".semd":"application/vnd.semd",".semf":"application/vnd.semf",".ser":"application/java-serialized-object",".setpay":"application/set-payment-initiation",".setreg":"application/set-registration-initiation",".sfd-hdstx":"application/vnd.hydrostatix.sof-data",".sfs":"application/vnd.spotfire.sfs",".sgl":"application/vnd.stardivision.writer-global",".sgm":"text/sgml",".sgml":"text/sgml",".sh":"application/x-sh",".shar":"application/x-shar",".shf":"application/shf+xml",".si":"text/vnd.wap.si",".sic":"application/vnd.wap.sic",".sig":"application/pgp-signature",".silo":"model/mesh",".sis":"application/vnd.symbian.install",".sisx":"application/vnd.symbian.install",".sit":"application/x-stuffit",".sitx":"application/x-stuffitx",".skd":"application/vnd.koan",".skm":"application/vnd.koan",".skp":"application/vnd.koan",".skt":"application/vnd.koan",".sl":"text/vnd.wap.sl",".slc":"application/vnd.wap.slc",".sldm":"application/vnd.ms-powerpoint.slide.macroenabled.12",".sldx":"application/vnd.openxmlformats-officedocument.presentationml.slide",".slt":"application/vnd.epson.salt",".smf":"application/vnd.stardivision.math",".smi":"application/smil+xml",".smil":"application/smil+xml",".snd":"audio/basic",".snf":"application/x-font-snf",".so":"application/octet-stream",".spc":"application/x-pkcs7-certificates",".spf":"application/vnd.yamaha.smaf-phrase",".spl":"application/x-futuresplash",".spot":"text/vnd.in3d.spot",".spp":"application/scvp-vp-response",".spq":"application/scvp-vp-request",".spx":"audio/ogg",".src":"application/x-wais-source",".srx":"application/sparql-results+xml",".sse":"application/vnd.kodak-descriptor",".ssf":"application/vnd.epson.ssf",".ssml":"application/ssml+xml",".stc":"application/vnd.sun.xml.calc.template",".std":"application/vnd.sun.xml.draw.template",".stf":"application/vnd.wt.stf",".sti":"application/vnd.sun.xml.impress.template",".stk":"application/hyperstudio",".stl":"application/vnd.ms-pki.stl",".str":"application/vnd.pg.format",".stw":"application/vnd.sun.xml.writer.template",".sus":"application/vnd.sus-calendar",".susp":"application/vnd.sus-calendar",".sv4cpio":"application/x-sv4cpio",".sv4crc":"application/x-sv4crc",".svd":"application/vnd.svd",".svg":"image/svg+xml",".svgz":"image/svg+xml",".swa":"application/x-director",".swf":"application/x-shockwave-flash",".swi":"application/vnd.arastra.swi",".sxc":"application/vnd.sun.xml.calc",".sxd":"application/vnd.sun.xml.draw",".sxg":"application/vnd.sun.xml.writer.global",".sxi":"application/vnd.sun.xml.impress",".sxm":"application/vnd.sun.xml.math",".sxw":"application/vnd.sun.xml.writer",".t":"text/troff",".tao":"application/vnd.tao.intent-module-archive",".tar":"application/x-tar",".tcap":"application/vnd.3gpp2.tcap",".tcl":"application/x-tcl",".teacher":"application/vnd.smart.teacher",".tex":"application/x-tex",".texi":"application/x-texinfo",".texinfo":"application/x-texinfo",".text":"text/plain",".tfm":"application/x-tex-tfm",".tgz":"application/x-gzip",".tif":"image/tiff",".tiff":"image/tiff",".tmo":"application/vnd.tmobile-livetv",".torrent":"application/x-bittorrent",".tpl":"application/vnd.groove-tool-template",".tpt":"application/vnd.trid.tpt",".tr":"text/troff",".tra":"application/vnd.trueapp",".trm":"application/x-msterminal",".tsv":"text/tab-separated-values",".ttc":"application/x-font-ttf",".ttf":"application/x-font-ttf",".twd":"application/vnd.simtech-mindmapper",".twds":"application/vnd.simtech-mindmapper",".txd":"application/vnd.genomatix.tuxedo",".txf":"application/vnd.mobius.txf",".txt":"text/plain",".u32":"application/x-authorware-bin",".udeb":"application/x-debian-package",".ufd":"application/vnd.ufdl",".ufdl":"application/vnd.ufdl",".umj":"application/vnd.umajin",".unityweb":"application/vnd.unity",".uoml":"application/vnd.uoml+xml",".uri":"text/uri-list",".uris":"text/uri-list",".urls":"text/uri-list",".ustar":"application/x-ustar",".utz":"application/vnd.uiq.theme",".uu":"text/x-uuencode",".vcd":"application/x-cdlink",".vcf":"text/x-vcard",".vcg":"application/vnd.groove-vcard",".vcs":"text/x-vcalendar",".vcx":"application/vnd.vcx",".vis":"application/vnd.visionary",".viv":"video/vnd.vivo",".vor":"application/vnd.stardivision.writer",".vox":"application/x-authorware-bin",".vrml":"model/vrml",".vsd":"application/vnd.visio",".vsf":"application/vnd.vsf",".vss":"application/vnd.visio",".vst":"application/vnd.visio",".vsw":"application/vnd.visio",".vtu":"model/vnd.vtu",".vxml":"application/voicexml+xml",".w3d":"application/x-director",".webm":"video/webm",".wad":"application/x-doom",".wav":"audio/x-wav",".wax":"audio/x-ms-wax",".wbmp":"image/vnd.wap.wbmp",".wbs":"application/vnd.criticaltools.wbs+xml",".wbxml":"application/vnd.wap.wbxml",".wcm":"application/vnd.ms-works",".wdb":"application/vnd.ms-works",".wiz":"application/msword",".wks":"application/vnd.ms-works",".wm":"video/x-ms-wm",".wma":"audio/x-ms-wma",".wmd":"application/x-ms-wmd",".wmf":"application/x-msmetafile",".wml":"text/vnd.wap.wml",".wmlc":"application/vnd.wap.wmlc",".wmls":"text/vnd.wap.wmlscript",".wmlsc":"application/vnd.wap.wmlscriptc",".wmv":"video/x-ms-wmv",".wmx":"video/x-ms-wmx",".wmz":"application/x-ms-wmz",".wpd":"application/vnd.wordperfect",".wpl":"application/vnd.ms-wpl",".wps":"application/vnd.ms-works",".wqd":"application/vnd.wqd",".wri":"application/x-mswrite",".wrl":"model/vrml",".wsdl":"application/wsdl+xml",".wspolicy":"application/wspolicy+xml",".wtb":"application/vnd.webturbo",".wvx":"video/x-ms-wvx",".x32":"application/x-authorware-bin",".x3d":"application/vnd.hzn-3d-crossword",".xap":"application/x-silverlight-app",".xar":"application/vnd.xara",".xbap":"application/x-ms-xbap",".xbd":"application/vnd.fujixerox.docuworks.binder",".xbm":"image/x-xbitmap",".xdm":"application/vnd.syncml.dm+xml",".xdp":"application/vnd.adobe.xdp+xml",".xdw":"application/vnd.fujixerox.docuworks",".xenc":"application/xenc+xml",".xer":"application/patch-ops-error+xml",".xfdf":"application/vnd.adobe.xfdf",".xfdl":"application/vnd.xfdl",".xht":"application/xhtml+xml",".xhtml":"application/xhtml+xml",".xhvml":"application/xv+xml",".xif":"image/vnd.xiff",".xla":"application/vnd.ms-excel",".xlam":"application/vnd.ms-excel.addin.macroenabled.12",".xlb":"application/vnd.ms-excel",".xlc":"application/vnd.ms-excel",".xlm":"application/vnd.ms-excel",".xls":"application/vnd.ms-excel",".xlsb":"application/vnd.ms-excel.sheet.binary.macroenabled.12",".xlsm":"application/vnd.ms-excel.sheet.macroenabled.12",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".xlt":"application/vnd.ms-excel",".xltm":"application/vnd.ms-excel.template.macroenabled.12",".xltx":"application/vnd.openxmlformats-officedocument.spreadsheetml.template",".xlw":"application/vnd.ms-excel",".xml":"application/xml",".xo":"application/vnd.olpc-sugar",".xop":"application/xop+xml",".xpdl":"application/xml",".xpi":"application/x-xpinstall",".xpm":"image/x-xpixmap",".xpr":"application/vnd.is-xpr",".xps":"application/vnd.ms-xpsdocument",".xpw":"application/vnd.intercon.formnet",".xpx":"application/vnd.intercon.formnet",".xsl":"application/xml",".xslt":"application/xslt+xml",".xsm":"application/vnd.syncml+xml",".xspf":"application/xspf+xml",".xul":"application/vnd.mozilla.xul+xml",".xvm":"application/xv+xml",".xvml":"application/xv+xml",".xwd":"image/x-xwindowdump",".xyz":"chemical/x-xyz",".zaz":"application/vnd.zzazz.deck+xml",".zip":"application/zip",".zir":"application/vnd.zul",".zirz":"application/vnd.zul",".zmm":"application/vnd.handheld-entertainment+xml"},PW=[".sh",".exe",".app",".bat",".cmd",".msi",".apk",".jar",".py",".js",".cron",".php",".asp"];var OW=z.discriminatedUnion("operation",[z.object({operation:z.literal("upsert"),path:z.string().min(1),content:z.string()}),z.object({operation:z.literal("delete"),path:z.string().min(1)})]),sSe=z.object({githubLogin:z.string().optional(),email:z.string().optional()}),aSe=z.object({baseSha:z.string().min(1),headSha:z.string().min(1)}),lSe=z.object({baseBranch:z.string().min(1).max(255),baseCommitSha:z.string().min(1),headBranch:z.string().min(1).max(255).optional(),branchPrefix:z.string().min(1).max(255).optional(),idempotencyKey:z.string().min(1).optional()}),cSe=z.object({commitMessage:z.string().min(1),title:z.string().min(1),body:z.string(),reviewers:z.array(z.string().min(1)).optional(),draft:z.boolean().optional()});lSe.extend(cSe.shape).extend({changes:z.array(OW).min(1),coAuthorRange:aSe.optional()}).superRefine((e,t)=>{e.headBranch||(!e.branchPrefix||!e.idempotencyKey)&&t.addIssue({code:"custom",message:"branchPrefix and idempotencyKey are required when headBranch is omitted",path:["idempotencyKey"]});});var MW=z.object({pullRequestUrl:z.url(),pullRequestNumber:z.number(),headBranch:z.string(),commitSha:z.string(),created:z.boolean(),authors:z.array(sSe).optional()});z.object({branch:z.string().min(1).max(255),commitMessage:z.string().min(1),changes:z.array(OW).min(1)});var NW=z.object({branch:z.string(),commitSha:z.string(),committed:z.boolean()}),LW=z.object({issueNumber:z.number(),htmlUrl:z.url(),headBranch:z.string().min(1),baseBranch:z.string().min(1),latestCommitSha:z.string().min(1),draft:z.boolean().optional(),title:z.string().optional(),body:z.string().optional()});z.object({number:z.number(),htmlUrl:z.url()});var dSe=z.object({path:z.string().min(1),status:z.string().min(1),additions:z.number(),deletions:z.number(),previousPath:z.string().optional(),patch:z.string().optional()}),uSe=z.object({sha:z.string().min(1),author:z.string().optional(),email:z.string().optional(),date:z.string().optional(),message:z.string()}),kW=z.object({mergeBaseSha:z.string().min(1),totalCommits:z.number(),commits:z.array(uSe),files:z.array(dSe)}),DW=z.object({content:z.string().nullable()}),FW=z.object({name:z.string().min(1),protected:z.boolean()}),BW=z.object({iid:z.number(),webUrl:z.url(),sourceBranch:z.string().min(1),targetBranch:z.string().min(1),latestCommitSha:z.string().min(1)}),pSe=z.object({name:z.string(),path:z.string(),body:z.string()}),UW=z.object({template:pSe});function hr(e){let[t,n,...o]=e.split("/");if(!(!t||!n||o.length>0))return {owner:t,repo:n}}function HW(e){let t=hr(e);if(t)return t;throw new mt(`Invalid GitHub repository string: ${e}. Expected format "owner/repo".`)}var mSe=/^co-authored-by:\s*.*?<([^>]+)>\s*$/gim,hSe=/^(?:\d+\+)?([^@]+)@users\.noreply\.github\.com$/i;function uv(e){return e.match(hSe)?.[1]}function GW(e){let t=[];for(let n of e.matchAll(mSe)){let o=n[1]?.trim();o&&t.push({email:o,githubLogin:uv(o)});}return t}function gSe(e){return (e.githubLogin??(e.email?uv(e.email):void 0))?.toLowerCase().endsWith("[bot]")??false}function jW(e){return e.filter(t=>!gSe(t))}var $W="https://static.momentic.ai";function kb(e,t){return {light:`${$W}/${e}.svg`,dark:`${$W}/${e}-dark.svg`,alt:t}}var Db={runGroup:kb("run-group-button","View run group"),basePr:kb("view-base-pr-button","View base PR"),branch:kb("view-branch-button","View branch"),commit:kb("view-commit-button","View commit")};function Fb({href:e,button:t}){return `<a href="${e}"><picture><source media="(prefers-color-scheme: dark)" srcset="${t.dark}" /><img src="${t.light}" alt="${t.alt}" /></picture></a>`}var aN=O__default.object({platformSep:O__default.string(),fullPathSegments:O__default.string().array(),relativePathSegments:O__default.string().array(),relativePath:O__default.string().describe("path relative to the root test directory, i.e. my-folder/my-test.yaml"),fileName:O__default.string().describe("base name of the file including the extension, e.g. my-module.module.yaml"),lastModified:O__default.coerce.date(),createdAt:O__default.coerce.date()});var fSe=z.array(aN.extend({id:z.string(),name:z.string(),description:z.string().optional(),labels:z.string().array().optional()})),ySe=aN.extend({id:z.string(),name:z.string(),description:z.string().optional(),content:pC}),SSe=z.array(ySe);z.object({tests:fSe,modules:SSe,labels:z.string().array()});z.string().array();var VW=z.object({pathSegments:z.string().array()});fM.merge(to);var zW=z.object({schemaVersion:z.string(),stepLists:ec}),WW=to.partial().merge(ai.pick({id:true})),Im="1-255 chars; Only letters/numbers/dashes. Cannot start/end with '-'. Not '.yaml', 'none', or UUID.",lN={name:z.string().min(1).max(255).describe(Im),description:z.string().optional(),baseUrl:z.url().optional().describe("For LLM: Ask the user for the base URL if they don't provide it."),environment:z.string().optional().describe("For LLM: Do not include the variable unless the user explicitly asks for it and use the environment lookup tool to get the correct one before passing here."),browserType:z.enum(dc).optional().describe("For LLM: Never assign this variable unless the user explicitly asks for it."),viewport:bd.optional().describe("For LLM: Never assign this variable unless the user explicitly asks for it."),pathSegments:z.string().array().optional().describe("For LLM: Only use if explicitly called for by the user. Used to create the test in the correct folder. Paths are relative to the project root.")},qW=z.object(lN);fM.extend(z.object({relativeFilePath:z.string().describe("relative to project root")}).shape);var KW=z.object({name:z.string()});z.object({relativeFilePath:z.string()});var YW=z.object({name:z.string(),sourceModuleContent:pC});z.object({relativeFilePath:z.string()});var JW=z.object({name:z.string(),description:z.string(),enabled:z.boolean(),steps:z.lazy(()=>tn.array()),testFilePath:z.string().describe("relative to the project root"),folderPath:z.string().optional().describe("user selected folder path")}),XW=z.object({name:z.string(),description:z.string(),enabled:z.boolean()}).partial(),QW=z.object({folderPath:z.string()}),ZW=z.object({folderPath:z.string()});z.array(qS);var e1=z.object({defaultEnv:z.string().optional().describe("name of the default env, or undefined to unset")}),t1=z.object({configFilePath:z.string().describe("full path on disk")});z.string().array();z.object({message:z.string(),newRelativeTestPath:z.string().optional()});var cN=z.object({name:z.string(),absolutePath:z.string(),relativePath:z.string(),pathSegments:z.array(z.string()),isDirectory:z.boolean(),size:z.number(),createdAt:z.coerce.date(),modifiedAt:z.coerce.date(),accessedAt:z.coerce.date()}),n1=z.object({pathSegments:z.array(z.string())});z.object({absolutePath:z.string(),pathSegments:z.array(z.string()),contents:z.array(cN)});var o1=z.object({sourceDirectoryPath:z.string().optional(),value:z.string(),allowedExtensions:z.array(z.string()).optional()}),bSe=z.object({name:z.string(),value:z.string(),isDirectory:z.boolean()});z.object({suggestions:z.array(bSe)});var r1=z.object({pathSegments:z.array(z.string())}),i1=z.object({pathSegments:z.array(z.string()),newPathSegments:z.array(z.string())}),s1=z.object({pathSegments:z.array(z.string()),recursive:z.boolean().optional()});z.object({success:z.boolean(),message:z.string(),pathSegments:z.array(z.string()).optional()});z.object({gitBranch:z.string(),fileMtime:z.coerce.date(),gitCommitSha:z.string()});var a1=typeof process<"u"&&true&&true,pv=58889,$g=24*60*60*1e3;var l1=z.object({id:z.string(),createdAt:z.coerce.date(),createdBy:z.string(),organizationId:z.string(),name:z.string(),description:z.string().nullish(),enabled:z.boolean(),schemaVersion:z.string().describe("Schema version for steps"),parameters:z.string().array().nullish().describe("Parameter list"),parameterEnums:z.record(z.string(),z.string().array()).nullish(),defaultParameters:z.record(z.string(),z.string()).nullish(),defaultCacheKey:z.string().nullish(),defaultCacheTtl:z.number().nullish(),defaultCacheAllInvocations:z.boolean().nullish(),autoAuth:z.boolean().nullish(),defaultRetries:z.int().min(0).nullish(),advanced:FO.nullish()});l1.extend({steps:z.lazy(()=>Lt.array())});var c1=5*60*1e3,Bb=Qn.extend(l1.omit({id:true,createdAt:true,createdBy:true,organizationId:true,enabled:true}).shape);var TSe="org_01HMJTX4GT1KG94KZRCT8MZ6YB",ASe="org_01HMSCJQBCCG51M2ZF65YC5B8W",ESe="org_01JPR6MGFQSHF3W234R3XJDPMB",CSe=[TSe,ASe,ESe];function d1(e){return CSe.includes(e)}var u1=(o=>(o.AZURE="AZURE",o.KERNEL="KERNEL",o.BROWSERBASE="BROWSERBASE",o))(u1||{}),dN=z.enum(u1);z.object({azureRegion:z.string().optional(),azureWorkspaceId:z.string().optional()});z.object({});var vSe=z.enum(["us-west-2","us-east-1","eu-central-1","ap-southeast-1"]);z.object({region:vSe.optional()});var uN=(t=>(t.TEST_REVIEW="TEST_REVIEW",t))(uN||{});var RSe=z.object({type:z.literal("DESCRIPTION_UPDATE"),thoughts:z.string()}),mv=z.discriminatedUnion("type",[RSe]),wSe=z.object({testId:z.string(),name:z.string(),orgId:z.string(),runId:z.string(),steps:tn.array(),purpose:z.enum(uN),details:mv.or(mv.array()).optional()});wSe.pick({name:true,orgId:true});var ISe=z.object({id:z.string(),name:z.string().nullish(),createdAt:z.string().pipe(z.coerce.date()).or(z.date()),organizationId:z.string(),schemaVersion:z.string(),runId:z.string().nullish(),purpose:z.enum(uN),details:mv.or(mv.array()).optional(),applied:z.boolean().nullish(),appliedAt:z.coerce.date().nullish()}),p1=ISe.extend({steps:tn.array()});var m1=z.enum(["v1","v2"]);var _Se=z.enum(["element","content","attribute","tag_name","style"]),hv=z.enum(["exists","visible","enabled","editable","focused","contains","equals","starts_with"]);[...ej,...ZG].forEach(e=>{if(!hv.options.includes(e.toLowerCase()))throw new Error(`V2CheckConditionSchema is missing option: ${e}`)});var pN={element:{aliasPrefix:"",assertionType:"ELEMENT_EXISTENCE",requiresName:false},content:{aliasPrefix:"Content",assertionType:"ELEMENT_CONTENT",requiresName:false},attribute:{aliasPrefix:"Attribute",assertionType:"ELEMENT_ATTRIBUTE",requiresName:true},tag_name:{aliasPrefix:"Name",assertionType:"ELEMENT_NAME",requiresName:false},style:{aliasPrefix:"Style",assertionType:"ELEMENT_STYLE",requiresName:true}},f1={exists:{positiveAliasSuffix:"Exists",negativeAliasSuffix:"DoesNotExist",elementCondition:"EXISTS",contentOperation:"EXISTS"},visible:{positiveAliasSuffix:"Visible",negativeAliasSuffix:"NotVisible",elementCondition:"VISIBLE"},enabled:{positiveAliasSuffix:"Enabled",negativeAliasSuffix:"NotEnabled",elementCondition:"ENABLED"},editable:{positiveAliasSuffix:"Editable",negativeAliasSuffix:"NotEditable",elementCondition:"EDITABLE"},focused:{positiveAliasSuffix:"Focused",negativeAliasSuffix:"NotFocused",elementCondition:"FOCUSED"},contains:{positiveAliasSuffix:"Contains",negativeAliasSuffix:"DoesNotContain",contentOperation:"CONTAINS"},equals:{positiveAliasSuffix:"Equals",negativeAliasSuffix:"DoesNotEqual",contentOperation:"EQUALS"},starts_with:{positiveAliasSuffix:"StartsWith",negativeAliasSuffix:"DoesNotStartWith",contentOperation:"STARTS_WITH"}},y1={ELEMENT_EXISTENCE:"element",ELEMENT_CONTENT:"content",ELEMENT_ATTRIBUTE:"attribute",ELEMENT_NAME:"tag_name",ELEMENT_STYLE:"style"};function h1(e){return {alias:mN(e),subject:e.subject,condition:e.condition,negated:e.negated,assertionType:pN[e.subject].assertionType,requiresName:pN[e.subject].requiresName,requiresValue:e.subject!=="element"&&e.condition!=="exists"}}function mN(e){let t=pN[e.subject],n=f1[e.condition];if(!S1(e.subject,e.condition))throw new Error(`Unsupported element check alias for subject '${e.subject}' and condition '${e.condition}'.`);let o=e.negated?n.negativeAliasSuffix:n.positiveAliasSuffix;return `checkElement${t.aliasPrefix}${o}`}function S1(e,t){let n=f1[t],o=n.elementCondition,r=n.contentOperation;return e==="element"?o!==void 0:r!==void 0}var PSe=_Se.options.flatMap(e=>hv.options.flatMap(t=>S1(e,t)?[h1({subject:e,condition:t,negated:false}),h1({subject:e,condition:t,negated:true})]:[])),b1=new Map(PSe.map(e=>[e.alias,e]));var OSe=z.enum(ql),MSe=z.enum(Rs);function Hi(e){return b1.get(e)}function A1(e){let t=y1[e.type],n=e.type==="ELEMENT_EXISTENCE"?e.condition:e.operation;return mN({subject:t,condition:NSe(n),negated:e.negated})}function E1(e){return OSe.parse(e.toUpperCase())}function Ub(e){return MSe.parse(e.toUpperCase())}function NSe(e){return hv.parse(e.toLowerCase())}var Ze={saveAs:z.string().optional(),retries:z.number().optional(),skipped:z.boolean().optional(),comment:z.string().optional()};z.object(Ze);var Hb=Object.keys(Ze);function qe(e){return z.union([z.strictObject({[e.key]:e.simplified}),z.strictObject({[e.key]:e.detailed})])}function Kn(e){return z.strictObject({[e.key]:e.detailed})}var C1='Coordinates must be "x, y" pixel values, e.g. "100, 200"',Vg=z.union([Vl,z.string().regex(/^\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*$/,C1)],{error:C1});z.union([z.string(),Vl]);var Hs={css:z.string().optional(),coords:Vg.optional(),x:z.union([z.number(),z.string()]).optional(),y:z.union([z.number(),z.string()]).optional()},gN={on:z.string().optional(),...Hs},Gs={...Ze,useSelector:z.boolean().optional(),force:z.boolean().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional()},Gb={...Gs,offset:Vg.optional()};function Gi({schema:e,descriptionKey:t,required:n=true}){return e.superRefine((o,r)=>{let s=[t in o?Object.entries(o).find(([a])=>a===t)?.[1]:void 0,"css"in o?o.css:void 0,"coords"in o?o.coords:void 0,"x"in o||"y"in o?true:void 0].filter(a=>a!==void 0).length;n&&s!==1&&r.addIssue({code:"custom",message:`Use exactly one target: ${t}, css, coords, or x/y.`}),!n&&s>1&&r.addIssue({code:"custom",message:`Use at most one target: ${t}, css, coords, or x/y.`}),("x"in o||"y"in o)&&(!("x"in o)||o.x===void 0||!("y"in o)||o.y===void 0)&&r.addIssue({code:"custom",message:"x and y must be provided together."});})}var LSe=Gi({descriptionKey:"on",schema:z.strictObject({...gN,...Gb,times:z.int().min(1).optional(),rightClick:z.boolean().optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),kSe=Gi({descriptionKey:"on",schema:z.strictObject({...gN,...Gb,rightClick:z.boolean().optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),DSe=Gi({descriptionKey:"on",schema:z.strictObject({...gN,...Gb,times:z.int().min(1).optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),v1=qe({key:"click",simplified:z.string(),detailed:LSe}),R1=qe({key:"doubleClick",simplified:z.string(),detailed:kSe}),w1=qe({key:"rightClick",simplified:z.string(),detailed:DSe}),FSe=Gi({descriptionKey:"into",required:false,schema:z.strictObject({text:z.string(),into:z.string().optional(),...Hs,...Gb,pressEnter:z.boolean().optional(),clear:z.union([z.literal("inputs"),z.literal("always"),z.literal("never"),z.boolean()]).optional(),delay:z.number().optional()})}),I1=qe({key:"type",simplified:z.string(),detailed:FSe}),x1=Kn({key:"select",detailed:Gi({descriptionKey:"from",schema:z.strictObject({from:z.string().optional(),...Hs,label:z.string().optional(),value:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),...Gs})}).superRefine((e,t)=>{[e.label,e.value,e.index].filter(o=>o!==void 0).length!==1&&t.addIssue({code:"custom",message:"select requires exactly one of label, value, or index"});})}),_1=qe({key:"hover",simplified:z.string(),detailed:Gi({descriptionKey:"on",schema:z.strictObject({on:z.string().optional(),...Hs,...Gb})})}),P1=Kn({key:"blur",detailed:Gi({descriptionKey:"on",required:false,schema:z.strictObject({on:z.string().optional(),...Hs,...Gs})})}),O1=qe({key:"focus",simplified:z.string(),detailed:Gi({descriptionKey:"on",schema:z.strictObject({on:z.string().optional(),...Hs,...Gs})})}),M1=Kn({key:"dragAndDrop",detailed:z.strictObject({from:z.string().optional(),to:z.string().optional(),fromCss:z.string().optional(),toCss:z.string().optional(),fromCoords:Vg.optional(),toCoords:Vg.optional(),fromX:z.union([z.number(),z.string()]).optional(),fromY:z.union([z.number(),z.string()]).optional(),toX:z.union([z.number(),z.string()]).optional(),toY:z.union([z.number(),z.string()]).optional(),steps:z.number().optional(),hover:z.number().optional(),...Gs}).superRefine((e,t)=>{let n=[e.from,e.fromCss,e.fromCoords,e.fromX!==void 0||e.fromY!==void 0?true:void 0].filter(r=>r!==void 0).length,o=[e.to,e.toCss,e.toCoords,e.toX!==void 0||e.toY!==void 0?true:void 0].filter(r=>r!==void 0).length;n!==1&&t.addIssue({code:"custom",message:"Use exactly one from target."}),o!==1&&t.addIssue({code:"custom",message:"Use exactly one to target."}),(e.fromX!==void 0||e.fromY!==void 0)&&(e.fromX===void 0||e.fromY===void 0)&&t.addIssue({code:"custom",message:"fromX and fromY must be provided together."}),(e.toX!==void 0||e.toY!==void 0)&&(e.toX===void 0||e.toY===void 0)&&t.addIssue({code:"custom",message:"toX and toY must be provided together."});})}),N1=z.union([z.strictObject({mouseDrag:Vg}),z.strictObject({mouseDrag:Gi({descriptionKey:"from",required:false,schema:z.strictObject({from:z.string().optional(),...Hs,delta:Vg,steps:z.number().optional(),...Gs})})})]),L1=qe({key:"press",simplified:z.string(),detailed:z.strictObject({key:z.string(),repeat:z.number().optional(),delay:z.number().optional(),convertMeta:z.boolean().optional(),...Ze})}),k1=qe({key:"keyDown",simplified:z.string(),detailed:z.strictObject({key:z.string(),convertMeta:z.boolean().optional(),...Ze})}),D1=qe({key:"keyUp",simplified:z.string(),detailed:z.strictObject({key:z.string(),convertMeta:z.boolean().optional(),...Ze})}),F1=qe({key:"navigate",simplified:z.string(),detailed:z.strictObject({url:z.string(),timeout:z.number().optional(),...Ze})}),B1=qe({key:"newTab",simplified:z.string(),detailed:z.strictObject({url:z.string(),timeout:z.number().optional(),...Ze})}),U1=qe({key:"switchTab",simplified:z.union([z.number(),z.string()]),detailed:z.strictObject({substring:z.string().optional(),regex:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{[e.substring,e.regex,e.index].filter(o=>o!==void 0).length!==1&&t.addIssue({code:"custom",message:"switchTab requires exactly one of substring, regex, or index"});})}),H1=Kn({key:"closeTab",detailed:z.strictObject({substring:z.string().optional(),regex:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{[e.substring,e.regex,e.index].filter(o=>o!==void 0).length<=1||t.addIssue({code:"custom",message:"closeTab accepts at most one of substring, regex, or index"});})}),G1=Kn({key:"goBack",detailed:z.strictObject(Ze)}),j1=Kn({key:"goForward",detailed:z.strictObject(Ze)}),$1=Kn({key:"refresh",detailed:z.strictObject({timeout:z.number().optional(),...Ze})}),gv=z.enum(["goBack","goForward","refresh","paste","authSave","offline","online","blur","visualDiff","captcha","closeTab"]),V1=qe({key:"scrollUp",simplified:z.number().nonnegative(),detailed:Gi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),z1=qe({key:"scrollDown",simplified:z.number().nonnegative(),detailed:Gi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),W1=qe({key:"scrollLeft",simplified:z.number().nonnegative(),detailed:Gi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),q1=qe({key:"scrollRight",simplified:z.number().nonnegative(),detailed:Gi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),K1=qe({key:"wait",simplified:z.number(),detailed:z.strictObject({ms:z.number(),...Ze})}),BSe=qe({key:"assert",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),source:z.string().optional(),...Ze})}),USe=qe({key:"assertVisually",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),source:z.string().optional(),...Ze})}),fv=BSe,yv=USe,Y1=qe({key:"checkPageContains",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),iframe:z.string().optional(),...Ze})}),J1=qe({key:"checkPageDoesNotContain",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),iframe:z.string().optional(),...Ze})}),fN=z.union([Y1,J1]),HSe=z.record(z.string(),z.unknown().optional()),Sv=HSe.superRefine((e,t)=>{let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}let r=Hi(o);if(r===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}if(typeof e[r.alias]=="string")return;let i=Gi({descriptionKey:"element",schema:z.looseObject({element:z.string().optional(),...Hs,...Gs,timeout:z.number().optional(),name:z.string().optional(),value:z.string().optional()})}).safeParse(e[r.alias]);if(!i.success){t.addIssue({code:"custom",message:`element check alias '${r.alias}' must be a string target or detailed object`,path:[r.alias]});return}r.requiresName&&i.data.name===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a name`,path:[r.alias,"name"]}),r.requiresValue&&i.data.value===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a value`,path:[r.alias,"value"]});}),X1=qe({key:"extract",simplified:z.string(),detailed:z.strictObject({goal:z.string(),schema:ju.optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),...Ze})}),Q1=qe({key:"cookie",simplified:z.string(),detailed:z.strictObject({value:z.string(),...Ze})}),Z1=Kn({key:"localStorage",detailed:z.strictObject({key:z.string(),value:z.string(),...Ze})}),eq=qe({key:"request",simplified:z.string(),detailed:z.strictObject({url:z.string(),method:ud.optional(),headers:z.record(z.string(),z.string()).optional(),params:z.record(z.string(),z.string()).optional(),body:ju.optional(),contentType:z.enum(Kl).optional(),timeout:z.number().optional(),...Ze})}),tq=Kn({key:"graphqlRequest",detailed:z.strictObject({url:z.string(),query:z.string(),variables:ju.optional(),headers:z.record(z.string(),z.string()).optional(),timeout:z.number().optional(),...Ze})}),bv=qe({key:"javascript",simplified:z.string(),detailed:z.strictObject({code:z.string(),environment:z.enum(["node","browser","NODE","BROWSER"]).optional(),fragment:z.boolean().optional(),timeout:z.number().optional(),...Ze})}),zg={substring:z.string().optional(),glob:z.string().optional(),regex:z.string().optional(),domain:z.string().optional()};function GSe(e){return [e.substring,e.glob,e.regex,e.domain].filter(t=>t!==void 0).length}function Wg(e){let t=GSe(e.payload);if(e.required&&t!==1||!e.required&&t>1){e.ctx.addIssue({code:"custom",message:e.required?"requires exactly one of substring, glob, regex, or domain":"requires at most one of substring, glob, regex, or domain"});return}!e.required&&t===0&&e.payload.method&&e.ctx.addIssue({code:"custom",message:"method requires a URL matcher"});}var nq=Kn({key:"header",detailed:z.strictObject({name:z.string(),value:z.string(),...zg,method:z.string().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:false});})}),oq=Kn({key:"mock",detailed:z.strictObject({...zg,method:z.string().optional(),responseGenerator:z.string(),fetchOriginalResponse:z.boolean().optional(),key:z.string().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),rq=qe({key:"removeRouteMock",simplified:z.string(),detailed:z.strictObject({key:z.string().optional(),...Ze})}),iq=qe({key:"waitForUrl",simplified:z.string(),detailed:z.strictObject({...zg,caseInsensitive:z.boolean().optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),sq=qe({key:"waitForUrlNotToMatch",simplified:z.string(),detailed:z.strictObject({...zg,caseInsensitive:z.boolean().optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),jSe=z.union([iq,sq]),aq=qe({key:"dialog",simplified:z.enum(["ACCEPT","DISMISS"]),detailed:z.strictObject({action:z.enum(["ACCEPT","DISMISS"]),...Ze})}),lq=qe({key:"fileUpload",simplified:z.string(),detailed:z.strictObject({path:z.string(),name:z.string().optional(),...Ze})}),cq=qe({key:"copy",simplified:z.union([z.string(),z.boolean(),z.null()]),detailed:z.strictObject({value:z.union([z.string(),z.boolean(),z.null()]),...Ze})}),dq=Kn({key:"paste",detailed:z.strictObject(Ze)}),uq=Kn({key:"captcha",detailed:z.strictObject({...Gs})}),$Se=z.strictObject({data:z.union([z.string(),ol]),width:z.number(),height:z.number()}),pq=qe({key:"visualDiff",simplified:z.string(),detailed:Gi({descriptionKey:"on",required:false,schema:z.strictObject({on:z.string().optional(),...Hs,threshold:z.number().optional(),screenshot:$Se.optional(),...Gs})})}),mq=Kn({key:"offline",detailed:z.strictObject(Ze)}),hq=Kn({key:"online",detailed:z.strictObject(Ze)}),gq=Kn({key:"registerRequestListener",detailed:z.strictObject({...zg,key:z.string(),method:z.string().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),fq=qe({key:"awaitListener",simplified:z.string(),detailed:z.strictObject({key:z.string(),timeout:z.number().optional(),...Ze})}),yq=Kn({key:"recordRequests",detailed:z.strictObject({...zg,key:z.string(),method:z.string().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),Sq=qe({key:"getRecordedRequests",simplified:z.string(),detailed:z.strictObject({key:z.string(),...Ze})}),bq=qe({key:"authLoad",simplified:z.string(),detailed:z.strictObject({path:z.string(),...Ze})}),Tq=qe({key:"authSave",simplified:z.string(),detailed:z.strictObject({path:z.string().optional(),...Ze})});z.union([v1,R1,w1,U1,H1,I1,x1,_1,P1,O1,M1,N1,L1,k1,D1,F1,B1,G1,j1,$1,V1,z1,W1,q1,K1,fv,yv,fN,X1,Q1,Z1,eq,tq,bv,nq,oq,rq,jSe,aq,lq,cq,dq,uq,pq,mq,hq,gq,fq,yq,Sq,bq,Tq,Sv]);var Aq=new Map([["click",v1],["doubleClick",R1],["rightClick",w1],["switchTab",U1],["closeTab",H1],["type",I1],["select",x1],["hover",_1],["blur",P1],["focus",O1],["dragAndDrop",M1],["mouseDrag",N1],["press",L1],["keyDown",k1],["keyUp",D1],["navigate",F1],["newTab",B1],["goBack",G1],["goForward",j1],["refresh",$1],["scrollUp",V1],["scrollDown",z1],["scrollLeft",W1],["scrollRight",q1],["wait",K1],["assert",fv],["assertVisually",yv],["checkPageContains",Y1],["checkPageDoesNotContain",J1],["extract",X1],["cookie",Q1],["localStorage",Z1],["request",eq],["graphqlRequest",tq],["javascript",bv],["header",nq],["mock",oq],["removeRouteMock",rq],["waitForUrl",iq],["waitForUrlNotToMatch",sq],["dialog",aq],["fileUpload",lq],["copy",cq],["paste",dq],["captcha",uq],["visualDiff",pq],["offline",mq],["online",hq],["registerRequestListener",gq],["awaitListener",fq],["recordRequests",yq],["getRecordedRequests",Sq],["authLoad",bq],["authSave",Tq]]),Eq=Object.freeze([...Aq.keys()]),bc=z.custom().superRefine((e,t)=>{if(typeof e!="object"||e===null){t.addIssue({code:"custom",message:"Steps must be objects with exactly one action key."});return}let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"Steps must have exactly one action key."});return}let r=Aq.get(o)??(Hi(o)?Sv:void 0);if(!r){t.addIssue({code:"custom",message:`Unsupported step type '${o}'.`});return}let i=r.safeParse(e);if(!i.success){let s=VSe(i.error.issues,o);s.length>0&&Cq(t,s);}});function VSe(e,t){return zSe(e).filter(n=>!WSe(n,t))}function Cq(e,t){for(let n of t){if(n.code==="invalid_union"){Cq(e,yN(n));continue}e.addIssue({...n});}}function zSe(e){let t=[];for(let n of e){if(n.code==="invalid_union"){t.push(...yN(n));continue}t.push(n);}return t}function WSe(e,t){return e.code!=="unrecognized_keys"?false:t===void 0?e.path.length===0:e.path.length===1&&e.path[0]===t}function yN(e){let t=e.errors[0]??[],n=hN(t);for(let o of e.errors.slice(1)){let r=hN(o);r>n&&(t=o,n=r);}return t}function hN(e){return e.reduce((t,n)=>{let o=n.code==="invalid_union"?hN(yN(n)):0;return t+n.path.length+o},0)}var vq=z.strictObject({string:z.string()}),qSe=z.strictObject({javascript:z.string()}),Rq=z.union([vq,qSe]),KSe=z.union([z.strictObject({name:z.string(),required:z.boolean().optional(),default:vq.optional()}),z.strictObject({name:z.string(),required:z.boolean().optional(),defaultValue:z.string()})]),wq=KSe.array(),YSe=z.strictObject({name:z.string(),default:Rq.optional(),enum:z.array(z.string()).optional()}),Iq=YSe.array(),jb=z.union([Rq,z.string()]),xq=z.record(z.string(),jb);var JSe=z.preprocess(e=>typeof e=="number"?String(e):e,RO),Tv=z.looseObject({goal:z.string(),version:JSe.optional(),...Ze}),XSe=z.union([z.strictObject({act:z.string()}),z.strictObject({act:Tv})]),SN=z.looseObject({path:z.string(),inputs:z.record(z.string(),jb).optional(),...Ze}),QSe=z.union([z.strictObject({module:z.string()}),z.strictObject({module:SN})]),xd=z.union([fv,yv,fN,bv,Sv]),ZSe=new Set(["then",...Hb]),ebe=z.looseObject({then:z.lazy(()=>gl.array()),...Ze}).superRefine((e,t)=>{Object.entries(e).filter(([o,r])=>!ZSe.has(o)&&xd.safeParse({[o]:r}).success).length!==1&&t.addIssue({code:"custom",message:"Conditional steps require exactly one assertion condition at the top level."});}),tbe=z.strictObject({if:ebe}),nbe=new Set(["do","maxIterations",...Hb]),obe=z.looseObject({do:z.lazy(()=>gl.array()),maxIterations:z.number().int().positive().optional(),...Ze}).superRefine((e,t)=>{let n=Object.entries(e).filter(([o,r])=>!nbe.has(o)&&xd.safeParse({[o]:r}).success).length;if(n>1){t.addIssue({code:"custom",message:"While loops accept at most one condition at the top level."});return}n===0&&e.maxIterations===void 0&&t.addIssue({code:"custom",message:"While loops require a condition or a maximum number of iterations."});}),rbe=z.strictObject({while:obe}),gl=z.lazy(()=>z.union([gv,XSe,QSe,tbe,rbe,bc]));z.object({before:gl.array().optional(),steps:gl.array(),after:gl.array().optional()});var ibe=z.union([bd,z.string().refine(e=>{let t=e.match(/^\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*$/);if(!t)return false;let[,n,o]=t;return bd.safeParse({width:Number(n),height:Number(o)}).success},"Viewport must be two numeric values, e.g. 1920, 1080")]),sbe=Ns.omit({viewport:true}).extend({viewport:ibe.optional()}),bN=z.object({id:wo,version:z.string().optional(),url:hC.optional(),description:z.string().optional(),retries:z.number().optional(),defaultEnv:z.string().optional(),parameters:wq.optional(),outputs:BC.optional(),disabled:z.boolean().optional(),labels:z.array(z.string()).optional()}).extend(sbe.shape),Vu=z.looseObject({fileType:z.literal(ke.TEST_V2)}).extend(bN.shape).extend({before:gl.array().optional(),steps:gl.array(),after:gl.array().optional()});var abe=z.array(z.string()),lbe=z.union([z.string(),z.record(z.string(),z.unknown().optional())]),Av=Qn.omit({moduleId:true,name:true,parameters:true,defaultParameters:true,parameterEnums:true}).extend({id:wo,version:z.string().optional(),name:z.string().optional(),parameters:z.union([Iq,abe]).optional(),defaultParameters:z.record(z.string(),z.string()).optional(),parameterEnums:z.record(z.string(),z.array(z.string())).optional()}),Ev=z.looseObject(Av.extend({fileType:z.literal(ke.MODULE_V2),steps:lbe.array().optional()}).shape).superRefine(Pq),Cv=z.looseObject(Av.extend({fileType:z.literal(ke.MODULE_V2),steps:gl.array().optional()}).shape).superRefine(Pq);function _q(e){return e.steps??[]}function Pq(e,t){"main"in e&&t.addIssue({code:"custom",message:"v2 modules must use steps, not main",path:["main"]});}var TN=(n=>(n.TEST="TEST",n.MODULE="MODULE",n))(TN||{}),cbe=z.enum(TN),Oq=z.object({orgId:z.string(),entityType:cbe,entityId:z.string()}),AN=Oq.extend({entityType:z.literal("TEST"),stepLists:il}),EN=Oq.extend({entityType:z.literal("MODULE"),steps:Lt.array()});z.discriminatedUnion("entityType",[AN,EN]);var Mq=(o=>(o.WEB="web",o.ANDROID="android",o.IOS="ios",o))(Mq||{}),CN=z.nativeEnum(Mq);var Nq=z.object({entity_type:z.string(),value:z.string(),schema_version:z.string().optional()}),Lq=wS(Nq),kq=Nq.extend({cache_key:z.string()});function $b({entityType:e,entityId:t}){return `${e}:${t}`}var Pm=z.string();var Dq='Coordinates must be "x, y" pixel values, e.g. "100, 200"',Hq=z.union([Vl,z.string().regex(/^\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*$/,Dq)],{error:Dq}),Fq='Percent must be a number or a percent string, e.g. 90 or "90%"',Gq=z.union([z.number(),z.string().regex(/^-?\d+(?:\.\d+)?%$/,Fq)],{error:Fq}).transform(e=>typeof e=="number"?e:Number(e.slice(0,-1))).pipe(z.number().min(0,{message:"Percent must be >= 0"}).max(100,{message:"Percent must be <= 100"})),dbe=z.strictObject({x:z.number(),y:z.number(),delta:z.number()}),jq=z.union([z.string(),dbe]),Pn={...Ze,DANGEROUS_FORCE_DYNAMIC:z.boolean().optional()},ube=["home","power","back","app_switcher","search","volume_up","volume_down","volume_mute"],pbe=["enter","backspace","close_keyboard"],Bq=["airplane_mode","data","wifi","location"],Uq=["portrait","landscape"],mbe=z.strictObject({on:Pm.optional(),longPress:z.boolean().optional(),longPressDuration:z.number().optional(),iterations:z.number().optional(),tapDelay:z.number().optional(),offset:Hq.optional(),...Pn}),$q=qe({key:"tap",simplified:Pm,detailed:mbe}),hbe=z.strictObject({text:z.string(),into:Pm.optional(),clearContent:z.boolean().optional(),forceClearContent:z.boolean().optional(),delay:z.number().optional(),replaceStrategy:z.nativeEnum(Tb).optional(),keyPressDelay:z.number().optional(),...Pn}),Vq=qe({key:"type",simplified:z.string(),detailed:hbe}),zq=z.enum(ube),gbe=z.strictObject({key:zq,longPress:z.boolean().optional(),...Pn}),Wq=qe({key:"press",simplified:zq,detailed:gbe}),qq=z.enum(pbe),fbe=z.strictObject({key:qq,repeat:z.number().optional(),delay:z.number().optional(),keyPressDelay:z.number().optional(),...Pn}),Kq=qe({key:"pressKey",simplified:qq,detailed:fbe}),ybe=z.strictObject({package:z.string(),activity:z.string().optional(),intentExtras:z.string().optional(),...Pn}),Yq=qe({key:"openApp",simplified:z.string(),detailed:ybe}),Jq=Kn({key:"killApp",detailed:z.strictObject(Pn)}),Xq=Kn({key:"openNotifications",detailed:z.strictObject(Pn)}),Qq=z.enum(["up","down","left","right"]),Sbe=z.strictObject({direction:Qq,in:jq.optional(),viewportPercent:Gq.optional(),duration:z.number().optional(),offset:Hq.optional(),...Pn}),Zq=qe({key:"swipe",simplified:Qq,detailed:Sbe}),bbe=z.enum(["up","down"]),Tbe=z.strictObject({on:Pm,direction:bbe.optional(),in:jq.optional(),scrollStepPercent:Gq.optional(),maxScrollAttempts:z.number().optional(),...Pn}),e2=qe({key:"scrollTo",simplified:z.string(),detailed:Tbe}),vN=qe({key:"assert",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),...Pn})}),RN=qe({key:"assertVisually",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),...Pn})}),t2=qe({key:"extract",simplified:z.string(),detailed:z.strictObject({goal:z.string(),schema:ju.optional(),...Pn})}),n2=qe({key:"checkScreenContains",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),...Pn})}),o2=qe({key:"checkScreenDoesNotContain",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),...Pn})}),r2=z.union([n2,o2]),Abe=z.record(z.string(),z.unknown().optional()),wN=Abe.superRefine((e,t)=>{let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}let r=Hi(o);if(r===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}if(typeof e[r.alias]=="string")return;let i=z.looseObject({on:Pm.optional(),timeout:z.number().optional(),name:z.string().optional(),value:z.string().optional(),...Pn}).safeParse(e[r.alias]);if(!i.success){t.addIssue({code:"custom",message:`element check alias '${r.alias}' must be a string target or detailed object`,path:[r.alias]});return}i.data.on===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a target via 'on'`,path:[r.alias,"on"]}),r.requiresName&&i.data.name===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a name`,path:[r.alias,"name"]}),r.requiresValue&&i.data.value===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a value`,path:[r.alias,"value"]});}),Ebe=z.strictObject({from:Pm,to:Pm,hoverDuration:z.number().optional(),dragDuration:z.number().optional(),...Pn}),i2=Kn({key:"dragAndDrop",detailed:Ebe}),IN=qe({key:"javascript",simplified:z.string(),detailed:z.strictObject({code:z.string(),timeout:z.number().optional(),...Pn})}),s2=qe({key:"request",simplified:z.string(),detailed:z.strictObject({url:z.string(),method:ud.optional(),headers:z.record(z.string(),z.string()).optional(),params:z.record(z.string(),z.string()).optional(),body:z.string().optional(),bodyType:z.nativeEnum(Kl).optional(),timeout:z.number().optional(),...Pn})}),a2=qe({key:"wait",simplified:z.number(),detailed:z.strictObject({ms:z.number(),...Pn})}),l2=qe({key:"visualDiff",simplified:z.string(),detailed:z.strictObject({path:z.string(),threshold:z.number().min(0).max(1).optional(),...Pn})}),c2=Kn({key:"addFile",detailed:z.strictObject({path:z.string(),location:z.string(),...Pn})}),d2=qe({key:"installApp",simplified:z.string(),detailed:z.strictObject({path:z.string(),...Pn})}),u2=qe({key:"uninstallApp",simplified:z.string(),detailed:z.strictObject({package:z.string(),...Pn})}),p2=qe({key:"toggleSettings",simplified:z.enum(Bq),detailed:z.strictObject({setting:z.enum(Bq),...Pn})}),m2=qe({key:"rotate",simplified:z.enum(Uq),detailed:z.strictObject({orientation:z.enum(Uq),...Pn})}),h2=qe({key:"adb",simplified:z.string(),detailed:z.strictObject({command:z.string(),args:z.string().optional(),...Pn})}),g2=Kn({key:"appium",detailed:z.strictObject({script:z.string(),args:z.string().optional(),...Pn})}),f2=Kn({key:"debugState",detailed:z.strictObject(Pn)}),y2=z.enum(["killApp","openNotifications","debugState"]);z.union([$q,Vq,Wq,Kq,Yq,Jq,Xq,Zq,e2,vN,RN,t2,r2,i2,IN,s2,a2,l2,c2,d2,u2,p2,m2,h2,g2,f2,wN]);var S2=new Map([["tap",$q],["type",Vq],["press",Wq],["pressKey",Kq],["openApp",Yq],["killApp",Jq],["openNotifications",Xq],["swipe",Zq],["scrollTo",e2],["assert",vN],["assertVisually",RN],["extract",t2],["checkScreenContains",n2],["checkScreenDoesNotContain",o2],["dragAndDrop",i2],["javascript",IN],["request",s2],["wait",a2],["visualDiff",l2],["addFile",c2],["installApp",d2],["uninstallApp",u2],["toggleSettings",p2],["rotate",m2],["adb",h2],["appium",g2],["debugState",f2]]);Object.freeze([...S2.keys()]);var b2=z.custom().superRefine((e,t)=>{if(typeof e!="object"||e===null){t.addIssue({code:"custom",message:"v2 mobile commands must be objects with exactly one action key."});return}let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"v2 mobile commands must have exactly one action key."});return}let r=S2.get(o)??(Hi(o)?wN:void 0);if(!r){t.addIssue({code:"custom",message:`Unsupported v2 mobile command '${o}'.`});return}let i=r.safeParse(e);if(!i.success)for(let s of i.error.issues)t.addIssue({...s});}),T2=z.union([vN,RN,r2,IN,wN]);var Cbe=z.preprocess(e=>typeof e=="number"?String(e):e,FM),vbe=z.looseObject({goal:z.string(),version:Cbe.optional(),precondition:z.string().optional(),postcondition:z.string().optional(),...Ze}),Rbe=z.union([z.strictObject({act:z.string()}),z.strictObject({act:vbe})]),wbe=z.looseObject({path:z.string(),inputs:z.record(z.string(),jb).optional(),...Ze}),Ibe=z.union([z.strictObject({module:z.string()}),z.strictObject({module:wbe})]),xbe=new Set(["then",...Hb]),_be=z.looseObject({then:z.lazy(()=>Tc.array()),...Ze}).superRefine((e,t)=>{if("else"in e){t.addIssue({code:"custom",message:"v2 mobile conditionals do not support 'else'. Use a separate step instead.",path:["else"]});return}Object.entries(e).filter(([o,r])=>!xbe.has(o)&&T2.safeParse({[o]:r}).success).length!==1&&t.addIssue({code:"custom",message:"v2 mobile conditional steps require exactly one assertion condition at the top level."});}),Pbe=z.strictObject({if:_be}),Tc=z.lazy(()=>z.union([y2,Rbe,Ibe,Pbe,b2]));z.object({before:Tc.array().optional(),steps:Tc.array(),after:Tc.array().optional()});var xN=["android","ios"],Obe=z.literal("android"),Mbe=z.literal("ios");z.enum(xN);function vv(e){if(typeof e!="object"||e===null)return e;let t=e;if(typeof t.platform!="string")return e;let n=t.platform.toLowerCase();return n===t.platform?e:{...t,platform:n}}var A2=Hg.omit({schemaVersion:true,settings:true,platform:true}).extend({version:z.string().optional(),platform:Obe,...Ib.shape}),E2=Gg.omit({schemaVersion:true,settings:true,platform:true}).extend({version:z.string().optional(),platform:Mbe,...Ib.shape}),Nbe=z.discriminatedUnion("platform",[A2,E2]),C2=z.preprocess(vv,Nbe),v2={before:Tc.array().optional(),steps:Tc.array(),after:Tc.array().optional()},R2=z.looseObject({fileType:z.literal(ke.MOBILE_TEST_V2)}).extend(A2.shape).extend(v2);z.preprocess(vv,R2);var w2=z.looseObject({fileType:z.literal(ke.MOBILE_TEST_V2)}).extend(E2.shape).extend(v2);z.preprocess(vv,w2);var Lbe=z.discriminatedUnion("platform",[R2,w2]);z.preprocess(vv,Lbe);var kbe=z.preprocess(e=>typeof e=="string"?e.toLowerCase():e,z.enum(xN).optional().default("android")),Rv=ov.omit({moduleId:true,name:true,schemaVersion:true,platform:true}).extend({id:wo,name:z.string().optional(),version:z.string().optional(),platform:kbe});z.looseObject(Rv.extend({fileType:z.literal(ke.MOBILE_MODULE_V2),steps:z.array(z.record(z.string(),z.unknown().optional())).optional()}).shape);z.looseObject(Rv.extend({fileType:z.literal(ke.MOBILE_MODULE_V2),steps:Tc.array().optional()}).shape);var wv="x-momentic-cli-version",x2="x-momentic-client-mode",Iv="x-momentic-runner",_2="x-momentic-cli-type",P2="x-momentic-logger-tags",Dbe="x-momentic-main-branch-name",Fbe="x-momentic-branch-name",Bbe="x-momentic-commit-timestamp",Ube="x-momentic-last-commit-on-main",Hbe="x-momentic-last-commit-on-main-timestamp",Gbe="x-momentic-merged-branch-name",O2="x-momentic-session-id",M2="x-momentic-parent-trace-id";O.object({error:O.boolean(),reason:O.string(),message:O.string()});mr.merge(gM);var N2=XE;mr.merge(gM);mr.merge(MV).extend({useConsensus:O.boolean().optional(),attemptNumber:O.number().optional()});var _N=QG;mr.merge(NV);var L2=T$;mr.merge(xV);var k2=bC;mr.merge(WG);mr.merge(_V);var D2=y$;mr.merge(PV);mr.merge(OV);mr.merge(FV);mr.merge(BV);O.object({testPaths:O.string().array().describe("can be either hyphenated, lowercase test names or UUIDs"),env:O.string().optional(),all:O.boolean().optional(),urlOverride:O.string().optional(),customHeaders:O.record(O.string(),O.string()).optional(),testInputMatrix:O.record(O.string(),O.string()).array().optional()});var F2=O.object({queuedTests:O.unknown().optional().array(),runIds:O.guid().array(),runGroupId:O.string().optional()});O.string().array();O.union([O.object({paths:O.string().array().describe("Export specific test paths or folder paths (e.g. todo-test, auth/onboarding)"),all:O.boolean().describe("run all tests").optional()}),O.object({path:O.string().describe("deprecated; present for backcompat")})]);var jbe=O.object({tests:O.record(O.string().describe("Test name (keys correspond to entries in `tests`)"),O.string().describe("Slash-separated folder name path that the test lives in (e.g. 'Auth/Login'). Top-level entities are omitted.")),modules:O.record(O.string().describe("Module name (keys correspond to entries in `modules`)"),O.string().describe("Slash-separated folder name path that the module lives in."))}),B2=O.object({tests:O.record(O.string().describe("Test name"),O.string().describe("Test YAML")),modules:O.record(O.string().describe("Module name"),O.string().describe("Module YAML")),folderPaths:jbe.optional().describe("Optional map from exported entity name to its slash-separated cloud folder path. Used by the CLI to recreate folder structure on disk.")}),$be=O.object({test:O.string().describe("test YAML"),modules:O.record(O.string().describe("moduleId"),O.string().describe("module YAML"))});$be.array();O.object({testId:O.string(),schemaVersion:O.string()}).merge(hd);function xv(e){let{gitMainBranch:t,gitBranchName:n,gitCommitTimestamp:o,lastCommitOnMainSha:r,lastCommitOnMainTimestamp:i}=e,s={};return t&&(s[Dbe]=encodeURIComponent(t)),n&&(s[Fbe]=encodeURIComponent(n)),o&&(s[Bbe]=o.toISOString()),r&&(s[Ube]=encodeURIComponent(r)),i&&(s[Hbe]=i.toISOString()),e.mergedGitBranchName&&(s[Gbe]=encodeURIComponent(e.mergedGitBranchName)),s}O.object({entries:O.array(Hj)});O.object({platform:CN.optional(),entries:O.array(Lq)});O.object({testId:O.string(),environment:O.string().optional(),platform:CN.optional()});O.object({testId:O.string(),key:O.string(),environment:O.string().optional()});function U2(e){return O.record(O.string(),O.unknown().optional()).transform(t=>{let n={};for(let[o,r]of Object.entries(t)){let i=e.safeParse(r);i.success&&(n[o]=i.data);}return n})}var H2=U2(Gj),G2=kq.array();function I2(e){return U2(IS(e))}var j2={ANDROID:e=>I2(sv).parse(e),IOS:e=>I2(av).parse(e)},Vbe=O.object({id:O.string(),completionType:O.string(),description:O.string().optional(),thoughts:O.string(),result:O.string(),sessionType:O.string(),timeCreated:O.string().optional(),citations:O.array(Vo).optional()}),zbe=O.object({id:O.string(),assertion:O.string().optional(),result:O.string(),thoughts:O.string(),sessionType:O.string(),timeCreated:O.string().optional(),citations:O.array(Vo).optional()});O.object({completionType:O.string(),traceIds:O.string().array()});var PN=O.union([Vbe,zbe]).array(),$2=O.object({trigger:O.nativeEnum(Ls),status:O.nativeEnum(ht),startedAt:O.coerce.date().optional(),gitCommitSha:O.string().optional(),gitCommitShaShort:O.string().optional(),gitCommitTimestamp:O.coerce.date().optional(),gitBranchName:O.string().optional(),gitOriginUrl:O.string().optional(),gitCommitMessage:O.string().optional(),gitCommitAuthorName:O.string().optional(),githubRepository:O.string().optional(),gitlabProjectPath:O.string().optional(),pipelineId:O.string().optional(),cliVersion:O.string().optional()});O.object({id:O.string()});var V2=O.object({status:O.nativeEnum(ht),updatedAt:O.coerce.date().optional(),finishedAt:O.coerce.date().optional()});O.object({summary:Am,githubRepository:O.string().optional(),gitBranchName:O.string().optional()});O.object({updates:O.object({runId:O.string(),healStatus:ob,healDetails:tb.optional()}).array()});var z2=O.object({stepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),beforeStepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),afterStepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),runGroupId:O.string().optional(),testId:O.string(),testName:O.string(),resolvedBaseUrl:O.string().optional(),environmentName:O.string().optional(),labels:O.array(O.string()).optional(),cliVersion:O.string().optional(),trigger:O.nativeEnum(Ls),schemaVersion:O.string().optional(),section:O.nativeEnum(UC).optional(),resolvedInputs:O.record(O.string(),O.string()).optional(),quarantined:O.boolean().optional().default(false),quarantinedReason:O.string().optional(),aiSettings:ga.optional()});O.object({id:O.string()});var Wbe=pM.pick({id:true,status:true,healStatus:true,healDetails:true,testName:true,testId:true,test:true,failureReason:true,failureDetails:true}),W2=Wbe.array(),q2=pM.pick({startedAt:true,finishedAt:true,updatedAt:true,results:true,beforeResults:true,afterResults:true,status:true,healStatus:true,healDetails:true,failureDetails:true,failureReason:true,failureRecoveryDetails:true,resolvedBaseUrl:true,environmentName:true,labels:true,cliVersion:true,resolvedInputs:true,attempts:true,flake:true,aiSettings:true}).partial();O.object({id:O.string()});var K2=O.object({run:is.omit({runAttempts:true}),attemptZipUrls:O.array(O.string().url().nullish())}),Y2=O.object({status:O.nativeEnum(ht),finishedAt:O.coerce.date().optional(),schemaVersion:O.string().optional().default("1.0.19"),results:O.record(O.string(),O.unknown().optional()).array().optional(),beforeResults:O.record(O.string(),O.unknown().optional()).array().optional(),afterResults:O.record(O.string(),O.unknown().optional()).array().optional()});O.object({screenshot:O.string(),contentType:O.enum(["image/jpeg","image/png"]).optional()});O.object({id:O.string(),screenshot:O.string(),contentType:O.enum(["image/jpeg","image/png"])});var J2=O.object({key:O.string()}),X2=O.object({orgId:O.string(),userId:O.string(),email:O.string().optional(),name:O.string().optional(),pylonEmailHash:O.string().optional(),selfServe:O.boolean().optional()}),Q2=O.object({blocked:O.boolean()}),Z2=O.array(k$);O.record(O.string(),O.union([O.string(),O.boolean()]));O.object({workosAccessToken:O.string().min(1),organizationId:O.string().optional(),clientName:O.string().min(1).max(80).optional()});var eK=O.object({apiKey:O.string(),apiKeyName:O.string(),organizationId:O.string(),user:O.object({id:O.string(),email:O.string().optional()}),selfServe:O.boolean().optional()}),tK=O.object({error:O.literal("multiple_organizations"),organizations:O.array(O.object({id:O.string(),name:O.string()}))}),qbe=["web","ios","android"];O.object({platforms:O.array(O.enum(qbe)),packageManager:O.enum(["npm","pnpm","yarn","bun"]),wizardVersion:O.string().min(1).max(40),cliVersions:O.object({momentic:O.string().max(40).optional(),momenticMobile:O.string().max(40).optional()}).optional(),firstRunIds:O.array(O.guid()).max(10).optional()});O.object({ok:O.literal(true)});O.object({paths:O.string().array(),env:O.string().optional(),urlOverride:O.string().optional(),customHeaders:O.record(O.string(),O.string()).optional()});var nK=O.object({suiteRunIds:O.string().array(),runGroupIds:O.string().array()});O.object({suiteRunIds:O.string().array()});CV.array();O.object({runGroupIds:O.string().array()});var ON=O.object({uploadUrl:O.string()});mr.merge(LV);mr.merge(DV);mr.merge(kV);var Kbe=O.object({testId:O.string().optional().default(""),testName:O.string().optional().default(""),suiteId:O.string().optional().default(""),suiteName:O.string().optional().default(""),isInteractive:O.boolean().optional().default(false),runner:O.nativeEnum(ss).optional(),creditsUsed:O.number().optional(),stepsExecuted:O.number().optional(),tokensUsed:O.number().optional()}),Ybe=O.object({transactionId:O.string(),timestamp:O.string(),event:O.nativeEnum(Fg),properties:Kbe});Ybe.array();var oK=p1.omit({steps:true}).extend({steps:O.array(O.record(O.string(),O.unknown().optional())).describe("unparsed ResolvedStep[]")});O.object({limit:O.number().min(1).max(10).optional(),page:O.number().min(1).optional(),start:vo.optional(),end:vo.optional(),gitBranchName:O.string().optional(),status:O.nativeEnum(ht).optional()});var rK=uV.array(),Jbe=O.object({testId:wo.optional(),gitBranchName:O.string().optional(),gitCommitSha:O.string().optional(),status:O.nativeEnum(ht).optional(),label:O.string().array().optional(),limit:O.number().min(1).max(100).optional(),page:O.number().min(1).optional(),start:vo.optional(),end:vo.optional(),quarantined:O.boolean().optional(),recovered:O.boolean().optional(),includeFailureDetails:O.boolean().optional()});Jbe.extend({orgId:O.string().optional(),testId:pr(wo),status:pr(O.nativeEnum(ht)),gitBranchName:pr(O.string()),label:pr(O.string()),testName:O.string().optional(),trigger:pr(O.nativeEnum(Ls)),executionType:pr(Lu),cliVersion:pr(O.string()),githubRepository:pr(O.string()),gitlabProjectPath:pr(O.string()),environment:pr(O.string()),directory:pr(O.string()),failureCategory:pr(O.string()),exclude:pr(O.string()),healed:O.boolean().optional()});var Xbe=is.omit({test:true}),iK=O.object({runs:Xbe.array(),page:O.number(),pageSize:O.number(),pageCount:O.number()});O.object({applied:O.boolean().optional(),appliedAt:O.coerce.date().optional()});var sK=ON.extend({id:O.string()});O.object({runGroupId:O.guid().optional(),persist:O.boolean().optional()});var aK=O.object({runGroupId:O.guid()}),lK=O.object({quarantined:O.object({testId:wo,quarantinedAt:O.coerce.date(),quarantinedBy:O.string().optional(),quarantinedReason:O.string()}).array()}),cK=O.object({gitLocalUsername:O.string().optional(),gitLocalEmail:O.string().optional(),gitLocalName:O.string().optional()});O.object({testId:wo,testName:O.string().optional(),reason:O.string()}).merge(cK);O.object({testName:O.string().optional(),reason:O.string().optional()}).merge(cK);mr.merge(Vz);mr.merge(zz);mr.merge(Wz);O.object({apkToInstall:O.object({channel:O.string(),tag:O.string().optional()}).optional(),hostname:O.string().optional(),region:ZM.optional(),osVersion:O.nativeEnum(Ug).optional(),sessionId:O.string().optional(),playwrightVersion:nW.optional()});var dK=O.object({name:O.string(),apiUrl:O.string(),webRtcUrl:O.string(),adbUrl:O.string(),token:O.string(),apkDownloadUrl:O.string().optional(),playwrightServerUrl:O.string().optional(),region:O.string().optional(),resolvedTag:O.string().optional()});O.object({appToInstall:O.object({channel:O.string(),tag:O.string().optional()}).optional(),hostname:O.string().optional(),region:ZM.optional(),osVersion:O.nativeEnum(lv).optional(),sessionId:O.string().optional(),installAppOnClient:O.boolean().optional()});var uK=O.object({id:O.string(),apiUrl:O.string(),webRtcUrl:O.string(),wdaUrl:O.string(),token:O.string(),appDownloadUrl:O.string().optional(),appMd5:O.string().optional(),region:O.string().optional(),resolvedTag:O.string().optional()});O.object({channel:O.string().trim().min(1,"channel must be a non-empty string"),tag:O.string().trim().min(1,"tag must be a non-empty string"),md5:O.string()});var pK=O.object({id:O.string(),uploadUrl:O.string().optional(),downloadUrl:O.string(),md5:O.string().optional()}),Qbe=O.object({channel:O.string(),tag:O.string(),md5:O.string(),platform:O.nativeEnum(cl).default("ANDROID"),createdAt:O.number().describe("Unix timestamp in milliseconds")}),mK=O.object({assets:O.array(Qbe)}),hK=O.object({downloadUrl:O.string()}),MN=(n=>(n.PLAYWRIGHT="PLAYWRIGHT",n.CDP="CDP",n))(MN||{}),Zbe=O.nativeEnum(MN);O.object({runId:O.guid().optional(),attemptedProviders:O.array(dN).optional()});var gK=O.object({wsEndpoint:O.string(),accessToken:O.string().optional(),endpointType:Zbe.optional(),provider:dN.optional()});z.object({repositoriesIndexed:z.boolean(),indexingInProgress:z.boolean(),indexesOutdated:z.boolean()});var fK=(s=>(s.Queued="queued",s.InProgress="in_progress",s.Completed="completed",s.Waiting="waiting",s.Requested="requested",s.Pending="pending",s))(fK||{}),yK=(a=>(a.Success="success",a.Failure="failure",a.Neutral="neutral",a.Cancelled="cancelled",a.Skipped="skipped",a.TimedOut="timed_out",a.ActionRequired="action_required",a))(yK||{});z.object({name:z.string(),status:z.enum(fK),conclusion:z.enum(yK).nullable()});var Vb=z.object({sha:z.string(),message:z.string(),author:z.object({name:z.string().optional(),email:z.string().optional(),date:z.coerce.date().optional()}),committer:z.object({name:z.string().optional(),email:z.string().optional(),date:z.coerce.date().optional()})}),NN=z.object({mergedBranch:z.string().optional()});var SK=z.object({orgId:z.string(),cacheKeys:z.string().array()});z.object({keyParams:SK,clientMetadata:z.string(),lockAcquisitionTimeoutMs:z.number().optional()});var bK=z.object({acquired:z.boolean(),acquiredByMetadata:z.string(),keyPrefix:z.string()});z.object({keyPrefix:z.string(),result:z.string(),ttlMs:z.number()});z.union([z.object({keyPrefix:z.string()}),SK]);var eTe=z.object({remainingTtlMs:z.number(),value:z.string().nullish()});z.object({results:z.record(z.string(),eTe),activeLocks:z.string().array()});var TK=0,AK=5*60*1e3;var EK=z.object({testId:z.string().min(1),stepId:z.string().min(1),baseTestFileHash:z.string().min(1),branchName:z.string().min(1).optional(),environment:z.string().min(1).optional(),classification:mO,healDetails:dV.optional()}),tTe=EK.extend({createdAt:z.coerce.date(),updatedAt:z.coerce.date()});z.object({branchName:z.string().min(1).optional(),mainBranchName:z.string().min(1).optional(),stepId:z.string().min(1),baseTestFileHash:z.string().min(1),environment:z.string().min(1).optional()});var CK=tTe.array();z.object({entries:EK.array()});var nTe=30*$g;function vK(){return new Date(Date.now()-nTe)}function Kg(e){if(e.startsWith("https://api"))return e.replace("https://api","https://app");if(e.startsWith("http://localhost:8000"))return e.replace("http://localhost:8000","http://localhost:3000");throw new Error(`Unknown Momentic app server URL pattern: ${e}`)}var oTe=z.object({version:z.string(),json:z.record(z.string(),z.unknown().optional()),hash:z.string()}),RK=z.record(z.string(),z.unknown().optional());z.object({newSvgs:z.array(oTe),metadata:RK.optional()});var rTe=z.object({version:z.string(),json:z.record(z.string(),z.unknown().optional()).nullish(),hash:z.string(),description:z.string().nullish(),metadata:RK.nullish()}),wK=z.record(z.string().describe("icon hash"),rTe);var LN="metadata.json",kN="test.yaml",IK=".snapshot.zip",DN=to.extend(ec.shape),iTe=z.object({envName:z.string().optional(),baseUrl:z.string(),variables:z.record(z.string(),z.unknown().optional()),resolvedEnv:qS.optional()}),xK=z.object({browser:ll.optional(),ai:ga.optional(),advanced:eb.optional(),retries:z.number().optional()});z.object({momenticVersion:z.string(),schemaVersion:z.string(),createdAt:z.string(),relativeFilePath:z.string(),environment:iTe,config:xK});var _K=z.object({variables:z.record(z.string(),z.unknown().optional()),resolvedEnv:qS.optional()}),sTe=z.object({envName:z.string().optional(),baseUrl:z.string(),encryptedSecrets:z.string()}),PK=z.object({momenticVersion:z.string(),schemaVersion:z.string(),createdAt:z.string(),relativeFilePath:z.string(),environment:sTe,config:xK});function OK(e){let t;try{t=JSON.parse(e);}catch(n){return `The schema is not valid JSON. ${n}`}try{validator(t);}catch(n){return `The schema is not a valid JSON schema. ${n}`}}var MK=e=>{e.extraHeaders&&(e.extraHeaders=Object.fromEntries(Object.entries(e.extraHeaders).filter(([t,n])=>t.trim()&&n.trim())));};var _v=class{async resolveStepCacheEntries(){}async saveStepCacheEntries(){}async saveSnapshotCacheEntries(){}async deleteStepCacheEntry(){}};function lTe(e){return e.map(t=>({...t,environment:void 0}))}function FN(e,t){return t?e:lTe(e)}var UN="browser-crash-dump.zip",BN=class{loggerBindings;attachBeforeScreenshot(){}attachAfterScreenshot(){}attachBeforeHtmlSnapshot(){}attachAfterHtmlSnapshot(){}recordTargetAutoHeal(){}storeTraceAsset(){}async finish(){}async startSubSteps(){return new zb}},zb=class{async getScreenshot(){}async getHtmlSnapshot(){}async startStep(){return new BN}flushResults(t){}};var ct="metadata.json",Wr="assets",oo="runs",cTe=z.object({step:tn,status:z.enum(Nt),startedAt:z.coerce.date(),finishedAt:z.coerce.date().optional(),healMetadata:z.object({healType:z.enum(zS).or(z.literal("AI")),healedAt:z.coerce.date()}).optional(),beforeSnapshotId:z.guid().optional(),afterSnapshotId:z.guid().optional(),message:z.string().optional()}),dTe=cTe.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});dTe.extend({step:z.unknown().optional()});var HN=z.object({avdId:z.string().optional(),channel:z.string().optional(),tag:z.string().optional(),region:z.string().optional(),osVersion:oW.optional()}),LK="1.0.0",kK=Y2.extend({id:z.guid().optional(),startedAt:z.coerce.date(),runAttemptSchemaVersion:z.string().optional(),schemaVersion:z.string().optional().default("1.0.19"),results:z.record(z.string(),z.unknown().optional()).array().optional(),beforeResults:z.record(z.string(),z.unknown().optional()).array().optional(),afterResults:z.record(z.string(),z.unknown().optional()).array().optional(),assetDetails:HN.optional(),viewport:bd.optional(),activeVideos:z.array(z.object({videoName:z.string(),timestamp:z.coerce.date()})).optional()}),Wb=kK.extend({assetDetails:HN.optional(),finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});kK.extend(tM.shape);var DK=Wb.extend(tM.shape),uTe=z.object({results:z.array(Ds),beforeResults:z.array(Ds).optional(),afterResults:z.array(Ds).optional()});Wb.extend(uTe.shape);var pTe=z.object({results:z.array(Fs),beforeResults:z.array(Fs).optional(),afterResults:z.array(Fs).optional()});Wb.extend(pTe.shape);var FK=q2.merge(z2).extend({executionType:Lu.optional().default("WEB"),testId:wo,testDescription:z.string().optional(),directory:z.string().optional(),runGroupId:z.guid(),status:z.enum(ht),healStatus:ob,startedAt:z.coerce.date(),schemaVersion:z.string().nullish(),attempts:z.number(),failureRecoveryDetails:z.object({attempts:z.number()}).optional(),aiSettings:ga.optional(),avgCpuUsage:z.number().optional(),avgMemoryUsage:z.number().optional()}),mTe=FK.extend(HN.shape),Om=FK.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});mTe.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});var NK=z.object({mode:z.enum(["SELECTED","RUN_ALL","RUN_NONE","SHADOW"]),baseRef:z.string().nullable(),headSha:z.string(),planId:z.string().nullable(),totalCandidates:z.number().int().nonnegative(),selectedCount:z.number().int().nonnegative(),anchorSegmentIds:z.array(z.string()),userSummary:z.string(),toolCallCount:z.number().int().nonnegative(),selectedTests:z.array(LC),forcedTests:z.array(z.object({name:z.string(),testPath:z.string(),status:z.enum(["A","M","R","C","T"])})).optional().default([]),runAllReason:z.string().nullable()}),hTe=$2.merge(V2).extend({id:z.guid().optional(),startedAt:z.coerce.date(),cliVersion:z.string(),labels:z.string().array().optional().default([]),suiteName:z.string().optional(),ciProvider:z.string().optional(),gitMainBranch:z.string().optional(),ai:ga.optional(),browser:ll.optional(),aiSelect:z.union([NK.transform(e=>[e]),z.array(NK)]).optional()}),Ta=hTe.extend({healRiskSummary:Am.optional(),updatedAt:z.coerce.date().optional().transform(e=>e??new Date),finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});var gTe=new Set(["AWAIT_LISTENER","REGISTER_REQUEST_LISTENER","GET_RECORDED_REQUESTS","MOCK_ROUTE","REMOVE_ROUTE_MOCK","SCROLL_DOWN","SCROLL_UP","SCROLL_LEFT","SCROLL_RIGHT","VISUAL_DIFF","WAIT","SET_HEADER","OFFLINE_MODE"]),fTe=new Set(["MODULE","RESOLVED_MODULE"]);function Pv(e){return e.type!=="PRESET_ACTION"?e.type:e.command.type}function Ov(e){return fTe.has(e.type)?false:e.type!=="PRESET_ACTION"?true:!gTe.has(e.command.type)}var BK="progress.json",UK="1.0.0",yTe=z.object({runId:z.string(),testId:z.string().optional(),testName:z.string().optional(),directory:z.string().optional(),status:z.nativeEnum(ht),completedSteps:z.number(),totalSteps:z.number(),startedAt:z.coerce.date(),updatedAt:z.coerce.date()});z.object({schemaVersion:z.string(),runGroupId:z.string(),status:z.nativeEnum(ht),totalRuns:z.number(),completedRuns:z.number(),completedSteps:z.number(),totalSteps:z.number(),startedAt:z.coerce.date(),updatedAt:z.coerce.date(),runs:yTe.array()});function HK(e){try{return existsSync(e)&&statSync(e).isDirectory()}catch(t){return R.error({err:t},`Error reading path ${e} during directory existence check.`),false}}var GK="CumAaTMUcwjt05OddAmefKgshbhfRmWxzxih",Yg="https://us-west.metrics.momentic.ai",Jg="c60c6a0f-60da-41a7-a61b-07969a0aa303",Mm=!!process.env.CI||!!process.env.GITHUB_ACTIONS||!!process.env.GITHUB_RUN_ID||!!process.env.GITLAB_CI||!!process.env.CI_COMMIT_SHA||!!process.env.JENKINS_URL||!!process.env.BUILD_NUMBER||!!process.env.JENKINS_HOME||!!process.env.CIRCLECI||!!process.env.CIRCLE_BUILD_NUM||!!process.env.TRAVIS||!!process.env.TRAVIS_BUILD_NUMBER||!!process.env.BITBUCKET_BUILD_NUMBER||!!process.env.BITBUCKET_COMMIT||!!process.env.CODEBUILD_BUILD_ID||!!process.env.TF_BUILD||!!process.env.BUILD_BUILDID||!!process.env.AGENT_ID||!!process.env.BUILDER_SA_EMAIL||!!process.env.HEROKU_TEST_RUN_ID||!!process.env.CI_NODE_INDEX||!!process.env.TEAMCITY_VERSION||!!process.env.BUILD_VCS_NUMBER||!!process.env.BUILDKITE||!!process.env.BUILDKITE_BUILD_NUMBER||!!process.env.APPVEYOR||!!process.env.APPVEYOR_BUILD_NUMBER||!!process.env.DRONE||!!process.env.DRONE_BUILD_NUMBER||!!process.env.SHIPPABLE||!!process.env.BUILD_URL||!!process.env.SEMAPHORE||!!process.env.SEMAPHORE_EXECUTABLE_UUID||!!process.env.WOODPECKER||!!process.env.CI_BUILD_NUMBER||!!process.env.WERCKER_MAIN_PIPELINE_STARTED||!!process.env.BUDDY_EXECUTION_ID;var RTe=new Set(["exit","quit"]),VK=(()=>{try{return statSync("/.dockerenv"),!0}catch{return false}})();async function gr(e){return Mm||VK?true:(await R.flush(),await new Promise(n=>setTimeout(n,100)),await confirm({message:e}))}async function GN(e){let t=dirname(e);return HK(t)?existsSync(e)?gr(`File '${jK(e)}' already exists. Overwrite existing content?`):true:await gr(`Directory '${jK(t)}' doesn't exist. Create it now?`)?(mkdirSync(t,{recursive:true}),true):false}function jK(e){return e.replace(/(\s+)/g,"\\$1")}async function zK(e,t){return Mm||VK?t:(await input({message:e,default:t})).trim()||t}async function WK(){let e;try{e=(await input({message:"ask"})).trim();}catch(t){if(t instanceof Error&&t.name==="ExitPromptError"){R.info("");return}throw t}if(!RTe.has(e.toLowerCase()))return e}var Xg=new Map,KK="Log throttle exceeded",DTe=100,FTe=5e3,BTe=PTe(global.fetch,{retries:2,retryOn:function(e,t,n){return !!(t!==null||n&&n.status>=500)},retryDelay:function(e){return Math.pow(2,e)*500}}),UTe=`${Yg}/logs/json`,jN=class{constructor(t,n){this.flushIntervalMs=t;this.maxBatchSize=n;}records=[];flushTimer;push(t){if(this.records.push(t),this.records.length>=this.maxBatchSize){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=void 0),this.flush();return}this.scheduleFlush();}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>{this.flushTimer=void 0,this.flush();},this.flushIntervalMs));}async flush(){if(this.records.length===0)return;let t=this.records;this.records=[];try{let n=await BTe(UTe,{method:"POST",headers:{"Content-Type":"application/json","signoz-access-token":GK,"x-momentic-metrics-api-key":Jg},body:ul(t),signal:AbortSignal.timeout(5e3)});if(!n.ok)throw new Error(`Got error status (${n.statusText}) from SigNoz`)}catch{}}},$N=class e{consoleLogger;hostname;bindingAttributes;disableConsoleLogs;minLevelValue=20;logsInCurrentWindow=0;droppedLogsInWindow=false;lastWindowStart=Date.now();flushIntervalMs;maxBatchSize;buffer;constructor({bindings:t,hostname:n,disableConsoleLogs:o,flushIntervalMs:r,maxBatchSize:i,buffer:s}){this.hostname=n??_d.hostname(),this.disableConsoleLogs=o,this.bindingAttributes={...t,env:"production"},this.flushIntervalMs=r??5e3,this.maxBatchSize=i??10,this.buffer=s??new jN(this.flushIntervalMs,this.maxBatchSize);let a={base:this.bindingAttributes,errorKey:"err",level:"debug"};this.consoleLogger=qK(a);}child(t){return new e({bindings:{...this.bindingAttributes,...t},hostname:this.hostname,disableConsoleLogs:this.disableConsoleLogs,flushIntervalMs:this.flushIntervalMs,maxBatchSize:this.maxBatchSize,buffer:this.buffer})}async flush(){await this.buffer.flush(),this.disableConsoleLogs||this.consoleLogger.flush();}shouldAllowLog(t){if(t===KK)return true;let n=Date.now();return n-this.lastWindowStart>FTe&&(this.logsInCurrentWindow=0,this.droppedLogsInWindow&&this.log("error",void 0,KK),this.droppedLogsInWindow=false,this.lastWindowStart=n),this.logsInCurrentWindow<DTe?(this.logsInCurrentWindow++,true):(this.droppedLogsInWindow=true,false)}log(t,n,o,...r){try{this.logHelper(t,n,o,...r);}catch(i){this.consoleLogger.warn(`Failed to log to Signoz: ${i}`);}}logHelper(t,n,o,...r){if(ZS[t]<this.minLevelValue||!this.shouldAllowLog(o))return;typeof n=="string"&&!o&&(n={message:n}),typeof n=="object"&&n&&"err"in n&&n.err instanceof Error&&(n.err=LTe.err(n.err));let i={...this.bindingAttributes,...n&&typeof n=="object"?n:{},...r.length>0?{args:r}:{}},s={host:this.hostname,env:this.bindingAttributes.env},a=HTe();this.disableConsoleLogs||this.consoleLogger[t]({...i,...a??{}},o,...r);let l={timestamp:Math.round(Date.now()*1e6),...a??{},severity_text:t.toUpperCase(),resources:s,attributes:{},body:eV({message:o||"",...i})};this.buffer.push(l);}setApp(t){let n=this.bindingAttributes.app;this.bindingAttributes.app=t,Xg.set("app",this),Xg.delete(n);}debug(t,n,...o){this.log("debug",t,n,...o);}info(t,n,...o){this.log("info",t,n,...o);}warn(t,n,...o){this.log("warn",t,n,...o);}error(t,n,...o){this.log("error",t,n,...o);}bindings(){return this.bindingAttributes}addBinding(t,n){this.bindingAttributes[t]=n;}setMinLevel(t){typeof t=="number"?(this.minLevelValue=t,this.consoleLogger.level=tV[t]):(this.minLevelValue=ZS[t],this.consoleLogger.level=t);}enableConsoleLogs(){this.disableConsoleLogs=false;}},Qg=({app:e,hostname:t,disableConsoleLogs:n})=>(Xg.has(e)||Xg.set(e,new $N({bindings:{app:e},hostname:t,disableConsoleLogs:n})),Xg.get(e));function HTe(){let e=trace.getSpan(context.active());if(!e)return;let t=e.spanContext();if(isSpanContextValid(t))return {trace_id:t.traceId,span_id:t.spanId,trace_flags:t.traceFlags}}async function Mv(){await Promise.all([...Xg.values()].map(e=>e.flush()));}var zu=class extends Error{constructor(t){super(t),this.name="TimeoutError";}};var YK=e=>{let t=e.reason===void 0?new DOMException("This operation was aborted.","AbortError"):e.reason;return t instanceof Error?t:new DOMException(t,"AbortError")};function Ie(e,t){let{milliseconds:n,fallback:o,message:r,customTimers:i={setTimeout,clearTimeout}}=t,s;if(typeof n!="number"||Math.sign(n)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);return new Promise((a,l)=>{let c;if(t.signal){let{signal:p}=t;if(p.aborted)return l(YK(p));c=()=>l(YK(p)),p.addEventListener("abort",c,{once:true});}let d=()=>{if(t.signal&&t.signal.removeEventListener("abort",c),o)try{a(o());}catch(p){l(p);}else {typeof e.cancel=="function"&&Promise.resolve().then(()=>e.cancel()).catch(()=>{});let p=r instanceof Error?r:new zu(r??`Promise timed out after ${n}ms`);l(p);}};n<1/0&&(s=i.setTimeout(d,n));let u=()=>{i.clearTimeout(s),t.signal&&t.signal.removeEventListener("abort",c);};Promise.resolve(e).then(p=>{u(),a(p);}).catch(p=>{u(),l(p);});})}var Nv="organization";function Lv(e){let t=new PostHog(e.writeKey,{host:e.host,...e.flushImmediately?{flushAt:1,flushInterval:0}:{}}),n=e.platform,o=(l,c,d)=>{let{type:u,...p}=l;t.capture({distinctId:c??d??randomUUID(),event:u,...d&&{groups:{[Nv]:d}},properties:{platform:n,user_id:c??void 0,org_id:d??void 0,...p,organizationId:d??void 0,...c==null&&d==null&&{$process_person_profile:false}}});},r=({orgId:l,properties:c})=>{t.groupIdentify({groupType:Nv,groupKey:l,properties:c});},i=({userId:l,properties:c})=>{Object.values(c).some(u=>u!=null&&u!=="")&&t.identify({distinctId:l,properties:c});},s=()=>t.shutdown();if(e.identity==="stashed"){let l=null;return {shutdownAnalytics:s,groupIdentifyOrg:r,setAnalyticsIdentity:d=>{l=d,e.onIdentify?.(d),i({userId:d.userId,properties:{email:d.email,...d.selfServe!==void 0?{self_serve:d.selfServe}:{}}});},captureEvent:d=>o(d,l?.userId??null,l?.orgId??null)}}return {shutdownAnalytics:s,groupIdentifyOrg:r,identifyUser:i,captureEvent:(l,{userId:c,orgId:d})=>o(l,c,d),captureBillingEvent:(l,{userId:c,orgId:d})=>o(l,c,d)}}async function JK(e,t,n){let o,r=0,i=3,s,a;for(;r<i;)try{let l=await Ie(e.getAllFlagsAndPayloads(n??t,{personProperties:{organizationId:t},groups:{[Nv]:t}}),{milliseconds:5e3});s=l.featureFlags||{},a=l.featureFlagPayloads||{};break}catch(l){o=l,r++,await new Promise(c=>setTimeout(c,100*r));}if(s&&a)return {flags:s,payloads:a};throw o}var kv=class e extends Nb{constructor(n,o,r,i,s){super(i,s);this.client=n;this.orgId=o;this.userId=r;}static async init(n,o){let r=new PostHog("phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI",{host:"https://p.momentic.ai"}),{flags:i,payloads:s}=await JK(r,n,o);return new e(r,n,o,i,s)}async refresh(){let{flags:n,payloads:o}=await JK(this.client,this.orgId,this.userId);this.flags=n,this.payloads=o;}};var WTe=2e3,Nm=e=>Number.parseInt(e,10),zN=e=>readFileSync(e,"utf8").trim(),Zg=e=>Nm(zN(e)),XK,Dv,qb={samples:0,lowMemorySamples:0,highCpuSamples:0,highHeapSamples:0};function eY(){return {...qb}}var Bv=_d.platform(),qTe=_d.cpus().map(e=>({model:e.model,speed:e.speed})).reduce((e,t)=>(e[t.model]={speed:t.speed},e.totalCores=(e.totalCores??0)+1,e),{});function VN(e=Date.now()){let t=_d.cpus(),n={measurementTime:e,user:0,nice:0,sys:0,idle:0,irq:0,total:0};for(let o of t)n.user+=o.times.user,n.nice+=o.times.nice,n.sys+=o.times.sys,n.idle+=o.times.idle,n.irq+=o.times.irq;return n.total=n.user+n.nice+n.sys+n.idle+n.irq,n}function tY(e,t){let n={user:t.user-e.user,nice:t.nice-e.nice,sys:t.sys-e.sys,idle:t.idle-e.idle,irq:t.irq-e.irq,total:t.total-e.total};return n.total<=0?null:{measurementTime:t.measurementTime,intervalMs:t.measurementTime-e.measurementTime,user:n.user/n.total*100,nice:n.nice/n.total*100,sys:n.sys/n.total*100,idle:n.idle/n.total*100,irq:n.irq/n.total*100,total:100-n.idle/n.total*100}}function KTe(){let e=VN();return ()=>{let t=VN(),n=tY(e,t);return e=t,n}}function QK(){try{let t=readFileSync("/sys/fs/cgroup/cpu.stat","utf8").match(/^usage_usec\s+(\d+)/m);if(t?.[1])return Nm(t[1])}catch{}try{let e=Zg("/sys/fs/cgroup/cpuacct/cpuacct.usage");if(!isNaN(e))return e/1e3}catch{}return null}function YTe(){try{let t=zN("/sys/fs/cgroup/cpu.max").split(" "),n=t[0],o=t[1];return !n||!o||n==="max"?null:Nm(n)/Nm(o)}catch{}try{let e=Zg("/sys/fs/cgroup/cpu/cpu.cfs_quota_us"),t=Zg("/sys/fs/cgroup/cpu/cpu.cfs_period_us");return e===-1||isNaN(t)?null:e/t}catch{return null}}function JTe(){if(Bv!=="linux")return null;let e=QK();if(e===null)return null;let t=YTe()??_d.cpus().length,n=e,o=Date.now();return ()=>{let r=QK();if(r===null)return null;let i=Date.now(),s=i-o;if(s<=0)return null;let a=r-n,l=s*1e3,c=Math.max(0,Math.min(100,a/l/t*100));return n=r,o=i,{measurementTime:i,intervalMs:s,user:c,nice:0,sys:0,idle:Math.max(0,100-c),irq:0,total:c}}}function XTe(){let e=process.cpuUsage(),t=process.hrtime.bigint();return ()=>{let n=process.cpuUsage(),o=process.hrtime.bigint(),r=Number(o-t)/1e6,i=n.user-e.user,s=n.system-e.system;if(e=n,t=o,r<=0)return null;let a=Math.max(_d.cpus().length,1),l=c=>Math.max(0,c/1e3/r*100/a);return {total:l(i+s),user:l(i),sys:l(s),intervalMs:r}}}function nY({intervalMs:e=WTe,maxSamples:t=1e4,keepSamples:n=true,onSample:o}={}){let r=[],i=JTe()??KTe(),s=XTe(),a=()=>{let d=Date.now(),u=iY(),p=process.memoryUsage(),m=i(),h=s(),g={timestamp:d,system:{cpu:m,memory:{total:u.totalMemory,free:u.freeMemory,freePercentage:u.freePercentage}},process:{cpu:h,memory:{rss:p.rss,heapTotal:p.heapTotal,heapUsed:p.heapUsed,external:p.external,arrayBuffers:p.arrayBuffers}}};o?.(g),n&&(r.push(g),r.length>t&&r.shift());};a();let l=setInterval(a,e),c=d=>({samples:n?[...r]:[]});return {stop:()=>(clearInterval(l),c()),getSeries:()=>c()}}var Fv=e=>{try{let t={},n=!1,o=iY(),r=ZTe();qb.samples++,o.freePercentage<.05&&(Object.assign(t,process.memoryUsage()),n=!0,qb.lowMemorySamples++),r&&r?.total>80&&(n=!0,qb.highCpuSamples++);let i=zTe.getHeapStatistics(),s=i.used_heap_size,a=i.heap_size_limit;s/a>.9&&(n=!0,qb.highHeapSamples++),n?e.warn({memory:o,cpu:r,heapStats:i,...t},"Critical resource usage metrics detected"):e.debug({memory:o,cpu:r},"Got machine resource usage metrics");}catch{}},oY=e=>{Fv(e),setTimeout(()=>Fv(e),5e3);};function rY(e){return Fv(e),{interval:setInterval(()=>Fv(e),2e4),cpuMetadata:qTe,platform:Bv}}function QTe(){if(Bv!=="linux")return null;try{let e=zN("/sys/fs/cgroup/memory.max"),t=Zg("/sys/fs/cgroup/memory.current");if(e==="max"||isNaN(t))return null;let n=Nm(e);if(isNaN(n))return null;let o=Math.max(0,n-t);return {totalMemory:n,freeMemory:o,freePercentage:o/n}}catch{}try{let e=Zg("/sys/fs/cgroup/memory/memory.limit_in_bytes"),t=Zg("/sys/fs/cgroup/memory/memory.usage_in_bytes");if(isNaN(e)||isNaN(t))return null;let n=_d.totalmem();if(e>=n)return null;let o=Math.max(0,e-t);return {totalMemory:e,freeMemory:o,freePercentage:o/e}}catch{return null}}function iY(){let e=QTe();if(e)return e;let t=_d.totalmem(),n=Bv==="darwin"?eAe():(()=>{let r=_d.freemem();return {availableMemory:r,rawFreeMemory:r,cachedMemory:0}})(),o=n.availableMemory/t;return {totalMemory:t,freeMemory:n.availableMemory,freePercentage:o}}function ZTe(){let e=VN();if(!Dv)return Dv=e,null;let t=tY(Dv,e);return Dv=e,t?(XK=t,XK):null}function eAe(){try{let e=execSync("/usr/bin/vm_stat",{encoding:"utf8",stdio:["pipe","pipe","ignore"]}),n=e.match(/page size of (\d+) bytes/)?.[1],o=n?Nm(n):4096,r=d=>{let p=e.match(new RegExp(`${d}:\\s+(\\d+)\\.`,"i"))?.[1];return p?Nm(p):0},i=r("Pages free"),s=r("Pages inactive"),a=r("Pages speculative"),l=i*o,c=(s+a)*o;return {availableMemory:l+c,rawFreeMemory:l,cachedMemory:c}}catch{let e=_d.freemem();return {availableMemory:e,rawFreeMemory:e,cachedMemory:0}}}process.env.APP||"unknown";var Uv="deployment.environment",Hv="service.instance.id";function sY(){return process.env.MOMENTIC_LOCAL_DEV==="1"&&process.env.LOCAL_SIGNOZ==="true"}var ef=false,Gv,Kb,Yb,cY=[],jv;function $v(){return ef}function dY(e){cY.push(e);}async function mAe(){for(let e of cY)try{await e();}catch{}}function hAe(){return $v()&&trace.getSpan(context.active())!==void 0}function gAe(){return sY()?new OTLPTraceExporter({url:"http://localhost:4318/v1/traces"}):new OTLPTraceExporter({url:`${Yg}/v1/traces`,headers:{"x-momentic-metrics-api-key":Jg}})}function fAe(e){let t="production",n=v4$1(),o=gAe();return new NodeTracerProvider({resource:resourceFromAttributes({[ATTR_SERVICE_NAME]:e,[Uv]:t,[Hv]:n,[ATTR_SERVICE_VERSION]:"3.10.2"}),spanProcessors:[new BatchSpanProcessor(o)]})}function yAe(e){jv=registerInstrumentations({tracerProvider:e,instrumentations:[new UndiciInstrumentation({requireParentforSpans:true})]});}function SAe(e){return !e&&!Gv?trace.getTracer("momentic-serverless"):Yb?.getTracer("momentic-serverless")??trace.getTracer("momentic-serverless")}async function Wu(e){if(!(!e.enabled||ef))try{Gv=e.serviceName;let t=fAe(e.serviceName);Yb=t,Kb=new AsyncLocalStorageContextManager,t.register({contextManager:Kb.enable(),propagator:new W3CTraceContextPropagator}),yAe(t),ef=!0;}catch{ef=false,Gv=void 0,Yb=void 0,Kb=void 0,jv=void 0;}}async function Vv(){if(ef)try{await mAe(),await Yb?.shutdown();}catch{}finally{jv?.();try{Kb?.disable();}catch{}ef=false,Gv=void 0,Kb=void 0,Yb=void 0,jv=void 0;}}async function Ge(e){if(!$v()||!e.root&&!hAe())return e.fn(void 0);let t=e.serviceName===void 0?e.attributes:{...e.attributes??{},"momentic.span_service_name":e.serviceName};return await SAe(e.serviceName).startActiveSpan(e.name,{attributes:t,kind:e.kind??SpanKind.CLIENT},async n=>{try{let o=await e.fn(n);return n.setStatus({code:SpanStatusCode.OK}),o}catch(o){throw n.setStatus({code:SpanStatusCode.ERROR,message:o instanceof Error?o.message.slice(0,300):void 0}),o instanceof Error&&n.recordException(o),o}finally{n.end();}})}var Jb=class{increment(t,n,o){}gauge(t,n){}distribution(t,n,o){}async flush(){}async recordDuration(t){return await qN(t)}};async function qN({fn:e,name:t,timeoutMs:n,timeoutMessage:o,trace:r}){let i=r?()=>Ge({name:r.name,attributes:r.attributes,fn:e}):e,s=Promise.resolve(i());return n===void 0?await s:await Ie(s,{milliseconds:n,message:o??`Timed out after ${n}ms recording duration for ${t}`})}function bAe(e){if(!e||e.length===0)return {};let t={};for(let n of e){let o=n.indexOf(":");if(o>-1){let r=n.slice(0,o).trim(),i=n.slice(o+1).trim();r&&(t[r]=i);continue}t[n]=true;}return t}function KN(e,t){let n=bAe(e);return !t||Object.keys(t).length===0?n:{...t,...n}}function PAe(){return new OTLPMetricExporter({url:`${Yg}/v1/metrics`,headers:{"x-momentic-metrics-api-key":Jg},temporalityPreference:AggregationTemporalityPreference.DELTA})}var YN=[100,500,1e3,2e3,3e3,4e3,5e3,7500,1e4,15e3,2e4],zv=(e,t)=>({instrumentName:e,instrumentType:InstrumentType.HISTOGRAM,aggregation:{type:AggregationType.EXPLICIT_BUCKET_HISTOGRAM,options:{boundaries:t,recordMinMax:false}}}),OAe=[zv("test_event_duration",YN),zv("test_step_duration",YN),zv("test_mobile_step_duration",YN),zv("web_agent_action_duration",[25,50,100,200,350,500,750,1e3,2e3,5e3,1e4,2e4])],Wv=class{globalAttributes;provider;meter;counterCache=new Map;histogramCache=new Map;observableGaugeCache=new Map;gaugeValues=new Map;getCounter(t){let n=this.counterCache.get(t);if(n)return n;let o=this.meter.createCounter(t);return this.counterCache.set(t,o),o}getHistogram(t){let n=this.histogramCache.get(t);if(n)return n;let o=this.meter.createHistogram(t);return this.histogramCache.set(t,o),o}ensureObservableGauge(t){let n=this.observableGaugeCache.get(t);if(n)return n;let o=this.meter.createObservableGauge(t);return o.addCallback(r=>{let i=this.gaugeValues.get(t);i!==void 0&&r.observe(i,this.globalAttributes);}),this.observableGaugeCache.set(t,o),o}constructor(t){this.globalAttributes={...t.globalAttributes??{}};let n=typeof process<"u"?"production":"unknown",o=resourceFromAttributes({[ATTR_SERVICE_NAME]:t.serviceName,[Uv]:n,[Hv]:typeof process<"u"&&process.env.SERVICE_INSTANCE_ID?process.env.SERVICE_INSTANCE_ID:v4$1(),[ATTR_SERVICE_VERSION]:"3.10.2"}),r=PAe(),i=new PeriodicExportingMetricReader({exporter:r,exportIntervalMillis:t.exportIntervalMs??6e4});this.provider=new MeterProvider({resource:o,readers:[i],views:OAe}),metrics.setGlobalMeterProvider(this.provider),this.meter=metrics.getMeter("momentic-serverless");}increment(t,n,o){try{let r=KN(o,this.globalAttributes);this.getCounter(t).add(typeof n=="number"?n:1,r);}catch{}}gauge(t,n){try{this.ensureObservableGauge(t),this.gaugeValues.set(t,n);}catch{}}distribution(t,n,o){try{let r=KN(o,this.globalAttributes);this.getHistogram(t).record(n,r);}catch{}}async flush(){try{await this.provider.forceFlush();}catch{}}async recordDuration(t){let{name:n,tags:o}=t,r=Date.now();try{return await qN(t)}finally{this.distribution(n,Date.now()-r,o);}}};var Tt=new Jb;function pY(e){if(!e.disabled)try{Tt=new Wv(e);}catch{Tt=new Jb;}}var JN;function mY(e){JN=e;}function qu(e){NAe(e)&&JN&&JN(e);}var MAe=new Set(["InternalWebAgentError","InternalPlatformError","UnknownError"]);function NAe(e){return e instanceof Error&&e.name==="AbortError"||dC(e,De)?false:e instanceof ne?MAe.has(e.reason):true}function LAe({usage:e,promptType:t,result:n="success"}){let o=[`type:${t}`,`result:${n}`],r=e.inputTokens??0,i=e.inputTokenDetails.cacheReadTokens??e.cachedInputTokens??0,s=e.outputTokens??0;Tt.distribution("ai_session_tokens",r,[...o,"category:input"]),Tt.distribution("ai_session_tokens",Math.max(0,Math.min(i,r)),[...o,"category:cached_input"]),Tt.distribution("ai_session_tokens",s,[...o,"category:output"]);}function qv({usage:e,promptType:t,logger:n,message:o,result:r="success",attributes:i}){LAe({usage:e,promptType:t,result:r}),n.info({...i,promptType:t,result:r,usage:e},o);}function Aa({usage:e,promptType:t,logger:n}){let o=Promise.resolve(e).catch(r=>{n.warn({err:r,promptType:t},"Failed to resolve AI session usage");});return ({message:r,result:i="success",attributes:s})=>{o.then(a=>{a&&qv({usage:a,promptType:t,logger:n,result:i,message:r,attributes:s});});}}function wY(){return globalThis.crypto}function eL(e){let t=wY(),n=new Uint8Array(e);if(t&&typeof t.getRandomValues=="function")return t.getRandomValues(n),n;for(let o=0;o<n.length;o++)n[o]=Math.floor(Math.random()*256);return n}function Yu(){let e=wY();if(e&&typeof e.randomUUID=="function")return e.randomUUID();let t=eL(16);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=[...t].map(o=>o.toString(16).padStart(2,"0")).join("");return `${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function tL(e){let t=globalThis.Buffer;if(t)return t.from(e).toString("base64");let n="";for(let a=0;a<e.length;a++)n+=String.fromCharCode(e[a]);let o=globalThis.btoa;if(typeof o=="function")return o(n);let r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i="",s=0;for(;s<n.length;){let a=n.charCodeAt(s++)&255,l=s<n.length?n.charCodeAt(s++)&255:NaN,c=s<n.length?n.charCodeAt(s++)&255:NaN,d=a>>2,u=(a&3)<<4|(Number.isNaN(l)?0:l>>4),p=Number.isNaN(l)?64:(l&15)<<2|(Number.isNaN(c)?0:c>>6),m=Number.isNaN(c)?64:c&63;i+=r.charAt(d),i+=r.charAt(u),i+=p===64?"=":r.charAt(p),i+=m===64?"=":r.charAt(m);}return i}function DAe(e){return new Promise(t=>setTimeout(t,e))}function Qb(e){if(e)return e.endsWith("/")?e:`${e}/`}function FAe(e){var t;let n=(t=e.get("Retry-After"))!=null?t:e.get("retry-after");if(!n)return;let o=Number(n);if(n.trim()!==""&&!Number.isNaN(o))return o*1e3;let r=new Date(n).getTime();if(!Number.isNaN(r)){let i=r-Date.now();return i>0?i:0}}function BAe(e,t){if(t&&typeof t=="object"&&t!==null&&"retryAfterMs"in t){let r=t.retryAfterMs;if(typeof r=="number")return Math.max(0,r)}if(e<=1)return 0;let n=500,o=Math.pow(2,e-2);return n*o}async function UAe(e,t,n){let o=n.sdkName?`[raindrop-ai/${n.sdkName}]`:"[raindrop-ai/core]",r;for(let i=1;i<=n.maxAttempts;i++){if(i>1){let s=BAe(i,r);n.debug&&console.warn(`${o} ${t} retry ${i}/${n.maxAttempts} in ${s}ms`),s>0&&await DAe(s);}else n.debug&&console.log(`${o} ${t} attempt ${i}/${n.maxAttempts}`);try{return await e()}catch(s){if(r=s,n.debug){let a=s instanceof Error?s.message:String(s);console.warn(`${o} ${t} attempt ${i} failed: ${a}${i===n.maxAttempts?" (no more retries)":""}`);}if(r&&typeof r=="object"&&"retryable"in r&&!r.retryable||i===n.maxAttempts)break}}throw r instanceof Error?r:new Error(String(r))}async function Lm(e,t,n,o){let r=`POST ${e}`;await UAe(async()=>{let i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t)});if(!i.ok){let s=await i.text().catch(()=>""),a=new Error(`HTTP ${i.status} ${i.statusText}${s?`: ${s}`:""}`),l=FAe(i.headers);throw typeof l=="number"&&(a.retryAfterMs=l),a.retryable=i.status===429||i.status>=500,a}},r,o);}var hY={UNSET:0,ERROR:2};function gY(e){let t=e?e.traceIdB64:tL(eL(16)),n=tL(eL(8));return {traceIdB64:t,spanIdB64:n,parentSpanIdB64:e?e.spanIdB64:void 0}}function Zb(){return Date.now().toString()+"000000"}function fY(e){return String(Math.floor(e))+"000000"}function Y(e,t){if(t!==void 0)return {key:e,value:{stringValue:t}}}function et(e,t){if(t!==void 0&&Number.isFinite(t))return {key:e,value:{intValue:String(Math.trunc(t))}}}function nf(e,t){if(t!==void 0&&Number.isFinite(t))return {key:e,value:{doubleValue:t}}}function HAe(e,t){if(t!==void 0)return {key:e,value:{boolValue:t}}}function Pd(e,t){if(!(!t||t.length===0))return {key:e,value:{arrayValue:{values:t.filter(n=>typeof n=="string").map(n=>({stringValue:n}))}}}}function XN(e){let t=e.attributes.filter(o=>o!==void 0),n={traceId:e.ids.traceIdB64,spanId:e.ids.spanIdB64,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano};return e.ids.parentSpanIdB64&&(n.parentSpanId=e.ids.parentSpanIdB64),t.length&&(n.attributes=t),e.status&&(n.status=e.status),n}function yY(e,t="raindrop.core",n="0.0.0"){return {resourceSpans:[{resource:{attributes:[{key:"service.name",value:{stringValue:t}}]},scopeSpans:[{scope:{name:t,version:n},spans:e}]}]}}var GAe="RAINDROP_LOCAL_DEBUGGER",jAe="RAINDROP_WORKSHOP",SY="http://localhost:5899/v1/";function lL(e){var t;try{let n=(t=globalThis?.process)==null?void 0:t.env;if(n&&typeof n[e]=="string"&&n[e].length>0)return n[e]}catch{}}function $Ae(){let e=lL(jAe);if(e===void 0)return;let t=e.trim();if(t.length!==0){if(/^https?:\/\//i.test(t))return {url:t};if(/^(1|true|yes|on)$/i.test(t))return "enable";if(/^(0|false|no|off)$/i.test(t))return "disable"}}function VAe(e){return e?!!(e==="localhost"||e==="127.0.0.1"||e==="0.0.0.0"||e==="::1"||e.endsWith(".localhost")):false}function zAe(){try{let e=globalThis?.location;if(e&&typeof e.hostname=="string"&&e.hostname.length>0)return e.hostname}catch{}}function WAe(){return !!(VAe(zAe())||lL("NODE_ENV")==="development")}function Dm(e){var t,n,o;if(e===null)return null;if(typeof e=="string"&&e.length>0)return (t=Qb(e))!=null?t:null;let r=lL(GAe);if(r)return (n=Qb(r))!=null?n:null;let i=$Ae();return i==="disable"?null:i==="enable"?SY:i&&"url"in i?(o=Qb(i.url))!=null?o:null:WAe()?SY:null}function eR(e){return Dm(e)!==null}function qAe(e,t={}){var n;let o=Dm(t.baseUrl);o&&Lm(`${o}traces`,e,{},{maxAttempts:1,debug:(n=t.debug)!=null?n:false,sdkName:t.sdkName}).catch(()=>{});}function KAe(e,t={}){var n;let o=Dm(t.baseUrl);if(!o)return;let r=t.writeKey?{Authorization:`Bearer ${t.writeKey}`}:{};Lm(`${o}events/track_partial`,e,r,{maxAttempts:1,debug:(n=t.debug)!=null?n:false,sdkName:t.sdkName}).catch(()=>{});}function Ku(e,t={}){var n,o;let r=Dm(t.baseUrl);r&&Lm(`${r}live`,{...e,type:e.type,timestamp:(n=e.timestamp)!=null?n:Date.now()},{},{maxAttempts:1,debug:(o=t.debug)!=null?o:false,sdkName:t.sdkName}).catch(()=>{});}function YAe(e,t){var n,o,r,i;let s={...e,...t};return (e.properties||t.properties)&&(s.properties={...(n=e.properties)!=null?n:{},...(o=t.properties)!=null?o:{}}),(e.attachments||t.attachments)&&(s.attachments=[...(r=e.attachments)!=null?r:[],...(i=t.attachments)!=null?i:[]]),s}var JAe=class{constructor(e){this.buffers=new Map,this.sticky=new Map,this.timers=new Map,this.inFlight=new Set;var t,n,o,r,i,s,a,l;this.writeKey=(t=e.writeKey)==null?void 0:t.trim(),this.baseUrl=(n=Qb(e.endpoint))!=null?n:"https://api.raindrop.ai/v1/",this.enabled=e.enabled!==false,this.debug=e.debug,this.partialFlushMs=(o=e.partialFlushMs)!=null?o:1e3,this.sdkName=(r=e.sdkName)!=null?r:"core",this.prefix=`[raindrop-ai/${this.sdkName}]`,this.defaultEventName=(i=e.defaultEventName)!=null?i:"ai_generation",this.localDebuggerUrl=(s=Dm(e.localDebuggerUrl))!=null?s:void 0,this.debug&&this.localDebuggerUrl&&console.log(`${this.prefix} Local debugger mirroring: ${this.localDebuggerUrl}`);let c=typeof process<"u"&&typeof process.version=="string";this.context={library:{name:(a=e.libraryName)!=null?a:"@raindrop-ai/core",version:(l=e.libraryVersion)!=null?l:"0.0.0"},metadata:{jsRuntime:c?"node":"web",...c?{nodeVersion:process.version}:{}}};}isDebugEnabled(){return this.debug}authHeaders(){return this.writeKey?{Authorization:`Bearer ${this.writeKey}`}:{}}async patch(e,t){var n,o,r,i,s,a,l,c,d,u,p;if(!this.enabled||!e||!e.trim())return;this.debug&&console.log(`${this.prefix} queue patch`,{eventId:e,userId:t.userId,convoId:t.convoId,eventName:t.eventName,hasInput:typeof t.input=="string"&&t.input.length>0,hasOutput:typeof t.output=="string"&&t.output.length>0,attachments:(o=(n=t.attachments)==null?void 0:n.length)!=null?o:0,isPending:t.isPending});let m=(r=this.sticky.get(e))!=null?r:{},h=(i=this.buffers.get(e))!=null?i:{},g=YAe(h,t);g.isPending=(l=(a=(s=t.isPending)!=null?s:h.isPending)!=null?a:m.isPending)!=null?l:true,this.buffers.set(e,g),this.sticky.set(e,{userId:(c=g.userId)!=null?c:m.userId,convoId:(d=g.convoId)!=null?d:m.convoId,eventName:(u=g.eventName)!=null?u:m.eventName,isPending:(p=g.isPending)!=null?p:m.isPending});let f=this.timers.get(e);if(f&&clearTimeout(f),g.isPending===false){await this.flushOne(e);return}let y=setTimeout(()=>{this.flushOne(e).catch(()=>{});},this.partialFlushMs);this.timers.set(e,y);}async finish(e,t){await this.patch(e,{...t,isPending:false});}async flush(){if(!this.enabled)return;let e=[...this.buffers.keys()];await Promise.all(e.map(t=>this.flushOne(t))),await Promise.all([...this.inFlight].map(t=>t.catch(()=>{})));}async shutdown(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),await this.flush();}async trackSignal(e){var t,n;if(!this.enabled)return;let o=[{event_id:e.eventId,signal_name:e.name,signal_type:(t=e.type)!=null?t:"default",timestamp:e.timestamp,sentiment:e.sentiment,attachment_id:e.attachmentId,properties:{...(n=e.properties)!=null?n:{},...e.comment?{comment:e.comment}:{},...e.after?{after:e.after}:{}}}];if(!this.writeKey)return;let r=`${this.baseUrl}signals/track`;try{await Lm(r,o,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});}catch(i){let s=i instanceof Error?i.message:String(i);console.warn(`${this.prefix} failed to send signal (dropping): ${s}`);}}async identify(e){if(!this.enabled)return;let n=(Array.isArray(e)?e:[e]).filter(r=>!r?.userId||!r.userId.trim()?(this.debug&&console.warn(`${this.prefix} skipping identify: missing userId`),false):true).map(r=>{var i;return {user_id:r.userId,traits:(i=r.traits)!=null?i:{}}});if(!this.writeKey||n.length===0)return;let o=`${this.baseUrl}users/identify`;try{await Lm(o,n,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(`${this.prefix} failed to send identify (dropping): ${i}`);}}async flushOne(e){var t,n,o,r,i,s,a,l,c,d,u,p,m;if(!this.enabled)return;let h=this.timers.get(e);h&&(clearTimeout(h),this.timers.delete(e));let g=this.buffers.get(e);if(this.buffers.delete(e),!g)return;let f=(t=this.sticky.get(e))!=null?t:{},y=(o=(n=g.eventName)!=null?n:f.eventName)!=null?o:this.defaultEventName,S=(r=g.userId)!=null?r:f.userId;if(!S){this.debug&&console.warn(`${this.prefix} skipping track_partial for ${e}: missing userId`),this.sticky.delete(e);return}let{wizardSession:b,...E}=(i=g.properties)!=null?i:{},C=(s=g.convoId)!=null?s:f.convoId,w=(l=(a=g.isPending)!=null?a:f.isPending)!=null?l:true,I={event_id:e,user_id:S,event:y,timestamp:(c=g.timestamp)!=null?c:new Date().toISOString(),ai_data:{input:g.input,output:g.output,model:g.model,convo_id:C},properties:{...E,...b?{"raindrop.wizardSession":b}:{},$context:this.context},attachments:g.attachments,is_pending:w},P=`${this.baseUrl}events/track_partial`;if(this.debug&&console.log(`${this.prefix} sending track_partial`,{eventId:e,eventName:y,userId:S,convoId:C,isPending:w,inputPreview:typeof g.input=="string"?g.input.slice(0,120):void 0,outputPreview:typeof g.output=="string"?g.output.slice(0,120):void 0,attachments:(u=(d=g.attachments)==null?void 0:d.length)!=null?u:0,attachmentKinds:(m=(p=g.attachments)==null?void 0:p.map(_=>({type:_.type,role:_.role,name:_.name,valuePreview:_.value.slice(0,60)})))!=null?m:[],endpoint:P}),this.localDebuggerUrl&&KAe(I,{baseUrl:this.localDebuggerUrl,writeKey:this.writeKey,debug:this.debug,sdkName:this.sdkName}),!this.writeKey){w||this.sticky.delete(e);return}let v=Lm(P,I,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});this.inFlight.add(v);try{try{await v,this.debug&&console.log(`${this.prefix} sent track_partial ${e} (${y})`);}catch(_){let x=_ instanceof Error?_.message:String(_);console.warn(`${this.prefix} failed to send track_partial (dropping): ${x}`);}}finally{this.inFlight.delete(v);}w||this.sticky.delete(e);}},IY=["apikey","apisecret","apitoken","secretaccesskey","sessiontoken","privatekey","privatekeyid","clientsecret","accesstoken","refreshtoken","oauthtoken","bearertoken","authorization","password","passphrase"],xY="[REDACTED]";function _Y(e){return e.toLowerCase().replace(/[-_.]/g,"")}function PY(e,t){var n,o;let r=XAe((n=t?.secretKeyNames)!=null?n:IY),i=(o=t?.placeholder)!=null?o:xY,s=new WeakSet,a=l=>{if(l===null||typeof l!="object")return l;if(s.has(l))return "[CIRCULAR]";if(s.add(l),Array.isArray(l))return l.map(d=>a(d));let c={};for(let[d,u]of Object.entries(l))r.has(_Y(d))?c[d]=i:c[d]=a(u);return c};return a(e)}function XAe(e){let t=new Set;for(let n of e)t.add(_Y(n));return t}var OY=["ai.request.providerOptions","ai.response.providerMetadata"];function MY(e){let t=e.attributes;if(!t||t.length===0)return e;let n;for(let o=0;o<t.length;o++){let r=t[o],i=NY(r.key,r.value);i!==void 0&&(n||(n=t.slice()),n[o]={key:r.key,value:i});}return n?{...e,attributes:n}:e}var QAe=new Set(OY);function NY(e,t){if(!QAe.has(e))return;let n=t.stringValue;if(typeof n!="string"||n.length===0)return;let o;try{o=JSON.parse(n);}catch{return}let r=PY(o),i;try{i=JSON.stringify(r);}catch{return}if(i!==n)return {stringValue:i}}var ZAe=class{constructor(e){this.queue=[],this.inFlight=new Set;var t,n,o,r,i,s,a,l,c;this.writeKey=(t=e.writeKey)==null?void 0:t.trim(),this.baseUrl=(n=Qb(e.endpoint))!=null?n:"https://api.raindrop.ai/v1/",this.enabled=e.enabled!==false,this.debug=e.debug,this.debugSpans=e.debugSpans===true,this.flushIntervalMs=(o=e.flushIntervalMs)!=null?o:1e3,this.maxBatchSize=(r=e.maxBatchSize)!=null?r:50,this.maxQueueSize=(i=e.maxQueueSize)!=null?i:5e3,this.sdkName=(s=e.sdkName)!=null?s:"core",this.prefix=`[raindrop-ai/${this.sdkName}]`,this.serviceName=(a=e.serviceName)!=null?a:"raindrop.core",this.serviceVersion=(l=e.serviceVersion)!=null?l:"0.0.0",this.localDebuggerUrl=(c=Dm(e.localDebuggerUrl))!=null?c:void 0,this.debug&&this.localDebuggerUrl&&console.log(`${this.prefix} Local debugger mirroring: ${this.localDebuggerUrl}`),this.transformSpanHook=e.transformSpan,this.disableDefaultRedaction=e.disableDefaultRedaction===true;}redactSpan(e){let t=e;if(this.transformSpanHook)try{let n=this.transformSpanHook(t);if(n===null)return null;n!==void 0&&(t=n);}catch(n){if(this.debug){let o=n instanceof Error?n.message:String(n);console.warn(`${this.prefix} transformSpan hook threw: ${o}`);}return null}return this.disableDefaultRedaction||(t=MY(t)),t}isDebugEnabled(){return this.debug}authHeaders(){return this.writeKey?{Authorization:`Bearer ${this.writeKey}`}:{}}startSpan(e){var t,n;let o=gY(e.parent),r=(t=e.startTimeUnixNano)!=null?t:Zb(),i=[Y("ai.telemetry.metadata.raindrop.eventId",e.eventId),Y("ai.operationId",e.operationId)];(n=e.attributes)!=null&&n.length&&i.push(...e.attributes);let s={ids:o,name:e.name,startTimeUnixNano:r,attributes:i};return this.mirrorToLocalDebugger(XN({ids:s.ids,name:s.name,startTimeUnixNano:s.startTimeUnixNano,endTimeUnixNano:s.startTimeUnixNano,attributes:s.attributes,status:{code:hY.UNSET}})),s}mirrorToLocalDebugger(e){if(!this.localDebuggerUrl)return;let t=this.redactSpan(e);if(t===null)return;let n=yY([t],this.serviceName,this.serviceVersion);qAe(n,{baseUrl:this.localDebuggerUrl,debug:false,sdkName:this.sdkName});}endSpan(e,t){var n,o;if(e.endTimeUnixNano)return;e.endTimeUnixNano=(n=t?.endTimeUnixNano)!=null?n:Zb(),(o=t?.attributes)!=null&&o.length&&e.attributes.push(...t.attributes);let r=t?.status;if(!r&&t?.error!==void 0){let s=t.error instanceof Error?t.error.message:String(t.error);r={code:hY.ERROR,message:s};}let i=XN({ids:e.ids,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano,attributes:e.attributes,status:r});this.enqueue(i),this.mirrorToLocalDebugger(i);}createSpan(e){var t;let n=gY(e.parent),o=[Y("ai.telemetry.metadata.raindrop.eventId",e.eventId)];(t=e.attributes)!=null&&t.length&&o.push(...e.attributes);let r=XN({ids:n,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano,attributes:o,status:e.status});this.enqueue(r),this.mirrorToLocalDebugger(r);}enqueue(e){if(!this.enabled)return;if(this.debugSpans){let n=o=>o?o.slice(-8):"none";console.log(`${this.prefix}[span] name=${e.name} trace=${n(e.traceId)} span=${n(e.spanId)} parent=${n(e.parentSpanId)}`);}let t=this.redactSpan(e);if(t!==null){if(this.queue.length>=this.maxQueueSize&&this.queue.shift(),this.queue.push(t),this.queue.length>=this.maxBatchSize){this.flush().catch(()=>{});return}this.timer||(this.timer=setTimeout(()=>{this.timer=void 0,this.flush().catch(()=>{});},this.flushIntervalMs));}}async flush(){if(this.enabled)for(this.timer&&(clearTimeout(this.timer),this.timer=void 0);this.queue.length>0;){let e=this.queue.splice(0,this.maxBatchSize);if(!this.writeKey)continue;let t=yY(e,this.serviceName,this.serviceVersion),n=`${this.baseUrl}traces`;this.debug&&console.log(`${this.prefix} sending traces batch`,{spans:e.length,endpoint:n});let o=Lm(n,t,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});this.inFlight.add(o);try{try{await o,this.debug&&console.log(`${this.prefix} sent ${e.length} spans`);}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(`${this.prefix} failed to send ${e.length} spans: ${i}`);}}finally{this.inFlight.delete(o);}}}async shutdown(){this.timer&&(clearTimeout(this.timer),this.timer=void 0),await this.flush(),await Promise.all([...this.inFlight].map(e=>e.catch(()=>{})));}},eEe={};function bY(){return globalThis.RAINDROP_ASYNC_LOCAL_STORAGE}var tEe=class{constructor(){this._stack=[];}isEmpty(){return this._stack.length===0}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},nEe=class{},oEe=class extends nEe{constructor(){super(),this._fallback=null;let e=bY();if(e){this._storage=new e;return}this._fallback=new tEe,this._storage=this._fallback;}maybeAdoptAsyncLocalStorage(){if(!this._fallback||!this._fallback.isEmpty())return;let e=bY();e&&(this._storage=new e,this._fallback=null);}isReady(){return true}getParentSpanIds(){this.maybeAdoptAsyncLocalStorage();let e=this._storage.getStore();if(!(!e||e===eEe))return {traceIdB64:e.traceIdB64,spanIdB64:e.spanIdB64,eventId:e.eventId}}runInContext(e,t){return this.maybeAdoptAsyncLocalStorage(),this._storage.run(e,t)}getCurrentSpan(){return this.maybeAdoptAsyncLocalStorage(),this._storage.getStore()}},QN=null;function Ju(){return QN||(QN=globalThis.RAINDROP_CONTEXT_MANAGER?new globalThis.RAINDROP_CONTEXT_MANAGER:new oEe),QN}function LY(e,t){return Ju().runInContext(e,t)}async function km(){return Ju().getParentSpanIds()}async function eT(e,t){let n=Ju(),o={traceIdB64:e.traceIdB64,spanIdB64:e.spanIdB64,eventId:e.eventId};return n.runInContext(o,t)}async function*rEe(e,t){let n;for(;;){let o=await LY(e,async()=>{try{return await t.next(n)}catch(r){return {value:void 0,done:true,error:r}}});if("error"in o&&o.error!==void 0)throw o.error;if(o.done)return o.value;n=yield o.value;}}globalThis.RAINDROP_ASYNC_LOCAL_STORAGE=AsyncLocalStorage;function Se(e){return typeof e=="object"&&e!==null}function ci(e){return typeof e=="function"}function TY(e){var t;if(!e||typeof e!="object")return false;if(((t=e.constructor)==null?void 0:t.name)==="Module")return true;try{let o=Object.keys(e);if(o.length===0)return !1;let r=Object.getOwnPropertyDescriptor(e,o[0]);if(!r)return !1;let i="writable"in r?r.writable:!0;return !r.configurable&&!i}catch{return false}}function Qv(e){try{return JSON.stringify(e)}catch{return}}function dt(e){try{return JSON.stringify(e,(t,n)=>n instanceof Uint8Array?tL(n):n)}catch{return}}function iR(e){if(typeof e=="string"){let r=e.indexOf("/");return r>0&&r<e.length-1?{provider:e.slice(0,r),modelId:e.slice(r+1)}:{modelId:e}}if(!Se(e))return {};let t=typeof e.provider=="string"?e.provider:void 0,n;if(typeof e.modelId=="string"?n=e.modelId:typeof e.model=="string"&&(n=e.model),!n)return {provider:t};let o=n.indexOf("/");return !t&&o>0&&o<n.length-1?{provider:n.slice(0,o),modelId:n.slice(o+1)}:{provider:t,modelId:n}}function cL(e){if(!Se(e))return;let t=e.text;return typeof t=="string"?t:void 0}function iEe(e){var t;if(!Se(e))return;let n=e.object;if(n!==void 0)return (t=Qv(n))!=null?t:String(n)}function sEe(e){if(typeof e!="function")return false;let t=e.prototype;return Se(t)?typeof t.generate=="function"&&typeof t.stream=="function":false}function dL(e){if(!Se(e))return;let t=e.model;if(typeof t=="string"&&t.length)return t;let n=e.response;if(Se(n)){let o=n.modelId;if(typeof o=="string"&&o.length)return o}}function tT(e){if(Se(e)){if(typeof e.finishReason=="string")return e.finishReason;if(Se(e.finishReason)&&typeof e.finishReason.unified=="string")return e.finishReason.unified}}function AY(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa=="function"?btoa(t):""}function Zv(e,t){if(e instanceof URL)return e.toString();if(typeof e=="string")return e.startsWith("data:")||e.startsWith("http://")||e.startsWith("https://")?e:`data:${t};base64,${e}`;if(e instanceof Uint8Array){let n=AY(e);return n?`data:${t};base64,${n}`:void 0}if(e instanceof ArrayBuffer){let n=AY(new Uint8Array(e));return n?`data:${t};base64,${n}`:void 0}}function kY(e){if(typeof e=="string")return e;if(e instanceof URL)return e.toString();if(e instanceof Uint8Array)return `[binary:${e.byteLength} bytes]`;if(e instanceof ArrayBuffer)return `[binary:${e.byteLength} bytes]`}function EY(e){if(typeof e.mediaType=="string")return e.mediaType;if(typeof e.mimeType=="string")return e.mimeType;let t=e.file;if(Se(t)){if(typeof t.mediaType=="string")return t.mediaType;if(typeof t.mimeType=="string")return t.mimeType}}function aEe(e){if(typeof e.filename=="string")return e.filename;if(typeof e.name=="string")return e.name;let t=e.file;if(Se(t)){if(typeof t.filename=="string")return t.filename;if(typeof t.name=="string")return t.name}}function lEe(e){if("data"in e)return e.data;let t=e.file;if(Se(t)){if("file_data"in t)return t.file_data;if("data"in t)return t.data}}function cEe(e,t){var n,o,r;let i=e.type;if(typeof i=="string"){if(i==="image"){let s=(n=EY(e))!=null?n:"image/png",a=Zv(e.image,s);return a?{type:"image",role:t,value:a}:void 0}if(i==="image_url"){let s=e.image_url,a=Se(s)?s.url:s,l=Zv(a,"image/png");return l?{type:"image",role:t,value:l}:void 0}if(i==="file"){let s=EY(e),a=lEe(e),l=s?.startsWith("image/")===true,c=l&&s?Zv(a,s):kY(a);if(!c)return;let d=(r=(o=aEe(e))!=null?o:s)!=null?r:"file";return {type:l?"image":"text",role:t,name:d,value:c}}}}function nL(e,t){if(!Array.isArray(e))return;let n=[];for(let o of e){if(!Se(o))continue;let r=cEe(o,t);r&&n.push(r);}return n.length?n:void 0}function dEe(e){var t,n,o,r;let i=typeof e.mediaType=="string"?e.mediaType:typeof e.mimeType=="string"?e.mimeType:void 0,s=(r=(o=(n=(t=e.base64Data)!=null?t:e.base64)!=null?n:e.uint8ArrayData)!=null?o:e.uint8Array)!=null?r:e.data,a=i?.startsWith("image/")===true,l=a&&i?Zv(s,i):kY(s);if(!l)return;let c=typeof e.filename=="string"?e.filename:typeof e.name=="string"?e.name:i??"file";return {type:a?"image":"text",role:"output",name:c,value:l}}async function uEe(e){let t=e;if(t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function")try{t=await t;}catch{return}if(!Array.isArray(t))return;let n=[];for(let o of t){if(!Se(o))continue;let r=dEe(o);r&&n.push(r);}return n.length?n:void 0}function DY(e){if(typeof e=="string")return e;if(!Array.isArray(e))return;let t="";for(let n of e)!Se(n)||n.type!=="text"||typeof n.text!="string"||(t+=n.text);return t.length?t:void 0}function uL(e){let t=e.messages;if(Array.isArray(t))return t;let n=e.prompt;if(Array.isArray(n))return n}function FY(e){let t=uL(e);if(t)for(let n=t.length-1;n>=0;n--){let o=t[n];if(Se(o)&&o.role==="user")return o}}function pL(e){var t;if(Se(e))return nL((t=FY(e))==null?void 0:t.content,"input")}async function mL(e){if(!Se(e))return;let t=await uEe(e.files);if(t?.length)return t;let n=sR(e);for(let o=n.length-1;o>=0;o--){let r=n[o];if(!(!Se(r)||r.role!=="assistant"))return nL(r.content,"output")}return nL(e.content,"output")}function hL(e){var t,n;if(!Se(e))return;let o=(t=FY(e))==null?void 0:t.content;if(o===void 0)return;let r=DY(o);return r!==void 0?r:(n=dt(o))!=null?n:String(o)}function gL(e){var t;if(!Se(e))return;let n=e.prompt;if(typeof n=="string")return n;let o=uL(e);if(Array.isArray(o)&&o.length>0){let i=o[o.length-1];if(Se(i)){let s=i.content,a=DY(s);if(a!==void 0)return a;let l=Qv(s);if(l)return l}return (t=Qv(o))!=null?t:void 0}let r=e.input;return typeof r=="string"?r:Qv(e)}function fL(e){if(!Se(e))return [];let t=[];typeof e.system=="string"&&e.system&&t.push({role:"system",content:e.system});let n=uL(e);if(Array.isArray(n)){for(let o of n)Se(o)&&typeof o.role=="string"&&t.push(o);return t}return typeof e.prompt=="string"&&e.prompt&&t.push({role:"user",content:e.prompt}),t}function sR(e){if(!Se(e))return [];let t=e.response;if(Se(t)&&Array.isArray(t.messages))return t.messages.filter(o=>Se(o)&&typeof o.role=="string"&&"content"in o).map(o=>o);let n=e.steps;if(Array.isArray(n)&&n.length>0){let o=n[n.length-1];if(Se(o)&&Se(o.response)){let r=o.response.messages;if(Array.isArray(r))return r.filter(i=>Se(i)&&typeof i.role=="string"&&"content"in i).map(i=>i)}}return []}function tR(e){if(typeof e.toolCallId=="string"&&e.toolCallId.length>0)return `id:${e.toolCallId}`;if(typeof e.toolName=="string"&&e.toolName.length>0){let t=dt(e.input);return t!==void 0?`name:${e.toolName}|input:${t}`:`name:${e.toolName}`}}function pEe(e,t){return e.isError===true||e.type==="tool-error"?true:Se(t)&&typeof t.type=="string"?t.type.startsWith("error")||t.type==="execution-denied":false}function mEe(e){if(typeof e=="string"&&e.length>0)return e;if(Se(e)){if(typeof e.value=="string"&&e.value.length>0)return e.value;if(typeof e.reason=="string"&&e.reason.length>0)return e.reason;if(typeof e.message=="string"&&e.message.length>0)return e.message}return dt(e)}function hEe(e){if(!Se(e))return [];let t=e.content;return Array.isArray(t)?t.filter(Se):Se(t)?[t]:[]}function gEe(e){return "input"in e?e.input:"args"in e?e.args:void 0}function yL(e){let t=e.toolCallId;return typeof t=="string"&&t.length>0?t:void 0}function fEe(e){return "output"in e?e.output:"result"in e?e.result:e.error}function yEe(e,t,n){var o;if(!t)return;let r=(o=e.get(t))!=null?o:[];r.includes(n)||(r.push(n),e.set(t,r));}function SEe(e,t){if(!t)return;let n=e.get(t);if(!n||n.length===0)return;let o=n.shift();if(o!==void 0)return n.length===0&&e.delete(t),o}function bEe(e){var t,n,o,r;let{spans:i,pendingKeysByToolName:s,part:a}=e,l=yL(a),c=typeof a.toolName=="string"?a.toolName:void 0,d=gEe(a),u=tR({toolCallId:l,toolName:c,input:d});if(!u)return;let p=l==null?tR({toolCallId:void 0,toolName:c,input:void 0}):void 0,m=p&&p!==u?i.get(p):void 0,h=(t=i.get(u))!=null?t:m;i.set(u,{key:u,toolCallId:(n=h?.toolCallId)!=null?n:l,toolName:(o=h?.toolName)!=null?o:c,input:(r=h?.input)!=null?r:d,result:h?.result,status:h?.status,errorMessage:h?.errorMessage}),p&&p!==u&&i.delete(p),!l&&h?.result===void 0&&yEe(s,c,u);}function TEe(e){var t,n,o;let{spans:r,pendingKeysByToolName:i,part:s}=e,a=yL(s),l=typeof s.toolName=="string"?s.toolName:void 0,c=fEe(s),d=tR({toolCallId:a,toolName:l,input:void 0}),u=a!=null?d:(t=SEe(i,l))!=null?t:d;if(!u)return;let p=r.get(u),m=pEe(s,c);r.set(u,{key:u,toolCallId:(n=p?.toolCallId)!=null?n:a,toolName:(o=p?.toolName)!=null?o:l,input:p?.input,result:c,status:m?"ERROR":"OK",errorMessage:m?mEe(c):void 0});}function BY(e){let t=new Map,n=new Map;for(let o of e)for(let r of hEe(o)){if(r.type==="tool-call"){bEe({spans:t,pendingKeysByToolName:n,part:r});continue}(r.type==="tool-result"||r.type==="tool-error")&&TEe({spans:t,pendingKeysByToolName:n,part:r});}return [...t.values()]}function AEe(e){if(!Array.isArray(e))return;let t="";for(let n of e)Se(n)&&n.type==="text"&&typeof n.text=="string"&&(t+=n.text);return t.length?t:void 0}function EEe(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!Se(n)||n.type!=="tool-call")continue;let o=yL(n),r=typeof n.toolName=="string"?n.toolName:void 0;(o||r)&&t.push({toolCallId:o,toolName:r,input:n.input});}return t.length?t:void 0}function rf(e){if(!Se(e))return;let t=e.experimental_telemetry;if(Se(t))return {functionId:typeof t.functionId=="string"?t.functionId:void 0,isEnabled:typeof t.isEnabled=="boolean"?t.isEnabled:void 0,recordInputs:typeof t.recordInputs=="boolean"?t.recordInputs:void 0,recordOutputs:typeof t.recordOutputs=="boolean"?t.recordOutputs:void 0,metadata:Se(t.metadata)?t.metadata:void 0}}function Ea(e,t){return {operationName:`${e}${t?` ${t}`:""}`,resourceName:t}}function UY(e,t){if(t==null)return;if(typeof t=="string")return Y(e,t);if(typeof t=="number")return Number.isInteger(t)?et(e,t):nf(e,t);if(typeof t=="boolean")return HAe(e,t);if(Array.isArray(t)&&t.every(o=>typeof o=="string"))return Pd(e,t);let n=dt(t);return n?Y(e,n):void 0}function aR(e){return e?Object.entries(e).filter(([t])=>!t.startsWith("raindrop.internal.")).map(([t,n])=>UY(`ai.telemetry.metadata.${t==="raindrop.userId"?"raindrop.ai.userId":t}`,n)):[]}function SL(e){return Se(e)?Object.entries(e).filter(([,t])=>typeof t=="string").map(([t,n])=>Y(`ai.request.headers.${t}`,n)):[]}function bL(e){if(!Se(e))return [];let t=[],n=["maxRetries","timeout","maxOutputTokens","temperature","topP","topK","presencePenalty","frequencyPenalty","seed","stopSequences"];for(let o of n){if(!(o in e))continue;let r=e[o];o==="stopSequences"&&Array.isArray(r)&&r.every(i=>typeof i=="string")?t.push(Pd(`ai.settings.${o}`,r)):o==="timeout"&&typeof r=="number"?t.push(et(`ai.settings.${o}`,r)):t.push(UY(`ai.settings.${o}`,r));}return t}function HY(e){return Se(e)?[nf("gen_ai.request.frequency_penalty",typeof e.frequencyPenalty=="number"?e.frequencyPenalty:void 0),et("gen_ai.request.max_tokens",typeof e.maxOutputTokens=="number"?e.maxOutputTokens:void 0),nf("gen_ai.request.presence_penalty",typeof e.presencePenalty=="number"?e.presencePenalty:void 0),...Array.isArray(e.stopSequences)&&e.stopSequences.every(t=>typeof t=="string")?[Pd("gen_ai.request.stop_sequences",e.stopSequences)]:[],nf("gen_ai.request.temperature",typeof e.temperature=="number"?e.temperature:void 0),et("gen_ai.request.top_k",typeof e.topK=="number"?e.topK:void 0),nf("gen_ai.request.top_p",typeof e.topP=="number"?e.topP:void 0)]:[]}function GY(e){if(!Se(e)||!Se(e.providerOptions))return;let t=dt(e.providerOptions);return t?Y("ai.request.providerOptions",t):void 0}var CEe=class{constructor(){this._stack=[];}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},Kv=null;function jY(){if(Kv)return Kv;let e=globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;return Kv=e?new e:new CEe,Kv}function TL(){return jY().getStore()}function oL(e,t){return jY().run(e,t)}function $Y(e){var t;if(e.length===0)return;let n=e[0];if(!Se(n))return;let o=Se(n.metadata)?n.metadata:void 0,r=Se(n.telemetry)?n.telemetry.metadata:void 0,i=Se(r)?r:void 0,s=rf(n),a=s?.metadata&&typeof s.metadata=="object"?s.metadata:void 0,l=(t=o??i)!=null?t:a;if(!l)return;let c={rawMetadata:l},d=l["raindrop.userId"];typeof d=="string"&&d&&(c.userId=d);let u=l["raindrop.eventId"];typeof u=="string"&&u&&(c.eventId=u);let p=l["raindrop.internal.eventIdGenerated"];(p===true||p==="true"||p==="1")&&(c.eventIdGenerated=true);let m=l["raindrop.convoId"];typeof m=="string"&&m&&(c.convoId=m);let h=l["raindrop.eventName"];typeof h=="string"&&h&&(c.eventName=h);let g=l["raindrop.properties"];if(typeof g=="string")try{let f=JSON.parse(g);f&&typeof f=="object"&&(c.properties=f);}catch{}else g&&typeof g=="object"&&(c.properties=g);return c}var vEe=class{constructor(){this._stack=[];}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},Yv=null;function AL(){if(Yv)return Yv;let e=globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;return Yv=e?new e:new vEe,Yv}function rL(){return AL().getStore()}function iL(e){var t;let n=AL();(t=n.enterWith)==null||t.call(n,e);}function VY(){var e;let t=AL();(e=t.enterWith)==null||e.call(t,void 0);}var EL=class{constructor(e){this.callStates=new Map,this.priorParentContexts=new Map,this.onStart=t=>{var n,o,r,i,s;if(t.isEnabled===false)return;let a=t.operationId==="ai.embed"||t.operationId==="ai.embedMany",l=t.recordInputs!==false,c=t.recordOutputs!==false,d=t.functionId,u=t.metadata,p=TL(),m=u??p?.rawMetadata,h=this.extractRaindropMetadata(m),g=Ju().getParentSpanIds(),f=m?.["raindrop.internal.eventIdGenerated"]==="true"||m?.["raindrop.internal.eventIdGenerated"]===true||p?.eventIdGenerated===true,y=h.eventId&&!f?h.eventId:void 0,S=(i=(r=(o=y??((n=this.defaultContext)==null?void 0:n.eventId))!=null?o:g?.eventId)!=null?r:h.eventId)!=null?i:Yu(),b=g&&g.eventId===S?{traceIdB64:g.traceIdB64,spanIdB64:g.spanIdB64}:void 0,{operationName:E,resourceName:C}=Ea(t.operationId,d),w=!a&&this.subagentWrapping?rL():void 0,I=!a&&this.subagentWrapping&&w===void 0&&typeof m?.["ash.subagent.name"]=="string"?m["ash.subagent.name"]:void 0,P=(s=w?.toolName)!=null?s:I,v,_;if(P&&this.sendTraces){let D=w?[Y("raindrop.parent.callId",w.parentCallId),Y("raindrop.parent.toolCallId",w.toolCallId),Y("raindrop.parent.toolName",w.toolName)]:[];v=this.traceShipper.startSpan({name:P,parent:b,eventId:S,operationId:"ai.toolCall",attributes:[Y("operation.name","ai.toolCall"),Y("resource.name",P),Y("raindrop.span.kind","tool_call"),Y("ai.toolCall.name",P),Y("raindrop.subagent.name",P),Y("raindrop.agent.role","subagent"),...D]});let U=this.spanParentRef(v),V=this.traceShipper.startSpan({name:"agent.subagent",parent:U,eventId:S,operationId:"agent.subagent",attributes:[Y("operation.name","agent.subagent"),Y("raindrop.span.kind","llm_call"),Y("raindrop.subagent.name",P)]});this.traceShipper.endSpan(V),_=U;}let x;if(this.sendTraces){let D=!a&&l?[Y("ai.prompt",dt({system:t.system,prompt:t.prompt,messages:t.messages}))]:[],U=a&&l?t.operationId==="ai.embedMany"?[Y("ai.values",dt(t.value))]:[Y("ai.value",dt(t.value))]:[];x=this.traceShipper.startSpan({name:t.operationId,parent:_??b,eventId:S,operationId:t.operationId,attributes:[Y("operation.name",E),Y("resource.name",C),Y("ai.telemetry.functionId",d),Y("ai.model.provider",t.provider),Y("ai.model.id",t.modelId),...aR(m?Object.fromEntries(Object.entries(m).filter(([V])=>V!=="raindrop.eventId"&&V!=="raindrop.internal.eventIdGenerated")):void 0),...D,...U]});}this.callStates.set(t.callId,{operationId:t.operationId,eventId:S,rootSpan:x,rootParent:x?this.spanParentRef(x):_??b,stepSpan:void 0,stepParent:void 0,toolSpans:new Map,embedSpans:new Map,parentContextToolCallIds:new Set,recordInputs:l,recordOutputs:c,functionId:d,metadata:m,accumulatedText:"",inputText:a?void 0:this.extractInputText(t),toolCallCount:0,subagentName:P,subagentToolCallSpan:v});},this.onStepStart=t=>{let n=this.getState(t.callId);if(!n?.rootSpan||!n.rootParent)return;let r=n.operationId==="ai.streamText"||n.operationId==="ai.streamObject"?`${n.operationId}.doStream`:`${n.operationId}.doGenerate`,{operationName:i,resourceName:s}=Ea(r,n.functionId),a=[];n.recordInputs&&(t.promptMessages&&a.push(Y("ai.prompt.messages",dt(t.promptMessages))),t.stepTools&&a.push(Pd("ai.prompt.tools",t.stepTools.map(c=>JSON.stringify(c)))),t.stepToolChoice!=null&&a.push(Y("ai.prompt.toolChoice",JSON.stringify(t.stepToolChoice))));let l=this.traceShipper.startSpan({name:r,parent:n.rootParent,eventId:n.eventId,operationId:r,attributes:[Y("operation.name",i),Y("resource.name",s),Y("ai.telemetry.functionId",n.functionId),Y("ai.model.provider",t.provider),Y("ai.model.id",t.modelId),Y("gen_ai.system",t.provider),Y("gen_ai.request.model",t.modelId),...a]});n.stepSpan=l,n.stepParent=this.spanParentRef(l);},this.onToolExecutionStart=t=>this.toolExecutionStart(t),this.onToolExecutionEnd=t=>this.toolExecutionEnd(t),this.onToolCallStart=t=>this.toolExecutionStart(t),this.onToolCallFinish=t=>this.toolExecutionEnd(t),this.onLanguageModelCallStart=t=>{},this.onLanguageModelCallEnd=t=>{},this.onChunk=t=>{var n,o,r,i,s;let a=(o=t.callId)!=null?o:(n=t.chunk)==null?void 0:n.callId;if(!a)return;let l=this.getState(a);if(!l)return;let c=t.chunk;if(!(!c||typeof c!="object")){if(c.type==="text-delta"){let d=(r=c.textDelta)!=null?r:c.delta;typeof d=="string"&&(l.accumulatedText+=d,this.emitLive(l,"text_delta",d));}else if(c.type==="reasoning"||c.type==="reasoning-delta"){let d=(s=(i=c.textDelta)!=null?i:c.text)!=null?s:c.delta;typeof d=="string"&&this.emitLive(l,"reasoning_delta",d);}}},this.onStepFinish=t=>{var n,o,r,i,s,a,l,c,d;let u=this.getState(t.callId);if(!u?.stepSpan)return;let p=[];if(u.recordOutputs&&(p.push(Y("ai.response.finishReason",t.finishReason),Y("ai.response.text",(n=t.text)!=null?n:void 0),Y("ai.response.id",(o=t.response)==null?void 0:o.id),Y("ai.response.model",(r=t.response)==null?void 0:r.modelId),Y("ai.response.timestamp",((i=t.response)==null?void 0:i.timestamp)instanceof Date?t.response.timestamp.toISOString():(s=t.response)==null?void 0:s.timestamp),Y("ai.response.providerMetadata",t.providerMetadata?dt(t.providerMetadata):void 0)),((a=t.toolCalls)==null?void 0:a.length)>0&&p.push(Y("ai.response.toolCalls",JSON.stringify(t.toolCalls.map(h=>({toolCallId:h.toolCallId,toolName:h.toolName,input:h.input}))))),((l=t.reasoning)==null?void 0:l.length)>0)){let h=t.reasoning.filter(g=>"text"in g).map(g=>g.text).join(`
171
+ `)),i(" ",n(u));}}setMinLevel(t){typeof t=="string"?this.minLogLevel=ZS[t]:this.minLogLevel=t;}setOutputStream(t){this.forcedStream=t;}log(...t){this.logWithLevel(30,dl.reset,...t);}info(...t){this.logWithLevel(30,dl.white,...t);}debug(...t){this.logWithLevel(20,dl.dim,...t);}warn(...t){this.logWithLevel(40,dl.yellow,...t);}error(...t){this.logWithLevel(50,dl.red,...t);}success(...t){this.logWithLevel(30,dl.green,...t);}dimmed(...t){this.logWithLevel(30,dl.dim,...t);}underline(...t){this.logWithLevel(30,dl.underline,...t);}bold(...t){this.logWithLevel(30,dl.bold,...t);}grey(...t){this.logWithLevel(30,dl.grey,...t);}child(t){let n=new e(this.minLogLevel,{...this.logBindings,...t});return n.forcedStream=this.forcedStream,n}async flush(){}bindings(){return this.logBindings}},R=aM._internalSingleton(),zr={info:()=>{},error:()=>{},debug:()=>{},warn:()=>{},child:()=>zr,flush:async()=>{},bindings:()=>({})},kC={},cM=({logger:e,logKey:t,maxCount:n,intervalMs:o},r,i,...s)=>{let a=kC[t];a?clearTimeout(a.timer):(a={count:0,totalCount:0},kC[t]=a),a.totalCount++,a.count<n&&(a.count++,e.debug(r,i,...s)),a.timer=setTimeout(()=>{let l=kC[t];l?.totalCount!==l?.count&&e.debug({logKey:t,totalCount:l?.totalCount,count:l?.count},`Debug logs were rate-limited for ${t}`),delete kC[t];},o);};var nV=1e4,oV=1,vg=ll.extend({browserType:z.enum(dc).optional(),slowMoMs:z.number().optional().refine(e=>e===void 0||e<=nV&&e>=-1,{message:`Slow motion must be between 0 and ${nV} milliseconds`}),basicAuthorization:z.object({username:z.string().optional(),password:z.string().optional()}).optional(),geolocation:z.object({latitude:z.number().refine(e=>e>=-90&&e<=90,{message:"Latitude must be between -90 and 90 degrees"}),longitude:z.number().refine(e=>e>=-180&&e<=180,{message:"Longitude must be between -180 and 180 degrees"})}).optional(),disableJavaScript:z.boolean().optional(),locale:z.string().optional(),timezone:z.enum(CC).optional(),colorScheme:z.enum(["light","dark"]).optional()}),rV=["extraHeaders","basicAuthorization","localChromeExtensionPaths","proxy"],dM=z.object({useMemory:z.boolean().optional(),failureRecovery:z.boolean().optional().describe("undefined means inherit org settings")}),uM=dM.extend({disableAICaching:z.boolean().optional(),failureRecoveryInstructions:z.string().optional()}),dge=z.object({viewport:bd.optional()}),Ns=dge.extend(uM.shape).extend(vg.shape),DC=z.object({cron:z.string().refine(e=>isValidCron(e),{error:"Invalid cron expression."}).default("0 0 */1 * *"),enabled:z.boolean().default(false),env:z.string().optional(),timeZone:z.string().default("America/Los_Angeles"),jobKey:z.string().optional()}),FC=z.object({onSuccess:z.boolean().default(false),failureMessage:z.string().optional(),onFailure:z.boolean().default(true),successMessage:z.string().optional()}),uge=z.object({name:z.string(),required:z.boolean().optional(),defaultValue:z.string().describe("this is not optional because we need a value when the editor is first loaded")}),iV=uge.array(),pge=z.object({name:z.string(),value:z.string()}),BC=pge.array(),sV=z.object({name:z.string(),default:z.boolean().optional(),fixtures:L$.array().optional()});var ga=dM.extend({agentConfig:z.record(z.string(),z.string()).optional(),aiFailureAnalysis:z.boolean().optional(),classification:$G.optional(),triage:jG.optional(),healing:jE.optional(),explore:VE.optional(),select:V$.optional()}),mge=z.object({cliOnly:z.boolean().optional(),neverShowUsageBanner:z.boolean().optional(),hideInternalTraceInfo:z.boolean().optional(),bypassUsageLimits:z.boolean().optional()}),eb=z.object({fakerConstantSeed:z.boolean().optional(),isolateCachesByEnvironment:z.boolean().optional()}),hge=z.enum(["flaky_tests","low_test_coverage","frequent_bugs","fix_flaky_tests","migrate_tests","increase_test_coverage","catch_more_bugs"]),gge=z.enum(["ios","android","web"]),fge=z.enum(["selenium","playwright","cypress","puppeteer","maestro","appium","detox","manual_qa","nothing_yet","other"]),yge=z.enum(["advertisement","ai_search","google_search","hacker_news","linkedin","reddit","referral_from_customer","twitter_x","word_of_mouth","youtube","other"]),Sge=z.object({helpIntents:z.array(hge).optional(),helpIntentOtherText:z.string().optional(),deviceTypeIntent:gge.optional(),currentTestingTool:fge.optional(),heardAboutSource:yge.optional()}),bge=z.object({discovery:Sge.optional(),needsToCompleteOnboarding:z.boolean().optional(),wizardCompletedAt:z.iso.datetime().optional()}),Rg=z.object({ai:ga.optional(),githubAppInstallationId:z.number().nullish(),githubAppSummaryMessageEnabled:z.boolean().nullish(),githubReleaseAppInstallationId:z.number().nullish(),gitlabAppAccessToken:z.string().nullish(),gitlabAppBaseUrl:z.string().nullish(),browser:YO.optional(),internal:mge.optional(),advanced:eb.optional(),onboarding:bge.optional()});function aV(e){try{return Rg.parse(e)}catch{return R.warn("Cloud settings contain values this version of the CLI does not support. Please upgrade. Falling back to defaults."),Rg.parse({})}}z.object({globalOverrides:z.record(z.string(),z.string()).optional(),agentConfig:z.record(z.string(),z.string()).optional()});z.record(z.string(),z.string()).nullish();var pc=(n=>(n.CANNOT_FIX_TEST="CANNOT_FIX_TEST",n.FIXED="FIXED",n))(pc||{}),lV=z.object({index:z.int().nonnegative(),section:GO,step:Lt}),Tge=z.object({additions:lV.array(),deletions:lV.array()}),tb=z.object({subAgentStatus:z.enum(pc).default("CANNOT_FIX_TEST"),rootCause:z.string(),solution:z.string(),verificationNotes:z.string().optional().default(""),diffs:Tge.optional(),pullRequestUrl:z.string().optional(),branchUrl:z.string().optional()}),cV=tb.optional().catch(void 0),dV=z.object({subAgentStatus:z.literal("FIXED").default("FIXED"),rootCause:z.string(),solution:z.string(),verificationNotes:z.string().optional().default(""),gitPatch:z.string().min(1)});var Ls={WEBHOOK:"WEBHOOK",CRON:"CRON",MANUAL:"MANUAL",CLI:"CLI"},ht=(a=>(a.PENDING="PENDING",a.RUNNING="RUNNING",a.PASSED="PASSED",a.FAILED="FAILED",a.CANCELLED="CANCELLED",a.RETRYING="RETRYING",a.WAITING_FOR_USER="WAITING_FOR_USER",a))(ht||{});var nb=(r=>(r.NOT_ATTEMPTED="NOT_ATTEMPTED",r.PERM_HEAL_SUCCEEDED="PERM_HEAL_SUCCEEDED",r.PERM_HEAL_FAILED="PERM_HEAL_FAILED",r.PERM_HEAL_ON_SUCCESS_FAILED="PERM_HEAL_ON_SUCCESS_FAILED",r))(nb||{});var ob=z.enum(nb).default("NOT_ATTEMPTED"),UC=(n=>(n.BEFORE_ALL="BEFORE_ALL",n.AFTER_ALL="AFTER_ALL",n))(UC||{});var Age=z.object({attempts:z.int().nonnegative()}),vo=z.string().pipe(z.coerce.date()).or(z.date()),is=z.object({id:z.string(),runKey:z.string(),organizationId:z.string(),executionType:Lu.optional().default("WEB"),createdAt:vo,createdBy:z.string(),flake:z.boolean().nullish(),scheduledAt:vo.or(z.null()),startedAt:vo.or(z.null()),updatedAt:vo.nullish(),finishedAt:vo.or(z.null()),resolvedBaseUrl:z.string().nullish(),environmentName:z.string().nullish(),gitBranchName:z.string().nullish(),gitMainBranch:z.string().nullish(),githubRepository:z.string().nullish(),gitlabProjectPath:z.string().nullish(),labels:z.array(z.string()).optional(),gitOriginUrl:z.string().nullish(),gitCommitSha:z.string().nullish(),gitCommitShaShort:z.string().nullish(),gitCommitAuthorName:z.string().nullish(),gitCommitTimestamp:vo.nullish(),gitCommitMessage:z.string().nullish(),schemaVersion:z.string().nullish(),cliVersion:z.string().nullish(),section:z.enum(UC).nullish(),status:z.enum(ht),healStatus:ob,healDetails:cV.nullish(),trigger:z.enum(Ls),attempts:z.number(),runAttempts:z.array(z.object({id:z.string(),status:z.enum(ht),startedAt:vo.or(z.null()),finishedAt:vo.or(z.null())})).optional(),videos:z.array(z.string()).optional(),failureReason:z.string().nullish(),failureDetails:$j.nullish(),failureRecoveryDetails:Age.nullish(),pipelineId:z.string().nullish(),resolvedInputs:z.record(z.string(),z.string()).nullish(),quarantined:z.boolean().nullish().default(false),quarantinedReason:z.string().nullish(),localTestId:z.string().nullish(),testId:z.string().nullish(),testName:z.string().nullish(),description:z.string().nullish(),directory:z.string().nullish(),test:z.object({name:z.string(),id:z.string()}).nullish().default(null),suiteId:z.string().nullish(),aiSettings:ga.nullish(),stepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),beforeStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),afterStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish()}),Ege={id:true,status:true,healStatus:true,healDetails:true,testName:true,localTestId:true,testId:true,test:{select:{name:true,id:true}},finishedAt:true,failureReason:true,failureDetails:true},HC=is.pick({...Ege,test:true}),uV=is.omit({failureReason:true,failureDetails:true,test:true}),pM=is.extend({stepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),beforeStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),afterStepsSnapshot:z.array(z.record(z.string(),z.unknown().optional())).nullish(),resolvedInputs:z.record(z.string(),z.string()).nullish(),test:z.object({name:z.string(),id:z.string(),description:z.string().nullish(),baseUrl:z.string().nullish(),advanced:Ns.nullish()}).nullish()}).extend(eM.shape),pV=e=>e.includes("PASSED")&&e.includes("FAILED");var Cge=z.object({category:z.string(),reasoning:z.string(),citations:z.array(Vo).optional()}),vge=z.object({testInputs:z.record(z.string(),z.string()).optional(),envName:z.string().optional(),urlOverride:z.string().optional()}),Rge=z.object({reason:z.string().optional(),message:z.string().optional()}),wge=z.object({runId:z.string().optional(),testId:z.string(),testName:z.string(),filePath:z.string(),labels:z.array(z.string()).optional(),status:z.enum(ht),startedAt:z.string(),finishedAt:z.string(),durationMs:z.number(),attempts:z.number(),quarantined:z.boolean(),recovered:z.boolean(),parameters:vge.optional(),failure:Rge.nullable(),classification:Cge.nullable()}),Ige=z.object({testId:z.string(),testName:z.string(),filePath:z.string(),labels:z.array(z.string()).optional(),quarantined:z.boolean()}),xge=z.object({total:z.number(),executed:z.number(),skipped:z.number(),passed:z.number(),failed:z.number(),cancelled:z.number(),quarantined:z.number(),recovered:z.number()}),mV=z.object({version:z.literal(1),runGroup:z.object({startedAt:z.string(),finishedAt:z.string(),durationMs:z.number()}),summary:xge,runs:z.array(wge),skipped:z.array(Ige)});var hV=z.enum(["error","warning","passing"]);var gV=z.enum(["safe_to_merge","confirm_intended_change","investigate_regression","fix_test","resolve_infra","review_coverage"]);var fV=z.object({kind:gV,detail:z.string().min(1).max(280)}),Am=z.object({riskLevel:z.string(),headline:z.string().min(1).max(200).describe("One-sentence summary of what happened in this run. Plain text, no markdown."),overview:z.string().min(1).max(280).optional().describe("One plain-text sentence giving the bottom line of the run. No markdown."),summaryMarkdown:z.string().min(1).max(4e3).describe("Markdown body. Several short paragraphs or a tight list. No emojis, no top-level heading. Max 5 sentences."),recommendedAction:fV.optional()}),yV=Am.extend({riskLevel:hV.describe("Traffic-light validation signal. Use passing when validation is trustworthy with no real concern, warning when review or follow-up is needed, and error when the evidence shows the PR may hide or cause a product regression or another material concern that requires review."),headline:z.string().min(1).max(60).describe("Short, factual, title-case status of the validation signal, 6 words max, no punctuation. Describe the outcome only - never name the process or mode (no 'dry run', 'auto-heal', 'triage', 'pending'); those are shown separately. Examples: 'Review Required', 'Sign In Failing Across 5 Tests', 'All Tests Passed'."),overview:z.string().min(1).max(280).describe("The bottom-line verdict in one plain sentence: what the Momentic validation means for user-visible behavior and how trustworthy the signal is. This is the conclusion only, not the evidence. No markdown, headings, lists, or emojis. Do not prescribe a merge decision (use recommendedAction)."),summaryMarkdown:z.string().min(1).max(1e3).describe("The supporting evidence behind the overview, in GitHub-flavored markdown: a few short sentences or a tight list with the specific tests, errors, and signals that justify the verdict. Must carry information the overview does not - never paraphrase or restate the overview. Do not prescribe a merge decision or restate repair mechanics. Max 4 sentences. No emojis or top-level heading."),recommendedAction:fV.extend({kind:gV.describe("The kind of action a reviewer should take. safe_to_merge = signal is trustworthy and can be merged as-is; confirm_intended_change = a product or UI change was detected (or a heal relaxed an expectation) and a human must confirm it is intentional; investigate_regression = evidence points to a real product bug or regression to investigate before merging; fix_test = a broken or stale test or test setup needs repair; resolve_infra = an infrastructure or environment problem needs resolving and a re-run; review_coverage = quarantine has materially reduced coverage that should be reviewed."),detail:z.string().min(1).max(280).describe("One plain-text sentence naming the specific next step (e.g. 'Confirm the new success-indicator color is an intended design change'). No markdown.")}).describe("The single most important next step a reviewer should take. Omit entirely when the signal is clean and there is genuinely nothing to do.").optional()});var SV=z.object({id:z.string(),status:z.enum(ht),trigger:z.enum(Ls),createdAt:vo,startedAt:vo.nullish(),finishedAt:vo.nullish(),gitCommitSha:z.string().nullish(),gitCommitShaShort:z.string().nullish(),gitCommitTimestamp:vo.nullish(),gitBranchName:z.string().nullish(),gitOriginUrl:z.string().nullish(),gitCommitMessage:z.string().nullish(),gitCommitAuthorName:z.string().nullish(),githubRepository:z.string().nullish(),gitlabProjectPath:z.string().nullish(),pipelineId:z.string().nullish(),ciProvider:z.string().nullish(),cliVersion:z.string().nullish(),labels:z.string().array().optional(),healRiskSummary:Am.optional(),localSuiteName:z.string().optional(),suite:z.object({id:z.string(),name:z.string()}).nullish(),runs:z.object({executionType:Lu,status:z.enum(ht),environmentName:z.string().nullish()}).array()}),bV=SV.pick({id:true,createdAt:true,startedAt:true,finishedAt:true,status:true,trigger:true,suite:true,localSuiteName:true}).extend({runs:HC.array()}),TV=SV.extend({runs:is.array()});var Pge=z.object({type:z.literal("TARGETING"),name:z.string().optional().describe("Target name to disambiguate for steps with multiple targets"),elementLocationDecisions:_$.array(),pageState:z.string().optional(),targetSource:z.enum(jl).optional(),targetUpdateTime:z.string().optional()}),Oge=z.object({type:z.literal("AI_LOCATION"),matched:z.boolean(),pageState:z.string().optional(),ragUsed:z.boolean().optional(),thoughts:z.string().optional()}),Mge=z.object({type:z.literal("ASSERTION"),relevantElementsSerialized:z.string().array().optional(),pageState:z.string().optional(),ragUsed:z.boolean().optional()}),AV=z.discriminatedUnion("type",[Pge,Oge,Mge]);var Nge=z.object({id:z.string(),name:z.string()});Nge.extend(z.object({createdAt:vo,createdBy:z.string(),schedule:DC,notification:FC,environment:z.object({name:z.string()}).nullish(),beforeTests:z.object({id:z.string()}).array().nullish(),afterTests:z.object({id:z.string()}).array().nullish()}).shape);var EV=z.object({id:z.guid(),orgId:z.string(),createdAt:vo,startedAt:vo.or(z.null()),finishedAt:vo.or(z.null()),status:z.enum(ht),trigger:z.enum(Ls),suite:z.object({id:z.string(),name:z.string()}).nullish(),runs:is.array()});EV.pick({id:true,createdAt:true,startedAt:true,finishedAt:true,status:true,trigger:true,suite:true});var CV=EV.extend({runs:HC.array()});function vV({beforeStatus:e,mainStatus:t,afterStatus:n}){return e==="FAILED"?"FAILED":e==="CANCELLED"?"CANCELLED":n==="FAILED"?"FAILED":n==="CANCELLED"?"CANCELLED":t==="FAILED"?"FAILED":t==="CANCELLED"?"CANCELLED":"PASSED"}function GC(e,t){return e.some(r=>t?.onlyQuarantined?r.status==="FAILED":!r.quarantined&&r.status==="FAILED")?"FAILED":e.some(r=>r.status==="CANCELLED")?"CANCELLED":"PASSED"}function RV(e){switch(e){case "PASSED":return "SUCCESS";case "FAILED":return "FAILED";case "CANCELLED":return "CANCELLED";case "RUNNING":case "PENDING":case "RETRYING":case "WAITING_FOR_USER":return "RUNNING"}}var mM=z.object({content:z.string(),ids:z.string().array(),tokenLength:z.number()}),Lge=z.object({chunks:mM.array()});z.object({ids:z.string().array(),score:z.number(),tokenLength:z.number()});Lge.extend({description:z.string().describe("Input to pass to RAG engine"),tokenLimit:z.number()});var wV=z.object({ids:z.number().array()}),IV=z.object({indices:z.number().array()});var mc=(n=>(n.Interactive="interactive",n.Runner="runner",n))(mc||{}),kge=z.enum(mc),mr=z.object({disableCache:z.boolean().optional(),useMemory:z.boolean().optional(),clientMode:kge.optional(),loggerTags:z.record(z.string(),z.string()).optional(),langfuseSessionId:z.string().optional(),agentConfigVersion:z.string().optional(),cacheBustReason:z.enum(gS).optional()});mr.extend({chunks:mM.array(),description:z.string().describe("Input to pass to AI"),type:z.union([z.literal("locator"),z.literal("assertion"),z.literal("ai-action")]),softTokenLimit:z.number(),mediumTokenLimit:z.number().optional(),hardTokenLimit:z.number(),callId:z.string().optional()});var Dge=z.object({screenshotBase64AfterCommand:z.string(),urlAfterCommand:z.string(),serializedCommand:z.string(),elementInteracted:z.string().optional(),thoughts:z.string().optional()}),xV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string(),source:x$.optional().catch(void 0),isTieBreakerCall:z.boolean().optional(),memory:z.discriminatedUnion("type",[rl,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional(),firstPassModelResults:bC.array().optional(),knowledgeBaseSection:z.string().optional()}),_V=z.object({target:z.string().or(z.number()),browserState:z.string().optional(),screenshot:z.string().optional(),boundingBox:z.object({x:z.number(),y:z.number(),height:z.number(),width:z.number()}).optional()}),PV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string().optional(),returnSchema:z.string().optional()}),OV=z.object({goal:z.string(),emulatorState:z.string(),screenshot:z.string().optional(),returnSchema:z.string().optional()}),hM=z.union([z.literal("NEGATED_CHECK"),z.literal("CONDITIONAL_CHECK")]),MV=z.object({goal:z.string(),browserState:z.string(),screenshot:z.string(),url:z.string(),contextChoice:um.optional(),memory:z.discriminatedUnion("type",[lm,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional(),source:hM.optional(),recoveryHint:z.string().optional(),knowledgeBaseSection:z.string().optional()}),NV=z.object({command:Iu}),gM=z.object({goal:z.string(),browserState:z.string(),startingScreenshot:z.string().optional(),screenshot:z.string(),url:z.string(),history:Dge.array(),actionHint:z.string().optional(),lastError:z.string().optional()}),LV=z.object({results:xC.array(),errorMessage:z.string(),errorStack:z.string().optional()}),kV=z.object({results:xC.array(),goal:z.string(),errorMessage:z.string()}),DV=z.object({failedResults:xC.array(),nextStepsSerialized:z.string().array(),currentUrl:z.string(),currentPageState:z.string(),currentScreenshot:z.string(),customInstructions:z.string().optional(),testDescription:z.string().optional()});z.object({description:z.string(),type:z.union([z.literal("locator"),z.literal("assertion"),z.literal("ai-action")]),excerpt:z.string()});var FV=z.object({type:z.string(),browserContext:z.string(),currentStep:z.string(),screenshot:z.string()}),BV=z.object({description:z.string(),browserState:z.string().optional(),screenshot:z.string()}),Fge=z.enum(["locator","assertion"]);z.object({completionType:Fge,currentGoal:z.string(),pastGoal:z.string().optional(),currentScreenshot:z.string(),pastScreenshot:z.string(),pastResult:z.union([z.boolean(),z.number()])});z.object({goal:z.string()});var UV=z.object({keywords:z.array(z.string())});var jC=(i=>(i.LOCATOR="locator",i.ASSERTION="assertion",i.VISUAL_ASSERTION="visual-assertion",i.TEXT_EXTRACTION="text-extraction",i.FAILURE_RECOVERY="failure-recovery",i))(jC||{}),Bge=["locator","assertion","visual-assertion","text-extraction","failure-recovery"];z.enum(jC);var Uge=new Set(Bge);function Hge(e){return Uge.has(e)}var Gge=z.enum(["v1","v2","v3","v4"]),jge=z.string().regex(/^v\d+\.\d+$/).describe("pinned sub-version like v3.1");z.union([Gge,jge,z.string().describe("for people with special configurations")]);var Ig={locator:"v4.2",assertion:"v4.1","visual-assertion":"v4.0","text-extraction":"v3.0","failure-recovery":"v2.1"},HV={locator:{v4:["v4.2","v4.1","v4.0"],v3:["v3.3","v3.2","v3.1","v3.0"],v2:["v2.2","v2.1","v2.0"],v1:["v1.0"]},assertion:{v4:["v4.1","v4.0"],v3:["v3.2","v3.1","v3.0"],v2:["v2.3","v2.2","v2.1","v2.0"],v1:["v1.0"]},"visual-assertion":{v4:["v4.0"],v3:["v3.2","v3.1","v3.0"],v2:["v2.0"],v1:["v1.0"]},"text-extraction":{v3:["v3.0"],v2:["v2.0"],v1:["v1.0"]},"failure-recovery":{v2:["v2.1","v2.0"],v1:["v1.0"]}},GV=(s=>(s.ANDROID_LOCATOR="android-locator",s.IOS_LOCATOR="ios-locator",s.ANDROID_ASSERTION="android-assertion",s.IOS_ASSERTION="ios-assertion",s.ANDROID_TEXT_EXTRACTION="android-text-extraction",s.IOS_TEXT_EXTRACTION="ios-text-extraction",s))(GV||{});z.enum(GV);var $ge={locator:["v1"],assertion:["v1"],"visual-assertion":["v1"],"text-extraction":["v1"]};function Vge(e){let t=$ge[e];if(!t)return new Set;let n=HV[e],o=new Set;for(let r of t){o.add(r);for(let i of n[r]??[])o.add(i);}return o}function $C(e){for(let[t,n]of Object.entries(e)){if(!Hge(t))continue;let o=HV[t];if(!o)continue;let r=new Set;for(let[i,s]of Object.entries(o)){r.add(i);for(let a of s)r.add(a);}if(!r.has(n)){let i=[...r].sort();throw new ne("UserConfigurationError",`Invalid agent config: "${n}" is not a valid version for "${t}". Valid versions: ${i.join(", ")}`)}if(Vge(t).has(n))throw new ne("UserConfigurationError",`Agent config "${n}" for "${t}" is no longer supported because it relies on a legacy model. Upgrade to a newer version.`)}}var Td=O__default.object({id:O__default.guid(),envKey:O__default.string().optional(),skipped:O__default.boolean().optional(),retries:O__default.number().optional()});var Du=(r=>(r.PRESET="MOBILE_PRESET_STEP",r.MODULE="MOBILE_MODULE_STEP",r.AI_ACTION="MOBILE_AI_ACTION_STEP",r.CONDITIONAL="MOBILE_CONDITIONAL_STEP",r))(Du||{});var xg=Td.extend({type:O__default.literal("MOBILE_CONDITIONAL_STEP")});var ai=z.object({id:z.string(),name:mC,baseUrl:hC,description:z.string().optional().nullish(),schemaVersion:z.string(),advanced:Ns,retries:z.number().optional().nullish(),envs:z.array(sV).nullish(),parameters:iV.nullish(),disabled:z.boolean().optional(),labels:z.array(z.string()).optional().catch([])}),jV=z.enum(["INHERIT","ENABLED","DISABLED"]);var Wge=Ns.extend({failureRecovery:jV.optional(),useMemory:jV.optional()});ai.pick({name:true,description:true,baseUrl:true,retries:true,disabled:true,parameters:true}).extend({advanced:Wge});ai.pick({name:true,description:true,baseUrl:true,retries:true,disabled:true,advanced:true,parameters:true});var qge=z.object({labels:z.array(z.string()).optional(),outputs:BC.nullish()}),to=ai.extend(qge.shape),Kge=z.object({createdAt:z.coerce.date(),updatedAt:z.coerce.date(),updatedBy:z.string().nullable(),schedule:DC,notification:FC,createdBy:z.string(),organizationId:z.string(),folderId:z.string().nullable().optional()}),Yge=ai.extend(Kge.shape);Yge.extend(ec.shape);var fM=ai.extend(ec.shape);ai.extend(hd.shape);var Jge="test",Xge="module",Qge="mobile-test",Zge="mobile-module",efe="test/v2",tfe="module/v2",nfe="mobile-test/v2",ofe="mobile-module/v2";var ke=(l=>(l.TEST=`momentic/${Jge}`,l.MODULE=`momentic/${Xge}`,l.TEST_V2=`momentic/${efe}`,l.MODULE_V2=`momentic/${tfe}`,l.MOBILE_TEST=`momentic/${Qge}`,l.MOBILE_MODULE=`momentic/${Zge}`,l.MOBILE_TEST_V2=`momentic/${nfe}`,l.MOBILE_MODULE_V2=`momentic/${ofe}`,l))(ke||{});ai.merge(hd);var rfe=Qn.extend({steps:z.array(z.record(z.string(),z.unknown().optional())),schemaVersion:z.string()}),sb=rfe.extend({fileType:z.literal(ke.MODULE)});z.object({test:z.string().describe("YAML for the test, including metadata and steps"),modules:z.record(z.string(),z.string()).describe("Map of module name to YAML for the module")});function VC(e){if(e===void 0)return "__undefined__";if(e===null)return null;if(typeof e!="object")return e;if(Array.isArray(e))return e.map(VC);let t={};for(let[n,o]of Object.entries(e))t[n]=VC(o);return t}var ife=/^[a-z0-9]+(?:-[a-z0-9]+){2,}$/,$V=36,wo=z.union([z.guid().max($V,"V2 IDs must be 36 characters or fewer"),z.string().max($V,"V2 IDs must be 36 characters or fewer").regex(ife,"V2 IDs must be lowercase kebab-case with at least three words, e.g. silver-river-lantern")],{error:"ID must be a UUID or lowercase kebab-case with at least three words, e.g. silver-river-lantern (36 characters max)"});var zC=O.discriminatedUnion("type",[O.object({type:O.literal("SCREEN")}),O.object({type:O.literal("OPEN_APP")}),O.object({type:O.literal("OPEN_WEBVIEW")})]),Ad=O.object({type:O.literal("description"),description:O.string()}),SM=O.object({type:O.literal("CUSTOM_COORDINATES"),startX:O.number().describe("Starting X coordinate in pixels"),startY:O.number().describe("Starting Y coordinate in pixels"),deltaPixels:O.number().describe("Number of pixels to scroll in the specified direction")}),WC=O.discriminatedUnion("type",[...zC.options,O.object({type:O.literal("CUSTOM"),target:Ad}),SM]);function sfe(e){return e.toLowerCase().replaceAll("_"," ")}function bM(e){switch(e.type){case "CUSTOM":return e.target.description;case "CUSTOM_COORDINATES":return `custom coordinates (x: ${e.startX}, y: ${e.startY}, delta: ${e.deltaPixels}px)`;case "SCREEN":case "OPEN_APP":case "OPEN_WEBVIEW":return sfe(e.type);default:{throw new Error("Unreachable")}}}var afe=O.object({type:O.literal("coordinates"),xPercent:O.number(),yPercent:O.number()}),lfe=O.object({type:O.literal("absolute_percent"),x:O.number(),y:O.number()}),_g=O.discriminatedUnion("type",[Ad,afe,lfe]);var cfe=O.object({x1:O.number(),y1:O.number(),x2:O.number(),y2:O.number(),tolerance:O.nativeEnum(ns),preciseTolerance:O.boolean().optional()}),dfe=O.object({width:O.number(),height:O.number(),tolerance:O.nativeEnum(ns),preciseTolerance:O.boolean().optional()}),TM=O.object({requiredText:O.string().optional(),requiredAttributes:O.record(O.string(),O.string()).optional(),requiredBounds:O.boolean().optional(),position:cfe.optional(),shape:dfe.optional()}),VV=O.object({xPath:O.string(),requirements:TM.optional()}),ufe=O.object({type:O.literal("CUSTOM"),target:Ad,cache:O.lazy(()=>zV).optional()}),pfe=O.object({pixelDelta:O.number().describe("Number of pixels to scroll in the specified direction"),scrollableElement:O.union([zC,ufe,SM]),direction:O.enum(["up","down"])}),zV=O.object({type:O.literal("NATIVE"),bounds:O.number().array().optional(),resolvedDescription:O.string().optional(),xPath:O.string().optional(),elementOnlySerializedXml:O.string().optional(),scrollDetails:pfe.optional(),requirements:TM.optional(),requiredRelatedElements:VV.array().optional(),memory:rl.optional()}),mfe=O.object({type:O.literal("WEBVIEW"),resolvedDescription:O.string().optional(),xPath:O.string().optional(),browserCache:$l.optional(),memory:rl.optional()}),qC=O.union([zV,mfe]);var hfe=O.object({left:O.number(),top:O.number(),right:O.number(),bottom:O.number()});O.object({newViewportBounds:hfe});var gfe=O.object({type:O.literal("CUSTOM"),target:Ad,cache:O.lazy(()=>YV).optional()}),WV=O.object({pixelDelta:O.number().describe("Number of pixels to scroll in the specified direction"),scrollableElement:O.union([zC,gfe,SM]),direction:O.enum(["up","down"])}),qV=(n=>(n.Native="native",n.Appium="appium",n))(qV||{}),AM=O.tuple([O.number(),O.number(),O.number(),O.number()]),KV=VV.extend({bounds:AM.optional(),browserCache:$l.optional()}),YV=O.object({type:O.literal("NATIVE"),bounds:AM.optional(),resolvedDescription:O.string().optional(),sourceTree:O.nativeEnum(qV).optional(),xPath:O.string().optional(),elementOnlySerializedXml:O.string().optional(),scrollDetails:WV.optional(),requirements:TM.optional(),requiredRelatedElements:KV.array().optional(),memory:rl.optional()}),ffe=O.object({type:O.literal("WEBVIEW"),bounds:AM.optional(),resolvedDescription:O.string().optional(),xPath:O.string().optional(),scrollDetails:WV.optional(),browserCache:$l.optional(),requiredRelatedElements:KV.array().optional(),memory:rl.optional()}),KC=O.discriminatedUnion("type",[YV,ffe]);var zt=(_=>(_.AI_CHECK="AI_CHECK",_.AI_EXTRACT="AI_EXTRACT",_.TAP="TAP",_.TYPE="TYPE",_.PRESS="PRESS",_.PRESS_KEYBOARD="PRESS_KEYBOARD",_.OPEN_APP="OPEN_APP",_.KILL_APP="KILL_APP",_.OPEN_NOTIFICATION_DRAWER="OPEN_NOTIFICATION_DRAWER",_.SWIPE="SWIPE",_.SCROLL_TO="SCROLL_TO",_.SCREEN_CHECK="SCREEN_CHECK",_.ELEMENT_CHECK="ELEMENT_CHECK",_.VISUAL_DIFF="VISUAL_DIFF",_.DRAG_AND_DROP="DRAG_AND_DROP",_.JAVASCRIPT="JAVASCRIPT",_.REQUEST="REQUEST",_.WAIT="WAIT",_.ADD_FILE="ADD_FILE",_.INSTALL_APP="INSTALL_APP",_.UNINSTALL_APP="UNINSTALL_APP",_.TOGGLE_SETTINGS="TOGGLE_SETTINGS",_.ROTATE_ORIENTATION="ROTATE_ORIENTATION",_.ADB_COMMAND="ADB_COMMAND",_.APPIUM_EXECUTE="APPIUM_EXECUTE",_.STATE="STATE",_))(zt||{}),Je=O__default.object({id:O__default.guid(),disableCache:O__default.boolean().optional()}),Pg=O__default.object({updatedAt:O__default.coerce.date().optional(),updatedAtLoggerTags:O__default.record(O__default.string(),O__default.string()).optional()}),ya=Pg.extend({target:qC}),YC=Pg.extend({fromTarget:qC,toTarget:qC}),hc=Pg.extend({target:KC}),JV=Pg.extend({fromTarget:KC,toTarget:KC}),Ed=e=>{switch(e.type){case "description":return e.description;case "coordinates":return `${Math.round(e.xPercent*100)}%, ${Math.round(e.yPercent*100)}%`;case "absolute_percent":return `x: ${e.x}%, y: ${e.y}%`}};var XV=Je.extend({type:O__default.literal("ADB_COMMAND"),command:O__default.string(),jsonArgs:O__default.string().optional()});var yfe=O__default.string().trim(),ZV=Je.extend({type:O__default.literal("INSTALL_APP"),uri:yfe});var ez=Je.extend({type:O__default.literal("OPEN_NOTIFICATION_DRAWER")});var ab=(r=>(r.AIRPLANE_MODE="AIRPLANE_MODE",r.DATA="DATA",r.WIFI="WIFI",r.LOCATION="LOCATION",r))(ab||{}),nz=Je.extend({type:O__default.literal("TOGGLE_SETTINGS"),settingsType:O__default.nativeEnum(ab)});var rz=Je.extend({type:O__default.literal("UNINSTALL_APP"),packageName:O__default.string()});var JC=Je.extend({type:O__default.literal("APPIUM_EXECUTE"),command:O__default.string(),jsonArgs:O__default.string().optional()});var iz=Je.extend({type:O__default.literal("ADD_FILE"),file:O__default.string(),storageLocation:O__default.string()});var Cd=Je.extend({type:O__default.literal("AI_CHECK"),assertion:O__default.string(),timeoutSecs:O__default.number().optional(),contextChoice:um.optional(),cache:Pg.extend({memory:lm.optional()}).optional()});var sz=Je.extend({type:O__default.literal("AI_EXTRACT"),goal:O__default.string(),schema:O__default.string().optional()});var Og=Je.extend({type:O__default.literal("JAVASCRIPT"),code:O__default.string(),timeout:O__default.number().int().max(600).optional().describe("Max seconds for the code to complete")});var az=Je.extend({type:O__default.literal("KILL_APP")});var cb=(n=>(n.HOME="HOME",n.POWER="POWER",n))(cb||{}),XC=(s=>(s.BACK="BACK",s.APP_SWITCHER="APP_SWITCHER",s.SEARCH="SEARCH",s.VOLUME_UP="VOLUME_UP",s.VOLUME_DOWN="VOLUME_DOWN",s.VOLUME_MUTE="VOLUME_MUTE",s))(XC||{}),QC=Je.extend({type:O__default.literal("PRESS"),key:O__default.nativeEnum(cb),longPress:O__default.boolean().optional()}),lz=QC.extend({key:O__default.nativeEnum(XC).or(O__default.nativeEnum(cb))}),cz=QC;var dz=Je.extend({type:O__default.literal("REQUEST")}).merge(SS);var xM=(n=>(n.PORTRAIT="PORTRAIT",n.LANDSCAPE="LANDSCAPE",n))(xM||{}),pz=Je.extend({type:O__default.literal("ROTATE_ORIENTATION"),orientation:O__default.nativeEnum(xM)});var Afe=O__default.object({type:O__default.literal("CONTENT"),negated:O__default.boolean().optional(),value:O__default.string()}),Ng=Je.extend({type:O__default.literal("SCREEN_CHECK"),assertion:Afe,timeout:O__default.number().int().min(0).max(eg).optional().describe("max seconds to wait for the assertion to be true")});var mz=Je.extend({type:O__default.literal("STATE")});var hz=Je.extend({type:O__default.literal("VISUAL_DIFF"),path:O__default.string().describe("path to the golden screenshot to compare against"),threshold:O__default.number().min(0).max(1).optional().describe("max allowed fraction of differing pixels before the diff fails (default 0.1)")});O__default.object({created:O__default.boolean(),goldenPath:O__default.string(),threshold:O__default.number(),goldenScreenshotBase64:O__default.string().optional(),currentScreenshotBase64:O__default.string().optional(),diffScreenshotBase64:O__default.string().optional(),goldenScreenshotSnapshotId:O__default.string().optional(),currentScreenshotSnapshotId:O__default.string().optional(),diffScreenshotSnapshotId:O__default.string().optional(),diffPercent:O__default.number().optional(),pass:O__default.boolean().optional(),dimensionMismatch:O__default.boolean().optional()});var fz=Je.extend({type:O__default.literal("WAIT"),timeoutSecs:O__default.number()});var db=O__default.discriminatedUnion("type",[mz,Cd,sz,Og,fz,dz,pz,Ng,hz,iz,az]);O__default.discriminatedUnion("type",[...db.options,QC]);var PM=Je.extend({type:O__default.literal("DRAG_AND_DROP"),fromTarget:Ad,toTarget:Ad,hoverDuration:O__default.number().optional(),dragDuration:O__default.number().optional()}),ub=PM.extend({cache:YC.optional()}),pb=PM.extend({cache:JV.optional()});var OM=Je.extend({type:O__default.literal("ELEMENT_CHECK"),target:_g,assertion:KE,timeout:O__default.number().int().min(0).max(eg).optional().describe("max seconds to wait for the assertion to be true")}),Em=OM.extend({cache:ya.optional()}),Cm=OM.extend({cache:hc.optional()});var mb=(n=>(n.ENTER="ENTER",n.BACKSPACE="BACKSPACE",n))(mb||{}),ZC=(t=>(t.CLOSE_KEYBOARD="CLOSE_KEYBOARD",t))(ZC||{}),bz={repeat:O__default.number().int().min(1).optional(),keyPressDelayMs:O__default.number().min(0).optional()},Tz=Je.extend({type:O__default.literal("PRESS_KEYBOARD"),key:O__default.nativeEnum(mb),...bz}),Az=Je.extend({type:O__default.literal("PRESS_KEYBOARD"),key:O__default.nativeEnum(ZC).or(O__default.nativeEnum(mb)),...bz});var Ez=Je.extend({type:O__default.literal("OPEN_APP"),packageName:O__default.string(),activityName:O__default.string().optional(),intentExtras:O__default.string().optional()}),Cz=Je.extend({type:O__default.literal("OPEN_APP"),packageName:O__default.string(),intentExtras:O__default.string().optional()});var MM=Je.extend({type:O__default.literal("SCROLL_TO"),target:Ad,direction:O__default.enum(["down","up"]),scrollableElement:WC,scrollStepPercent:O__default.number().min(.1).max(1).optional().describe("How much of the container height to scroll at each step (0.1 to 1.0). Default is 0.9 (90%)."),maxScrollAttempts:O__default.number().int().min(1).max(50).optional().describe("Maximum number of scroll attempts before giving up. Default is 20.")}),hb=MM.extend({cache:ya.optional()}),gb=MM.extend({cache:hc.optional()});var NM=Je.extend({type:O__default.literal("SWIPE"),direction:O__default.enum(["up","down","left","right"]),scrollableElement:WC,viewportPercent:O__default.number().optional(),durationMs:O__default.number().optional(),relativePosition:WE.optional()}),fb=NM.extend({cache:ya.optional()}),yb=NM.extend({cache:hc.optional()});var LM=Je.extend({type:O__default.literal("TAP"),target:_g,longPress:O__default.boolean().optional(),longPressDurationMs:O__default.number().optional(),iterations:O__default.number().optional(),tapDelayMs:O__default.number().optional(),relativePosition:WE.optional(),doubleTap:O__default.boolean().optional(),doubleTapDelayMs:O__default.number().optional()}),Sb=LM.extend({cache:ya.optional()}),bb=LM.extend({cache:hc.optional()});var Tb=(r=>(r.AUTO="auto",r.PROGRAMMATIC="programmatic",r.LONG_PRESS="long-press",r.BACKSPACE="backspace",r))(Tb||{});var kM=Je.extend({type:O__default.literal("TYPE"),target:_g.optional(),keyPressDelayMs:O__default.number().optional(),text:O__default.string(),clearContent:O__default.boolean().optional(),forceClearContent:O__default.boolean().optional(),replaceStrategy:O__default.nativeEnum(Tb).optional()});var Ab=kM.extend({cache:ya.optional()}),Eb=kM.extend({cache:hc.optional()});var Cb=O__default.discriminatedUnion("type",[...db.options,Sb,Ab,lz,Az,rz,ZV,XV,JC,ub,ez,hb,fb,nz,Em,Ez]);var vb=O__default.discriminatedUnion("type",[...db.options,bb,Eb,cz,Tz,Cz,yb,pb,gb,Cm,JC]);var wz=O__default.union([O__default.string(),O__default.record(O__default.string(),O__default.unknown().optional())]),nv=Td.extend({type:O__default.literal("MOBILE_PRESET_STEP"),keyPressDelayMs:O__default.number().optional()}),Bu=nv.extend({command:Cb}),Uu=nv.extend({command:vb}),kg=O__default.object({moduleId:O__default.string(),inputs:O__default.record(O__default.string(),O__default.string()).optional()}),Rb=Td.merge(kg.extend({type:O__default.literal("MOBILE_MODULE_STEP")}));kg.extend({steps:O__default.lazy(()=>gc.array())});kg.extend({steps:O__default.lazy(()=>vd.array())});var DM=(n=>(n.V2="2",n.V3="3",n))(DM||{});var FM=O__default.nativeEnum(DM),wfe=Gl.extend({platform:O__default.literal("ANDROID"),resolvedGoal:O__default.string(),steps:O__default.lazy(()=>Bu.array()),autoGeneratedPostcondition:O__default.string().optional()}),Ife=Gl.extend({platform:O__default.literal("IOS"),resolvedGoal:O__default.string(),steps:O__default.lazy(()=>Uu.array()),autoGeneratedPostcondition:O__default.string().optional()}),BM=O__default.discriminatedUnion("platform",[wfe,Ife]),Hu=Td.extend({type:O__default.literal("MOBILE_AI_ACTION_STEP"),text:O__default.string(),version:FM.optional(),cache:BM.optional(),precondition:O__default.string().optional(),postcondition:O__default.string().optional()});var _fe=O__default.discriminatedUnion("type",[Cd,Ng,Em,Og]),UM=nv.extend({command:_fe}),Pfe=O__default.discriminatedUnion("type",[Cd,Ng,Cm,Og]),HM=nv.extend({command:Pfe}),Ofe=O__default.object({assertion:UM,steps:O__default.lazy(()=>gc.array())}),Mfe=O__default.object({assertion:HM,steps:O__default.lazy(()=>vd.array())}),Nfe=xg.extend({blocks:O__default.lazy(()=>Ofe.array()),elseSteps:O__default.lazy(()=>gc.array()).optional()}),Lfe=xg.extend({blocks:O__default.lazy(()=>Mfe.array()),elseSteps:O__default.lazy(()=>vd.array()).optional()}),gc=O__default.discriminatedUnion("type",[Bu,Rb,Hu,Nfe]),vd=O__default.discriminatedUnion("type",[Uu,Rb,Hu,Lfe]);O__default.union([gc.array(),vd.array()]);var GM=O__default.object({parameterNames:O__default.string().array(),defaultParameters:O__default.record(O__default.string(),O__default.string()).optional(),parameterEnums:O__default.record(O__default.string(),O__default.string().array()).optional()}),ov=O__default.object({moduleId:wo,name:O__default.string(),description:O__default.string().nullish(),platform:O__default.nativeEnum(cl).optional().default("ANDROID"),parameters:GM.optional(),enabled:O__default.boolean().nullish(),schemaVersion:O__default.string()}),jM=ov.omit({name:true}),kfe=jM.extend({steps:wz.array()});O__default.object({fileType:O__default.literal(ke.MOBILE_MODULE)}).merge(kfe);var Iz=ov.omit({platform:true,schemaVersion:true});({ANDROID:Iz.extend({platform:O__default.literal("ANDROID"),steps:gc.array()}),IOS:Iz.extend({platform:O__default.literal("IOS"),steps:vd.array()})});var Dg=(t=>(t.MODULE="RESOLVED_MOBILE_MODULE",t))(Dg||{}),xz=O__default.object({description:O__default.string().optional(),name:O__default.string().describe("name of the module"),parameters:GM.optional()}),_z=kg.merge(xz).extend({platform:O__default.literal("ANDROID"),get steps(){return ml.array()}}),Pz=kg.merge(xz).extend({platform:O__default.literal("IOS"),get steps(){return hl.array()}});O__default.discriminatedUnion("platform",[_z,Pz]);var $M=Td.merge(_z).extend({type:O__default.literal("RESOLVED_MOBILE_MODULE")}),VM=Td.merge(Pz).extend({type:O__default.literal("RESOLVED_MOBILE_MODULE")});O__default.discriminatedUnion("platform",[$M,VM]);var Dfe=O__default.object({assertion:UM,get steps(){return ml.array()}}),zM=xg.extend({get blocks(){return Dfe.array()},get elseSteps(){return ml.array().optional()}}),Ffe=O__default.object({assertion:HM,get steps(){return hl.array()}}),WM=xg.extend({get blocks(){return Ffe.array()},get elseSteps(){return hl.array().optional()}}),ml=O__default.discriminatedUnion("type",[$M,Bu,Hu,zM]),hl=O__default.discriminatedUnion("type",[VM,Uu,Hu,WM]);function Oz(e){return Object.values(Dg).includes(e)||Object.values(Du).includes(e)}var Mz=(i=>(i.PRECONDITION="PRECONDITION",i.REPLAY="REPLAY",i.GENERATE="GENERATE",i.AUTOHEAL="AUTOHEAL",i.POSTCONDITION="POSTCONDITION",i))(Mz||{}),Nz=z.enum(["pending","running","success","failed"]),Lz=z.object({type:z.literal("THOUGHT"),text:z.string(),blockId:z.string().optional()}),kz=z.object({type:z.literal("TOOL_CALL"),toolName:z.string()}),Dz=z.object({type:z.literal("PHASE"),phase:z.nativeEnum(Mz),failureMessage:z.string().optional()}),Bfe=z.object({type:z.literal("STEP_UPDATE"),stepIndex:z.number(),step:ml,status:Nz,message:z.string().optional(),afterSnapshotId:z.string().optional()}),Ufe=z.object({type:z.literal("STEP_UPDATE"),stepIndex:z.number(),step:hl,status:Nz,message:z.string().optional(),afterSnapshotId:z.string().optional()}),Fz=z.object({type:z.literal("POSTCONDITION_AUTOGENERATED"),postcondition:z.string()}),Hfe=z.object({type:z.literal("CACHED_STEPS_GENERATED"),cachedSteps:Bu.array(),resolvedGoal:z.string()}),Gfe=z.object({type:z.literal("CACHED_STEPS_GENERATED"),cachedSteps:Uu.array(),resolvedGoal:z.string()}),Bz=z.discriminatedUnion("type",[Lz,kz,Dz,Bfe,Hfe,Fz]),Uz=z.discriminatedUnion("type",[Lz,kz,Dz,Ufe,Gfe,Fz]);var fc=O__default.object({message:O__default.string().optional(),startTime:O__default.number(),endTime:O__default.number(),status:O__default.nativeEnum(Nt),trace:O__default.unknown().optional().optional(),beforeSnapshot:O__default.string().optional(),afterSnapshot:O__default.string().optional(),data:O__default.unknown().optional().optional().describe("output data from the step"),aiSuggested:O__default.boolean().optional(),beforeTestContext:Tg.optional(),afterTestContext:Tg.optional()}),Hz=fc.merge(Bu).extend({previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),jfe=fc.merge(Rb).extend({steps:O__default.lazy(()=>Ds.array()),name:O__default.string().optional(),previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),$fe=fc.merge(Hu).extend({steps:O__default.lazy(()=>Ds.array()),previousAttempts:O__default.lazy(()=>Ds.array()).optional(),failureRecoveryReason:O__default.string().optional(),trajectory:Bz.array().optional()}),Vfe=fc.merge(zM).extend({assertionResult:Hz.optional(),steps:O__default.lazy(()=>Ds.array()),previousAttempts:O__default.lazy(()=>Ds.array()).optional()}),Ds=O__default.discriminatedUnion("type",[Hz,jfe,$fe,Vfe]),Gz=fc.merge(Uu).extend({previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),zfe=fc.merge(Rb).extend({steps:O__default.lazy(()=>Fs.array()),name:O__default.string().optional(),previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Wfe=fc.merge(Hu).extend({steps:O__default.lazy(()=>Fs.array()),previousAttempts:O__default.lazy(()=>Fs.array()).optional(),failureRecoveryReason:O__default.string().optional(),trajectory:Uz.array().optional()}),qfe=fc.merge(WM).extend({assertionResult:Gz.optional(),steps:O__default.lazy(()=>Fs.array()),previousAttempts:O__default.lazy(()=>Fs.array()).optional()}),Fs=O__default.discriminatedUnion("type",[Gz,zfe,Wfe,qfe]);var Kfe=fc.extend({index:O__default.number().optional(),userFacingStepReference:O__default.string().optional(),description:O__default.string()}),jz=Kfe.extend({beforeScreenshot:O__default.string().optional(),afterScreenshot:O__default.string().optional()});var $z=z.object({attributesRequired:z.array(z.string()).optional(),textRequired:z.boolean().optional(),boundsRequired:z.boolean().optional(),positionSpecificity:z.enum(ns).optional(),shapeSpecificity:z.enum(ns).optional()}),Yfe=z.object({id:z.number(),requirements:$z}).array();z.object({thoughts:z.string(),id:z.number(),updatedMemory:mS.optional(),inWebview:z.boolean().optional(),requirements:$z.optional(),additionalElements:Yfe.optional()});var Jfe=z.literal("SCROLL_TO"),Vz=z.object({description:z.string(),screenXml:z.string(),screenshot:z.string(),source:Jfe.optional(),memory:z.discriminatedUnion("type",[rl,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional()}),zz=z.object({assertion:z.string(),screenXml:z.string(),screenshot:z.string(),contextChoice:um.optional(),memory:z.discriminatedUnion("type",[lm,z.object({type:z.literal("RESOLVED_TRACES"),traces:z.unknown().optional().array()})]).optional()});z.object({thoughts:z.string(),result:z.boolean(),relevantElements:z.array(z.number()).optional(),updatedMemory:hS.optional()});var Wz=z.object({failedResults:jz.array(),nextStepsSerialized:z.string().array(),currentScreenXml:z.string(),currentScreenshot:z.string(),customInstructions:z.string().optional(),testDescription:z.string()}),qz=(o=>(o.LEGITIMATE="LEGITIMATE",o.RECOVERABLE="RECOVERABLE",o.INELIGIBLE="INELIGIBLE",o))(qz||{});z.object({thoughts:z.string(),scenario:z.enum(qz),instructions:z.string().nullish(),reasonSummary:z.string().nullish()});z.looseObject({type:z.literal("response.create")});var Kz=z.union([z.looseObject({response:z.looseObject({id:z.string()}),sequence_number:z.number(),type:z.literal("response.completed")}),z.looseObject({code:z.string().nullable(),message:z.string(),sequence_number:z.number(),type:z.literal("error")})]);var Yz="ui_states.jsonl";z.object({stepId:z.string(),parentStepIdChain:z.array(z.string()),fingerprintHash:z.string(),minhash:z.array(z.number().int()),canonicalUrl:z.string(),capturedAt:z.number().describe("Unix timestamp in milliseconds")});var Fg=(s=>(s.TestRun="test-run",s.MobileTestRun="mobile-test-run",s.CreditsUsed="credits-used",s.CreditsUsedV2="credits-used-v2",s.StepsExecuted="steps-executed",s.LLMTokensUsed="llm-tokens-used",s))(Fg||{}),ss=(c=>(c.TestRunner="test-runner",c.Editor="editor",c.Mcp="mcp",c.Explore="explore",c.Heal="heal",c.ResultClassification="result-classification",c.GithubPrSummary="github-pr-summary",c.AppGraph="app-graph",c.RunViewer="run-viewer",c))(ss||{}),Xfe=3;function Qfe(e){return e==="MODULE"||e==="CONDITIONAL"||e==="WHILE_LOOP"||e==="SECTION"||e==="RESOLVED_MODULE"}function Jz(e){if(!Qfe(e))switch(e){case "PRESET_ACTION":return 0;case "AI_ACTION":return 3;case "AI_ACTION_DYNAMIC":return 5;default:(n=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})();}}function Xz(e){switch(e.type){case "AI_EXTRACT":case "AI_ASSERTION":return Xfe;case "CAPTCHA":return 3;case "CLICK":case "TYPE":case "SELECT_OPTION":case "HOVER":case "ELEMENT_CHECK":case "FOCUS":case "BLUR":case "SCROLL_DOWN":case "SCROLL_LEFT":case "SCROLL_RIGHT":case "SCROLL_UP":case "MOUSE_DRAG":return e.useSelector||!e.target||e.target.type!=="description"?0:1;case "DRAG":return e.useSelector?0:1;case "VISUAL_DIFF":case "TAB":case "JAVASCRIPT":case "NAVIGATE":case "WAIT":case "SUCCESS":case "AUTH_LOAD":case "AUTH_SAVE":case "COOKIE":case "DIALOG":case "FILE_UPLOAD":case "GO_BACK":case "GO_FORWARD":case "LOCAL_STORAGE":case "NEW_TAB":case "CLOSE_TAB":case "PAGE_CHECK":case "PRESS":case "KEY_DOWN":case "KEY_UP":case "COPY":case "PASTE":case "REFRESH":case "REQUEST":case "GRAPHQL_REQUEST":case "WAIT_FOR_URL":case "REGISTER_REQUEST_LISTENER":case "AWAIT_LISTENER":case "RECORD_REQUESTS":case "GET_RECORDED_REQUESTS":case "SET_HEADER":case "MOCK_ROUTE":case "REMOVE_ROUTE_MOCK":case "OFFLINE_MODE":return 0;default:(n=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})();}}var qM=z.object({name:z.string(),value:z.string(),url:z.string().optional(),domain:z.string().optional(),path:z.string().optional(),expires:z.number().default(Date.now()/1e3+60*60*24*365),httpOnly:z.boolean().optional(),secure:z.boolean().default(true),sameSite:z.union([z.literal("Strict"),z.literal("Lax"),z.literal("None")]).default("None")});function rv(e,t){let n=[],o=splitCookiesString(e);for(let r of o){let i=parseString(r,{decodeValues:false});if(!i.name)throw new Error("Name missing from cookie");if(!i.value)continue;let s;if(i.sameSite){let d=i.sameSite.trim().toLowerCase();if(d==="strict")s="Strict";else if(d==="lax")s="Lax";else if(d==="none")s="None";else throw new Error(`Invalid sameSite setting in cookie: ${d}`)}i.httpOnly===void 0&&(i.httpOnly=false),!i.path&&i.domain&&(i.path="/"),!i.domain&&t&&(i.domain=t);let a=qM.parse({...i,expires:i.expires?i.expires.getTime()/1e3:void 0,sameSite:s});n.push(a);let l=[a.name,...Object.keys(a)].map(d=>d.toLowerCase()),c=r.match(/\b(\S+)=([^;]*)/g);if(c)for(let d of c){let[u,p]=d.split("=");if(!u||!p)throw new Error(`Invalid key-value pair in cookie: ${d}`);l.includes(u.toLowerCase())||n.push({...a,name:u,value:p});}}return n}var tye=z.object({origin:z.string(),localStorage:z.array(z.object({name:z.string(),value:z.string()})),sessionStorage:z.array(z.object({name:z.string(),value:z.string()})).optional()}),nye=z.object({entries:z.record(z.string(),z.array(z.tuple([z.unknown().optional(),z.unknown().optional()]))),version:z.number().optional()}),iv=z.object({cookies:qM.array().optional(),origins:tye.array().optional(),idb:z.record(z.string(),nye).optional().describe("key is db name")});function Qz(e,t){let n=[];return e.cloneSync()?.serializeSync()?.cookies.forEach(o=>{let r=qM.safeParse({name:o.key,...o});if(!r.success)return;let i=r.data;!i.domain&&!i.url&&(i.domain=t),n.push(i);}),n}var as={type:true,cache:true},Zz=[Cd.pick(as),Em.pick(as),Sb.pick(as),Ab.pick(as),fb.pick(as),hb.pick(as),ub.pick(as)],KM=O__default.discriminatedUnion("type",Zz),eW=[Cd.pick(as),Cm.pick(as),bb.pick(as),Eb.pick(as),yb.pick(as),pb.pick(as),gb.pick(as)],YM=O__default.discriminatedUnion("type",eW);Object.values(zt).filter(e=>Zz.some(t=>t.shape.type.safeParse(e).success));Object.values(zt).filter(e=>eW.some(t=>t.shape.type.safeParse(e).success));var JM=O__default.object({type:O__default.literal("MOBILE_AI_ACTION_STEP"),cache:BM}),sv=O__default.union([KM,JM]),av=O__default.union([YM,JM]);var XM=(s=>(s.US_EAST_1="us-east1",s.US_EAST_2="us-east2",s.US_WEST_1="us-west1",s.US_WEST_2="us-west2",s.EU_NORTH_1="eu-north1",s.AS_SOUTH_1="as-south1",s))(XM||{}),QM=(o=>(o.US="us",o.EU="eu",o.AS="as",o))(QM||{}),tW=(t=>(t.LOCAL="local",t))(tW||{}),ZM=O__default.nativeEnum(XM).or(O__default.nativeEnum(QM)),eN=O__default.nativeEnum(XM).or(O__default.nativeEnum(QM)).or(O__default.nativeEnum(tW)),rye="closest";eN.or(O__default.literal(rye));var Ug=(n=>(n.ANDROID_14="14",n.ANDROID_15="15",n))(Ug||{});var lv=(t=>(t.IOS_26="26",t))(lv||{});var iye=["1.56.1-lim.1","1.60.0-lim.1"],nW=O__default.enum(iye);var oW=O__default.nativeEnum(Ug).or(O__default.nativeEnum(lv));var sye=O__default.object({disableMomenticAccessibilityTree:O__default.boolean().optional(),autoGrantPermissions:O__default.boolean().optional().describe("Automatically grant app permission prompts during the run. Android only."),autoAcceptAlerts:O__default.boolean().optional().describe("Automatically accept native alert dialogs. iOS only."),autoDismissAlerts:O__default.boolean().optional().describe("Automatically dismiss native alert dialogs. iOS only."),disableXmlSnapshots:O__default.boolean().optional().describe("Skip collecting XML snapshots during test runs. This can speed up test runs, but will cause the run viewer to show less information."),browserSettings:vg.optional(),locale:O__default.string().optional().describe("Device locale code (e.g. 'fr', 'en-us'). Sets the device language and region. iOS and Android.")}),aye="avdId",lye="iosDeviceType",cye="iosVersion",tN=sye.extend({region:eN.optional().describe('Where the emulator runs: "local" for an emulator on your machine, or a region for hosted emulators. Defaults to hosted emulators.'),remoteEmulatorSettings:O__default.object({androidVersion:O__default.nativeEnum(Ug).optional()}).optional(),localEmulatorSettings:O__default.object({[aye]:Eg,[lye]:Eg,[cye]:Eg}).optional(),geolocation:O__default.object({latitude:O__default.number().refine(e=>e>=-90&&e<=90,{message:"Latitude must be between -90 and 90 degrees"}),longitude:O__default.number().refine(e=>e>=-180&&e<=180,{message:"Longitude must be between -180 and 180 degrees"})}).optional(),waitForStability:O__default.boolean().optional().describe("wait for stability before every targeting action")});var Ib=O__default.object({retries:O__default.number().optional().describe("number of retries to run"),defaultChannel:O__default.string().optional().describe("Default app release channel to use when installing from managed mobile artifacts."),defaultTag:O__default.string().optional().describe("Default app artifact tag to use. If not set, the latest available tag is used."),defaultEnv:O__default.string().optional().describe("Default mobile environment name to load variables from at runtime."),defaultApkFilePath:Eg.describe("APK to install when using the emulator in the local region."),defaultAppFilePath:Eg.describe("App file (e.g. .app or .ipa) to install when using the emulator in the local region."),emulator:tN.optional().describe("Emulator configuration for local or remote mobile execution, including region and local emulator overrides."),ai:uM.optional().describe("AI behavior overrides for this mobile test, such as memory and failure recovery settings.")}),rW=O__default.object({id:wo,description:O__default.string(),schemaVersion:O__default.string(),settings:Ib.optional(),disabled:O__default.boolean().optional(),labels:O__default.array(O__default.string()).optional()}),Hg=rW.extend({platform:O__default.literal("ANDROID").optional().default("ANDROID")}),Gg=rW.extend({platform:O__default.literal("IOS")}),iW=O__default.discriminatedUnion("platform",[Hg,Gg]),sW=O__default.object({fileType:O__default.literal(ke.MOBILE_TEST)}),aW=sW.merge(Hg),lW=sW.merge(Gg);O__default.discriminatedUnion("platform",[aW,lW]);var cW=Hg.merge(O__default.object({steps:O__default.array(gc)})),dW=Gg.merge(O__default.object({steps:O__default.array(vd)}));O__default.discriminatedUnion("platform",[cW,dW]);var dye=aW.merge(cW),uye=lW.merge(dW);O__default.discriminatedUnion("platform",[dye,uye]);O__default.object({name:O__default.string(),steps:O__default.array(gc).optional(),settings:Ib.optional()});var uW=Hg.extend({steps:ml.array(),beforeSteps:ml.array().optional(),afterSteps:ml.array().optional()}),pW=Gg.extend({steps:hl.array(),beforeSteps:hl.array().optional(),afterSteps:hl.array().optional()});O__default.discriminatedUnion("platform",[uW,pW]);var pye=uW.extend({name:O__default.string()}),mye=pW.extend({name:O__default.string()});O__default.discriminatedUnion("platform",[pye,mye]);var Pr=O__default.object({startTime:O__default.number(),endTime:O__default.number().optional(),durationMs:O__default.number().optional(),error:O__default.string().optional(),result:O__default.unknown().optional().optional(),attributes:O__default.record(O__default.string(),O__default.unknown().optional()),subSpans:O__default.lazy(()=>Oye.array())});var nN=Pr.extend({type:O__default.literal("SECTION"),name:O__default.string()}),hye=Pr.extend({type:O__default.literal("GET_PAGE_STATE")}),gye=Pr.extend({type:O__default.literal("GET_PAGE_SCREENSHOT")}),fye=Pr.extend({type:O__default.literal("SMART_WAITING")}),yye=Pr.extend({type:O__default.literal("SCROLL_ELEMENT_INTO_VIEW")}),Sye=Pr.extend({type:O__default.literal("AI_LOCATOR_CALL"),screenshotSnapshotId:O__default.string().optional(),result:O__default.object({id:O__default.number(),thoughts:O__default.string(),citations:Vo.array().optional()}).optional()}),bye=Pr.extend({type:O__default.literal("AI_ASSERTION_CALL"),screenshotSnapshotId:O__default.string().optional(),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({thoughts:O__default.string(),result:O__default.boolean(),citations:Vo.array().optional()}).optional()}),Tye=Pr.extend({type:O__default.literal("AI_EXTRACTION_CALL"),screenshotSnapshotId:O__default.string().optional(),browserStateSnapshotId:O__default.string().optional(),result:O__default.object({thoughts:O__default.string().optional(),result:O__default.unknown().optional().optional()}).optional()}),Aye=Pr.extend({type:O__default.literal("ELEMENT_ASSERTION"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()}),Eye=Pr.extend({type:O__default.literal("BROWSER_INTERACTION"),name:O__default.string(),coordinates:O__default.object({x:O__default.number(),y:O__default.number()}).optional(),value:O__default.string().optional(),selector:O__default.string().optional()}),Cye=Pr.extend({type:O__default.literal("CACHE_RESOLUTION"),resolutionMethod:O__default.string().optional(),cacheMissReason:O__default.nativeEnum(Wh).optional(),targetSource:O__default.string().optional(),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({serializedElement:O__default.string()}).optional()}),vye=Pr.extend({type:O__default.literal("TARGET_RESOLUTION"),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({serializedElement:O__default.string()}).optional()}),Rye=Pr.extend({type:O__default.literal("LOCATOR_REDIRECT"),elementScreenshotSnapshotId:O__default.string().optional(),result:O__default.object({outcome:O__default.string(),logs:O__default.string().array().optional(),serializedElement:O__default.string().optional(),relativeClickPoint:O__default.object({x:O__default.number(),y:O__default.number()}).optional(),force:O__default.boolean().optional()}).optional()}),wye=Pr.extend({type:O__default.literal("WAIT_FOR_STABILITY")}),Iye=Pr.extend({type:O__default.literal("GENERIC"),name:O__default.string()}),xye=Pr.extend({type:O__default.literal("PAGE_ASSERTION"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()}),_ye=Pr.extend({type:O__default.literal("AUTO_FOLLOW_NEW_TABS"),result:O__default.object({followed:O__default.boolean()}).optional()}),Pye=Pr.extend({type:O__default.literal("VISUAL_DIFF"),name:O__default.string(),result:O__default.object({success:O__default.boolean(),message:O__default.string().optional()}).optional()});function mW(e){return e.type==="CACHE_RESOLUTION"||e.type==="TARGET_RESOLUTION"}var Oye=O__default.discriminatedUnion("type",[nN,hye,gye,fye,yye,Sye,bye,Tye,Aye,Eye,vye,Cye,Rye,wye,xye,Pye,Iye,_ye]);z.object({testId:z.string(),sessionId:z.string()});var hW=z.object({uploadUrl:z.string(),id:z.string()});new Set(Object.values(Vn));var bn={AI_ACTION_DYNAMIC:"Ask AI achieve a specific goal. Fully dynamic and does not save the steps for reuse. Our most capable AI agent.",CONDITIONAL:"Execute steps based on the outcome of a conditional check",RESOLVED_MODULE:"A list of steps that can be reused in multiple tests.",AI_ASSERTION:"Ask AI to verify whether something is true on the page.",CLICK:"Click on an element on the page.",DIALOG:"Specify how native browser dialogs should be handled.",AI_EXTRACT:"Ask AI to extract data from the page.",BLUR:"Remove focus from an element on the page.",TYPE:"Type the specified text into an element.",PRESS:"Press the specified keys using the keyboard. (e.g. Control+A)",NAVIGATE:"Navigate to the specified URL.",GO_BACK:"Go back in browser history.",GO_FORWARD:"Go forward in browser history.",REFRESH:"Refresh the page. This will not clear cookies or session data.",TAB:"Switch to different tab in the browser.",NEW_TAB:"Create and switch to a new tab in the browser.",CLOSE_TAB:"Close a specified open tab or current tab if none specified.",COOKIE:"Set a cookie that will persist throughout the browser session.",LOCAL_STORAGE:"Set a localStorage value that will persist throughout the browser session",REQUEST:"Make an API request to a URL.",GRAPHQL_REQUEST:"Make a GraphQL request to a URL.",JAVASCRIPT:"Run JavaScript code in the browser or a Node.js environment.",DRAG:"Click and drag an element to another location.",WAIT_FOR_URL:"Wait for the active page's URL to match a target value or pattern.",COPY:"Copy the specified value to the browser clipboard.",PASTE:"Paste the browser clipboard contents.",SET_HEADER:"Set a header.",MOCK_ROUTE:"Mock network requests to a specific URL.",REMOVE_ROUTE_MOCK:"Remove a previously set route mock."};var Mye=z.string().refine(e=>iu.valid(e),{error:"must be a valid semver string"});function oN(e){return iu.parse(e)||void 0}function xb(e){if(e!==void 0)return e===true||e==="true"||e==="1"}var fW="on-fail";function yW(e){return e==="on-fail"?"on-fail":e==="false"?false:!!e}var SW=(n=>(n.CLI="cli",n.MobileCLI="mobile-cli",n))(SW||{}),Nye=z.nativeEnum(SW),bW=(o=>(o.Error="error",o.Warn="warn",o.Info="info",o))(bW||{}),Lye=z.nativeEnum(bW),kye=z.object({id:z.string(),level:Lye,versionRange:z.string(),announcement:z.string()});z.object({cliType:Nye,version:Mye});var TW=z.object({announcements:z.array(kye)});var _b=55555,cv="momentic-code-eval.js";z.object({body:z.string(),to:z.string(),from:z.string()});z.object({from:z.string().optional(),to:z.string(),timeout:z.number().optional(),beforeDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional()});z.object({timeoutMs:z.number().nonnegative().optional()}).optional();z.object({phoneNumber:z.string(),leaseToken:z.string()});var Dye=z.union([z.string(),z.date()]).transform(e=>e instanceof Date?e:new Date(e)),AW=z.object({phoneNumber:z.string(),expiresAt:Dye,leaseToken:z.string()});z.object({to:z.email(),from:z.string(),subject:z.string(),body:z.string(),html:z.string().optional()});z.object({inbox:z.string().transform(e=>e.toLowerCase()),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),timeout:z.number().optional(),trimWhitespace:z.boolean().optional()});z.object({inbox:z.string(),limit:z.number().optional(),afterDate:z.string().pipe(z.coerce.date()).or(z.date()).optional(),trimWhitespace:z.boolean().optional()});var EW=z.object({email:z.string(),prefix:z.string(),expiresAt:z.coerce.date()}),dv=(n=>(n.RAW="RAW",n.RESPONSE="RESPONSE",n))(dv||{}),CW=z.object({body:z.string().nullish(),status:z.number().optional(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}),Fye=z.object({url:z.string(),options:z.object({method:z.string(),body:z.string().nullish(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}).optional()}).optional(),Bye=z.object({body:z.string().nullish(),options:z.object({status:z.number(),statusText:z.string().optional(),headers:z.array(z.tuple([z.string(),z.string()])).optional()}).optional()}).optional(),vW=z.object({result:z.unknown().optional(),variableUpdates:z.record(z.string(),z.unknown().optional()).optional(),persistentVariableUpdates:z.record(z.string(),z.unknown().optional()).optional(),error:z.string().optional(),success:z.boolean()});z.object({id:z.string().optional(),orgId:z.string(),momenticLambdaAuthHash:z.string(),code:z.string(),fragment:z.boolean(),state:z.object({env:z.record(z.string(),z.unknown().optional()),request:Fye,response:Bye,additionalBindings:z.record(z.string(),z.unknown().optional()).optional()}),timeoutMs:z.number().optional(),disallowVariableUpdates:z.boolean().optional(),responseSerialization:z.enum(dv).optional()});var Gu=9e4;var Uye=O.object({url:O.string(),lineNumber:O.number(),columnNumber:O.number()}),RW=O.object({timestamp:O.number(),text:O.string(),type:O.string(),tabIndex:O.number(),args:O.unknown().optional().array().optional(),url:O.string().optional(),location:Uye.optional()}),wW=RW.array(),rN=wW.array();var Pb=class{async getConsoleLogsForRunAttempt(t,n,o){}async getNetworkLogsForRunAttempt(t,n,o){}async getHtmlSnapshot(t,n){}async getA11yTreeSnapshot(t,n){}async getScreenshot(t,n){}async storeConsoleLogsForRunAttempt(t,n,o,r){}async storeNetworkLogsForRunAttempt(t,n,o,r){}listVideoAssetPaths(){return []}close(){}async storeScreenshot(t,n,o){}async storeOnDemandScreenshotById(t,n,o,r){}async storeHtmlSnapshot(t,n,o){}};var Hye=z.object({name:z.string(),version:z.string(),comment:z.string().optional()}),Gye=z.object({name:z.string(),version:z.string(),comment:z.string().optional()}),jye=z.object({onContentLoad:z.number().optional(),onLoad:z.number().optional(),comment:z.string().optional()}),Ob=z.object({startedDateTime:z.string(),id:z.string(),title:z.string().optional(),pageTimings:jye,comment:z.string().optional()}),$ye=z.array(Ob),Vye=z.object({name:z.string(),value:z.string(),path:z.string().optional(),domain:z.string().optional(),expires:z.string().optional(),httpOnly:z.boolean().optional(),secure:z.boolean().optional(),comment:z.string().optional()}),xW=z.array(Vye),zye=z.object({name:z.string(),value:z.string(),comment:z.string().optional()}),_W=z.array(zye),Wye=z.object({name:z.string(),value:z.string(),comment:z.string().optional()}),qye=z.array(Wye),Kye=z.object({name:z.string(),value:z.string().optional(),fileName:z.string().optional(),contentType:z.string().optional(),comment:z.string().optional()}),Yye=z.array(Kye),Jye=z.object({mimeType:z.string(),params:Yye,text:z.string(),comment:z.string().optional(),_redactedReason:z.string().optional()}),Xye=z.object({method:z.string(),url:z.string(),httpVersion:z.string().optional(),cookies:xW,headers:_W,queryString:qye,postData:Jye.optional(),headersSize:z.number().optional(),bodySize:z.number().optional(),comment:z.string().optional()}),Qye=z.object({size:z.number().optional(),compression:z.number().optional(),mimeType:z.string().optional(),text:z.string().optional(),encoding:z.string().optional(),comment:z.string().optional(),_redactedReason:z.string().optional()}),Zye=z.object({status:z.number(),statusText:z.string(),httpVersion:z.string().optional(),cookies:xW,headers:_W,content:Qye,redirectURL:z.string().optional(),headersSize:z.number().optional(),bodySize:z.number().optional(),comment:z.string().optional(),_mocked:z.boolean().optional()}),IW=z.object({expires:z.string().optional(),lastAccess:z.string(),eTag:z.string(),hitCount:z.number(),comment:z.string().optional()}),eSe=z.object({beforeRequest:IW.optional(),afterRequest:IW.optional(),comment:z.string().optional()}),tSe=z.object({blocked:z.number().optional(),dns:z.number().optional(),connect:z.number().optional(),send:z.number(),wait:z.number(),receive:z.number(),ssl:z.number().optional(),comment:z.string().optional()}),Mb=z.object({pageref:z.string().optional(),startedDateTime:z.string(),time:z.number().optional(),request:Xye,response:Zye.optional(),cache:eSe.optional(),timings:tSe,serverIPAddress:z.string().optional(),connection:z.string().optional(),comment:z.string().optional(),_resourceType:z.string().optional()}),nSe=z.array(Mb),oSe=z.object({version:z.string().default("1.1"),creator:Hye.optional(),browser:Gye.optional(),pages:$ye.optional(),entries:nSe,comment:z.string().optional()});z.object({log:oSe});z.record(z.string(),Ob);z.record(z.string(),Mb);function iN(e,t){return {log:{version:"1.2",creator:{name:"Momentic, Inc.",version:"1.0.0"},pages:Object.values(e).sort((n,o)=>new Date(n.startedDateTime).getTime()-new Date(o.startedDateTime).getTime()),entries:Object.values(t).sort((n,o)=>new Date(n.startedDateTime).getTime()-new Date(o.startedDateTime).getTime())}}}var sN=(b=>(b.DisableClickhouseCaches="disable_clickhouse_caches",b.ShowZeroOpacityElements="show_zero_opacity_elements",b.VisualActions="visual_actions",b.RagV2="rag_v2",b.DisableSecondaryCacheResolution="disable_secondary_cache_resolution",b.GlobalLocatorRedirect="global_locator_redirect",b.FakerConstantSeed="faker_constant_seed",b.AutoExpandIframes="auto_expand_iframes",b.MobileNewAiActionStepsUseV3="mobile_new_ai_action_steps_use_v3",b.PerformanceInsights="performance_insights",b.ShowKnowledgeBase="show_knowledge_base",b.AppGraphBackend="app_graph_backend",b.AppGraphUI="app_graph_ui",b.ClassificationUI="classification_ui",b.HealingUI="healing_ui",b.ExploreUI="explore_ui",b.SlackNotifications="slack_notifications",b.SlackNotificationDms="slack_notification_dms",b.ResultClassificationCache="result_classification_cache",b))(sN||{});var ju=z.union([z.string(),z.number(),z.boolean(),z.null(),z.record(z.string(),z.lazy(()=>ju)),z.array(z.lazy(()=>ju))]),Nb=class{flags;payloads;constructor(t,n){this.flags=t,this.payloads=n;}isBooleanFlagEnabled(t){return process.env&&process.env[`MOMENTIC_FLAG_OVERRIDE_${t.toUpperCase()}`]==="true"?true:process.env&&process.env[`MOMENTIC_FLAG_OVERRIDE_${t.toUpperCase()}`]==="false"?false:this.flags[t]===true}getAllFlags(){let t=cloneDeep(this.flags);return Object.entries(t).forEach(([n,o])=>{typeof o=="boolean"&&Object.values(sN).includes(n)&&(t[n]=this.isBooleanFlagEnabled(n));}),t}getFlagPayload(t){let n=this.payloads[t];if(n!==void 0){if(typeof n=="string")try{return JSON.parse(n)}catch{return n}return n}}refresh(){throw new Error("Not implemented")}};var Lb={".123":"application/vnd.lotus-1-2-3",".3dml":"text/vnd.in3d.3dml",".3g2":"video/3gpp2",".3gp":"video/3gpp",".a":"application/octet-stream",".aab":"application/x-authorware-bin",".aac":"audio/x-aac",".aam":"application/x-authorware-map",".aas":"application/x-authorware-seg",".abw":"application/x-abiword",".acc":"application/vnd.americandynamics.acc",".ace":"application/x-ace-compressed",".acu":"application/vnd.acucobol",".acutc":"application/vnd.acucorp",".adp":"audio/adpcm",".aep":"application/vnd.audiograph",".afm":"application/x-font-type1",".afp":"application/vnd.ibm.modcap",".ai":"application/postscript",".aif":"audio/x-aiff",".aifc":"audio/x-aiff",".aiff":"audio/x-aiff",".air":"application/vnd.adobe.air-application-installer-package+zip",".ami":"application/vnd.amiga.ami",".apk":"application/vnd.android.package-archive",".application":"application/x-ms-application",".apr":"application/vnd.lotus-approach",".asc":"application/pgp-signature",".asf":"video/x-ms-asf",".asm":"text/x-asm",".aso":"application/vnd.accpac.simply.aso",".asx":"video/x-ms-asf",".atc":"application/vnd.acucorp",".atom":"application/atom+xml",".atomcat":"application/atomcat+xml",".atomsvc":"application/atomsvc+xml",".atx":"application/vnd.antix.game-component",".au":"audio/basic",".avi":"video/x-msvideo",".aw":"application/applixware",".azf":"application/vnd.airzip.filesecure.azf",".azs":"application/vnd.airzip.filesecure.azs",".azw":"application/vnd.amazon.ebook",".bat":"application/x-msdownload",".bcpio":"application/x-bcpio",".bdf":"application/x-font-bdf",".bdm":"application/vnd.syncml.dm+wbxml",".bh2":"application/vnd.fujitsu.oasysprs",".bin":"application/octet-stream",".bmi":"application/vnd.bmi",".bmp":"image/bmp",".book":"application/vnd.framemaker",".box":"application/vnd.previewsystems.box",".boz":"application/x-bzip2",".bpk":"application/octet-stream",".btif":"image/prs.btif",".bz":"application/x-bzip",".bz2":"application/x-bzip2",".c":"text/x-c",".c4d":"application/vnd.clonk.c4group",".c4f":"application/vnd.clonk.c4group",".c4g":"application/vnd.clonk.c4group",".c4p":"application/vnd.clonk.c4group",".c4u":"application/vnd.clonk.c4group",".cab":"application/vnd.ms-cab-compressed",".car":"application/vnd.curl.car",".cat":"application/vnd.ms-pki.seccat",".cc":"text/x-c",".cct":"application/x-director",".ccxml":"application/ccxml+xml",".cdbcmsg":"application/vnd.contact.cmsg",".cdf":"application/x-netcdf",".cdkey":"application/vnd.mediastation.cdkey",".cdx":"chemical/x-cdx",".cdxml":"application/vnd.chemdraw+xml",".cdy":"application/vnd.cinderella",".cer":"application/pkix-cert",".cgm":"image/cgm",".chat":"application/x-chat",".chm":"application/vnd.ms-htmlhelp",".chrt":"application/vnd.kde.kchart",".cif":"chemical/x-cif",".cii":"application/vnd.anser-web-certificate-issue-initiation",".cil":"application/vnd.ms-artgalry",".cla":"application/vnd.claymore",".class":"application/java-vm",".clkk":"application/vnd.crick.clicker.keyboard",".clkp":"application/vnd.crick.clicker.palette",".clkt":"application/vnd.crick.clicker.template",".clkw":"application/vnd.crick.clicker.wordbank",".clkx":"application/vnd.crick.clicker",".clp":"application/x-msclip",".cmc":"application/vnd.cosmocaller",".cmdf":"chemical/x-cmdf",".cml":"chemical/x-cml",".cmp":"application/vnd.yellowriver-custom-menu",".cmx":"image/x-cmx",".cod":"application/vnd.rim.cod",".com":"application/x-msdownload",".conf":"text/plain",".cpio":"application/x-cpio",".cpp":"text/x-c",".cpt":"application/mac-compactpro",".crd":"application/x-mscardfile",".crl":"application/pkix-crl",".crt":"application/x-x509-ca-cert",".csh":"application/x-csh",".csml":"chemical/x-csml",".csp":"application/vnd.commonspace",".css":"text/css",".cst":"application/x-director",".csv":"text/csv",".cu":"application/cu-seeme",".curl":"text/vnd.curl",".cww":"application/prs.cww",".cxt":"application/x-director",".cxx":"text/x-c",".daf":"application/vnd.mobius.daf",".dataless":"application/vnd.fdsn.seed",".davmount":"application/davmount+xml",".dcr":"application/x-director",".dcurl":"text/vnd.curl.dcurl",".dd2":"application/vnd.oma.dd2+xml",".ddd":"application/vnd.fujixerox.ddd",".deb":"application/x-debian-package",".def":"text/plain",".deploy":"application/octet-stream",".der":"application/x-x509-ca-cert",".dfac":"application/vnd.dreamfactory",".dic":"text/x-c",".diff":"text/plain",".dir":"application/x-director",".dis":"application/vnd.mobius.dis",".dist":"application/octet-stream",".distz":"application/octet-stream",".djv":"image/vnd.djvu",".djvu":"image/vnd.djvu",".dll":"application/x-msdownload",".dmg":"application/octet-stream",".dms":"application/octet-stream",".dna":"application/vnd.dna",".doc":"application/msword",".docm":"application/vnd.ms-word.document.macroenabled.12",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".dot":"application/msword",".dotm":"application/vnd.ms-word.template.macroenabled.12",".dotx":"application/vnd.openxmlformats-officedocument.wordprocessingml.template",".dp":"application/vnd.osgi.dp",".dpg":"application/vnd.dpgraph",".dsc":"text/prs.lines.tag",".dtb":"application/x-dtbook+xml",".dtd":"application/xml-dtd",".dts":"audio/vnd.dts",".dtshd":"audio/vnd.dts.hd",".dump":"application/octet-stream",".dvi":"application/x-dvi",".dwf":"model/vnd.dwf",".dwg":"image/vnd.dwg",".dxf":"image/vnd.dxf",".dxp":"application/vnd.spotfire.dxp",".dxr":"application/x-director",".ecelp4800":"audio/vnd.nuera.ecelp4800",".ecelp7470":"audio/vnd.nuera.ecelp7470",".ecelp9600":"audio/vnd.nuera.ecelp9600",".ecma":"application/ecmascript",".edm":"application/vnd.novadigm.edm",".edx":"application/vnd.novadigm.edx",".efif":"application/vnd.picsel",".ei6":"application/vnd.pg.osasli",".elc":"application/octet-stream",".eml":"message/rfc822",".emma":"application/emma+xml",".eol":"audio/vnd.digital-winds",".eot":"application/vnd.ms-fontobject",".eps":"application/postscript",".epub":"application/epub+zip",".es3":"application/vnd.eszigno3+xml",".esf":"application/vnd.epson.esf",".et3":"application/vnd.eszigno3+xml",".etx":"text/x-setext",".exe":"application/x-msdownload",".ext":"application/vnd.novadigm.ext",".ez":"application/andrew-inset",".ez2":"application/vnd.ezpix-album",".ez3":"application/vnd.ezpix-package",".f":"text/x-fortran",".f4v":"video/x-f4v",".f77":"text/x-fortran",".f90":"text/x-fortran",".fbs":"image/vnd.fastbidsheet",".fdf":"application/vnd.fdf",".fe_launch":"application/vnd.denovo.fcselayout-link",".fg5":"application/vnd.fujitsu.oasysgp",".fgd":"application/x-director",".fh":"image/x-freehand",".fh4":"image/x-freehand",".fh5":"image/x-freehand",".fh7":"image/x-freehand",".fhc":"image/x-freehand",".fig":"application/x-xfig",".fli":"video/x-fli",".flo":"application/vnd.micrografx.flo",".flv":"video/x-flv",".flw":"application/vnd.kde.kivio",".flx":"text/vnd.fmi.flexstor",".fly":"text/vnd.fly",".fm":"application/vnd.framemaker",".fnc":"application/vnd.frogans.fnc",".for":"text/x-fortran",".fpx":"image/vnd.fpx",".frame":"application/vnd.framemaker",".fsc":"application/vnd.fsc.weblaunch",".fst":"image/vnd.fst",".ftc":"application/vnd.fluxtime.clip",".fti":"application/vnd.anser-web-funds-transfer-initiation",".fvt":"video/vnd.fvt",".fzs":"application/vnd.fuzzysheet",".g3":"image/g3fax",".gac":"application/vnd.groove-account",".gdl":"model/vnd.gdl",".geo":"application/vnd.dynageo",".gex":"application/vnd.geometry-explorer",".ggb":"application/vnd.geogebra.file",".ggt":"application/vnd.geogebra.tool",".ghf":"application/vnd.groove-help",".gif":"image/gif",".gim":"application/vnd.groove-identity-message",".gmx":"application/vnd.gmx",".gnumeric":"application/x-gnumeric",".gph":"application/vnd.flographit",".gqf":"application/vnd.grafeq",".gqs":"application/vnd.grafeq",".gram":"application/srgs",".gre":"application/vnd.geometry-explorer",".grv":"application/vnd.groove-injector",".grxml":"application/srgs+xml",".gsf":"application/x-font-ghostscript",".gtar":"application/x-gtar",".gtm":"application/vnd.groove-tool-message",".gtw":"model/vnd.gtw",".gv":"text/vnd.graphviz",".gz":"application/x-gzip",".h":"text/x-c",".h261":"video/h261",".h263":"video/h263",".h264":"video/h264",".hbci":"application/vnd.hbci",".hdf":"application/x-hdf",".hh":"text/x-c",".hlp":"application/winhlp",".hpgl":"application/vnd.hp-hpgl",".hpid":"application/vnd.hp-hpid",".hps":"application/vnd.hp-hps",".hqx":"application/mac-binhex40",".htke":"application/vnd.kenameaapp",".htm":"text/html",".html":"text/html",".hvd":"application/vnd.yamaha.hv-dic",".hvp":"application/vnd.yamaha.hv-voice",".hvs":"application/vnd.yamaha.hv-script",".icc":"application/vnd.iccprofile",".ice":"x-conference/x-cooltalk",".icm":"application/vnd.iccprofile",".ico":"image/x-icon",".ics":"text/calendar",".ief":"image/ief",".ifb":"text/calendar",".ifm":"application/vnd.shana.informed.formdata",".iges":"model/iges",".igl":"application/vnd.igloader",".igs":"model/iges",".igx":"application/vnd.micrografx.igx",".iif":"application/vnd.shana.informed.interchange",".imp":"application/vnd.accpac.simply.imp",".ims":"application/vnd.ms-ims",".in":"text/plain",".ipk":"application/vnd.shana.informed.package",".irm":"application/vnd.ibm.rights-management",".irp":"application/vnd.irepository.package+xml",".iso":"application/octet-stream",".itp":"application/vnd.shana.informed.formtemplate",".ivp":"application/vnd.immervision-ivp",".ivu":"application/vnd.immervision-ivu",".jad":"text/vnd.sun.j2me.app-descriptor",".jam":"application/vnd.jam",".jar":"application/java-archive",".java":"text/x-java-source",".jisp":"application/vnd.jisp",".jlt":"application/vnd.hp-jlyt",".jnlp":"application/x-java-jnlp-file",".joda":"application/vnd.joost.joda-archive",".jpe":"image/jpeg",".jpeg":"image/jpeg",".jpg":"image/jpeg",".jpgm":"video/jpm",".jpgv":"video/jpeg",".jpm":"video/jpm",".js":"application/javascript",".json":"application/json",".kar":"audio/midi",".karbon":"application/vnd.kde.karbon",".kfo":"application/vnd.kde.kformula",".kia":"application/vnd.kidspiration",".kil":"application/x-killustrator",".kml":"application/vnd.google-earth.kml+xml",".kmz":"application/vnd.google-earth.kmz",".kne":"application/vnd.kinar",".knp":"application/vnd.kinar",".kon":"application/vnd.kde.kontour",".kpr":"application/vnd.kde.kpresenter",".kpt":"application/vnd.kde.kpresenter",".ksh":"text/plain",".ksp":"application/vnd.kde.kspread",".ktr":"application/vnd.kahootz",".ktz":"application/vnd.kahootz",".kwd":"application/vnd.kde.kword",".kwt":"application/vnd.kde.kword",".latex":"application/x-latex",".lbd":"application/vnd.llamagraphics.life-balance.desktop",".lbe":"application/vnd.llamagraphics.life-balance.exchange+xml",".les":"application/vnd.hhe.lesson-player",".lha":"application/octet-stream",".link66":"application/vnd.route66.link66+xml",".list":"text/plain",".list3820":"application/vnd.ibm.modcap",".listafp":"application/vnd.ibm.modcap",".log":"text/plain",".lostxml":"application/lost+xml",".lrf":"application/octet-stream",".lrm":"application/vnd.ms-lrm",".ltf":"application/vnd.frogans.ltf",".lvp":"audio/vnd.lucent.voice",".lwp":"application/vnd.lotus-wordpro",".lzh":"application/octet-stream",".m13":"application/x-msmediaview",".m14":"application/x-msmediaview",".m1v":"video/mpeg",".m2a":"audio/mpeg",".m2v":"video/mpeg",".m3a":"audio/mpeg",".m3u":"audio/x-mpegurl",".m4u":"video/vnd.mpegurl",".m4v":"video/x-m4v",".ma":"application/mathematica",".mag":"application/vnd.ecowin.chart",".maker":"application/vnd.framemaker",".man":"text/troff",".mathml":"application/mathml+xml",".mb":"application/mathematica",".mbk":"application/vnd.mobius.mbk",".mbox":"application/mbox",".mc1":"application/vnd.medcalcdata",".mcd":"application/vnd.mcd",".mcurl":"text/vnd.curl.mcurl",".mdb":"application/x-msaccess",".mdi":"image/vnd.ms-modi",".me":"text/troff",".mesh":"model/mesh",".mfm":"application/vnd.mfmp",".mgz":"application/vnd.proteus.magazine",".mht":"message/rfc822",".mhtml":"message/rfc822",".mid":"audio/midi",".midi":"audio/midi",".mif":"application/vnd.mif",".mime":"message/rfc822",".mj2":"video/mj2",".mjp2":"video/mj2",".mkv":"video/x-matroska",".mlp":"application/vnd.dolby.mlp",".mmd":"application/vnd.chipnuts.karaoke-mmd",".mmf":"application/vnd.smaf",".mmr":"image/vnd.fujixerox.edmics-mmr",".mny":"application/x-msmoney",".mobi":"application/x-mobipocket-ebook",".mov":"video/quicktime",".movie":"video/x-sgi-movie",".mp2":"audio/mpeg",".mp2a":"audio/mpeg",".mp3":"audio/mpeg",".mp4":"video/mp4",".mp4a":"audio/mp4",".mp4s":"application/mp4",".mp4v":"video/mp4",".mpa":"video/mpeg",".mpc":"application/vnd.mophun.certificate",".mpe":"video/mpeg",".mpeg":"video/mpeg",".mpg":"video/mpeg",".mpg4":"video/mp4",".mpga":"audio/mpeg",".mpkg":"application/vnd.apple.installer+xml",".mpm":"application/vnd.blueice.multipass",".mpn":"application/vnd.mophun.application",".mpp":"application/vnd.ms-project",".mpt":"application/vnd.ms-project",".mpy":"application/vnd.ibm.minipay",".mqy":"application/vnd.mobius.mqy",".mrc":"application/marc",".ms":"text/troff",".mscml":"application/mediaservercontrol+xml",".mseed":"application/vnd.fdsn.mseed",".mseq":"application/vnd.mseq",".msf":"application/vnd.epson.msf",".msh":"model/mesh",".msi":"application/x-msdownload",".msl":"application/vnd.mobius.msl",".msty":"application/vnd.muvee.style",".mts":"model/vnd.mts",".mus":"application/vnd.musician",".musicxml":"application/vnd.recordare.musicxml+xml",".mvb":"application/x-msmediaview",".mwf":"application/vnd.mfer",".mxf":"application/mxf",".mxl":"application/vnd.recordare.musicxml",".mxml":"application/xv+xml",".mxs":"application/vnd.triscape.mxs",".mxu":"video/vnd.mpegurl",".n-gage":"application/vnd.nokia.n-gage.symbian.install",".nb":"application/mathematica",".nc":"application/x-netcdf",".ncx":"application/x-dtbncx+xml",".ngdat":"application/vnd.nokia.n-gage.data",".nlu":"application/vnd.neurolanguage.nlu",".nml":"application/vnd.enliven",".nnd":"application/vnd.noblenet-directory",".nns":"application/vnd.noblenet-sealer",".nnw":"application/vnd.noblenet-web",".npx":"image/vnd.net-fpx",".nsf":"application/vnd.lotus-notes",".nws":"message/rfc822",".o":"application/octet-stream",".oa2":"application/vnd.fujitsu.oasys2",".oa3":"application/vnd.fujitsu.oasys3",".oas":"application/vnd.fujitsu.oasys",".obd":"application/x-msbinder",".obj":"application/octet-stream",".oda":"application/oda",".odb":"application/vnd.oasis.opendocument.database",".odc":"application/vnd.oasis.opendocument.chart",".odf":"application/vnd.oasis.opendocument.formula",".odft":"application/vnd.oasis.opendocument.formula-template",".odg":"application/vnd.oasis.opendocument.graphics",".odi":"application/vnd.oasis.opendocument.image",".odp":"application/vnd.oasis.opendocument.presentation",".ods":"application/vnd.oasis.opendocument.spreadsheet",".odt":"application/vnd.oasis.opendocument.text",".oga":"audio/ogg",".ogg":"audio/ogg",".ogv":"video/ogg",".ogx":"application/ogg",".onepkg":"application/onenote",".onetmp":"application/onenote",".onetoc":"application/onenote",".onetoc2":"application/onenote",".opf":"application/oebps-package+xml",".oprc":"application/vnd.palm",".org":"application/vnd.lotus-organizer",".osf":"application/vnd.yamaha.openscoreformat",".osfpvg":"application/vnd.yamaha.openscoreformat.osfpvg+xml",".otc":"application/vnd.oasis.opendocument.chart-template",".otf":"application/x-font-otf",".otg":"application/vnd.oasis.opendocument.graphics-template",".oth":"application/vnd.oasis.opendocument.text-web",".oti":"application/vnd.oasis.opendocument.image-template",".otm":"application/vnd.oasis.opendocument.text-master",".otp":"application/vnd.oasis.opendocument.presentation-template",".ots":"application/vnd.oasis.opendocument.spreadsheet-template",".ott":"application/vnd.oasis.opendocument.text-template",".oxt":"application/vnd.openofficeorg.extension",".p":"text/x-pascal",".p10":"application/pkcs10",".p12":"application/x-pkcs12",".p7b":"application/x-pkcs7-certificates",".p7c":"application/pkcs7-mime",".p7m":"application/pkcs7-mime",".p7r":"application/x-pkcs7-certreqresp",".p7s":"application/pkcs7-signature",".pas":"text/x-pascal",".pbd":"application/vnd.powerbuilder6",".pbm":"image/x-portable-bitmap",".pcf":"application/x-font-pcf",".pcl":"application/vnd.hp-pcl",".pclxl":"application/vnd.hp-pclxl",".pct":"image/x-pict",".pcurl":"application/vnd.curl.pcurl",".pcx":"image/x-pcx",".pdb":"application/vnd.palm",".pdf":"application/pdf",".pfa":"application/x-font-type1",".pfb":"application/x-font-type1",".pfm":"application/x-font-type1",".pfr":"application/font-tdpfr",".pfx":"application/x-pkcs12",".pgm":"image/x-portable-graymap",".pgn":"application/x-chess-pgn",".pgp":"application/pgp-encrypted",".pic":"image/x-pict",".pkg":"application/octet-stream",".pki":"application/pkixcmp",".pkipath":"application/pkix-pkipath",".pl":"text/plain",".plb":"application/vnd.3gpp.pic-bw-large",".plc":"application/vnd.mobius.plc",".plf":"application/vnd.pocketlearn",".pls":"application/pls+xml",".pml":"application/vnd.ctc-posml",".png":"image/png",".pnm":"image/x-portable-anymap",".portpkg":"application/vnd.macports.portpkg",".pot":"application/vnd.ms-powerpoint",".potm":"application/vnd.ms-powerpoint.template.macroenabled.12",".potx":"application/vnd.openxmlformats-officedocument.presentationml.template",".ppa":"application/vnd.ms-powerpoint",".ppam":"application/vnd.ms-powerpoint.addin.macroenabled.12",".ppd":"application/vnd.cups-ppd",".ppm":"image/x-portable-pixmap",".pps":"application/vnd.ms-powerpoint",".ppsm":"application/vnd.ms-powerpoint.slideshow.macroenabled.12",".ppsx":"application/vnd.openxmlformats-officedocument.presentationml.slideshow",".ppt":"application/vnd.ms-powerpoint",".pptm":"application/vnd.ms-powerpoint.presentation.macroenabled.12",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".pqa":"application/vnd.palm",".prc":"application/x-mobipocket-ebook",".pre":"application/vnd.lotus-freelance",".prf":"application/pics-rules",".ps":"application/postscript",".psb":"application/vnd.3gpp.pic-bw-small",".psd":"image/vnd.adobe.photoshop",".psf":"application/x-font-linux-psf",".ptid":"application/vnd.pvi.ptid1",".pub":"application/x-mspublisher",".pvb":"application/vnd.3gpp.pic-bw-var",".pwn":"application/vnd.3m.post-it-notes",".pwz":"application/vnd.ms-powerpoint",".py":"text/x-python",".pya":"audio/vnd.ms-playready.media.pya",".pyc":"application/x-python-code",".pyo":"application/x-python-code",".pyv":"video/vnd.ms-playready.media.pyv",".qam":"application/vnd.epson.quickanime",".qbo":"application/vnd.intu.qbo",".qfx":"application/vnd.intu.qfx",".qps":"application/vnd.publishare-delta-tree",".qt":"video/quicktime",".qwd":"application/vnd.quark.quarkxpress",".qwt":"application/vnd.quark.quarkxpress",".qxb":"application/vnd.quark.quarkxpress",".qxd":"application/vnd.quark.quarkxpress",".qxl":"application/vnd.quark.quarkxpress",".qxt":"application/vnd.quark.quarkxpress",".ra":"audio/x-pn-realaudio",".ram":"audio/x-pn-realaudio",".rar":"application/x-rar-compressed",".ras":"image/x-cmu-raster",".rcprofile":"application/vnd.ipunplugged.rcprofile",".rdf":"application/rdf+xml",".rdz":"application/vnd.data-vision.rdz",".rep":"application/vnd.businessobjects",".res":"application/x-dtbresource+xml",".rgb":"image/x-rgb",".rif":"application/reginfo+xml",".rl":"application/resource-lists+xml",".rlc":"image/vnd.fujixerox.edmics-rlc",".rld":"application/resource-lists-diff+xml",".rm":"application/vnd.rn-realmedia",".rmi":"audio/midi",".rmp":"audio/x-pn-realaudio-plugin",".rms":"application/vnd.jcp.javame.midlet-rms",".rnc":"application/relax-ng-compact-syntax",".roff":"text/troff",".rpm":"application/x-rpm",".rpss":"application/vnd.nokia.radio-presets",".rpst":"application/vnd.nokia.radio-preset",".rq":"application/sparql-query",".rs":"application/rls-services+xml",".rsd":"application/rsd+xml",".rss":"application/rss+xml",".rtf":"application/rtf",".rtx":"text/richtext",".s":"text/x-asm",".saf":"application/vnd.yamaha.smaf-audio",".sbml":"application/sbml+xml",".sc":"application/vnd.ibm.secure-container",".scd":"application/x-msschedule",".scm":"application/vnd.lotus-screencam",".scq":"application/scvp-cv-request",".scs":"application/scvp-cv-response",".scurl":"text/vnd.curl.scurl",".sda":"application/vnd.stardivision.draw",".sdc":"application/vnd.stardivision.calc",".sdd":"application/vnd.stardivision.impress",".sdkd":"application/vnd.solent.sdkm+xml",".sdkm":"application/vnd.solent.sdkm+xml",".sdp":"application/sdp",".sdw":"application/vnd.stardivision.writer",".see":"application/vnd.seemail",".seed":"application/vnd.fdsn.seed",".sema":"application/vnd.sema",".semd":"application/vnd.semd",".semf":"application/vnd.semf",".ser":"application/java-serialized-object",".setpay":"application/set-payment-initiation",".setreg":"application/set-registration-initiation",".sfd-hdstx":"application/vnd.hydrostatix.sof-data",".sfs":"application/vnd.spotfire.sfs",".sgl":"application/vnd.stardivision.writer-global",".sgm":"text/sgml",".sgml":"text/sgml",".sh":"application/x-sh",".shar":"application/x-shar",".shf":"application/shf+xml",".si":"text/vnd.wap.si",".sic":"application/vnd.wap.sic",".sig":"application/pgp-signature",".silo":"model/mesh",".sis":"application/vnd.symbian.install",".sisx":"application/vnd.symbian.install",".sit":"application/x-stuffit",".sitx":"application/x-stuffitx",".skd":"application/vnd.koan",".skm":"application/vnd.koan",".skp":"application/vnd.koan",".skt":"application/vnd.koan",".sl":"text/vnd.wap.sl",".slc":"application/vnd.wap.slc",".sldm":"application/vnd.ms-powerpoint.slide.macroenabled.12",".sldx":"application/vnd.openxmlformats-officedocument.presentationml.slide",".slt":"application/vnd.epson.salt",".smf":"application/vnd.stardivision.math",".smi":"application/smil+xml",".smil":"application/smil+xml",".snd":"audio/basic",".snf":"application/x-font-snf",".so":"application/octet-stream",".spc":"application/x-pkcs7-certificates",".spf":"application/vnd.yamaha.smaf-phrase",".spl":"application/x-futuresplash",".spot":"text/vnd.in3d.spot",".spp":"application/scvp-vp-response",".spq":"application/scvp-vp-request",".spx":"audio/ogg",".src":"application/x-wais-source",".srx":"application/sparql-results+xml",".sse":"application/vnd.kodak-descriptor",".ssf":"application/vnd.epson.ssf",".ssml":"application/ssml+xml",".stc":"application/vnd.sun.xml.calc.template",".std":"application/vnd.sun.xml.draw.template",".stf":"application/vnd.wt.stf",".sti":"application/vnd.sun.xml.impress.template",".stk":"application/hyperstudio",".stl":"application/vnd.ms-pki.stl",".str":"application/vnd.pg.format",".stw":"application/vnd.sun.xml.writer.template",".sus":"application/vnd.sus-calendar",".susp":"application/vnd.sus-calendar",".sv4cpio":"application/x-sv4cpio",".sv4crc":"application/x-sv4crc",".svd":"application/vnd.svd",".svg":"image/svg+xml",".svgz":"image/svg+xml",".swa":"application/x-director",".swf":"application/x-shockwave-flash",".swi":"application/vnd.arastra.swi",".sxc":"application/vnd.sun.xml.calc",".sxd":"application/vnd.sun.xml.draw",".sxg":"application/vnd.sun.xml.writer.global",".sxi":"application/vnd.sun.xml.impress",".sxm":"application/vnd.sun.xml.math",".sxw":"application/vnd.sun.xml.writer",".t":"text/troff",".tao":"application/vnd.tao.intent-module-archive",".tar":"application/x-tar",".tcap":"application/vnd.3gpp2.tcap",".tcl":"application/x-tcl",".teacher":"application/vnd.smart.teacher",".tex":"application/x-tex",".texi":"application/x-texinfo",".texinfo":"application/x-texinfo",".text":"text/plain",".tfm":"application/x-tex-tfm",".tgz":"application/x-gzip",".tif":"image/tiff",".tiff":"image/tiff",".tmo":"application/vnd.tmobile-livetv",".torrent":"application/x-bittorrent",".tpl":"application/vnd.groove-tool-template",".tpt":"application/vnd.trid.tpt",".tr":"text/troff",".tra":"application/vnd.trueapp",".trm":"application/x-msterminal",".tsv":"text/tab-separated-values",".ttc":"application/x-font-ttf",".ttf":"application/x-font-ttf",".twd":"application/vnd.simtech-mindmapper",".twds":"application/vnd.simtech-mindmapper",".txd":"application/vnd.genomatix.tuxedo",".txf":"application/vnd.mobius.txf",".txt":"text/plain",".u32":"application/x-authorware-bin",".udeb":"application/x-debian-package",".ufd":"application/vnd.ufdl",".ufdl":"application/vnd.ufdl",".umj":"application/vnd.umajin",".unityweb":"application/vnd.unity",".uoml":"application/vnd.uoml+xml",".uri":"text/uri-list",".uris":"text/uri-list",".urls":"text/uri-list",".ustar":"application/x-ustar",".utz":"application/vnd.uiq.theme",".uu":"text/x-uuencode",".vcd":"application/x-cdlink",".vcf":"text/x-vcard",".vcg":"application/vnd.groove-vcard",".vcs":"text/x-vcalendar",".vcx":"application/vnd.vcx",".vis":"application/vnd.visionary",".viv":"video/vnd.vivo",".vor":"application/vnd.stardivision.writer",".vox":"application/x-authorware-bin",".vrml":"model/vrml",".vsd":"application/vnd.visio",".vsf":"application/vnd.vsf",".vss":"application/vnd.visio",".vst":"application/vnd.visio",".vsw":"application/vnd.visio",".vtu":"model/vnd.vtu",".vxml":"application/voicexml+xml",".w3d":"application/x-director",".webm":"video/webm",".wad":"application/x-doom",".wav":"audio/x-wav",".wax":"audio/x-ms-wax",".wbmp":"image/vnd.wap.wbmp",".wbs":"application/vnd.criticaltools.wbs+xml",".wbxml":"application/vnd.wap.wbxml",".wcm":"application/vnd.ms-works",".wdb":"application/vnd.ms-works",".wiz":"application/msword",".wks":"application/vnd.ms-works",".wm":"video/x-ms-wm",".wma":"audio/x-ms-wma",".wmd":"application/x-ms-wmd",".wmf":"application/x-msmetafile",".wml":"text/vnd.wap.wml",".wmlc":"application/vnd.wap.wmlc",".wmls":"text/vnd.wap.wmlscript",".wmlsc":"application/vnd.wap.wmlscriptc",".wmv":"video/x-ms-wmv",".wmx":"video/x-ms-wmx",".wmz":"application/x-ms-wmz",".wpd":"application/vnd.wordperfect",".wpl":"application/vnd.ms-wpl",".wps":"application/vnd.ms-works",".wqd":"application/vnd.wqd",".wri":"application/x-mswrite",".wrl":"model/vrml",".wsdl":"application/wsdl+xml",".wspolicy":"application/wspolicy+xml",".wtb":"application/vnd.webturbo",".wvx":"video/x-ms-wvx",".x32":"application/x-authorware-bin",".x3d":"application/vnd.hzn-3d-crossword",".xap":"application/x-silverlight-app",".xar":"application/vnd.xara",".xbap":"application/x-ms-xbap",".xbd":"application/vnd.fujixerox.docuworks.binder",".xbm":"image/x-xbitmap",".xdm":"application/vnd.syncml.dm+xml",".xdp":"application/vnd.adobe.xdp+xml",".xdw":"application/vnd.fujixerox.docuworks",".xenc":"application/xenc+xml",".xer":"application/patch-ops-error+xml",".xfdf":"application/vnd.adobe.xfdf",".xfdl":"application/vnd.xfdl",".xht":"application/xhtml+xml",".xhtml":"application/xhtml+xml",".xhvml":"application/xv+xml",".xif":"image/vnd.xiff",".xla":"application/vnd.ms-excel",".xlam":"application/vnd.ms-excel.addin.macroenabled.12",".xlb":"application/vnd.ms-excel",".xlc":"application/vnd.ms-excel",".xlm":"application/vnd.ms-excel",".xls":"application/vnd.ms-excel",".xlsb":"application/vnd.ms-excel.sheet.binary.macroenabled.12",".xlsm":"application/vnd.ms-excel.sheet.macroenabled.12",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".xlt":"application/vnd.ms-excel",".xltm":"application/vnd.ms-excel.template.macroenabled.12",".xltx":"application/vnd.openxmlformats-officedocument.spreadsheetml.template",".xlw":"application/vnd.ms-excel",".xml":"application/xml",".xo":"application/vnd.olpc-sugar",".xop":"application/xop+xml",".xpdl":"application/xml",".xpi":"application/x-xpinstall",".xpm":"image/x-xpixmap",".xpr":"application/vnd.is-xpr",".xps":"application/vnd.ms-xpsdocument",".xpw":"application/vnd.intercon.formnet",".xpx":"application/vnd.intercon.formnet",".xsl":"application/xml",".xslt":"application/xslt+xml",".xsm":"application/vnd.syncml+xml",".xspf":"application/xspf+xml",".xul":"application/vnd.mozilla.xul+xml",".xvm":"application/xv+xml",".xvml":"application/xv+xml",".xwd":"image/x-xwindowdump",".xyz":"chemical/x-xyz",".zaz":"application/vnd.zzazz.deck+xml",".zip":"application/zip",".zir":"application/vnd.zul",".zirz":"application/vnd.zul",".zmm":"application/vnd.handheld-entertainment+xml"},PW=[".sh",".exe",".app",".bat",".cmd",".msi",".apk",".jar",".py",".js",".cron",".php",".asp"];var OW=z.discriminatedUnion("operation",[z.object({operation:z.literal("upsert"),path:z.string().min(1),content:z.string()}),z.object({operation:z.literal("delete"),path:z.string().min(1)})]),sSe=z.object({githubLogin:z.string().optional(),email:z.string().optional()}),aSe=z.object({baseSha:z.string().min(1),headSha:z.string().min(1)}),lSe=z.object({baseBranch:z.string().min(1).max(255),baseCommitSha:z.string().min(1),headBranch:z.string().min(1).max(255).optional(),branchPrefix:z.string().min(1).max(255).optional(),idempotencyKey:z.string().min(1).optional()}),cSe=z.object({commitMessage:z.string().min(1),title:z.string().min(1),body:z.string(),reviewers:z.array(z.string().min(1)).optional(),draft:z.boolean().optional()});lSe.extend(cSe.shape).extend({changes:z.array(OW).min(1),coAuthorRange:aSe.optional()}).superRefine((e,t)=>{e.headBranch||(!e.branchPrefix||!e.idempotencyKey)&&t.addIssue({code:"custom",message:"branchPrefix and idempotencyKey are required when headBranch is omitted",path:["idempotencyKey"]});});var MW=z.object({pullRequestUrl:z.url(),pullRequestNumber:z.number(),headBranch:z.string(),commitSha:z.string(),created:z.boolean(),authors:z.array(sSe).optional()});z.object({branch:z.string().min(1).max(255),commitMessage:z.string().min(1),changes:z.array(OW).min(1)});var NW=z.object({branch:z.string(),commitSha:z.string(),committed:z.boolean()}),LW=z.object({issueNumber:z.number(),htmlUrl:z.url(),headBranch:z.string().min(1),baseBranch:z.string().min(1),latestCommitSha:z.string().min(1),draft:z.boolean().optional(),title:z.string().optional(),body:z.string().optional()});z.object({number:z.number(),htmlUrl:z.url()});var dSe=z.object({path:z.string().min(1),status:z.string().min(1),additions:z.number(),deletions:z.number(),previousPath:z.string().optional(),patch:z.string().optional()}),uSe=z.object({sha:z.string().min(1),author:z.string().optional(),email:z.string().optional(),date:z.string().optional(),message:z.string()}),kW=z.object({mergeBaseSha:z.string().min(1),totalCommits:z.number(),commits:z.array(uSe),files:z.array(dSe)}),DW=z.object({content:z.string().nullable()}),FW=z.object({name:z.string().min(1),protected:z.boolean()}),BW=z.object({iid:z.number(),webUrl:z.url(),sourceBranch:z.string().min(1),targetBranch:z.string().min(1),latestCommitSha:z.string().min(1)}),pSe=z.object({name:z.string(),path:z.string(),body:z.string()}),UW=z.object({template:pSe});function hr(e){let[t,n,...o]=e.split("/");if(!(!t||!n||o.length>0))return {owner:t,repo:n}}function HW(e){let t=hr(e);if(t)return t;throw new mt(`Invalid GitHub repository string: ${e}. Expected format "owner/repo".`)}var mSe=/^co-authored-by:\s*.*?<([^>]+)>\s*$/gim,hSe=/^(?:\d+\+)?([^@]+)@users\.noreply\.github\.com$/i;function uv(e){return e.match(hSe)?.[1]}function GW(e){let t=[];for(let n of e.matchAll(mSe)){let o=n[1]?.trim();o&&t.push({email:o,githubLogin:uv(o)});}return t}function gSe(e){return (e.githubLogin??(e.email?uv(e.email):void 0))?.toLowerCase().endsWith("[bot]")??false}function jW(e){return e.filter(t=>!gSe(t))}var $W="https://static.momentic.ai";function kb(e,t){return {light:`${$W}/${e}.svg`,dark:`${$W}/${e}-dark.svg`,alt:t}}var Db={runGroup:kb("run-group-button","View run group"),basePr:kb("view-base-pr-button","View base PR"),branch:kb("view-branch-button","View branch"),commit:kb("view-commit-button","View commit")};function Fb({href:e,button:t}){return `<a href="${e}"><picture><source media="(prefers-color-scheme: dark)" srcset="${t.dark}" /><img src="${t.light}" alt="${t.alt}" /></picture></a>`}var aN=O__default.object({platformSep:O__default.string(),fullPathSegments:O__default.string().array(),relativePathSegments:O__default.string().array(),relativePath:O__default.string().describe("path relative to the root test directory, i.e. my-folder/my-test.yaml"),fileName:O__default.string().describe("base name of the file including the extension, e.g. my-module.module.yaml"),lastModified:O__default.coerce.date(),createdAt:O__default.coerce.date()});var fSe=z.array(aN.extend({id:z.string(),name:z.string(),description:z.string().optional(),labels:z.string().array().optional()})),ySe=aN.extend({id:z.string(),name:z.string(),description:z.string().optional(),content:pC}),SSe=z.array(ySe);z.object({tests:fSe,modules:SSe,labels:z.string().array()});z.string().array();var VW=z.object({pathSegments:z.string().array()});fM.merge(to);var zW=z.object({schemaVersion:z.string(),stepLists:ec}),WW=to.partial().merge(ai.pick({id:true})),Im="1-255 chars; Only letters/numbers/dashes. Cannot start/end with '-'. Not '.yaml', 'none', or UUID.",lN={name:z.string().min(1).max(255).describe(Im),description:z.string().optional(),baseUrl:z.url().optional().describe("For LLM: Ask the user for the base URL if they don't provide it."),environment:z.string().optional().describe("For LLM: Do not include the variable unless the user explicitly asks for it and use the environment lookup tool to get the correct one before passing here."),browserType:z.enum(dc).optional().describe("For LLM: Never assign this variable unless the user explicitly asks for it."),viewport:bd.optional().describe("For LLM: Never assign this variable unless the user explicitly asks for it."),pathSegments:z.string().array().optional().describe("For LLM: Only use if explicitly called for by the user. Used to create the test in the correct folder. Paths are relative to the project root.")},qW=z.object(lN);fM.extend(z.object({relativeFilePath:z.string().describe("relative to project root")}).shape);var KW=z.object({name:z.string()});z.object({relativeFilePath:z.string()});var YW=z.object({name:z.string(),sourceModuleContent:pC});z.object({relativeFilePath:z.string()});var JW=z.object({name:z.string(),description:z.string(),enabled:z.boolean(),steps:z.lazy(()=>tn.array()),testFilePath:z.string().describe("relative to the project root"),folderPath:z.string().optional().describe("user selected folder path")}),XW=z.object({name:z.string(),description:z.string(),enabled:z.boolean()}).partial(),QW=z.object({folderPath:z.string()}),ZW=z.object({folderPath:z.string()});z.array(qS);var e1=z.object({defaultEnv:z.string().optional().describe("name of the default env, or undefined to unset")}),t1=z.object({configFilePath:z.string().describe("full path on disk")});z.string().array();z.object({message:z.string(),newRelativeTestPath:z.string().optional()});var cN=z.object({name:z.string(),absolutePath:z.string(),relativePath:z.string(),pathSegments:z.array(z.string()),isDirectory:z.boolean(),size:z.number(),createdAt:z.coerce.date(),modifiedAt:z.coerce.date(),accessedAt:z.coerce.date()}),n1=z.object({pathSegments:z.array(z.string())});z.object({absolutePath:z.string(),pathSegments:z.array(z.string()),contents:z.array(cN)});var o1=z.object({sourceDirectoryPath:z.string().optional(),value:z.string(),allowedExtensions:z.array(z.string()).optional()}),bSe=z.object({name:z.string(),value:z.string(),isDirectory:z.boolean()});z.object({suggestions:z.array(bSe)});var r1=z.object({pathSegments:z.array(z.string())}),i1=z.object({pathSegments:z.array(z.string()),newPathSegments:z.array(z.string())}),s1=z.object({pathSegments:z.array(z.string()),recursive:z.boolean().optional()});z.object({success:z.boolean(),message:z.string(),pathSegments:z.array(z.string()).optional()});z.object({gitBranch:z.string(),fileMtime:z.coerce.date(),gitCommitSha:z.string()});var a1=typeof process<"u"&&true&&true,pv=58889,$g=24*60*60*1e3;var l1=z.object({id:z.string(),createdAt:z.coerce.date(),createdBy:z.string(),organizationId:z.string(),name:z.string(),description:z.string().nullish(),enabled:z.boolean(),schemaVersion:z.string().describe("Schema version for steps"),parameters:z.string().array().nullish().describe("Parameter list"),parameterEnums:z.record(z.string(),z.string().array()).nullish(),defaultParameters:z.record(z.string(),z.string()).nullish(),defaultCacheKey:z.string().nullish(),defaultCacheTtl:z.number().nullish(),defaultCacheAllInvocations:z.boolean().nullish(),autoAuth:z.boolean().nullish(),defaultRetries:z.int().min(0).nullish(),advanced:FO.nullish()});l1.extend({steps:z.lazy(()=>Lt.array())});var c1=5*60*1e3,Bb=Qn.extend(l1.omit({id:true,createdAt:true,createdBy:true,organizationId:true,enabled:true}).shape);var TSe="org_01HMJTX4GT1KG94KZRCT8MZ6YB",ASe="org_01HMSCJQBCCG51M2ZF65YC5B8W",ESe="org_01JPR6MGFQSHF3W234R3XJDPMB",CSe=[TSe,ASe,ESe];function d1(e){return CSe.includes(e)}var u1=(o=>(o.AZURE="AZURE",o.KERNEL="KERNEL",o.BROWSERBASE="BROWSERBASE",o))(u1||{}),dN=z.enum(u1);z.object({azureRegion:z.string().optional(),azureWorkspaceId:z.string().optional()});z.object({});var vSe=z.enum(["us-west-2","us-east-1","eu-central-1","ap-southeast-1"]);z.object({region:vSe.optional()});var uN=(t=>(t.TEST_REVIEW="TEST_REVIEW",t))(uN||{});var RSe=z.object({type:z.literal("DESCRIPTION_UPDATE"),thoughts:z.string()}),mv=z.discriminatedUnion("type",[RSe]),wSe=z.object({testId:z.string(),name:z.string(),orgId:z.string(),runId:z.string(),steps:tn.array(),purpose:z.enum(uN),details:mv.or(mv.array()).optional()});wSe.pick({name:true,orgId:true});var ISe=z.object({id:z.string(),name:z.string().nullish(),createdAt:z.string().pipe(z.coerce.date()).or(z.date()),organizationId:z.string(),schemaVersion:z.string(),runId:z.string().nullish(),purpose:z.enum(uN),details:mv.or(mv.array()).optional(),applied:z.boolean().nullish(),appliedAt:z.coerce.date().nullish()}),p1=ISe.extend({steps:tn.array()});var m1=z.enum(["v1","v2"]);var _Se=z.enum(["element","content","attribute","tag_name","style"]),hv=z.enum(["exists","visible","enabled","editable","focused","contains","equals","starts_with"]);[...ej,...ZG].forEach(e=>{if(!hv.options.includes(e.toLowerCase()))throw new Error(`V2CheckConditionSchema is missing option: ${e}`)});var pN={element:{aliasPrefix:"",assertionType:"ELEMENT_EXISTENCE",requiresName:false},content:{aliasPrefix:"Content",assertionType:"ELEMENT_CONTENT",requiresName:false},attribute:{aliasPrefix:"Attribute",assertionType:"ELEMENT_ATTRIBUTE",requiresName:true},tag_name:{aliasPrefix:"Name",assertionType:"ELEMENT_NAME",requiresName:false},style:{aliasPrefix:"Style",assertionType:"ELEMENT_STYLE",requiresName:true}},f1={exists:{positiveAliasSuffix:"Exists",negativeAliasSuffix:"DoesNotExist",elementCondition:"EXISTS",contentOperation:"EXISTS"},visible:{positiveAliasSuffix:"Visible",negativeAliasSuffix:"NotVisible",elementCondition:"VISIBLE"},enabled:{positiveAliasSuffix:"Enabled",negativeAliasSuffix:"NotEnabled",elementCondition:"ENABLED"},editable:{positiveAliasSuffix:"Editable",negativeAliasSuffix:"NotEditable",elementCondition:"EDITABLE"},focused:{positiveAliasSuffix:"Focused",negativeAliasSuffix:"NotFocused",elementCondition:"FOCUSED"},contains:{positiveAliasSuffix:"Contains",negativeAliasSuffix:"DoesNotContain",contentOperation:"CONTAINS"},equals:{positiveAliasSuffix:"Equals",negativeAliasSuffix:"DoesNotEqual",contentOperation:"EQUALS"},starts_with:{positiveAliasSuffix:"StartsWith",negativeAliasSuffix:"DoesNotStartWith",contentOperation:"STARTS_WITH"}},y1={ELEMENT_EXISTENCE:"element",ELEMENT_CONTENT:"content",ELEMENT_ATTRIBUTE:"attribute",ELEMENT_NAME:"tag_name",ELEMENT_STYLE:"style"};function h1(e){return {alias:mN(e),subject:e.subject,condition:e.condition,negated:e.negated,assertionType:pN[e.subject].assertionType,requiresName:pN[e.subject].requiresName,requiresValue:e.subject!=="element"&&e.condition!=="exists"}}function mN(e){let t=pN[e.subject],n=f1[e.condition];if(!S1(e.subject,e.condition))throw new Error(`Unsupported element check alias for subject '${e.subject}' and condition '${e.condition}'.`);let o=e.negated?n.negativeAliasSuffix:n.positiveAliasSuffix;return `checkElement${t.aliasPrefix}${o}`}function S1(e,t){let n=f1[t],o=n.elementCondition,r=n.contentOperation;return e==="element"?o!==void 0:r!==void 0}var PSe=_Se.options.flatMap(e=>hv.options.flatMap(t=>S1(e,t)?[h1({subject:e,condition:t,negated:false}),h1({subject:e,condition:t,negated:true})]:[])),b1=new Map(PSe.map(e=>[e.alias,e]));var OSe=z.enum(ql),MSe=z.enum(Rs);function Hi(e){return b1.get(e)}function A1(e){let t=y1[e.type],n=e.type==="ELEMENT_EXISTENCE"?e.condition:e.operation;return mN({subject:t,condition:NSe(n),negated:e.negated})}function E1(e){return OSe.parse(e.toUpperCase())}function Ub(e){return MSe.parse(e.toUpperCase())}function NSe(e){return hv.parse(e.toLowerCase())}var Ze={saveAs:z.string().optional(),retries:z.number().optional(),skipped:z.boolean().optional(),comment:z.string().optional()};z.object(Ze);var Hb=Object.keys(Ze);function qe(e){return z.union([z.strictObject({[e.key]:e.simplified}),z.strictObject({[e.key]:e.detailed})])}function Kn(e){return z.strictObject({[e.key]:e.detailed})}var C1='Coordinates must be "x, y" pixel values, e.g. "100, 200"',Vg=z.union([Vl,z.string().regex(/^\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*$/,C1)],{error:C1});z.union([z.string(),Vl]);var Hs={css:z.string().optional(),coords:Vg.optional(),x:z.union([z.number(),z.string()]).optional(),y:z.union([z.number(),z.string()]).optional()},gN={on:z.string().optional(),...Hs},Gs={...Ze,useSelector:z.boolean().optional(),force:z.boolean().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional()},Gb={...Gs,offset:Vg.optional()};function Gi({schema:e,descriptionKey:t,required:n=true}){return e.superRefine((o,r)=>{let s=[t in o?Object.entries(o).find(([a])=>a===t)?.[1]:void 0,"css"in o?o.css:void 0,"coords"in o?o.coords:void 0,"x"in o||"y"in o?true:void 0].filter(a=>a!==void 0).length;n&&s!==1&&r.addIssue({code:"custom",message:`Use exactly one target: ${t}, css, coords, or x/y.`}),!n&&s>1&&r.addIssue({code:"custom",message:`Use at most one target: ${t}, css, coords, or x/y.`}),("x"in o||"y"in o)&&(!("x"in o)||o.x===void 0||!("y"in o)||o.y===void 0)&&r.addIssue({code:"custom",message:"x and y must be provided together."});})}var LSe=Gi({descriptionKey:"on",schema:z.strictObject({...gN,...Gb,times:z.int().min(1).optional(),rightClick:z.boolean().optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),kSe=Gi({descriptionKey:"on",schema:z.strictObject({...gN,...Gb,rightClick:z.boolean().optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),DSe=Gi({descriptionKey:"on",schema:z.strictObject({...gN,...Gb,times:z.int().min(1).optional(),waitForDownload:z.boolean().optional(),delay:z.number().optional(),downloadTimeout:z.number().optional()})}),v1=qe({key:"click",simplified:z.string(),detailed:LSe}),R1=qe({key:"doubleClick",simplified:z.string(),detailed:kSe}),w1=qe({key:"rightClick",simplified:z.string(),detailed:DSe}),FSe=Gi({descriptionKey:"into",required:false,schema:z.strictObject({text:z.string(),into:z.string().optional(),...Hs,...Gb,pressEnter:z.boolean().optional(),clear:z.union([z.literal("inputs"),z.literal("always"),z.literal("never"),z.boolean()]).optional(),delay:z.number().optional()})}),I1=qe({key:"type",simplified:z.string(),detailed:FSe}),x1=Kn({key:"select",detailed:Gi({descriptionKey:"from",schema:z.strictObject({from:z.string().optional(),...Hs,label:z.string().optional(),value:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),...Gs})}).superRefine((e,t)=>{[e.label,e.value,e.index].filter(o=>o!==void 0).length!==1&&t.addIssue({code:"custom",message:"select requires exactly one of label, value, or index"});})}),_1=qe({key:"hover",simplified:z.string(),detailed:Gi({descriptionKey:"on",schema:z.strictObject({on:z.string().optional(),...Hs,...Gb})})}),P1=Kn({key:"blur",detailed:Gi({descriptionKey:"on",required:false,schema:z.strictObject({on:z.string().optional(),...Hs,...Gs})})}),O1=qe({key:"focus",simplified:z.string(),detailed:Gi({descriptionKey:"on",schema:z.strictObject({on:z.string().optional(),...Hs,...Gs})})}),M1=Kn({key:"dragAndDrop",detailed:z.strictObject({from:z.string().optional(),to:z.string().optional(),fromCss:z.string().optional(),toCss:z.string().optional(),fromCoords:Vg.optional(),toCoords:Vg.optional(),fromX:z.union([z.number(),z.string()]).optional(),fromY:z.union([z.number(),z.string()]).optional(),toX:z.union([z.number(),z.string()]).optional(),toY:z.union([z.number(),z.string()]).optional(),steps:z.number().optional(),hover:z.number().optional(),...Gs}).superRefine((e,t)=>{let n=[e.from,e.fromCss,e.fromCoords,e.fromX!==void 0||e.fromY!==void 0?true:void 0].filter(r=>r!==void 0).length,o=[e.to,e.toCss,e.toCoords,e.toX!==void 0||e.toY!==void 0?true:void 0].filter(r=>r!==void 0).length;n!==1&&t.addIssue({code:"custom",message:"Use exactly one from target."}),o!==1&&t.addIssue({code:"custom",message:"Use exactly one to target."}),(e.fromX!==void 0||e.fromY!==void 0)&&(e.fromX===void 0||e.fromY===void 0)&&t.addIssue({code:"custom",message:"fromX and fromY must be provided together."}),(e.toX!==void 0||e.toY!==void 0)&&(e.toX===void 0||e.toY===void 0)&&t.addIssue({code:"custom",message:"toX and toY must be provided together."});})}),N1=z.union([z.strictObject({mouseDrag:Vg}),z.strictObject({mouseDrag:Gi({descriptionKey:"from",required:false,schema:z.strictObject({from:z.string().optional(),...Hs,delta:Vg,steps:z.number().optional(),...Gs})})})]),L1=qe({key:"press",simplified:z.string(),detailed:z.strictObject({key:z.string(),repeat:z.number().optional(),delay:z.number().optional(),convertMeta:z.boolean().optional(),...Ze})}),k1=qe({key:"keyDown",simplified:z.string(),detailed:z.strictObject({key:z.string(),convertMeta:z.boolean().optional(),...Ze})}),D1=qe({key:"keyUp",simplified:z.string(),detailed:z.strictObject({key:z.string(),convertMeta:z.boolean().optional(),...Ze})}),F1=qe({key:"navigate",simplified:z.string(),detailed:z.strictObject({url:z.string(),timeout:z.number().optional(),...Ze})}),B1=qe({key:"newTab",simplified:z.string(),detailed:z.strictObject({url:z.string(),timeout:z.number().optional(),...Ze})}),U1=qe({key:"switchTab",simplified:z.union([z.number(),z.string()]),detailed:z.strictObject({substring:z.string().optional(),regex:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{[e.substring,e.regex,e.index].filter(o=>o!==void 0).length!==1&&t.addIssue({code:"custom",message:"switchTab requires exactly one of substring, regex, or index"});})}),H1=Kn({key:"closeTab",detailed:z.strictObject({substring:z.string().optional(),regex:z.string().optional(),index:z.union([z.string(),z.number()]).optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{[e.substring,e.regex,e.index].filter(o=>o!==void 0).length<=1||t.addIssue({code:"custom",message:"closeTab accepts at most one of substring, regex, or index"});})}),G1=Kn({key:"goBack",detailed:z.strictObject(Ze)}),j1=Kn({key:"goForward",detailed:z.strictObject(Ze)}),$1=Kn({key:"refresh",detailed:z.strictObject({timeout:z.number().optional(),...Ze})}),gv=z.enum(["goBack","goForward","refresh","paste","authSave","offline","online","blur","visualDiff","captcha","closeTab"]),V1=qe({key:"scrollUp",simplified:z.number().nonnegative(),detailed:Gi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),z1=qe({key:"scrollDown",simplified:z.number().nonnegative(),detailed:Gi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),W1=qe({key:"scrollLeft",simplified:z.number().nonnegative(),detailed:Gi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),q1=qe({key:"scrollRight",simplified:z.number().nonnegative(),detailed:Gi({descriptionKey:"in",required:false,schema:z.strictObject({pixels:z.number().nonnegative().optional(),in:z.string().optional(),...Hs,...Gs})})}),K1=qe({key:"wait",simplified:z.number(),detailed:z.strictObject({ms:z.number(),...Ze})}),BSe=qe({key:"assert",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),source:z.string().optional(),...Ze})}),USe=qe({key:"assertVisually",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),source:z.string().optional(),...Ze})}),fv=BSe,yv=USe,Y1=qe({key:"checkPageContains",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),iframe:z.string().optional(),...Ze})}),J1=qe({key:"checkPageDoesNotContain",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),iframe:z.string().optional(),...Ze})}),fN=z.union([Y1,J1]),HSe=z.record(z.string(),z.unknown().optional()),Sv=HSe.superRefine((e,t)=>{let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}let r=Hi(o);if(r===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}if(typeof e[r.alias]=="string")return;let i=Gi({descriptionKey:"element",schema:z.looseObject({element:z.string().optional(),...Hs,...Gs,timeout:z.number().optional(),name:z.string().optional(),value:z.string().optional()})}).safeParse(e[r.alias]);if(!i.success){t.addIssue({code:"custom",message:`element check alias '${r.alias}' must be a string target or detailed object`,path:[r.alias]});return}r.requiresName&&i.data.name===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a name`,path:[r.alias,"name"]}),r.requiresValue&&i.data.value===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a value`,path:[r.alias,"value"]});}),X1=qe({key:"extract",simplified:z.string(),detailed:z.strictObject({goal:z.string(),schema:ju.optional(),DANGEROUS_FORCE_DYNAMIC:z.boolean().optional(),iframe:z.string().optional(),...Ze})}),Q1=qe({key:"cookie",simplified:z.string(),detailed:z.strictObject({value:z.string(),...Ze})}),Z1=Kn({key:"localStorage",detailed:z.strictObject({key:z.string(),value:z.string(),...Ze})}),eq=qe({key:"request",simplified:z.string(),detailed:z.strictObject({url:z.string(),method:ud.optional(),headers:z.record(z.string(),z.string()).optional(),params:z.record(z.string(),z.string()).optional(),body:ju.optional(),contentType:z.enum(Kl).optional(),timeout:z.number().optional(),...Ze})}),tq=Kn({key:"graphqlRequest",detailed:z.strictObject({url:z.string(),query:z.string(),variables:ju.optional(),headers:z.record(z.string(),z.string()).optional(),timeout:z.number().optional(),...Ze})}),bv=qe({key:"javascript",simplified:z.string(),detailed:z.strictObject({code:z.string(),environment:z.enum(["node","browser","NODE","BROWSER"]).optional(),fragment:z.boolean().optional(),timeout:z.number().optional(),...Ze})}),zg={substring:z.string().optional(),glob:z.string().optional(),regex:z.string().optional(),domain:z.string().optional()};function GSe(e){return [e.substring,e.glob,e.regex,e.domain].filter(t=>t!==void 0).length}function Wg(e){let t=GSe(e.payload);if(e.required&&t!==1||!e.required&&t>1){e.ctx.addIssue({code:"custom",message:e.required?"requires exactly one of substring, glob, regex, or domain":"requires at most one of substring, glob, regex, or domain"});return}!e.required&&t===0&&e.payload.method&&e.ctx.addIssue({code:"custom",message:"method requires a URL matcher"});}var nq=Kn({key:"header",detailed:z.strictObject({name:z.string(),value:z.string(),...zg,method:z.string().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:false});})}),oq=Kn({key:"mock",detailed:z.strictObject({...zg,method:z.string().optional(),responseGenerator:z.string(),fetchOriginalResponse:z.boolean().optional(),key:z.string().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),rq=qe({key:"removeRouteMock",simplified:z.string(),detailed:z.strictObject({key:z.string().optional(),...Ze})}),iq=qe({key:"waitForUrl",simplified:z.string(),detailed:z.strictObject({...zg,caseInsensitive:z.boolean().optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),sq=qe({key:"waitForUrlNotToMatch",simplified:z.string(),detailed:z.strictObject({...zg,caseInsensitive:z.boolean().optional(),timeout:z.number().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),jSe=z.union([iq,sq]),aq=qe({key:"dialog",simplified:z.enum(["ACCEPT","DISMISS"]),detailed:z.strictObject({action:z.enum(["ACCEPT","DISMISS"]),...Ze})}),lq=qe({key:"fileUpload",simplified:z.string(),detailed:z.strictObject({path:z.string(),name:z.string().optional(),...Ze})}),cq=qe({key:"copy",simplified:z.union([z.string(),z.boolean(),z.null()]),detailed:z.strictObject({value:z.union([z.string(),z.boolean(),z.null()]),...Ze})}),dq=Kn({key:"paste",detailed:z.strictObject(Ze)}),uq=Kn({key:"captcha",detailed:z.strictObject({...Gs})}),$Se=z.strictObject({data:z.union([z.string(),ol]),width:z.number(),height:z.number()}),pq=qe({key:"visualDiff",simplified:z.string(),detailed:Gi({descriptionKey:"on",required:false,schema:z.strictObject({on:z.string().optional(),...Hs,threshold:z.number().optional(),screenshot:$Se.optional(),...Gs})})}),mq=Kn({key:"offline",detailed:z.strictObject(Ze)}),hq=Kn({key:"online",detailed:z.strictObject(Ze)}),gq=Kn({key:"registerRequestListener",detailed:z.strictObject({...zg,key:z.string(),method:z.string().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),fq=qe({key:"awaitListener",simplified:z.string(),detailed:z.strictObject({key:z.string(),timeout:z.number().optional(),...Ze})}),yq=Kn({key:"recordRequests",detailed:z.strictObject({...zg,key:z.string(),method:z.string().optional(),...Ze}).superRefine((e,t)=>{Wg({payload:e,ctx:t,required:true});})}),Sq=qe({key:"getRecordedRequests",simplified:z.string(),detailed:z.strictObject({key:z.string(),...Ze})}),bq=qe({key:"authLoad",simplified:z.string(),detailed:z.strictObject({path:z.string(),...Ze})}),Tq=qe({key:"authSave",simplified:z.string(),detailed:z.strictObject({path:z.string().optional(),...Ze})});z.union([v1,R1,w1,U1,H1,I1,x1,_1,P1,O1,M1,N1,L1,k1,D1,F1,B1,G1,j1,$1,V1,z1,W1,q1,K1,fv,yv,fN,X1,Q1,Z1,eq,tq,bv,nq,oq,rq,jSe,aq,lq,cq,dq,uq,pq,mq,hq,gq,fq,yq,Sq,bq,Tq,Sv]);var Aq=new Map([["click",v1],["doubleClick",R1],["rightClick",w1],["switchTab",U1],["closeTab",H1],["type",I1],["select",x1],["hover",_1],["blur",P1],["focus",O1],["dragAndDrop",M1],["mouseDrag",N1],["press",L1],["keyDown",k1],["keyUp",D1],["navigate",F1],["newTab",B1],["goBack",G1],["goForward",j1],["refresh",$1],["scrollUp",V1],["scrollDown",z1],["scrollLeft",W1],["scrollRight",q1],["wait",K1],["assert",fv],["assertVisually",yv],["checkPageContains",Y1],["checkPageDoesNotContain",J1],["extract",X1],["cookie",Q1],["localStorage",Z1],["request",eq],["graphqlRequest",tq],["javascript",bv],["header",nq],["mock",oq],["removeRouteMock",rq],["waitForUrl",iq],["waitForUrlNotToMatch",sq],["dialog",aq],["fileUpload",lq],["copy",cq],["paste",dq],["captcha",uq],["visualDiff",pq],["offline",mq],["online",hq],["registerRequestListener",gq],["awaitListener",fq],["recordRequests",yq],["getRecordedRequests",Sq],["authLoad",bq],["authSave",Tq]]),Eq=Object.freeze([...Aq.keys()]),bc=z.custom().superRefine((e,t)=>{if(typeof e!="object"||e===null){t.addIssue({code:"custom",message:"Steps must be objects with exactly one action key."});return}let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"Steps must have exactly one action key."});return}let r=Aq.get(o)??(Hi(o)?Sv:void 0);if(!r){t.addIssue({code:"custom",message:`Unsupported step type '${o}'.`});return}let i=r.safeParse(e);if(!i.success){let s=VSe(i.error.issues,o);s.length>0&&Cq(t,s);}});function VSe(e,t){return zSe(e).filter(n=>!WSe(n,t))}function Cq(e,t){for(let n of t){if(n.code==="invalid_union"){Cq(e,yN(n));continue}e.addIssue({...n});}}function zSe(e){let t=[];for(let n of e){if(n.code==="invalid_union"){t.push(...yN(n));continue}t.push(n);}return t}function WSe(e,t){return e.code!=="unrecognized_keys"?false:t===void 0?e.path.length===0:e.path.length===1&&e.path[0]===t}function yN(e){let t=e.errors[0]??[],n=hN(t);for(let o of e.errors.slice(1)){let r=hN(o);r>n&&(t=o,n=r);}return t}function hN(e){return e.reduce((t,n)=>{let o=n.code==="invalid_union"?hN(yN(n)):0;return t+n.path.length+o},0)}var vq=z.strictObject({string:z.string()}),qSe=z.strictObject({javascript:z.string()}),Rq=z.union([vq,qSe]),KSe=z.union([z.strictObject({name:z.string(),required:z.boolean().optional(),default:vq.optional()}),z.strictObject({name:z.string(),required:z.boolean().optional(),defaultValue:z.string()})]),wq=KSe.array(),YSe=z.strictObject({name:z.string(),default:Rq.optional(),enum:z.array(z.string()).optional()}),Iq=YSe.array(),jb=z.union([Rq,z.string()]),xq=z.record(z.string(),jb);var JSe=z.preprocess(e=>typeof e=="number"?String(e):e,RO),Tv=z.looseObject({goal:z.string(),version:JSe.optional(),...Ze}),XSe=z.union([z.strictObject({act:z.string()}),z.strictObject({act:Tv})]),SN=z.looseObject({path:z.string(),inputs:z.record(z.string(),jb).optional(),...Ze}),QSe=z.union([z.strictObject({module:z.string()}),z.strictObject({module:SN})]),xd=z.union([fv,yv,fN,bv,Sv]),ZSe=new Set(["then",...Hb]),ebe=z.looseObject({then:z.lazy(()=>gl.array()),...Ze}).superRefine((e,t)=>{Object.entries(e).filter(([o,r])=>!ZSe.has(o)&&xd.safeParse({[o]:r}).success).length!==1&&t.addIssue({code:"custom",message:"Conditional steps require exactly one assertion condition at the top level."});}),tbe=z.strictObject({if:ebe}),nbe=new Set(["do","maxIterations",...Hb]),obe=z.looseObject({do:z.lazy(()=>gl.array()),maxIterations:z.number().int().positive().optional(),...Ze}).superRefine((e,t)=>{let n=Object.entries(e).filter(([o,r])=>!nbe.has(o)&&xd.safeParse({[o]:r}).success).length;if(n>1){t.addIssue({code:"custom",message:"While loops accept at most one condition at the top level."});return}n===0&&e.maxIterations===void 0&&t.addIssue({code:"custom",message:"While loops require a condition or a maximum number of iterations."});}),rbe=z.strictObject({while:obe}),gl=z.lazy(()=>z.union([gv,XSe,QSe,tbe,rbe,bc]));z.object({before:gl.array().optional(),steps:gl.array(),after:gl.array().optional()});var ibe=z.union([bd,z.string().refine(e=>{let t=e.match(/^\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*$/);if(!t)return false;let[,n,o]=t;return bd.safeParse({width:Number(n),height:Number(o)}).success},"Viewport must be two numeric values, e.g. 1920, 1080")]),sbe=Ns.omit({viewport:true}).extend({viewport:ibe.optional()}),bN=z.object({id:wo,version:z.string().optional(),url:hC.optional(),description:z.string().optional(),retries:z.number().optional(),defaultEnv:z.string().optional(),parameters:wq.optional(),outputs:BC.optional(),disabled:z.boolean().optional(),labels:z.array(z.string()).optional()}).extend(sbe.shape),Vu=z.looseObject({fileType:z.literal(ke.TEST_V2)}).extend(bN.shape).extend({before:gl.array().optional(),steps:gl.array(),after:gl.array().optional()});var abe=z.array(z.string()),lbe=z.union([z.string(),z.record(z.string(),z.unknown().optional())]),Av=Qn.omit({moduleId:true,name:true,parameters:true,defaultParameters:true,parameterEnums:true}).extend({id:wo,version:z.string().optional(),name:z.string().optional(),parameters:z.union([Iq,abe]).optional(),defaultParameters:z.record(z.string(),z.string()).optional(),parameterEnums:z.record(z.string(),z.array(z.string())).optional()}),Ev=z.looseObject(Av.extend({fileType:z.literal(ke.MODULE_V2),steps:lbe.array().optional()}).shape).superRefine(Pq),Cv=z.looseObject(Av.extend({fileType:z.literal(ke.MODULE_V2),steps:gl.array().optional()}).shape).superRefine(Pq);function _q(e){return e.steps??[]}function Pq(e,t){"main"in e&&t.addIssue({code:"custom",message:"v2 modules must use steps, not main",path:["main"]});}var TN=(n=>(n.TEST="TEST",n.MODULE="MODULE",n))(TN||{}),cbe=z.enum(TN),Oq=z.object({orgId:z.string(),entityType:cbe,entityId:z.string()}),AN=Oq.extend({entityType:z.literal("TEST"),stepLists:il}),EN=Oq.extend({entityType:z.literal("MODULE"),steps:Lt.array()});z.discriminatedUnion("entityType",[AN,EN]);var Mq=(o=>(o.WEB="web",o.ANDROID="android",o.IOS="ios",o))(Mq||{}),CN=z.nativeEnum(Mq);var Nq=z.object({entity_type:z.string(),value:z.string(),schema_version:z.string().optional()}),Lq=wS(Nq),kq=Nq.extend({cache_key:z.string()});function $b({entityType:e,entityId:t}){return `${e}:${t}`}var Pm=z.string();var Dq='Coordinates must be "x, y" pixel values, e.g. "100, 200"',Hq=z.union([Vl,z.string().regex(/^\s*-?\d+(?:\.\d+)?\s*,\s*-?\d+(?:\.\d+)?\s*$/,Dq)],{error:Dq}),Fq='Percent must be a number or a percent string, e.g. 90 or "90%"',Gq=z.union([z.number(),z.string().regex(/^-?\d+(?:\.\d+)?%$/,Fq)],{error:Fq}).transform(e=>typeof e=="number"?e:Number(e.slice(0,-1))).pipe(z.number().min(0,{message:"Percent must be >= 0"}).max(100,{message:"Percent must be <= 100"})),dbe=z.strictObject({x:z.number(),y:z.number(),delta:z.number()}),jq=z.union([z.string(),dbe]),Pn={...Ze,DANGEROUS_FORCE_DYNAMIC:z.boolean().optional()},ube=["home","power","back","app_switcher","search","volume_up","volume_down","volume_mute"],pbe=["enter","backspace","close_keyboard"],Bq=["airplane_mode","data","wifi","location"],Uq=["portrait","landscape"],mbe=z.strictObject({on:Pm.optional(),longPress:z.boolean().optional(),longPressDuration:z.number().optional(),iterations:z.number().optional(),tapDelay:z.number().optional(),offset:Hq.optional(),...Pn}),$q=qe({key:"tap",simplified:Pm,detailed:mbe}),hbe=z.strictObject({text:z.string(),into:Pm.optional(),clearContent:z.boolean().optional(),forceClearContent:z.boolean().optional(),delay:z.number().optional(),replaceStrategy:z.nativeEnum(Tb).optional(),keyPressDelay:z.number().optional(),...Pn}),Vq=qe({key:"type",simplified:z.string(),detailed:hbe}),zq=z.enum(ube),gbe=z.strictObject({key:zq,longPress:z.boolean().optional(),...Pn}),Wq=qe({key:"press",simplified:zq,detailed:gbe}),qq=z.enum(pbe),fbe=z.strictObject({key:qq,repeat:z.number().optional(),delay:z.number().optional(),keyPressDelay:z.number().optional(),...Pn}),Kq=qe({key:"pressKey",simplified:qq,detailed:fbe}),ybe=z.strictObject({package:z.string(),activity:z.string().optional(),intentExtras:z.string().optional(),...Pn}),Yq=qe({key:"openApp",simplified:z.string(),detailed:ybe}),Jq=Kn({key:"killApp",detailed:z.strictObject(Pn)}),Xq=Kn({key:"openNotifications",detailed:z.strictObject(Pn)}),Qq=z.enum(["up","down","left","right"]),Sbe=z.strictObject({direction:Qq,in:jq.optional(),viewportPercent:Gq.optional(),duration:z.number().optional(),offset:Hq.optional(),...Pn}),Zq=qe({key:"swipe",simplified:Qq,detailed:Sbe}),bbe=z.enum(["up","down"]),Tbe=z.strictObject({on:Pm,direction:bbe.optional(),in:jq.optional(),scrollStepPercent:Gq.optional(),maxScrollAttempts:z.number().optional(),...Pn}),e2=qe({key:"scrollTo",simplified:z.string(),detailed:Tbe}),vN=qe({key:"assert",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),...Pn})}),RN=qe({key:"assertVisually",simplified:z.string(),detailed:z.strictObject({that:z.string(),timeout:z.number().optional(),...Pn})}),t2=qe({key:"extract",simplified:z.string(),detailed:z.strictObject({goal:z.string(),schema:ju.optional(),...Pn})}),n2=qe({key:"checkScreenContains",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),...Pn})}),o2=qe({key:"checkScreenDoesNotContain",simplified:z.string(),detailed:z.strictObject({text:z.string(),timeout:z.number().optional(),...Pn})}),r2=z.union([n2,o2]),Abe=z.record(z.string(),z.unknown().optional()),wN=Abe.superRefine((e,t)=>{let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}let r=Hi(o);if(r===void 0){t.addIssue({code:"custom",message:"element checks require exactly one checkElement... key"});return}if(typeof e[r.alias]=="string")return;let i=z.looseObject({on:Pm.optional(),timeout:z.number().optional(),name:z.string().optional(),value:z.string().optional(),...Pn}).safeParse(e[r.alias]);if(!i.success){t.addIssue({code:"custom",message:`element check alias '${r.alias}' must be a string target or detailed object`,path:[r.alias]});return}i.data.on===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a target via 'on'`,path:[r.alias,"on"]}),r.requiresName&&i.data.name===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a name`,path:[r.alias,"name"]}),r.requiresValue&&i.data.value===void 0&&t.addIssue({code:"custom",message:`element check alias '${r.alias}' requires a value`,path:[r.alias,"value"]});}),Ebe=z.strictObject({from:Pm,to:Pm,hoverDuration:z.number().optional(),dragDuration:z.number().optional(),...Pn}),i2=Kn({key:"dragAndDrop",detailed:Ebe}),IN=qe({key:"javascript",simplified:z.string(),detailed:z.strictObject({code:z.string(),timeout:z.number().optional(),...Pn})}),s2=qe({key:"request",simplified:z.string(),detailed:z.strictObject({url:z.string(),method:ud.optional(),headers:z.record(z.string(),z.string()).optional(),params:z.record(z.string(),z.string()).optional(),body:z.string().optional(),bodyType:z.nativeEnum(Kl).optional(),timeout:z.number().optional(),...Pn})}),a2=qe({key:"wait",simplified:z.number(),detailed:z.strictObject({ms:z.number(),...Pn})}),l2=qe({key:"visualDiff",simplified:z.string(),detailed:z.strictObject({path:z.string(),threshold:z.number().min(0).max(1).optional(),...Pn})}),c2=Kn({key:"addFile",detailed:z.strictObject({path:z.string(),location:z.string(),...Pn})}),d2=qe({key:"installApp",simplified:z.string(),detailed:z.strictObject({path:z.string(),...Pn})}),u2=qe({key:"uninstallApp",simplified:z.string(),detailed:z.strictObject({package:z.string(),...Pn})}),p2=qe({key:"toggleSettings",simplified:z.enum(Bq),detailed:z.strictObject({setting:z.enum(Bq),...Pn})}),m2=qe({key:"rotate",simplified:z.enum(Uq),detailed:z.strictObject({orientation:z.enum(Uq),...Pn})}),h2=qe({key:"adb",simplified:z.string(),detailed:z.strictObject({command:z.string(),args:z.string().optional(),...Pn})}),g2=Kn({key:"appium",detailed:z.strictObject({script:z.string(),args:z.string().optional(),...Pn})}),f2=Kn({key:"debugState",detailed:z.strictObject(Pn)}),y2=z.enum(["killApp","openNotifications","debugState"]);z.union([$q,Vq,Wq,Kq,Yq,Jq,Xq,Zq,e2,vN,RN,t2,r2,i2,IN,s2,a2,l2,c2,d2,u2,p2,m2,h2,g2,f2,wN]);var S2=new Map([["tap",$q],["type",Vq],["press",Wq],["pressKey",Kq],["openApp",Yq],["killApp",Jq],["openNotifications",Xq],["swipe",Zq],["scrollTo",e2],["assert",vN],["assertVisually",RN],["extract",t2],["checkScreenContains",n2],["checkScreenDoesNotContain",o2],["dragAndDrop",i2],["javascript",IN],["request",s2],["wait",a2],["visualDiff",l2],["addFile",c2],["installApp",d2],["uninstallApp",u2],["toggleSettings",p2],["rotate",m2],["adb",h2],["appium",g2],["debugState",f2]]);Object.freeze([...S2.keys()]);var b2=z.custom().superRefine((e,t)=>{if(typeof e!="object"||e===null){t.addIssue({code:"custom",message:"v2 mobile commands must be objects with exactly one action key."});return}let n=Object.keys(e),o=n[0];if(n.length!==1||o===void 0){t.addIssue({code:"custom",message:"v2 mobile commands must have exactly one action key."});return}let r=S2.get(o)??(Hi(o)?wN:void 0);if(!r){t.addIssue({code:"custom",message:`Unsupported v2 mobile command '${o}'.`});return}let i=r.safeParse(e);if(!i.success)for(let s of i.error.issues)t.addIssue({...s});}),T2=z.union([vN,RN,r2,IN,wN]);var Cbe=z.preprocess(e=>typeof e=="number"?String(e):e,FM),vbe=z.looseObject({goal:z.string(),version:Cbe.optional(),precondition:z.string().optional(),postcondition:z.string().optional(),...Ze}),Rbe=z.union([z.strictObject({act:z.string()}),z.strictObject({act:vbe})]),wbe=z.looseObject({path:z.string(),inputs:z.record(z.string(),jb).optional(),...Ze}),Ibe=z.union([z.strictObject({module:z.string()}),z.strictObject({module:wbe})]),xbe=new Set(["then",...Hb]),_be=z.looseObject({then:z.lazy(()=>Tc.array()),...Ze}).superRefine((e,t)=>{if("else"in e){t.addIssue({code:"custom",message:"v2 mobile conditionals do not support 'else'. Use a separate step instead.",path:["else"]});return}Object.entries(e).filter(([o,r])=>!xbe.has(o)&&T2.safeParse({[o]:r}).success).length!==1&&t.addIssue({code:"custom",message:"v2 mobile conditional steps require exactly one assertion condition at the top level."});}),Pbe=z.strictObject({if:_be}),Tc=z.lazy(()=>z.union([y2,Rbe,Ibe,Pbe,b2]));z.object({before:Tc.array().optional(),steps:Tc.array(),after:Tc.array().optional()});var xN=["android","ios"],Obe=z.literal("android"),Mbe=z.literal("ios");z.enum(xN);function vv(e){if(typeof e!="object"||e===null)return e;let t=e;if(typeof t.platform!="string")return e;let n=t.platform.toLowerCase();return n===t.platform?e:{...t,platform:n}}var A2=Hg.omit({schemaVersion:true,settings:true,platform:true}).extend({version:z.string().optional(),platform:Obe,...Ib.shape}),E2=Gg.omit({schemaVersion:true,settings:true,platform:true}).extend({version:z.string().optional(),platform:Mbe,...Ib.shape}),Nbe=z.discriminatedUnion("platform",[A2,E2]),C2=z.preprocess(vv,Nbe),v2={before:Tc.array().optional(),steps:Tc.array(),after:Tc.array().optional()},R2=z.looseObject({fileType:z.literal(ke.MOBILE_TEST_V2)}).extend(A2.shape).extend(v2);z.preprocess(vv,R2);var w2=z.looseObject({fileType:z.literal(ke.MOBILE_TEST_V2)}).extend(E2.shape).extend(v2);z.preprocess(vv,w2);var Lbe=z.discriminatedUnion("platform",[R2,w2]);z.preprocess(vv,Lbe);var kbe=z.preprocess(e=>typeof e=="string"?e.toLowerCase():e,z.enum(xN).optional().default("android")),Rv=ov.omit({moduleId:true,name:true,schemaVersion:true,platform:true}).extend({id:wo,name:z.string().optional(),version:z.string().optional(),platform:kbe});z.looseObject(Rv.extend({fileType:z.literal(ke.MOBILE_MODULE_V2),steps:z.array(z.record(z.string(),z.unknown().optional())).optional()}).shape);z.looseObject(Rv.extend({fileType:z.literal(ke.MOBILE_MODULE_V2),steps:Tc.array().optional()}).shape);var wv="x-momentic-cli-version",x2="x-momentic-client-mode",Iv="x-momentic-runner",_2="x-momentic-cli-type",P2="x-momentic-logger-tags",Dbe="x-momentic-main-branch-name",Fbe="x-momentic-branch-name",Bbe="x-momentic-commit-timestamp",Ube="x-momentic-last-commit-on-main",Hbe="x-momentic-last-commit-on-main-timestamp",Gbe="x-momentic-merged-branch-name",O2="x-momentic-session-id",M2="x-momentic-parent-trace-id";O.object({error:O.boolean(),reason:O.string(),message:O.string()});mr.merge(gM);var N2=XE;mr.merge(gM);mr.merge(MV).extend({useConsensus:O.boolean().optional(),attemptNumber:O.number().optional()});var _N=QG;mr.merge(NV);var L2=T$;mr.merge(xV);var k2=bC;mr.merge(WG);mr.merge(_V);var D2=y$;mr.merge(PV);mr.merge(OV);mr.merge(FV);mr.merge(BV);O.object({testPaths:O.string().array().describe("can be either hyphenated, lowercase test names or UUIDs"),env:O.string().optional(),all:O.boolean().optional(),urlOverride:O.string().optional(),customHeaders:O.record(O.string(),O.string()).optional(),testInputMatrix:O.record(O.string(),O.string()).array().optional()});var F2=O.object({queuedTests:O.unknown().optional().array(),runIds:O.guid().array(),runGroupId:O.string().optional()});O.string().array();O.union([O.object({paths:O.string().array().describe("Export specific test paths or folder paths (e.g. todo-test, auth/onboarding)"),all:O.boolean().describe("run all tests").optional()}),O.object({path:O.string().describe("deprecated; present for backcompat")})]);var jbe=O.object({tests:O.record(O.string().describe("Test name (keys correspond to entries in `tests`)"),O.string().describe("Slash-separated folder name path that the test lives in (e.g. 'Auth/Login'). Top-level entities are omitted.")),modules:O.record(O.string().describe("Module name (keys correspond to entries in `modules`)"),O.string().describe("Slash-separated folder name path that the module lives in."))}),B2=O.object({tests:O.record(O.string().describe("Test name"),O.string().describe("Test YAML")),modules:O.record(O.string().describe("Module name"),O.string().describe("Module YAML")),folderPaths:jbe.optional().describe("Optional map from exported entity name to its slash-separated cloud folder path. Used by the CLI to recreate folder structure on disk.")}),$be=O.object({test:O.string().describe("test YAML"),modules:O.record(O.string().describe("moduleId"),O.string().describe("module YAML"))});$be.array();O.object({testId:O.string(),schemaVersion:O.string()}).merge(hd);function xv(e){let{gitMainBranch:t,gitBranchName:n,gitCommitTimestamp:o,lastCommitOnMainSha:r,lastCommitOnMainTimestamp:i}=e,s={};return t&&(s[Dbe]=encodeURIComponent(t)),n&&(s[Fbe]=encodeURIComponent(n)),o&&(s[Bbe]=o.toISOString()),r&&(s[Ube]=encodeURIComponent(r)),i&&(s[Hbe]=i.toISOString()),e.mergedGitBranchName&&(s[Gbe]=encodeURIComponent(e.mergedGitBranchName)),s}O.object({entries:O.array(Hj)});O.object({platform:CN.optional(),entries:O.array(Lq)});O.object({testId:O.string(),environment:O.string().optional(),platform:CN.optional()});O.object({testId:O.string(),key:O.string(),environment:O.string().optional()});function U2(e){return O.record(O.string(),O.unknown().optional()).transform(t=>{let n={};for(let[o,r]of Object.entries(t)){let i=e.safeParse(r);i.success&&(n[o]=i.data);}return n})}var H2=U2(Gj),G2=kq.array();function I2(e){return U2(IS(e))}var j2={ANDROID:e=>I2(sv).parse(e),IOS:e=>I2(av).parse(e)},Vbe=O.object({id:O.string(),completionType:O.string(),description:O.string().optional(),thoughts:O.string(),result:O.string(),sessionType:O.string(),timeCreated:O.string().optional(),citations:O.array(Vo).optional()}),zbe=O.object({id:O.string(),assertion:O.string().optional(),result:O.string(),thoughts:O.string(),sessionType:O.string(),timeCreated:O.string().optional(),citations:O.array(Vo).optional()});O.object({completionType:O.string(),traceIds:O.string().array()});var PN=O.union([Vbe,zbe]).array(),$2=O.object({trigger:O.nativeEnum(Ls),status:O.nativeEnum(ht),startedAt:O.coerce.date().optional(),gitCommitSha:O.string().optional(),gitCommitShaShort:O.string().optional(),gitCommitTimestamp:O.coerce.date().optional(),gitBranchName:O.string().optional(),gitOriginUrl:O.string().optional(),gitCommitMessage:O.string().optional(),gitCommitAuthorName:O.string().optional(),githubRepository:O.string().optional(),gitlabProjectPath:O.string().optional(),pipelineId:O.string().optional(),cliVersion:O.string().optional()});O.object({id:O.string()});var V2=O.object({status:O.nativeEnum(ht),updatedAt:O.coerce.date().optional(),finishedAt:O.coerce.date().optional()});O.object({summary:Am,githubRepository:O.string().optional(),gitBranchName:O.string().optional()});O.object({updates:O.object({runId:O.string(),healStatus:ob,healDetails:tb.optional()}).array()});var z2=O.object({stepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),beforeStepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),afterStepsSnapshot:O.array(O.record(O.string(),O.unknown().optional())).optional(),runGroupId:O.string().optional(),testId:O.string(),testName:O.string(),resolvedBaseUrl:O.string().optional(),environmentName:O.string().optional(),labels:O.array(O.string()).optional(),cliVersion:O.string().optional(),trigger:O.nativeEnum(Ls),schemaVersion:O.string().optional(),section:O.nativeEnum(UC).optional(),resolvedInputs:O.record(O.string(),O.string()).optional(),quarantined:O.boolean().optional().default(false),quarantinedReason:O.string().optional(),aiSettings:ga.optional()});O.object({id:O.string()});var Wbe=pM.pick({id:true,status:true,healStatus:true,healDetails:true,testName:true,testId:true,test:true,failureReason:true,failureDetails:true}),W2=Wbe.array(),q2=pM.pick({startedAt:true,finishedAt:true,updatedAt:true,results:true,beforeResults:true,afterResults:true,status:true,healStatus:true,healDetails:true,failureDetails:true,failureReason:true,failureRecoveryDetails:true,resolvedBaseUrl:true,environmentName:true,labels:true,cliVersion:true,resolvedInputs:true,attempts:true,flake:true,aiSettings:true}).partial();O.object({id:O.string()});var K2=O.object({run:is.omit({runAttempts:true}),attemptZipUrls:O.array(O.string().url().nullish())}),Y2=O.object({status:O.nativeEnum(ht),finishedAt:O.coerce.date().optional(),schemaVersion:O.string().optional().default("1.0.19"),results:O.record(O.string(),O.unknown().optional()).array().optional(),beforeResults:O.record(O.string(),O.unknown().optional()).array().optional(),afterResults:O.record(O.string(),O.unknown().optional()).array().optional()});O.object({screenshot:O.string(),contentType:O.enum(["image/jpeg","image/png"]).optional()});O.object({id:O.string(),screenshot:O.string(),contentType:O.enum(["image/jpeg","image/png"])});var J2=O.object({key:O.string()}),X2=O.object({orgId:O.string(),userId:O.string(),email:O.string().optional(),name:O.string().optional(),pylonEmailHash:O.string().optional(),selfServe:O.boolean().optional()}),Q2=O.object({blocked:O.boolean()}),Z2=O.array(k$);O.record(O.string(),O.union([O.string(),O.boolean()]));O.object({workosAccessToken:O.string().min(1),organizationId:O.string().optional(),clientName:O.string().min(1).max(80).optional()});var eK=O.object({apiKey:O.string(),apiKeyName:O.string(),organizationId:O.string(),user:O.object({id:O.string(),email:O.string().optional()}),selfServe:O.boolean().optional()}),tK=O.object({error:O.literal("multiple_organizations"),organizations:O.array(O.object({id:O.string(),name:O.string()}))}),qbe=["web","ios","android"];O.object({platforms:O.array(O.enum(qbe)),packageManager:O.enum(["npm","pnpm","yarn","bun"]),wizardVersion:O.string().min(1).max(40),cliVersions:O.object({momentic:O.string().max(40).optional(),momenticMobile:O.string().max(40).optional()}).optional(),firstRunIds:O.array(O.guid()).max(10).optional()});O.object({ok:O.literal(true)});O.object({paths:O.string().array(),env:O.string().optional(),urlOverride:O.string().optional(),customHeaders:O.record(O.string(),O.string()).optional()});var nK=O.object({suiteRunIds:O.string().array(),runGroupIds:O.string().array()});O.object({suiteRunIds:O.string().array()});CV.array();O.object({runGroupIds:O.string().array()});var ON=O.object({uploadUrl:O.string()});mr.merge(LV);mr.merge(DV);mr.merge(kV);var Kbe=O.object({testId:O.string().optional().default(""),testName:O.string().optional().default(""),suiteId:O.string().optional().default(""),suiteName:O.string().optional().default(""),isInteractive:O.boolean().optional().default(false),runner:O.nativeEnum(ss).optional(),creditsUsed:O.number().optional(),stepsExecuted:O.number().optional(),tokensUsed:O.number().optional()}),Ybe=O.object({transactionId:O.string(),timestamp:O.string(),event:O.nativeEnum(Fg),properties:Kbe});Ybe.array();var oK=p1.omit({steps:true}).extend({steps:O.array(O.record(O.string(),O.unknown().optional())).describe("unparsed ResolvedStep[]")});O.object({limit:O.number().min(1).max(10).optional(),page:O.number().min(1).optional(),start:vo.optional(),end:vo.optional(),gitBranchName:O.string().optional(),status:O.nativeEnum(ht).optional()});var rK=uV.array(),Jbe=O.object({testId:wo.optional(),gitBranchName:O.string().optional(),gitCommitSha:O.string().optional(),status:O.nativeEnum(ht).optional(),label:O.string().array().optional(),limit:O.number().min(1).max(100).optional(),page:O.number().min(1).optional(),start:vo.optional(),end:vo.optional(),quarantined:O.boolean().optional(),recovered:O.boolean().optional(),includeFailureDetails:O.boolean().optional()});Jbe.extend({orgId:O.string().optional(),testId:pr(wo),status:pr(O.nativeEnum(ht)),gitBranchName:pr(O.string()),label:pr(O.string()),testName:O.string().optional(),trigger:pr(O.nativeEnum(Ls)),executionType:pr(Lu),cliVersion:pr(O.string()),githubRepository:pr(O.string()),gitlabProjectPath:pr(O.string()),environment:pr(O.string()),directory:pr(O.string()),failureCategory:pr(O.string()),exclude:pr(O.string()),healed:O.boolean().optional()});var Xbe=is.omit({test:true}),iK=O.object({runs:Xbe.array(),page:O.number(),pageSize:O.number(),pageCount:O.number()});O.object({applied:O.boolean().optional(),appliedAt:O.coerce.date().optional()});var sK=ON.extend({id:O.string()});O.object({runGroupId:O.guid().optional(),persist:O.boolean().optional()});var aK=O.object({runGroupId:O.guid()}),lK=O.object({quarantined:O.object({testId:wo,quarantinedAt:O.coerce.date(),quarantinedBy:O.string().optional(),quarantinedReason:O.string()}).array()}),cK=O.object({gitLocalUsername:O.string().optional(),gitLocalEmail:O.string().optional(),gitLocalName:O.string().optional()});O.object({testId:wo,testName:O.string().optional(),reason:O.string()}).merge(cK);O.object({testName:O.string().optional(),reason:O.string().optional()}).merge(cK);mr.merge(Vz);mr.merge(zz);mr.merge(Wz);O.object({apkToInstall:O.object({channel:O.string(),tag:O.string().optional()}).optional(),hostname:O.string().optional(),region:ZM.optional(),osVersion:O.nativeEnum(Ug).optional(),sessionId:O.string().optional(),playwrightVersion:nW.optional()});var dK=O.object({name:O.string(),apiUrl:O.string(),webRtcUrl:O.string(),adbUrl:O.string(),token:O.string(),apkDownloadUrl:O.string().optional(),playwrightServerUrl:O.string().optional(),region:O.string().optional(),resolvedTag:O.string().optional()});O.object({appToInstall:O.object({channel:O.string(),tag:O.string().optional()}).optional(),hostname:O.string().optional(),region:ZM.optional(),osVersion:O.nativeEnum(lv).optional(),sessionId:O.string().optional(),installAppOnClient:O.boolean().optional()});var uK=O.object({id:O.string(),apiUrl:O.string(),webRtcUrl:O.string(),wdaUrl:O.string(),token:O.string(),appDownloadUrl:O.string().optional(),appMd5:O.string().optional(),region:O.string().optional(),resolvedTag:O.string().optional()});O.object({channel:O.string().trim().min(1,"channel must be a non-empty string"),tag:O.string().trim().min(1,"tag must be a non-empty string"),md5:O.string()});var pK=O.object({id:O.string(),uploadUrl:O.string().optional(),downloadUrl:O.string(),md5:O.string().optional()}),Qbe=O.object({channel:O.string(),tag:O.string(),md5:O.string(),platform:O.nativeEnum(cl).default("ANDROID"),createdAt:O.number().describe("Unix timestamp in milliseconds")}),mK=O.object({assets:O.array(Qbe)}),hK=O.object({downloadUrl:O.string()}),MN=(n=>(n.PLAYWRIGHT="PLAYWRIGHT",n.CDP="CDP",n))(MN||{}),Zbe=O.nativeEnum(MN);O.object({runId:O.guid().optional(),attemptedProviders:O.array(dN).optional()});var gK=O.object({wsEndpoint:O.string(),accessToken:O.string().optional(),endpointType:Zbe.optional(),provider:dN.optional()});z.object({repositoriesIndexed:z.boolean(),indexingInProgress:z.boolean(),indexesOutdated:z.boolean()});var fK=(s=>(s.Queued="queued",s.InProgress="in_progress",s.Completed="completed",s.Waiting="waiting",s.Requested="requested",s.Pending="pending",s))(fK||{}),yK=(a=>(a.Success="success",a.Failure="failure",a.Neutral="neutral",a.Cancelled="cancelled",a.Skipped="skipped",a.TimedOut="timed_out",a.ActionRequired="action_required",a))(yK||{});z.object({name:z.string(),status:z.enum(fK),conclusion:z.enum(yK).nullable()});var Vb=z.object({sha:z.string(),message:z.string(),author:z.object({name:z.string().optional(),email:z.string().optional(),date:z.coerce.date().optional()}),committer:z.object({name:z.string().optional(),email:z.string().optional(),date:z.coerce.date().optional()})}),NN=z.object({mergedBranch:z.string().optional()});var SK=z.object({orgId:z.string(),cacheKeys:z.string().array()});z.object({keyParams:SK,clientMetadata:z.string(),lockAcquisitionTimeoutMs:z.number().optional()});var bK=z.object({acquired:z.boolean(),acquiredByMetadata:z.string(),keyPrefix:z.string()});z.object({keyPrefix:z.string(),result:z.string(),ttlMs:z.number()});z.union([z.object({keyPrefix:z.string()}),SK]);var eTe=z.object({remainingTtlMs:z.number(),value:z.string().nullish()});z.object({results:z.record(z.string(),eTe),activeLocks:z.string().array()});var TK=0,AK=5*60*1e3;var EK=z.object({testId:z.string().min(1),stepId:z.string().min(1),baseTestFileHash:z.string().min(1),branchName:z.string().min(1).optional(),environment:z.string().min(1).optional(),classification:mO,healDetails:dV.optional()}),tTe=EK.extend({createdAt:z.coerce.date(),updatedAt:z.coerce.date()});z.object({branchName:z.string().min(1).optional(),mainBranchName:z.string().min(1).optional(),stepId:z.string().min(1),baseTestFileHash:z.string().min(1),environment:z.string().min(1).optional()});var CK=tTe.array();z.object({entries:EK.array()});var nTe=30*$g;function vK(){return new Date(Date.now()-nTe)}function Kg(e){if(e.startsWith("https://api"))return e.replace("https://api","https://app");if(e.startsWith("http://localhost:8000"))return e.replace("http://localhost:8000","http://localhost:3000");throw new Error(`Unknown Momentic app server URL pattern: ${e}`)}var oTe=z.object({version:z.string(),json:z.record(z.string(),z.unknown().optional()),hash:z.string()}),RK=z.record(z.string(),z.unknown().optional());z.object({newSvgs:z.array(oTe),metadata:RK.optional()});var rTe=z.object({version:z.string(),json:z.record(z.string(),z.unknown().optional()).nullish(),hash:z.string(),description:z.string().nullish(),metadata:RK.nullish()}),wK=z.record(z.string().describe("icon hash"),rTe);var LN="metadata.json",kN="test.yaml",IK=".snapshot.zip",DN=to.extend(ec.shape),iTe=z.object({envName:z.string().optional(),baseUrl:z.string(),variables:z.record(z.string(),z.unknown().optional()),resolvedEnv:qS.optional()}),xK=z.object({browser:ll.optional(),ai:ga.optional(),advanced:eb.optional(),retries:z.number().optional()});z.object({momenticVersion:z.string(),schemaVersion:z.string(),createdAt:z.string(),relativeFilePath:z.string(),environment:iTe,config:xK});var _K=z.object({variables:z.record(z.string(),z.unknown().optional()),resolvedEnv:qS.optional()}),sTe=z.object({envName:z.string().optional(),baseUrl:z.string(),encryptedSecrets:z.string()}),PK=z.object({momenticVersion:z.string(),schemaVersion:z.string(),createdAt:z.string(),relativeFilePath:z.string(),environment:sTe,config:xK});function OK(e){let t;try{t=JSON.parse(e);}catch(n){return `The schema is not valid JSON. ${n}`}try{validator(t);}catch(n){return `The schema is not a valid JSON schema. ${n}`}}var MK=e=>{e.extraHeaders&&(e.extraHeaders=Object.fromEntries(Object.entries(e.extraHeaders).filter(([t,n])=>t.trim()&&n.trim())));};var _v=class{async resolveStepCacheEntries(){}async saveStepCacheEntries(){}async saveSnapshotCacheEntries(){}async deleteStepCacheEntry(){}};function lTe(e){return e.map(t=>({...t,environment:void 0}))}function FN(e,t){return t?e:lTe(e)}var UN="browser-crash-dump.zip",BN=class{loggerBindings;attachBeforeScreenshot(){}attachAfterScreenshot(){}attachBeforeHtmlSnapshot(){}attachAfterHtmlSnapshot(){}recordTargetAutoHeal(){}storeTraceAsset(){}async finish(){}async startSubSteps(){return new zb}},zb=class{async getScreenshot(){}async getHtmlSnapshot(){}async startStep(){return new BN}flushResults(t){}};var ct="metadata.json",Wr="assets",oo="runs",cTe=z.object({step:tn,status:z.enum(Nt),startedAt:z.coerce.date(),finishedAt:z.coerce.date().optional(),healMetadata:z.object({healType:z.enum(zS).or(z.literal("AI")),healedAt:z.coerce.date()}).optional(),beforeSnapshotId:z.guid().optional(),afterSnapshotId:z.guid().optional(),message:z.string().optional()}),dTe=cTe.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});dTe.extend({step:z.unknown().optional()});var HN=z.object({avdId:z.string().optional(),channel:z.string().optional(),tag:z.string().optional(),region:z.string().optional(),osVersion:oW.optional()}),LK="1.0.0",kK=Y2.extend({id:z.guid().optional(),startedAt:z.coerce.date(),runAttemptSchemaVersion:z.string().optional(),schemaVersion:z.string().optional().default("1.0.19"),results:z.record(z.string(),z.unknown().optional()).array().optional(),beforeResults:z.record(z.string(),z.unknown().optional()).array().optional(),afterResults:z.record(z.string(),z.unknown().optional()).array().optional(),assetDetails:HN.optional(),viewport:bd.optional(),activeVideos:z.array(z.object({videoName:z.string(),timestamp:z.coerce.date()})).optional()}),Wb=kK.extend({assetDetails:HN.optional(),finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});kK.extend(tM.shape);var DK=Wb.extend(tM.shape),uTe=z.object({results:z.array(Ds),beforeResults:z.array(Ds).optional(),afterResults:z.array(Ds).optional()});Wb.extend(uTe.shape);var pTe=z.object({results:z.array(Fs),beforeResults:z.array(Fs).optional(),afterResults:z.array(Fs).optional()});Wb.extend(pTe.shape);var FK=q2.merge(z2).extend({executionType:Lu.optional().default("WEB"),testId:wo,testDescription:z.string().optional(),directory:z.string().optional(),runGroupId:z.guid(),status:z.enum(ht),healStatus:ob,startedAt:z.coerce.date(),schemaVersion:z.string().nullish(),attempts:z.number(),failureRecoveryDetails:z.object({attempts:z.number()}).optional(),aiSettings:ga.optional(),avgCpuUsage:z.number().optional(),avgMemoryUsage:z.number().optional()}),mTe=FK.extend(HN.shape),Om=FK.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});mTe.extend({finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});var NK=z.object({mode:z.enum(["SELECTED","RUN_ALL","RUN_NONE","SHADOW"]),baseRef:z.string().nullable(),headSha:z.string(),planId:z.string().nullable(),totalCandidates:z.number().int().nonnegative(),selectedCount:z.number().int().nonnegative(),anchorSegmentIds:z.array(z.string()),userSummary:z.string(),toolCallCount:z.number().int().nonnegative(),selectedTests:z.array(LC),forcedTests:z.array(z.object({name:z.string(),testPath:z.string(),status:z.enum(["A","M","R","C","T"])})).optional().default([]),runAllReason:z.string().nullable()}),hTe=$2.merge(V2).extend({id:z.guid().optional(),startedAt:z.coerce.date(),cliVersion:z.string(),labels:z.string().array().optional().default([]),suiteName:z.string().optional(),ciProvider:z.string().optional(),gitMainBranch:z.string().optional(),ai:ga.optional(),browser:ll.optional(),aiSelect:z.union([NK.transform(e=>[e]),z.array(NK)]).optional()}),Ta=hTe.extend({healRiskSummary:Am.optional(),updatedAt:z.coerce.date().optional().transform(e=>e??new Date),finishedAt:z.coerce.date().optional().transform(e=>e??new Date)});var gTe=new Set(["AWAIT_LISTENER","REGISTER_REQUEST_LISTENER","GET_RECORDED_REQUESTS","MOCK_ROUTE","REMOVE_ROUTE_MOCK","SCROLL_DOWN","SCROLL_UP","SCROLL_LEFT","SCROLL_RIGHT","VISUAL_DIFF","WAIT","SET_HEADER","OFFLINE_MODE"]),fTe=new Set(["MODULE","RESOLVED_MODULE"]);function Pv(e){return e.type!=="PRESET_ACTION"?e.type:e.command.type}function Ov(e){return fTe.has(e.type)?false:e.type!=="PRESET_ACTION"?true:!gTe.has(e.command.type)}var BK="progress.json",UK="1.0.0",yTe=z.object({runId:z.string(),testId:z.string().optional(),testName:z.string().optional(),directory:z.string().optional(),status:z.nativeEnum(ht),completedSteps:z.number(),totalSteps:z.number(),startedAt:z.coerce.date(),updatedAt:z.coerce.date()});z.object({schemaVersion:z.string(),runGroupId:z.string(),status:z.nativeEnum(ht),totalRuns:z.number(),completedRuns:z.number(),completedSteps:z.number(),totalSteps:z.number(),startedAt:z.coerce.date(),updatedAt:z.coerce.date(),runs:yTe.array()});function HK(e){try{return existsSync(e)&&statSync(e).isDirectory()}catch(t){return R.error({err:t},`Error reading path ${e} during directory existence check.`),false}}var GK="CumAaTMUcwjt05OddAmefKgshbhfRmWxzxih",Yg="https://us-west.metrics.momentic.ai",Jg="c60c6a0f-60da-41a7-a61b-07969a0aa303",Mm=!!process.env.CI||!!process.env.GITHUB_ACTIONS||!!process.env.GITHUB_RUN_ID||!!process.env.GITLAB_CI||!!process.env.CI_COMMIT_SHA||!!process.env.JENKINS_URL||!!process.env.BUILD_NUMBER||!!process.env.JENKINS_HOME||!!process.env.CIRCLECI||!!process.env.CIRCLE_BUILD_NUM||!!process.env.TRAVIS||!!process.env.TRAVIS_BUILD_NUMBER||!!process.env.BITBUCKET_BUILD_NUMBER||!!process.env.BITBUCKET_COMMIT||!!process.env.CODEBUILD_BUILD_ID||!!process.env.TF_BUILD||!!process.env.BUILD_BUILDID||!!process.env.AGENT_ID||!!process.env.BUILDER_SA_EMAIL||!!process.env.HEROKU_TEST_RUN_ID||!!process.env.CI_NODE_INDEX||!!process.env.TEAMCITY_VERSION||!!process.env.BUILD_VCS_NUMBER||!!process.env.BUILDKITE||!!process.env.BUILDKITE_BUILD_NUMBER||!!process.env.APPVEYOR||!!process.env.APPVEYOR_BUILD_NUMBER||!!process.env.DRONE||!!process.env.DRONE_BUILD_NUMBER||!!process.env.SHIPPABLE||!!process.env.BUILD_URL||!!process.env.SEMAPHORE||!!process.env.SEMAPHORE_EXECUTABLE_UUID||!!process.env.WOODPECKER||!!process.env.CI_BUILD_NUMBER||!!process.env.WERCKER_MAIN_PIPELINE_STARTED||!!process.env.BUDDY_EXECUTION_ID;var RTe=new Set(["exit","quit"]),VK=(()=>{try{return statSync("/.dockerenv"),!0}catch{return false}})();async function gr(e){return Mm||VK?true:(await R.flush(),await new Promise(n=>setTimeout(n,100)),await confirm({message:e}))}async function GN(e){let t=dirname(e);return HK(t)?existsSync(e)?gr(`File '${jK(e)}' already exists. Overwrite existing content?`):true:await gr(`Directory '${jK(t)}' doesn't exist. Create it now?`)?(mkdirSync(t,{recursive:true}),true):false}function jK(e){return e.replace(/(\s+)/g,"\\$1")}async function zK(e,t){return Mm||VK?t:(await input({message:e,default:t})).trim()||t}async function WK(){let e;try{e=(await input({message:"ask"})).trim();}catch(t){if(t instanceof Error&&t.name==="ExitPromptError"){R.info("");return}throw t}if(!RTe.has(e.toLowerCase()))return e}var Xg=new Map,KK="Log throttle exceeded",DTe=100,FTe=5e3,BTe=PTe(global.fetch,{retries:2,retryOn:function(e,t,n){return !!(t!==null||n&&n.status>=500)},retryDelay:function(e){return Math.pow(2,e)*500}}),UTe=`${Yg}/logs/json`,jN=class{constructor(t,n){this.flushIntervalMs=t;this.maxBatchSize=n;}records=[];flushTimer;push(t){if(this.records.push(t),this.records.length>=this.maxBatchSize){this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=void 0),this.flush();return}this.scheduleFlush();}scheduleFlush(){this.flushTimer||(this.flushTimer=setTimeout(()=>{this.flushTimer=void 0,this.flush();},this.flushIntervalMs));}async flush(){if(this.records.length===0)return;let t=this.records;this.records=[];try{let n=await BTe(UTe,{method:"POST",headers:{"Content-Type":"application/json","signoz-access-token":GK,"x-momentic-metrics-api-key":Jg},body:ul(t),signal:AbortSignal.timeout(5e3)});if(!n.ok)throw new Error(`Got error status (${n.statusText}) from SigNoz`)}catch{}}},$N=class e{consoleLogger;hostname;bindingAttributes;disableConsoleLogs;minLevelValue=20;logsInCurrentWindow=0;droppedLogsInWindow=false;lastWindowStart=Date.now();flushIntervalMs;maxBatchSize;buffer;constructor({bindings:t,hostname:n,disableConsoleLogs:o,flushIntervalMs:r,maxBatchSize:i,buffer:s}){this.hostname=n??_d.hostname(),this.disableConsoleLogs=o,this.bindingAttributes={...t,env:"production"},this.flushIntervalMs=r??5e3,this.maxBatchSize=i??10,this.buffer=s??new jN(this.flushIntervalMs,this.maxBatchSize);let a={base:this.bindingAttributes,errorKey:"err",level:"debug"};this.consoleLogger=qK(a);}child(t){return new e({bindings:{...this.bindingAttributes,...t},hostname:this.hostname,disableConsoleLogs:this.disableConsoleLogs,flushIntervalMs:this.flushIntervalMs,maxBatchSize:this.maxBatchSize,buffer:this.buffer})}async flush(){await this.buffer.flush(),this.disableConsoleLogs||this.consoleLogger.flush();}shouldAllowLog(t){if(t===KK)return true;let n=Date.now();return n-this.lastWindowStart>FTe&&(this.logsInCurrentWindow=0,this.droppedLogsInWindow&&this.log("error",void 0,KK),this.droppedLogsInWindow=false,this.lastWindowStart=n),this.logsInCurrentWindow<DTe?(this.logsInCurrentWindow++,true):(this.droppedLogsInWindow=true,false)}log(t,n,o,...r){try{this.logHelper(t,n,o,...r);}catch(i){this.consoleLogger.warn(`Failed to log to Signoz: ${i}`);}}logHelper(t,n,o,...r){if(ZS[t]<this.minLevelValue||!this.shouldAllowLog(o))return;typeof n=="string"&&!o&&(n={message:n}),typeof n=="object"&&n&&"err"in n&&n.err instanceof Error&&(n.err=LTe.err(n.err));let i={...this.bindingAttributes,...n&&typeof n=="object"?n:{},...r.length>0?{args:r}:{}},s={host:this.hostname,env:this.bindingAttributes.env},a=HTe();this.disableConsoleLogs||this.consoleLogger[t]({...i,...a??{}},o,...r);let l={timestamp:Math.round(Date.now()*1e6),...a??{},severity_text:t.toUpperCase(),resources:s,attributes:{},body:eV({message:o||"",...i})};this.buffer.push(l);}setApp(t){let n=this.bindingAttributes.app;this.bindingAttributes.app=t,Xg.set("app",this),Xg.delete(n);}debug(t,n,...o){this.log("debug",t,n,...o);}info(t,n,...o){this.log("info",t,n,...o);}warn(t,n,...o){this.log("warn",t,n,...o);}error(t,n,...o){this.log("error",t,n,...o);}bindings(){return this.bindingAttributes}addBinding(t,n){this.bindingAttributes[t]=n;}setMinLevel(t){typeof t=="number"?(this.minLevelValue=t,this.consoleLogger.level=tV[t]):(this.minLevelValue=ZS[t],this.consoleLogger.level=t);}enableConsoleLogs(){this.disableConsoleLogs=false;}},Qg=({app:e,hostname:t,disableConsoleLogs:n})=>(Xg.has(e)||Xg.set(e,new $N({bindings:{app:e},hostname:t,disableConsoleLogs:n})),Xg.get(e));function HTe(){let e=trace.getSpan(context.active());if(!e)return;let t=e.spanContext();if(isSpanContextValid(t))return {trace_id:t.traceId,span_id:t.spanId,trace_flags:t.traceFlags}}async function Mv(){await Promise.all([...Xg.values()].map(e=>e.flush()));}var zu=class extends Error{constructor(t){super(t),this.name="TimeoutError";}};var YK=e=>{let t=e.reason===void 0?new DOMException("This operation was aborted.","AbortError"):e.reason;return t instanceof Error?t:new DOMException(t,"AbortError")};function Ie(e,t){let{milliseconds:n,fallback:o,message:r,customTimers:i={setTimeout,clearTimeout}}=t,s;if(typeof n!="number"||Math.sign(n)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${n}\``);return new Promise((a,l)=>{let c;if(t.signal){let{signal:p}=t;if(p.aborted)return l(YK(p));c=()=>l(YK(p)),p.addEventListener("abort",c,{once:true});}let d=()=>{if(t.signal&&t.signal.removeEventListener("abort",c),o)try{a(o());}catch(p){l(p);}else {typeof e.cancel=="function"&&Promise.resolve().then(()=>e.cancel()).catch(()=>{});let p=r instanceof Error?r:new zu(r??`Promise timed out after ${n}ms`);l(p);}};n<1/0&&(s=i.setTimeout(d,n));let u=()=>{i.clearTimeout(s),t.signal&&t.signal.removeEventListener("abort",c);};Promise.resolve(e).then(p=>{u(),a(p);}).catch(p=>{u(),l(p);});})}var Nv="organization";function Lv(e){let t=new PostHog(e.writeKey,{host:e.host,...e.flushImmediately?{flushAt:1,flushInterval:0}:{}}),n=e.platform,o=(l,c,d)=>{let{type:u,...p}=l;t.capture({distinctId:c??d??randomUUID(),event:u,...d&&{groups:{[Nv]:d}},properties:{platform:n,user_id:c??void 0,org_id:d??void 0,...p,organizationId:d??void 0,...c==null&&d==null&&{$process_person_profile:false}}});},r=({orgId:l,properties:c})=>{t.groupIdentify({groupType:Nv,groupKey:l,properties:c});},i=({userId:l,properties:c})=>{Object.values(c).some(u=>u!=null&&u!=="")&&t.identify({distinctId:l,properties:c});},s=()=>t.shutdown();if(e.identity==="stashed"){let l=null;return {shutdownAnalytics:s,groupIdentifyOrg:r,setAnalyticsIdentity:d=>{l=d,e.onIdentify?.(d),i({userId:d.userId,properties:{email:d.email,...d.selfServe!==void 0?{self_serve:d.selfServe}:{}}});},captureEvent:d=>o(d,l?.userId??null,l?.orgId??null)}}return {shutdownAnalytics:s,groupIdentifyOrg:r,identifyUser:i,captureEvent:(l,{userId:c,orgId:d})=>o(l,c,d),captureBillingEvent:(l,{userId:c,orgId:d})=>o(l,c,d)}}async function JK(e,t,n){let o,r=0,i=3,s,a;for(;r<i;)try{let l=await Ie(e.getAllFlagsAndPayloads(n??t,{personProperties:{organizationId:t},groups:{[Nv]:t}}),{milliseconds:5e3});s=l.featureFlags||{},a=l.featureFlagPayloads||{};break}catch(l){o=l,r++,await new Promise(c=>setTimeout(c,100*r));}if(s&&a)return {flags:s,payloads:a};throw o}var kv=class e extends Nb{constructor(n,o,r,i,s){super(i,s);this.client=n;this.orgId=o;this.userId=r;}static async init(n,o){let r=new PostHog("phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI",{host:"https://p.momentic.ai"}),{flags:i,payloads:s}=await JK(r,n,o);return new e(r,n,o,i,s)}async refresh(){let{flags:n,payloads:o}=await JK(this.client,this.orgId,this.userId);this.flags=n,this.payloads=o;}};var WTe=2e3,Nm=e=>Number.parseInt(e,10),zN=e=>readFileSync(e,"utf8").trim(),Zg=e=>Nm(zN(e)),XK,Dv,qb={samples:0,lowMemorySamples:0,highCpuSamples:0,highHeapSamples:0};function eY(){return {...qb}}var Bv=_d.platform(),qTe=_d.cpus().map(e=>({model:e.model,speed:e.speed})).reduce((e,t)=>(e[t.model]={speed:t.speed},e.totalCores=(e.totalCores??0)+1,e),{});function VN(e=Date.now()){let t=_d.cpus(),n={measurementTime:e,user:0,nice:0,sys:0,idle:0,irq:0,total:0};for(let o of t)n.user+=o.times.user,n.nice+=o.times.nice,n.sys+=o.times.sys,n.idle+=o.times.idle,n.irq+=o.times.irq;return n.total=n.user+n.nice+n.sys+n.idle+n.irq,n}function tY(e,t){let n={user:t.user-e.user,nice:t.nice-e.nice,sys:t.sys-e.sys,idle:t.idle-e.idle,irq:t.irq-e.irq,total:t.total-e.total};return n.total<=0?null:{measurementTime:t.measurementTime,intervalMs:t.measurementTime-e.measurementTime,user:n.user/n.total*100,nice:n.nice/n.total*100,sys:n.sys/n.total*100,idle:n.idle/n.total*100,irq:n.irq/n.total*100,total:100-n.idle/n.total*100}}function KTe(){let e=VN();return ()=>{let t=VN(),n=tY(e,t);return e=t,n}}function QK(){try{let t=readFileSync("/sys/fs/cgroup/cpu.stat","utf8").match(/^usage_usec\s+(\d+)/m);if(t?.[1])return Nm(t[1])}catch{}try{let e=Zg("/sys/fs/cgroup/cpuacct/cpuacct.usage");if(!isNaN(e))return e/1e3}catch{}return null}function YTe(){try{let t=zN("/sys/fs/cgroup/cpu.max").split(" "),n=t[0],o=t[1];return !n||!o||n==="max"?null:Nm(n)/Nm(o)}catch{}try{let e=Zg("/sys/fs/cgroup/cpu/cpu.cfs_quota_us"),t=Zg("/sys/fs/cgroup/cpu/cpu.cfs_period_us");return e===-1||isNaN(t)?null:e/t}catch{return null}}function JTe(){if(Bv!=="linux")return null;let e=QK();if(e===null)return null;let t=YTe()??_d.cpus().length,n=e,o=Date.now();return ()=>{let r=QK();if(r===null)return null;let i=Date.now(),s=i-o;if(s<=0)return null;let a=r-n,l=s*1e3,c=Math.max(0,Math.min(100,a/l/t*100));return n=r,o=i,{measurementTime:i,intervalMs:s,user:c,nice:0,sys:0,idle:Math.max(0,100-c),irq:0,total:c}}}function XTe(){let e=process.cpuUsage(),t=process.hrtime.bigint();return ()=>{let n=process.cpuUsage(),o=process.hrtime.bigint(),r=Number(o-t)/1e6,i=n.user-e.user,s=n.system-e.system;if(e=n,t=o,r<=0)return null;let a=Math.max(_d.cpus().length,1),l=c=>Math.max(0,c/1e3/r*100/a);return {total:l(i+s),user:l(i),sys:l(s),intervalMs:r}}}function nY({intervalMs:e=WTe,maxSamples:t=1e4,keepSamples:n=true,onSample:o}={}){let r=[],i=JTe()??KTe(),s=XTe(),a=()=>{let d=Date.now(),u=iY(),p=process.memoryUsage(),m=i(),h=s(),g={timestamp:d,system:{cpu:m,memory:{total:u.totalMemory,free:u.freeMemory,freePercentage:u.freePercentage}},process:{cpu:h,memory:{rss:p.rss,heapTotal:p.heapTotal,heapUsed:p.heapUsed,external:p.external,arrayBuffers:p.arrayBuffers}}};o?.(g),n&&(r.push(g),r.length>t&&r.shift());};a();let l=setInterval(a,e),c=d=>({samples:n?[...r]:[]});return {stop:()=>(clearInterval(l),c()),getSeries:()=>c()}}var Fv=e=>{try{let t={},n=!1,o=iY(),r=ZTe();qb.samples++,o.freePercentage<.05&&(Object.assign(t,process.memoryUsage()),n=!0,qb.lowMemorySamples++),r&&r?.total>80&&(n=!0,qb.highCpuSamples++);let i=zTe.getHeapStatistics(),s=i.used_heap_size,a=i.heap_size_limit;s/a>.9&&(n=!0,qb.highHeapSamples++),n?e.warn({memory:o,cpu:r,heapStats:i,...t},"Critical resource usage metrics detected"):e.debug({memory:o,cpu:r},"Got machine resource usage metrics");}catch{}},oY=e=>{Fv(e),setTimeout(()=>Fv(e),5e3);};function rY(e){return Fv(e),{interval:setInterval(()=>Fv(e),2e4),cpuMetadata:qTe,platform:Bv}}function QTe(){if(Bv!=="linux")return null;try{let e=zN("/sys/fs/cgroup/memory.max"),t=Zg("/sys/fs/cgroup/memory.current");if(e==="max"||isNaN(t))return null;let n=Nm(e);if(isNaN(n))return null;let o=Math.max(0,n-t);return {totalMemory:n,freeMemory:o,freePercentage:o/n}}catch{}try{let e=Zg("/sys/fs/cgroup/memory/memory.limit_in_bytes"),t=Zg("/sys/fs/cgroup/memory/memory.usage_in_bytes");if(isNaN(e)||isNaN(t))return null;let n=_d.totalmem();if(e>=n)return null;let o=Math.max(0,e-t);return {totalMemory:e,freeMemory:o,freePercentage:o/e}}catch{return null}}function iY(){let e=QTe();if(e)return e;let t=_d.totalmem(),n=Bv==="darwin"?eAe():(()=>{let r=_d.freemem();return {availableMemory:r,rawFreeMemory:r,cachedMemory:0}})(),o=n.availableMemory/t;return {totalMemory:t,freeMemory:n.availableMemory,freePercentage:o}}function ZTe(){let e=VN();if(!Dv)return Dv=e,null;let t=tY(Dv,e);return Dv=e,t?(XK=t,XK):null}function eAe(){try{let e=execSync("/usr/bin/vm_stat",{encoding:"utf8",stdio:["pipe","pipe","ignore"]}),n=e.match(/page size of (\d+) bytes/)?.[1],o=n?Nm(n):4096,r=d=>{let p=e.match(new RegExp(`${d}:\\s+(\\d+)\\.`,"i"))?.[1];return p?Nm(p):0},i=r("Pages free"),s=r("Pages inactive"),a=r("Pages speculative"),l=i*o,c=(s+a)*o;return {availableMemory:l+c,rawFreeMemory:l,cachedMemory:c}}catch{let e=_d.freemem();return {availableMemory:e,rawFreeMemory:e,cachedMemory:0}}}process.env.APP||"unknown";var Uv="deployment.environment",Hv="service.instance.id";function sY(){return process.env.MOMENTIC_LOCAL_DEV==="1"&&process.env.LOCAL_SIGNOZ==="true"}var ef=false,Gv,Kb,Yb,cY=[],jv;function $v(){return ef}function dY(e){cY.push(e);}async function mAe(){for(let e of cY)try{await e();}catch{}}function hAe(){return $v()&&trace.getSpan(context.active())!==void 0}function gAe(){return sY()?new OTLPTraceExporter({url:"http://localhost:4318/v1/traces"}):new OTLPTraceExporter({url:`${Yg}/v1/traces`,headers:{"x-momentic-metrics-api-key":Jg}})}function fAe(e){let t="production",n=v4$1(),o=gAe();return new NodeTracerProvider({resource:resourceFromAttributes({[ATTR_SERVICE_NAME]:e,[Uv]:t,[Hv]:n,[ATTR_SERVICE_VERSION]:"3.10.3"}),spanProcessors:[new BatchSpanProcessor(o)]})}function yAe(e){jv=registerInstrumentations({tracerProvider:e,instrumentations:[new UndiciInstrumentation({requireParentforSpans:true})]});}function SAe(e){return !e&&!Gv?trace.getTracer("momentic-serverless"):Yb?.getTracer("momentic-serverless")??trace.getTracer("momentic-serverless")}async function Wu(e){if(!(!e.enabled||ef))try{Gv=e.serviceName;let t=fAe(e.serviceName);Yb=t,Kb=new AsyncLocalStorageContextManager,t.register({contextManager:Kb.enable(),propagator:new W3CTraceContextPropagator}),yAe(t),ef=!0;}catch{ef=false,Gv=void 0,Yb=void 0,Kb=void 0,jv=void 0;}}async function Vv(){if(ef)try{await mAe(),await Yb?.shutdown();}catch{}finally{jv?.();try{Kb?.disable();}catch{}ef=false,Gv=void 0,Kb=void 0,Yb=void 0,jv=void 0;}}async function Ge(e){if(!$v()||!e.root&&!hAe())return e.fn(void 0);let t=e.serviceName===void 0?e.attributes:{...e.attributes??{},"momentic.span_service_name":e.serviceName};return await SAe(e.serviceName).startActiveSpan(e.name,{attributes:t,kind:e.kind??SpanKind.CLIENT},async n=>{try{let o=await e.fn(n);return n.setStatus({code:SpanStatusCode.OK}),o}catch(o){throw n.setStatus({code:SpanStatusCode.ERROR,message:o instanceof Error?o.message.slice(0,300):void 0}),o instanceof Error&&n.recordException(o),o}finally{n.end();}})}var Jb=class{increment(t,n,o){}gauge(t,n){}distribution(t,n,o){}async flush(){}async recordDuration(t){return await qN(t)}};async function qN({fn:e,name:t,timeoutMs:n,timeoutMessage:o,trace:r}){let i=r?()=>Ge({name:r.name,attributes:r.attributes,fn:e}):e,s=Promise.resolve(i());return n===void 0?await s:await Ie(s,{milliseconds:n,message:o??`Timed out after ${n}ms recording duration for ${t}`})}function bAe(e){if(!e||e.length===0)return {};let t={};for(let n of e){let o=n.indexOf(":");if(o>-1){let r=n.slice(0,o).trim(),i=n.slice(o+1).trim();r&&(t[r]=i);continue}t[n]=true;}return t}function KN(e,t){let n=bAe(e);return !t||Object.keys(t).length===0?n:{...t,...n}}function PAe(){return new OTLPMetricExporter({url:`${Yg}/v1/metrics`,headers:{"x-momentic-metrics-api-key":Jg},temporalityPreference:AggregationTemporalityPreference.DELTA})}var YN=[100,500,1e3,2e3,3e3,4e3,5e3,7500,1e4,15e3,2e4],zv=(e,t)=>({instrumentName:e,instrumentType:InstrumentType.HISTOGRAM,aggregation:{type:AggregationType.EXPLICIT_BUCKET_HISTOGRAM,options:{boundaries:t,recordMinMax:false}}}),OAe=[zv("test_event_duration",YN),zv("test_step_duration",YN),zv("test_mobile_step_duration",YN),zv("web_agent_action_duration",[25,50,100,200,350,500,750,1e3,2e3,5e3,1e4,2e4])],Wv=class{globalAttributes;provider;meter;counterCache=new Map;histogramCache=new Map;observableGaugeCache=new Map;gaugeValues=new Map;getCounter(t){let n=this.counterCache.get(t);if(n)return n;let o=this.meter.createCounter(t);return this.counterCache.set(t,o),o}getHistogram(t){let n=this.histogramCache.get(t);if(n)return n;let o=this.meter.createHistogram(t);return this.histogramCache.set(t,o),o}ensureObservableGauge(t){let n=this.observableGaugeCache.get(t);if(n)return n;let o=this.meter.createObservableGauge(t);return o.addCallback(r=>{let i=this.gaugeValues.get(t);i!==void 0&&r.observe(i,this.globalAttributes);}),this.observableGaugeCache.set(t,o),o}constructor(t){this.globalAttributes={...t.globalAttributes??{}};let n=typeof process<"u"?"production":"unknown",o=resourceFromAttributes({[ATTR_SERVICE_NAME]:t.serviceName,[Uv]:n,[Hv]:typeof process<"u"&&process.env.SERVICE_INSTANCE_ID?process.env.SERVICE_INSTANCE_ID:v4$1(),[ATTR_SERVICE_VERSION]:"3.10.3"}),r=PAe(),i=new PeriodicExportingMetricReader({exporter:r,exportIntervalMillis:t.exportIntervalMs??6e4});this.provider=new MeterProvider({resource:o,readers:[i],views:OAe}),metrics.setGlobalMeterProvider(this.provider),this.meter=metrics.getMeter("momentic-serverless");}increment(t,n,o){try{let r=KN(o,this.globalAttributes);this.getCounter(t).add(typeof n=="number"?n:1,r);}catch{}}gauge(t,n){try{this.ensureObservableGauge(t),this.gaugeValues.set(t,n);}catch{}}distribution(t,n,o){try{let r=KN(o,this.globalAttributes);this.getHistogram(t).record(n,r);}catch{}}async flush(){try{await this.provider.forceFlush();}catch{}}async recordDuration(t){let{name:n,tags:o}=t,r=Date.now();try{return await qN(t)}finally{this.distribution(n,Date.now()-r,o);}}};var Tt=new Jb;function pY(e){if(!e.disabled)try{Tt=new Wv(e);}catch{Tt=new Jb;}}var JN;function mY(e){JN=e;}function qu(e){NAe(e)&&JN&&JN(e);}var MAe=new Set(["InternalWebAgentError","InternalPlatformError","UnknownError"]);function NAe(e){return e instanceof Error&&e.name==="AbortError"||dC(e,De)?false:e instanceof ne?MAe.has(e.reason):true}function LAe({usage:e,promptType:t,result:n="success"}){let o=[`type:${t}`,`result:${n}`],r=e.inputTokens??0,i=e.inputTokenDetails.cacheReadTokens??e.cachedInputTokens??0,s=e.outputTokens??0;Tt.distribution("ai_session_tokens",r,[...o,"category:input"]),Tt.distribution("ai_session_tokens",Math.max(0,Math.min(i,r)),[...o,"category:cached_input"]),Tt.distribution("ai_session_tokens",s,[...o,"category:output"]);}function qv({usage:e,promptType:t,logger:n,message:o,result:r="success",attributes:i}){LAe({usage:e,promptType:t,result:r}),n.info({...i,promptType:t,result:r,usage:e},o);}function Aa({usage:e,promptType:t,logger:n}){let o=Promise.resolve(e).catch(r=>{n.warn({err:r,promptType:t},"Failed to resolve AI session usage");});return ({message:r,result:i="success",attributes:s})=>{o.then(a=>{a&&qv({usage:a,promptType:t,logger:n,result:i,message:r,attributes:s});});}}function wY(){return globalThis.crypto}function eL(e){let t=wY(),n=new Uint8Array(e);if(t&&typeof t.getRandomValues=="function")return t.getRandomValues(n),n;for(let o=0;o<n.length;o++)n[o]=Math.floor(Math.random()*256);return n}function Yu(){let e=wY();if(e&&typeof e.randomUUID=="function")return e.randomUUID();let t=eL(16);t[6]=t[6]&15|64,t[8]=t[8]&63|128;let n=[...t].map(o=>o.toString(16).padStart(2,"0")).join("");return `${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function tL(e){let t=globalThis.Buffer;if(t)return t.from(e).toString("base64");let n="";for(let a=0;a<e.length;a++)n+=String.fromCharCode(e[a]);let o=globalThis.btoa;if(typeof o=="function")return o(n);let r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i="",s=0;for(;s<n.length;){let a=n.charCodeAt(s++)&255,l=s<n.length?n.charCodeAt(s++)&255:NaN,c=s<n.length?n.charCodeAt(s++)&255:NaN,d=a>>2,u=(a&3)<<4|(Number.isNaN(l)?0:l>>4),p=Number.isNaN(l)?64:(l&15)<<2|(Number.isNaN(c)?0:c>>6),m=Number.isNaN(c)?64:c&63;i+=r.charAt(d),i+=r.charAt(u),i+=p===64?"=":r.charAt(p),i+=m===64?"=":r.charAt(m);}return i}function DAe(e){return new Promise(t=>setTimeout(t,e))}function Qb(e){if(e)return e.endsWith("/")?e:`${e}/`}function FAe(e){var t;let n=(t=e.get("Retry-After"))!=null?t:e.get("retry-after");if(!n)return;let o=Number(n);if(n.trim()!==""&&!Number.isNaN(o))return o*1e3;let r=new Date(n).getTime();if(!Number.isNaN(r)){let i=r-Date.now();return i>0?i:0}}function BAe(e,t){if(t&&typeof t=="object"&&t!==null&&"retryAfterMs"in t){let r=t.retryAfterMs;if(typeof r=="number")return Math.max(0,r)}if(e<=1)return 0;let n=500,o=Math.pow(2,e-2);return n*o}async function UAe(e,t,n){let o=n.sdkName?`[raindrop-ai/${n.sdkName}]`:"[raindrop-ai/core]",r;for(let i=1;i<=n.maxAttempts;i++){if(i>1){let s=BAe(i,r);n.debug&&console.warn(`${o} ${t} retry ${i}/${n.maxAttempts} in ${s}ms`),s>0&&await DAe(s);}else n.debug&&console.log(`${o} ${t} attempt ${i}/${n.maxAttempts}`);try{return await e()}catch(s){if(r=s,n.debug){let a=s instanceof Error?s.message:String(s);console.warn(`${o} ${t} attempt ${i} failed: ${a}${i===n.maxAttempts?" (no more retries)":""}`);}if(r&&typeof r=="object"&&"retryable"in r&&!r.retryable||i===n.maxAttempts)break}}throw r instanceof Error?r:new Error(String(r))}async function Lm(e,t,n,o){let r=`POST ${e}`;await UAe(async()=>{let i=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t)});if(!i.ok){let s=await i.text().catch(()=>""),a=new Error(`HTTP ${i.status} ${i.statusText}${s?`: ${s}`:""}`),l=FAe(i.headers);throw typeof l=="number"&&(a.retryAfterMs=l),a.retryable=i.status===429||i.status>=500,a}},r,o);}var hY={UNSET:0,ERROR:2};function gY(e){let t=e?e.traceIdB64:tL(eL(16)),n=tL(eL(8));return {traceIdB64:t,spanIdB64:n,parentSpanIdB64:e?e.spanIdB64:void 0}}function Zb(){return Date.now().toString()+"000000"}function fY(e){return String(Math.floor(e))+"000000"}function Y(e,t){if(t!==void 0)return {key:e,value:{stringValue:t}}}function et(e,t){if(t!==void 0&&Number.isFinite(t))return {key:e,value:{intValue:String(Math.trunc(t))}}}function nf(e,t){if(t!==void 0&&Number.isFinite(t))return {key:e,value:{doubleValue:t}}}function HAe(e,t){if(t!==void 0)return {key:e,value:{boolValue:t}}}function Pd(e,t){if(!(!t||t.length===0))return {key:e,value:{arrayValue:{values:t.filter(n=>typeof n=="string").map(n=>({stringValue:n}))}}}}function XN(e){let t=e.attributes.filter(o=>o!==void 0),n={traceId:e.ids.traceIdB64,spanId:e.ids.spanIdB64,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano};return e.ids.parentSpanIdB64&&(n.parentSpanId=e.ids.parentSpanIdB64),t.length&&(n.attributes=t),e.status&&(n.status=e.status),n}function yY(e,t="raindrop.core",n="0.0.0"){return {resourceSpans:[{resource:{attributes:[{key:"service.name",value:{stringValue:t}}]},scopeSpans:[{scope:{name:t,version:n},spans:e}]}]}}var GAe="RAINDROP_LOCAL_DEBUGGER",jAe="RAINDROP_WORKSHOP",SY="http://localhost:5899/v1/";function lL(e){var t;try{let n=(t=globalThis?.process)==null?void 0:t.env;if(n&&typeof n[e]=="string"&&n[e].length>0)return n[e]}catch{}}function $Ae(){let e=lL(jAe);if(e===void 0)return;let t=e.trim();if(t.length!==0){if(/^https?:\/\//i.test(t))return {url:t};if(/^(1|true|yes|on)$/i.test(t))return "enable";if(/^(0|false|no|off)$/i.test(t))return "disable"}}function VAe(e){return e?!!(e==="localhost"||e==="127.0.0.1"||e==="0.0.0.0"||e==="::1"||e.endsWith(".localhost")):false}function zAe(){try{let e=globalThis?.location;if(e&&typeof e.hostname=="string"&&e.hostname.length>0)return e.hostname}catch{}}function WAe(){return !!(VAe(zAe())||lL("NODE_ENV")==="development")}function Dm(e){var t,n,o;if(e===null)return null;if(typeof e=="string"&&e.length>0)return (t=Qb(e))!=null?t:null;let r=lL(GAe);if(r)return (n=Qb(r))!=null?n:null;let i=$Ae();return i==="disable"?null:i==="enable"?SY:i&&"url"in i?(o=Qb(i.url))!=null?o:null:WAe()?SY:null}function eR(e){return Dm(e)!==null}function qAe(e,t={}){var n;let o=Dm(t.baseUrl);o&&Lm(`${o}traces`,e,{},{maxAttempts:1,debug:(n=t.debug)!=null?n:false,sdkName:t.sdkName}).catch(()=>{});}function KAe(e,t={}){var n;let o=Dm(t.baseUrl);if(!o)return;let r=t.writeKey?{Authorization:`Bearer ${t.writeKey}`}:{};Lm(`${o}events/track_partial`,e,r,{maxAttempts:1,debug:(n=t.debug)!=null?n:false,sdkName:t.sdkName}).catch(()=>{});}function Ku(e,t={}){var n,o;let r=Dm(t.baseUrl);r&&Lm(`${r}live`,{...e,type:e.type,timestamp:(n=e.timestamp)!=null?n:Date.now()},{},{maxAttempts:1,debug:(o=t.debug)!=null?o:false,sdkName:t.sdkName}).catch(()=>{});}function YAe(e,t){var n,o,r,i;let s={...e,...t};return (e.properties||t.properties)&&(s.properties={...(n=e.properties)!=null?n:{},...(o=t.properties)!=null?o:{}}),(e.attachments||t.attachments)&&(s.attachments=[...(r=e.attachments)!=null?r:[],...(i=t.attachments)!=null?i:[]]),s}var JAe=class{constructor(e){this.buffers=new Map,this.sticky=new Map,this.timers=new Map,this.inFlight=new Set;var t,n,o,r,i,s,a,l;this.writeKey=(t=e.writeKey)==null?void 0:t.trim(),this.baseUrl=(n=Qb(e.endpoint))!=null?n:"https://api.raindrop.ai/v1/",this.enabled=e.enabled!==false,this.debug=e.debug,this.partialFlushMs=(o=e.partialFlushMs)!=null?o:1e3,this.sdkName=(r=e.sdkName)!=null?r:"core",this.prefix=`[raindrop-ai/${this.sdkName}]`,this.defaultEventName=(i=e.defaultEventName)!=null?i:"ai_generation",this.localDebuggerUrl=(s=Dm(e.localDebuggerUrl))!=null?s:void 0,this.debug&&this.localDebuggerUrl&&console.log(`${this.prefix} Local debugger mirroring: ${this.localDebuggerUrl}`);let c=typeof process<"u"&&typeof process.version=="string";this.context={library:{name:(a=e.libraryName)!=null?a:"@raindrop-ai/core",version:(l=e.libraryVersion)!=null?l:"0.0.0"},metadata:{jsRuntime:c?"node":"web",...c?{nodeVersion:process.version}:{}}};}isDebugEnabled(){return this.debug}authHeaders(){return this.writeKey?{Authorization:`Bearer ${this.writeKey}`}:{}}async patch(e,t){var n,o,r,i,s,a,l,c,d,u,p;if(!this.enabled||!e||!e.trim())return;this.debug&&console.log(`${this.prefix} queue patch`,{eventId:e,userId:t.userId,convoId:t.convoId,eventName:t.eventName,hasInput:typeof t.input=="string"&&t.input.length>0,hasOutput:typeof t.output=="string"&&t.output.length>0,attachments:(o=(n=t.attachments)==null?void 0:n.length)!=null?o:0,isPending:t.isPending});let m=(r=this.sticky.get(e))!=null?r:{},h=(i=this.buffers.get(e))!=null?i:{},g=YAe(h,t);g.isPending=(l=(a=(s=t.isPending)!=null?s:h.isPending)!=null?a:m.isPending)!=null?l:true,this.buffers.set(e,g),this.sticky.set(e,{userId:(c=g.userId)!=null?c:m.userId,convoId:(d=g.convoId)!=null?d:m.convoId,eventName:(u=g.eventName)!=null?u:m.eventName,isPending:(p=g.isPending)!=null?p:m.isPending});let f=this.timers.get(e);if(f&&clearTimeout(f),g.isPending===false){await this.flushOne(e);return}let y=setTimeout(()=>{this.flushOne(e).catch(()=>{});},this.partialFlushMs);this.timers.set(e,y);}async finish(e,t){await this.patch(e,{...t,isPending:false});}async flush(){if(!this.enabled)return;let e=[...this.buffers.keys()];await Promise.all(e.map(t=>this.flushOne(t))),await Promise.all([...this.inFlight].map(t=>t.catch(()=>{})));}async shutdown(){for(let e of this.timers.values())clearTimeout(e);this.timers.clear(),await this.flush();}async trackSignal(e){var t,n;if(!this.enabled)return;let o=[{event_id:e.eventId,signal_name:e.name,signal_type:(t=e.type)!=null?t:"default",timestamp:e.timestamp,sentiment:e.sentiment,attachment_id:e.attachmentId,properties:{...(n=e.properties)!=null?n:{},...e.comment?{comment:e.comment}:{},...e.after?{after:e.after}:{}}}];if(!this.writeKey)return;let r=`${this.baseUrl}signals/track`;try{await Lm(r,o,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});}catch(i){let s=i instanceof Error?i.message:String(i);console.warn(`${this.prefix} failed to send signal (dropping): ${s}`);}}async identify(e){if(!this.enabled)return;let n=(Array.isArray(e)?e:[e]).filter(r=>!r?.userId||!r.userId.trim()?(this.debug&&console.warn(`${this.prefix} skipping identify: missing userId`),false):true).map(r=>{var i;return {user_id:r.userId,traits:(i=r.traits)!=null?i:{}}});if(!this.writeKey||n.length===0)return;let o=`${this.baseUrl}users/identify`;try{await Lm(o,n,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(`${this.prefix} failed to send identify (dropping): ${i}`);}}async flushOne(e){var t,n,o,r,i,s,a,l,c,d,u,p,m;if(!this.enabled)return;let h=this.timers.get(e);h&&(clearTimeout(h),this.timers.delete(e));let g=this.buffers.get(e);if(this.buffers.delete(e),!g)return;let f=(t=this.sticky.get(e))!=null?t:{},y=(o=(n=g.eventName)!=null?n:f.eventName)!=null?o:this.defaultEventName,S=(r=g.userId)!=null?r:f.userId;if(!S){this.debug&&console.warn(`${this.prefix} skipping track_partial for ${e}: missing userId`),this.sticky.delete(e);return}let{wizardSession:b,...E}=(i=g.properties)!=null?i:{},C=(s=g.convoId)!=null?s:f.convoId,w=(l=(a=g.isPending)!=null?a:f.isPending)!=null?l:true,I={event_id:e,user_id:S,event:y,timestamp:(c=g.timestamp)!=null?c:new Date().toISOString(),ai_data:{input:g.input,output:g.output,model:g.model,convo_id:C},properties:{...E,...b?{"raindrop.wizardSession":b}:{},$context:this.context},attachments:g.attachments,is_pending:w},P=`${this.baseUrl}events/track_partial`;if(this.debug&&console.log(`${this.prefix} sending track_partial`,{eventId:e,eventName:y,userId:S,convoId:C,isPending:w,inputPreview:typeof g.input=="string"?g.input.slice(0,120):void 0,outputPreview:typeof g.output=="string"?g.output.slice(0,120):void 0,attachments:(u=(d=g.attachments)==null?void 0:d.length)!=null?u:0,attachmentKinds:(m=(p=g.attachments)==null?void 0:p.map(_=>({type:_.type,role:_.role,name:_.name,valuePreview:_.value.slice(0,60)})))!=null?m:[],endpoint:P}),this.localDebuggerUrl&&KAe(I,{baseUrl:this.localDebuggerUrl,writeKey:this.writeKey,debug:this.debug,sdkName:this.sdkName}),!this.writeKey){w||this.sticky.delete(e);return}let v=Lm(P,I,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});this.inFlight.add(v);try{try{await v,this.debug&&console.log(`${this.prefix} sent track_partial ${e} (${y})`);}catch(_){let x=_ instanceof Error?_.message:String(_);console.warn(`${this.prefix} failed to send track_partial (dropping): ${x}`);}}finally{this.inFlight.delete(v);}w||this.sticky.delete(e);}},IY=["apikey","apisecret","apitoken","secretaccesskey","sessiontoken","privatekey","privatekeyid","clientsecret","accesstoken","refreshtoken","oauthtoken","bearertoken","authorization","password","passphrase"],xY="[REDACTED]";function _Y(e){return e.toLowerCase().replace(/[-_.]/g,"")}function PY(e,t){var n,o;let r=XAe((n=t?.secretKeyNames)!=null?n:IY),i=(o=t?.placeholder)!=null?o:xY,s=new WeakSet,a=l=>{if(l===null||typeof l!="object")return l;if(s.has(l))return "[CIRCULAR]";if(s.add(l),Array.isArray(l))return l.map(d=>a(d));let c={};for(let[d,u]of Object.entries(l))r.has(_Y(d))?c[d]=i:c[d]=a(u);return c};return a(e)}function XAe(e){let t=new Set;for(let n of e)t.add(_Y(n));return t}var OY=["ai.request.providerOptions","ai.response.providerMetadata"];function MY(e){let t=e.attributes;if(!t||t.length===0)return e;let n;for(let o=0;o<t.length;o++){let r=t[o],i=NY(r.key,r.value);i!==void 0&&(n||(n=t.slice()),n[o]={key:r.key,value:i});}return n?{...e,attributes:n}:e}var QAe=new Set(OY);function NY(e,t){if(!QAe.has(e))return;let n=t.stringValue;if(typeof n!="string"||n.length===0)return;let o;try{o=JSON.parse(n);}catch{return}let r=PY(o),i;try{i=JSON.stringify(r);}catch{return}if(i!==n)return {stringValue:i}}var ZAe=class{constructor(e){this.queue=[],this.inFlight=new Set;var t,n,o,r,i,s,a,l,c;this.writeKey=(t=e.writeKey)==null?void 0:t.trim(),this.baseUrl=(n=Qb(e.endpoint))!=null?n:"https://api.raindrop.ai/v1/",this.enabled=e.enabled!==false,this.debug=e.debug,this.debugSpans=e.debugSpans===true,this.flushIntervalMs=(o=e.flushIntervalMs)!=null?o:1e3,this.maxBatchSize=(r=e.maxBatchSize)!=null?r:50,this.maxQueueSize=(i=e.maxQueueSize)!=null?i:5e3,this.sdkName=(s=e.sdkName)!=null?s:"core",this.prefix=`[raindrop-ai/${this.sdkName}]`,this.serviceName=(a=e.serviceName)!=null?a:"raindrop.core",this.serviceVersion=(l=e.serviceVersion)!=null?l:"0.0.0",this.localDebuggerUrl=(c=Dm(e.localDebuggerUrl))!=null?c:void 0,this.debug&&this.localDebuggerUrl&&console.log(`${this.prefix} Local debugger mirroring: ${this.localDebuggerUrl}`),this.transformSpanHook=e.transformSpan,this.disableDefaultRedaction=e.disableDefaultRedaction===true;}redactSpan(e){let t=e;if(this.transformSpanHook)try{let n=this.transformSpanHook(t);if(n===null)return null;n!==void 0&&(t=n);}catch(n){if(this.debug){let o=n instanceof Error?n.message:String(n);console.warn(`${this.prefix} transformSpan hook threw: ${o}`);}return null}return this.disableDefaultRedaction||(t=MY(t)),t}isDebugEnabled(){return this.debug}authHeaders(){return this.writeKey?{Authorization:`Bearer ${this.writeKey}`}:{}}startSpan(e){var t,n;let o=gY(e.parent),r=(t=e.startTimeUnixNano)!=null?t:Zb(),i=[Y("ai.telemetry.metadata.raindrop.eventId",e.eventId),Y("ai.operationId",e.operationId)];(n=e.attributes)!=null&&n.length&&i.push(...e.attributes);let s={ids:o,name:e.name,startTimeUnixNano:r,attributes:i};return this.mirrorToLocalDebugger(XN({ids:s.ids,name:s.name,startTimeUnixNano:s.startTimeUnixNano,endTimeUnixNano:s.startTimeUnixNano,attributes:s.attributes,status:{code:hY.UNSET}})),s}mirrorToLocalDebugger(e){if(!this.localDebuggerUrl)return;let t=this.redactSpan(e);if(t===null)return;let n=yY([t],this.serviceName,this.serviceVersion);qAe(n,{baseUrl:this.localDebuggerUrl,debug:false,sdkName:this.sdkName});}endSpan(e,t){var n,o;if(e.endTimeUnixNano)return;e.endTimeUnixNano=(n=t?.endTimeUnixNano)!=null?n:Zb(),(o=t?.attributes)!=null&&o.length&&e.attributes.push(...t.attributes);let r=t?.status;if(!r&&t?.error!==void 0){let s=t.error instanceof Error?t.error.message:String(t.error);r={code:hY.ERROR,message:s};}let i=XN({ids:e.ids,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano,attributes:e.attributes,status:r});this.enqueue(i),this.mirrorToLocalDebugger(i);}createSpan(e){var t;let n=gY(e.parent),o=[Y("ai.telemetry.metadata.raindrop.eventId",e.eventId)];(t=e.attributes)!=null&&t.length&&o.push(...e.attributes);let r=XN({ids:n,name:e.name,startTimeUnixNano:e.startTimeUnixNano,endTimeUnixNano:e.endTimeUnixNano,attributes:o,status:e.status});this.enqueue(r),this.mirrorToLocalDebugger(r);}enqueue(e){if(!this.enabled)return;if(this.debugSpans){let n=o=>o?o.slice(-8):"none";console.log(`${this.prefix}[span] name=${e.name} trace=${n(e.traceId)} span=${n(e.spanId)} parent=${n(e.parentSpanId)}`);}let t=this.redactSpan(e);if(t!==null){if(this.queue.length>=this.maxQueueSize&&this.queue.shift(),this.queue.push(t),this.queue.length>=this.maxBatchSize){this.flush().catch(()=>{});return}this.timer||(this.timer=setTimeout(()=>{this.timer=void 0,this.flush().catch(()=>{});},this.flushIntervalMs));}}async flush(){if(this.enabled)for(this.timer&&(clearTimeout(this.timer),this.timer=void 0);this.queue.length>0;){let e=this.queue.splice(0,this.maxBatchSize);if(!this.writeKey)continue;let t=yY(e,this.serviceName,this.serviceVersion),n=`${this.baseUrl}traces`;this.debug&&console.log(`${this.prefix} sending traces batch`,{spans:e.length,endpoint:n});let o=Lm(n,t,this.authHeaders(),{maxAttempts:3,debug:this.debug,sdkName:this.sdkName});this.inFlight.add(o);try{try{await o,this.debug&&console.log(`${this.prefix} sent ${e.length} spans`);}catch(r){let i=r instanceof Error?r.message:String(r);console.warn(`${this.prefix} failed to send ${e.length} spans: ${i}`);}}finally{this.inFlight.delete(o);}}}async shutdown(){this.timer&&(clearTimeout(this.timer),this.timer=void 0),await this.flush(),await Promise.all([...this.inFlight].map(e=>e.catch(()=>{})));}},eEe={};function bY(){return globalThis.RAINDROP_ASYNC_LOCAL_STORAGE}var tEe=class{constructor(){this._stack=[];}isEmpty(){return this._stack.length===0}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},nEe=class{},oEe=class extends nEe{constructor(){super(),this._fallback=null;let e=bY();if(e){this._storage=new e;return}this._fallback=new tEe,this._storage=this._fallback;}maybeAdoptAsyncLocalStorage(){if(!this._fallback||!this._fallback.isEmpty())return;let e=bY();e&&(this._storage=new e,this._fallback=null);}isReady(){return true}getParentSpanIds(){this.maybeAdoptAsyncLocalStorage();let e=this._storage.getStore();if(!(!e||e===eEe))return {traceIdB64:e.traceIdB64,spanIdB64:e.spanIdB64,eventId:e.eventId}}runInContext(e,t){return this.maybeAdoptAsyncLocalStorage(),this._storage.run(e,t)}getCurrentSpan(){return this.maybeAdoptAsyncLocalStorage(),this._storage.getStore()}},QN=null;function Ju(){return QN||(QN=globalThis.RAINDROP_CONTEXT_MANAGER?new globalThis.RAINDROP_CONTEXT_MANAGER:new oEe),QN}function LY(e,t){return Ju().runInContext(e,t)}async function km(){return Ju().getParentSpanIds()}async function eT(e,t){let n=Ju(),o={traceIdB64:e.traceIdB64,spanIdB64:e.spanIdB64,eventId:e.eventId};return n.runInContext(o,t)}async function*rEe(e,t){let n;for(;;){let o=await LY(e,async()=>{try{return await t.next(n)}catch(r){return {value:void 0,done:true,error:r}}});if("error"in o&&o.error!==void 0)throw o.error;if(o.done)return o.value;n=yield o.value;}}globalThis.RAINDROP_ASYNC_LOCAL_STORAGE=AsyncLocalStorage;function Se(e){return typeof e=="object"&&e!==null}function ci(e){return typeof e=="function"}function TY(e){var t;if(!e||typeof e!="object")return false;if(((t=e.constructor)==null?void 0:t.name)==="Module")return true;try{let o=Object.keys(e);if(o.length===0)return !1;let r=Object.getOwnPropertyDescriptor(e,o[0]);if(!r)return !1;let i="writable"in r?r.writable:!0;return !r.configurable&&!i}catch{return false}}function Qv(e){try{return JSON.stringify(e)}catch{return}}function dt(e){try{return JSON.stringify(e,(t,n)=>n instanceof Uint8Array?tL(n):n)}catch{return}}function iR(e){if(typeof e=="string"){let r=e.indexOf("/");return r>0&&r<e.length-1?{provider:e.slice(0,r),modelId:e.slice(r+1)}:{modelId:e}}if(!Se(e))return {};let t=typeof e.provider=="string"?e.provider:void 0,n;if(typeof e.modelId=="string"?n=e.modelId:typeof e.model=="string"&&(n=e.model),!n)return {provider:t};let o=n.indexOf("/");return !t&&o>0&&o<n.length-1?{provider:n.slice(0,o),modelId:n.slice(o+1)}:{provider:t,modelId:n}}function cL(e){if(!Se(e))return;let t=e.text;return typeof t=="string"?t:void 0}function iEe(e){var t;if(!Se(e))return;let n=e.object;if(n!==void 0)return (t=Qv(n))!=null?t:String(n)}function sEe(e){if(typeof e!="function")return false;let t=e.prototype;return Se(t)?typeof t.generate=="function"&&typeof t.stream=="function":false}function dL(e){if(!Se(e))return;let t=e.model;if(typeof t=="string"&&t.length)return t;let n=e.response;if(Se(n)){let o=n.modelId;if(typeof o=="string"&&o.length)return o}}function tT(e){if(Se(e)){if(typeof e.finishReason=="string")return e.finishReason;if(Se(e.finishReason)&&typeof e.finishReason.unified=="string")return e.finishReason.unified}}function AY(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return typeof btoa=="function"?btoa(t):""}function Zv(e,t){if(e instanceof URL)return e.toString();if(typeof e=="string")return e.startsWith("data:")||e.startsWith("http://")||e.startsWith("https://")?e:`data:${t};base64,${e}`;if(e instanceof Uint8Array){let n=AY(e);return n?`data:${t};base64,${n}`:void 0}if(e instanceof ArrayBuffer){let n=AY(new Uint8Array(e));return n?`data:${t};base64,${n}`:void 0}}function kY(e){if(typeof e=="string")return e;if(e instanceof URL)return e.toString();if(e instanceof Uint8Array)return `[binary:${e.byteLength} bytes]`;if(e instanceof ArrayBuffer)return `[binary:${e.byteLength} bytes]`}function EY(e){if(typeof e.mediaType=="string")return e.mediaType;if(typeof e.mimeType=="string")return e.mimeType;let t=e.file;if(Se(t)){if(typeof t.mediaType=="string")return t.mediaType;if(typeof t.mimeType=="string")return t.mimeType}}function aEe(e){if(typeof e.filename=="string")return e.filename;if(typeof e.name=="string")return e.name;let t=e.file;if(Se(t)){if(typeof t.filename=="string")return t.filename;if(typeof t.name=="string")return t.name}}function lEe(e){if("data"in e)return e.data;let t=e.file;if(Se(t)){if("file_data"in t)return t.file_data;if("data"in t)return t.data}}function cEe(e,t){var n,o,r;let i=e.type;if(typeof i=="string"){if(i==="image"){let s=(n=EY(e))!=null?n:"image/png",a=Zv(e.image,s);return a?{type:"image",role:t,value:a}:void 0}if(i==="image_url"){let s=e.image_url,a=Se(s)?s.url:s,l=Zv(a,"image/png");return l?{type:"image",role:t,value:l}:void 0}if(i==="file"){let s=EY(e),a=lEe(e),l=s?.startsWith("image/")===true,c=l&&s?Zv(a,s):kY(a);if(!c)return;let d=(r=(o=aEe(e))!=null?o:s)!=null?r:"file";return {type:l?"image":"text",role:t,name:d,value:c}}}}function nL(e,t){if(!Array.isArray(e))return;let n=[];for(let o of e){if(!Se(o))continue;let r=cEe(o,t);r&&n.push(r);}return n.length?n:void 0}function dEe(e){var t,n,o,r;let i=typeof e.mediaType=="string"?e.mediaType:typeof e.mimeType=="string"?e.mimeType:void 0,s=(r=(o=(n=(t=e.base64Data)!=null?t:e.base64)!=null?n:e.uint8ArrayData)!=null?o:e.uint8Array)!=null?r:e.data,a=i?.startsWith("image/")===true,l=a&&i?Zv(s,i):kY(s);if(!l)return;let c=typeof e.filename=="string"?e.filename:typeof e.name=="string"?e.name:i??"file";return {type:a?"image":"text",role:"output",name:c,value:l}}async function uEe(e){let t=e;if(t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function")try{t=await t;}catch{return}if(!Array.isArray(t))return;let n=[];for(let o of t){if(!Se(o))continue;let r=dEe(o);r&&n.push(r);}return n.length?n:void 0}function DY(e){if(typeof e=="string")return e;if(!Array.isArray(e))return;let t="";for(let n of e)!Se(n)||n.type!=="text"||typeof n.text!="string"||(t+=n.text);return t.length?t:void 0}function uL(e){let t=e.messages;if(Array.isArray(t))return t;let n=e.prompt;if(Array.isArray(n))return n}function FY(e){let t=uL(e);if(t)for(let n=t.length-1;n>=0;n--){let o=t[n];if(Se(o)&&o.role==="user")return o}}function pL(e){var t;if(Se(e))return nL((t=FY(e))==null?void 0:t.content,"input")}async function mL(e){if(!Se(e))return;let t=await uEe(e.files);if(t?.length)return t;let n=sR(e);for(let o=n.length-1;o>=0;o--){let r=n[o];if(!(!Se(r)||r.role!=="assistant"))return nL(r.content,"output")}return nL(e.content,"output")}function hL(e){var t,n;if(!Se(e))return;let o=(t=FY(e))==null?void 0:t.content;if(o===void 0)return;let r=DY(o);return r!==void 0?r:(n=dt(o))!=null?n:String(o)}function gL(e){var t;if(!Se(e))return;let n=e.prompt;if(typeof n=="string")return n;let o=uL(e);if(Array.isArray(o)&&o.length>0){let i=o[o.length-1];if(Se(i)){let s=i.content,a=DY(s);if(a!==void 0)return a;let l=Qv(s);if(l)return l}return (t=Qv(o))!=null?t:void 0}let r=e.input;return typeof r=="string"?r:Qv(e)}function fL(e){if(!Se(e))return [];let t=[];typeof e.system=="string"&&e.system&&t.push({role:"system",content:e.system});let n=uL(e);if(Array.isArray(n)){for(let o of n)Se(o)&&typeof o.role=="string"&&t.push(o);return t}return typeof e.prompt=="string"&&e.prompt&&t.push({role:"user",content:e.prompt}),t}function sR(e){if(!Se(e))return [];let t=e.response;if(Se(t)&&Array.isArray(t.messages))return t.messages.filter(o=>Se(o)&&typeof o.role=="string"&&"content"in o).map(o=>o);let n=e.steps;if(Array.isArray(n)&&n.length>0){let o=n[n.length-1];if(Se(o)&&Se(o.response)){let r=o.response.messages;if(Array.isArray(r))return r.filter(i=>Se(i)&&typeof i.role=="string"&&"content"in i).map(i=>i)}}return []}function tR(e){if(typeof e.toolCallId=="string"&&e.toolCallId.length>0)return `id:${e.toolCallId}`;if(typeof e.toolName=="string"&&e.toolName.length>0){let t=dt(e.input);return t!==void 0?`name:${e.toolName}|input:${t}`:`name:${e.toolName}`}}function pEe(e,t){return e.isError===true||e.type==="tool-error"?true:Se(t)&&typeof t.type=="string"?t.type.startsWith("error")||t.type==="execution-denied":false}function mEe(e){if(typeof e=="string"&&e.length>0)return e;if(Se(e)){if(typeof e.value=="string"&&e.value.length>0)return e.value;if(typeof e.reason=="string"&&e.reason.length>0)return e.reason;if(typeof e.message=="string"&&e.message.length>0)return e.message}return dt(e)}function hEe(e){if(!Se(e))return [];let t=e.content;return Array.isArray(t)?t.filter(Se):Se(t)?[t]:[]}function gEe(e){return "input"in e?e.input:"args"in e?e.args:void 0}function yL(e){let t=e.toolCallId;return typeof t=="string"&&t.length>0?t:void 0}function fEe(e){return "output"in e?e.output:"result"in e?e.result:e.error}function yEe(e,t,n){var o;if(!t)return;let r=(o=e.get(t))!=null?o:[];r.includes(n)||(r.push(n),e.set(t,r));}function SEe(e,t){if(!t)return;let n=e.get(t);if(!n||n.length===0)return;let o=n.shift();if(o!==void 0)return n.length===0&&e.delete(t),o}function bEe(e){var t,n,o,r;let{spans:i,pendingKeysByToolName:s,part:a}=e,l=yL(a),c=typeof a.toolName=="string"?a.toolName:void 0,d=gEe(a),u=tR({toolCallId:l,toolName:c,input:d});if(!u)return;let p=l==null?tR({toolCallId:void 0,toolName:c,input:void 0}):void 0,m=p&&p!==u?i.get(p):void 0,h=(t=i.get(u))!=null?t:m;i.set(u,{key:u,toolCallId:(n=h?.toolCallId)!=null?n:l,toolName:(o=h?.toolName)!=null?o:c,input:(r=h?.input)!=null?r:d,result:h?.result,status:h?.status,errorMessage:h?.errorMessage}),p&&p!==u&&i.delete(p),!l&&h?.result===void 0&&yEe(s,c,u);}function TEe(e){var t,n,o;let{spans:r,pendingKeysByToolName:i,part:s}=e,a=yL(s),l=typeof s.toolName=="string"?s.toolName:void 0,c=fEe(s),d=tR({toolCallId:a,toolName:l,input:void 0}),u=a!=null?d:(t=SEe(i,l))!=null?t:d;if(!u)return;let p=r.get(u),m=pEe(s,c);r.set(u,{key:u,toolCallId:(n=p?.toolCallId)!=null?n:a,toolName:(o=p?.toolName)!=null?o:l,input:p?.input,result:c,status:m?"ERROR":"OK",errorMessage:m?mEe(c):void 0});}function BY(e){let t=new Map,n=new Map;for(let o of e)for(let r of hEe(o)){if(r.type==="tool-call"){bEe({spans:t,pendingKeysByToolName:n,part:r});continue}(r.type==="tool-result"||r.type==="tool-error")&&TEe({spans:t,pendingKeysByToolName:n,part:r});}return [...t.values()]}function AEe(e){if(!Array.isArray(e))return;let t="";for(let n of e)Se(n)&&n.type==="text"&&typeof n.text=="string"&&(t+=n.text);return t.length?t:void 0}function EEe(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!Se(n)||n.type!=="tool-call")continue;let o=yL(n),r=typeof n.toolName=="string"?n.toolName:void 0;(o||r)&&t.push({toolCallId:o,toolName:r,input:n.input});}return t.length?t:void 0}function rf(e){if(!Se(e))return;let t=e.experimental_telemetry;if(Se(t))return {functionId:typeof t.functionId=="string"?t.functionId:void 0,isEnabled:typeof t.isEnabled=="boolean"?t.isEnabled:void 0,recordInputs:typeof t.recordInputs=="boolean"?t.recordInputs:void 0,recordOutputs:typeof t.recordOutputs=="boolean"?t.recordOutputs:void 0,metadata:Se(t.metadata)?t.metadata:void 0}}function Ea(e,t){return {operationName:`${e}${t?` ${t}`:""}`,resourceName:t}}function UY(e,t){if(t==null)return;if(typeof t=="string")return Y(e,t);if(typeof t=="number")return Number.isInteger(t)?et(e,t):nf(e,t);if(typeof t=="boolean")return HAe(e,t);if(Array.isArray(t)&&t.every(o=>typeof o=="string"))return Pd(e,t);let n=dt(t);return n?Y(e,n):void 0}function aR(e){return e?Object.entries(e).filter(([t])=>!t.startsWith("raindrop.internal.")).map(([t,n])=>UY(`ai.telemetry.metadata.${t==="raindrop.userId"?"raindrop.ai.userId":t}`,n)):[]}function SL(e){return Se(e)?Object.entries(e).filter(([,t])=>typeof t=="string").map(([t,n])=>Y(`ai.request.headers.${t}`,n)):[]}function bL(e){if(!Se(e))return [];let t=[],n=["maxRetries","timeout","maxOutputTokens","temperature","topP","topK","presencePenalty","frequencyPenalty","seed","stopSequences"];for(let o of n){if(!(o in e))continue;let r=e[o];o==="stopSequences"&&Array.isArray(r)&&r.every(i=>typeof i=="string")?t.push(Pd(`ai.settings.${o}`,r)):o==="timeout"&&typeof r=="number"?t.push(et(`ai.settings.${o}`,r)):t.push(UY(`ai.settings.${o}`,r));}return t}function HY(e){return Se(e)?[nf("gen_ai.request.frequency_penalty",typeof e.frequencyPenalty=="number"?e.frequencyPenalty:void 0),et("gen_ai.request.max_tokens",typeof e.maxOutputTokens=="number"?e.maxOutputTokens:void 0),nf("gen_ai.request.presence_penalty",typeof e.presencePenalty=="number"?e.presencePenalty:void 0),...Array.isArray(e.stopSequences)&&e.stopSequences.every(t=>typeof t=="string")?[Pd("gen_ai.request.stop_sequences",e.stopSequences)]:[],nf("gen_ai.request.temperature",typeof e.temperature=="number"?e.temperature:void 0),et("gen_ai.request.top_k",typeof e.topK=="number"?e.topK:void 0),nf("gen_ai.request.top_p",typeof e.topP=="number"?e.topP:void 0)]:[]}function GY(e){if(!Se(e)||!Se(e.providerOptions))return;let t=dt(e.providerOptions);return t?Y("ai.request.providerOptions",t):void 0}var CEe=class{constructor(){this._stack=[];}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},Kv=null;function jY(){if(Kv)return Kv;let e=globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;return Kv=e?new e:new CEe,Kv}function TL(){return jY().getStore()}function oL(e,t){return jY().run(e,t)}function $Y(e){var t;if(e.length===0)return;let n=e[0];if(!Se(n))return;let o=Se(n.metadata)?n.metadata:void 0,r=Se(n.telemetry)?n.telemetry.metadata:void 0,i=Se(r)?r:void 0,s=rf(n),a=s?.metadata&&typeof s.metadata=="object"?s.metadata:void 0,l=(t=o??i)!=null?t:a;if(!l)return;let c={rawMetadata:l},d=l["raindrop.userId"];typeof d=="string"&&d&&(c.userId=d);let u=l["raindrop.eventId"];typeof u=="string"&&u&&(c.eventId=u);let p=l["raindrop.internal.eventIdGenerated"];(p===true||p==="true"||p==="1")&&(c.eventIdGenerated=true);let m=l["raindrop.convoId"];typeof m=="string"&&m&&(c.convoId=m);let h=l["raindrop.eventName"];typeof h=="string"&&h&&(c.eventName=h);let g=l["raindrop.properties"];if(typeof g=="string")try{let f=JSON.parse(g);f&&typeof f=="object"&&(c.properties=f);}catch{}else g&&typeof g=="object"&&(c.properties=g);return c}var vEe=class{constructor(){this._stack=[];}getStore(){return this._stack[this._stack.length-1]}run(e,t){this._stack.push(e);try{return t()}finally{this._stack.pop();}}},Yv=null;function AL(){if(Yv)return Yv;let e=globalThis.RAINDROP_ASYNC_LOCAL_STORAGE;return Yv=e?new e:new vEe,Yv}function rL(){return AL().getStore()}function iL(e){var t;let n=AL();(t=n.enterWith)==null||t.call(n,e);}function VY(){var e;let t=AL();(e=t.enterWith)==null||e.call(t,void 0);}var EL=class{constructor(e){this.callStates=new Map,this.priorParentContexts=new Map,this.onStart=t=>{var n,o,r,i,s;if(t.isEnabled===false)return;let a=t.operationId==="ai.embed"||t.operationId==="ai.embedMany",l=t.recordInputs!==false,c=t.recordOutputs!==false,d=t.functionId,u=t.metadata,p=TL(),m=u??p?.rawMetadata,h=this.extractRaindropMetadata(m),g=Ju().getParentSpanIds(),f=m?.["raindrop.internal.eventIdGenerated"]==="true"||m?.["raindrop.internal.eventIdGenerated"]===true||p?.eventIdGenerated===true,y=h.eventId&&!f?h.eventId:void 0,S=(i=(r=(o=y??((n=this.defaultContext)==null?void 0:n.eventId))!=null?o:g?.eventId)!=null?r:h.eventId)!=null?i:Yu(),b=g&&g.eventId===S?{traceIdB64:g.traceIdB64,spanIdB64:g.spanIdB64}:void 0,{operationName:E,resourceName:C}=Ea(t.operationId,d),w=!a&&this.subagentWrapping?rL():void 0,I=!a&&this.subagentWrapping&&w===void 0&&typeof m?.["ash.subagent.name"]=="string"?m["ash.subagent.name"]:void 0,P=(s=w?.toolName)!=null?s:I,v,_;if(P&&this.sendTraces){let D=w?[Y("raindrop.parent.callId",w.parentCallId),Y("raindrop.parent.toolCallId",w.toolCallId),Y("raindrop.parent.toolName",w.toolName)]:[];v=this.traceShipper.startSpan({name:P,parent:b,eventId:S,operationId:"ai.toolCall",attributes:[Y("operation.name","ai.toolCall"),Y("resource.name",P),Y("raindrop.span.kind","tool_call"),Y("ai.toolCall.name",P),Y("raindrop.subagent.name",P),Y("raindrop.agent.role","subagent"),...D]});let U=this.spanParentRef(v),V=this.traceShipper.startSpan({name:"agent.subagent",parent:U,eventId:S,operationId:"agent.subagent",attributes:[Y("operation.name","agent.subagent"),Y("raindrop.span.kind","llm_call"),Y("raindrop.subagent.name",P)]});this.traceShipper.endSpan(V),_=U;}let x;if(this.sendTraces){let D=!a&&l?[Y("ai.prompt",dt({system:t.system,prompt:t.prompt,messages:t.messages}))]:[],U=a&&l?t.operationId==="ai.embedMany"?[Y("ai.values",dt(t.value))]:[Y("ai.value",dt(t.value))]:[];x=this.traceShipper.startSpan({name:t.operationId,parent:_??b,eventId:S,operationId:t.operationId,attributes:[Y("operation.name",E),Y("resource.name",C),Y("ai.telemetry.functionId",d),Y("ai.model.provider",t.provider),Y("ai.model.id",t.modelId),...aR(m?Object.fromEntries(Object.entries(m).filter(([V])=>V!=="raindrop.eventId"&&V!=="raindrop.internal.eventIdGenerated")):void 0),...D,...U]});}this.callStates.set(t.callId,{operationId:t.operationId,eventId:S,rootSpan:x,rootParent:x?this.spanParentRef(x):_??b,stepSpan:void 0,stepParent:void 0,toolSpans:new Map,embedSpans:new Map,parentContextToolCallIds:new Set,recordInputs:l,recordOutputs:c,functionId:d,metadata:m,accumulatedText:"",inputText:a?void 0:this.extractInputText(t),toolCallCount:0,subagentName:P,subagentToolCallSpan:v});},this.onStepStart=t=>{let n=this.getState(t.callId);if(!n?.rootSpan||!n.rootParent)return;let r=n.operationId==="ai.streamText"||n.operationId==="ai.streamObject"?`${n.operationId}.doStream`:`${n.operationId}.doGenerate`,{operationName:i,resourceName:s}=Ea(r,n.functionId),a=[];n.recordInputs&&(t.promptMessages&&a.push(Y("ai.prompt.messages",dt(t.promptMessages))),t.stepTools&&a.push(Pd("ai.prompt.tools",t.stepTools.map(c=>JSON.stringify(c)))),t.stepToolChoice!=null&&a.push(Y("ai.prompt.toolChoice",JSON.stringify(t.stepToolChoice))));let l=this.traceShipper.startSpan({name:r,parent:n.rootParent,eventId:n.eventId,operationId:r,attributes:[Y("operation.name",i),Y("resource.name",s),Y("ai.telemetry.functionId",n.functionId),Y("ai.model.provider",t.provider),Y("ai.model.id",t.modelId),Y("gen_ai.system",t.provider),Y("gen_ai.request.model",t.modelId),...a]});n.stepSpan=l,n.stepParent=this.spanParentRef(l);},this.onToolExecutionStart=t=>this.toolExecutionStart(t),this.onToolExecutionEnd=t=>this.toolExecutionEnd(t),this.onToolCallStart=t=>this.toolExecutionStart(t),this.onToolCallFinish=t=>this.toolExecutionEnd(t),this.onLanguageModelCallStart=t=>{},this.onLanguageModelCallEnd=t=>{},this.onChunk=t=>{var n,o,r,i,s;let a=(o=t.callId)!=null?o:(n=t.chunk)==null?void 0:n.callId;if(!a)return;let l=this.getState(a);if(!l)return;let c=t.chunk;if(!(!c||typeof c!="object")){if(c.type==="text-delta"){let d=(r=c.textDelta)!=null?r:c.delta;typeof d=="string"&&(l.accumulatedText+=d,this.emitLive(l,"text_delta",d));}else if(c.type==="reasoning"||c.type==="reasoning-delta"){let d=(s=(i=c.textDelta)!=null?i:c.text)!=null?s:c.delta;typeof d=="string"&&this.emitLive(l,"reasoning_delta",d);}}},this.onStepFinish=t=>{var n,o,r,i,s,a,l,c,d;let u=this.getState(t.callId);if(!u?.stepSpan)return;let p=[];if(u.recordOutputs&&(p.push(Y("ai.response.finishReason",t.finishReason),Y("ai.response.text",(n=t.text)!=null?n:void 0),Y("ai.response.id",(o=t.response)==null?void 0:o.id),Y("ai.response.model",(r=t.response)==null?void 0:r.modelId),Y("ai.response.timestamp",((i=t.response)==null?void 0:i.timestamp)instanceof Date?t.response.timestamp.toISOString():(s=t.response)==null?void 0:s.timestamp),Y("ai.response.providerMetadata",t.providerMetadata?dt(t.providerMetadata):void 0)),((a=t.toolCalls)==null?void 0:a.length)>0&&p.push(Y("ai.response.toolCalls",JSON.stringify(t.toolCalls.map(h=>({toolCallId:h.toolCallId,toolName:h.toolName,input:h.input}))))),((l=t.reasoning)==null?void 0:l.length)>0)){let h=t.reasoning.filter(g=>"text"in g).map(g=>g.text).join(`
172
172
  `);h&&p.push(Y("ai.response.reasoning",h));}p.push(Pd("gen_ai.response.finish_reasons",[t.finishReason]),Y("gen_ai.response.id",(c=t.response)==null?void 0:c.id),Y("gen_ai.response.model",(d=t.response)==null?void 0:d.modelId));let m=t.usage;m&&p.push(et("ai.usage.inputTokens",m.inputTokens),et("ai.usage.outputTokens",m.outputTokens),et("ai.usage.totalTokens",m.totalTokens),et("ai.usage.reasoningTokens",m.reasoningTokens),et("ai.usage.cachedInputTokens",m.cachedInputTokens),et("gen_ai.usage.input_tokens",m.inputTokens),et("gen_ai.usage.output_tokens",m.outputTokens)),this.emitProviderExecutedToolSpans(t,u),this.traceShipper.endSpan(u.stepSpan,{attributes:p}),u.stepSpan=void 0,u.stepParent=void 0;},this.onEmbedStart=t=>{let n=this.getState(t.callId);if(!n?.rootSpan||!n.rootParent)return;let{operationName:o,resourceName:r}=Ea(t.operationId,n.functionId),i=n.recordInputs?[Y("ai.values",dt(t.values))]:[],s=this.traceShipper.startSpan({name:t.operationId,parent:n.rootParent,eventId:n.eventId,operationId:t.operationId,attributes:[Y("operation.name",o),Y("resource.name",r),Y("ai.telemetry.functionId",n.functionId),...i]});n.embedSpans.set(t.embedCallId,s);},this.onEmbedFinish=t=>{var n;let o=this.getState(t.callId);if(!o)return;let r=o.embedSpans.get(t.embedCallId);if(!r)return;let i=[];o.recordOutputs&&i.push(Y("ai.embeddings",dt(t.embeddings))),((n=t.usage)==null?void 0:n.tokens)!=null&&i.push(et("ai.usage.tokens",t.usage.tokens)),this.traceShipper.endSpan(r,{attributes:i}),o.embedSpans.delete(t.embedCallId);},this.onEmbedEnd=t=>this.onEmbedFinish(t),this.onFinish=t=>{let n=this.getState(t.callId);if(!n)return;n.operationId==="ai.embed"||n.operationId==="ai.embedMany"?this.finishEmbed(t,n):this.finishGenerate(t,n),n.subagentToolCallSpan&&this.traceShipper.endSpan(n.subagentToolCallSpan),this.cleanup(t.callId);},this.onEnd=t=>this.onFinish(t),this.onError=t=>{var n;let o=t;if(!o?.callId)return;let r=this.getState(o.callId);if(!r)return;let i=(n=o.error)!=null?n:t;r.stepSpan&&this.traceShipper.endSpan(r.stepSpan,{error:i});for(let s of r.embedSpans.values())this.traceShipper.endSpan(s,{error:i});r.embedSpans.clear();for(let s of r.parentContextToolCallIds)this.priorParentContexts.delete(s);r.parentContextToolCallIds.clear();for(let s of r.toolSpans.values())this.traceShipper.endSpan(s,{error:i});r.toolSpans.clear(),r.rootSpan&&this.traceShipper.endSpan(r.rootSpan,{error:i}),r.subagentToolCallSpan&&this.traceShipper.endSpan(r.subagentToolCallSpan,{error:i}),this.cleanup(o.callId);},this.executeTool=async({callId:t,toolCallId:n,execute:o})=>{let r=this.getState(t),i=r?.toolSpans.get(n);return i?eT({traceIdB64:i.ids.traceIdB64,spanIdB64:i.ids.spanIdB64,eventId:r.eventId},()=>o()):o()},this.traceShipper=e.traceShipper,this.eventShipper=e.eventShipper,this.sendTraces=e.sendTraces!==false,this.sendEvents=e.sendEvents!==false,this.subagentWrapping=e.subagentWrapping!==false,this.debug=e.debug===true,this.defaultContext=e.context;}getState(e){return this.callStates.get(e)}cleanup(e){this.callStates.delete(e);}spanParentRef(e){return {traceIdB64:e.ids.traceIdB64,spanIdB64:e.ids.spanIdB64}}emitLive(e,t,n,o){var r,i,s,a,l,c;if(!eR()||!e.rootSpan)return;let d=this.extractRaindropMetadata(e.metadata);Ku({traceId:e.rootSpan.ids.traceIdB64,type:t,content:n,metadata:{userId:(i=d.userId)!=null?i:(r=this.defaultContext)==null?void 0:r.userId,convoId:(a=d.convoId)!=null?a:(s=this.defaultContext)==null?void 0:s.convoId,eventName:(c=d.eventName)!=null?c:(l=this.defaultContext)==null?void 0:l.eventName,eventId:e.eventId,...o}});}extractRaindropMetadata(e){if(!e)return {};let t={},n=e["raindrop.userId"];typeof n=="string"&&n&&(t.userId=n);let o=e["raindrop.eventId"];typeof o=="string"&&o&&(t.eventId=o);let r=e["raindrop.convoId"];typeof r=="string"&&r&&(t.convoId=r);let i=e["raindrop.eventName"];typeof i=="string"&&i&&(t.eventName=i);let s=e["raindrop.properties"];if(typeof s=="string")try{t.properties=JSON.parse(s);}catch{}else s&&typeof s=="object"&&(t.properties=s);return t}extractInputText(e){if(typeof e.prompt=="string")return e.prompt;if(Array.isArray(e.messages))for(let t=e.messages.length-1;t>=0;t--){let n=e.messages[t];if(n?.role==="user"){if(typeof n.content=="string")return n.content;if(Array.isArray(n.content)){let o=n.content.find(r=>r?.type==="text"&&typeof r.text=="string");if(o)return o.text}}}}toolExecutionStart(e){let{toolCall:t}=e,n=rL();this.priorParentContexts.set(t.toolCallId,n??null),iL({parentCallId:e.callId,toolCallId:t.toolCallId,toolName:t.toolName});let o=this.getState(e.callId);if(o?.parentContextToolCallIds.add(t.toolCallId),!o?.stepParent)return;let{operationName:r,resourceName:i}=Ea("ai.toolCall",o.functionId),s=o.recordInputs?[Y("ai.toolCall.args",dt(t.input))]:[],a=this.traceShipper.startSpan({name:"ai.toolCall",parent:o.stepParent,eventId:o.eventId,operationId:"ai.toolCall",attributes:[Y("operation.name",r),Y("resource.name",i),Y("ai.telemetry.functionId",o.functionId),Y("ai.toolCall.name",t.toolName),Y("ai.toolCall.id",t.toolCallId),...s]});o.toolSpans.set(t.toolCallId,a),this.emitLive(o,"tool_start",t.toolName,{args:t.input});}toolExecutionEnd(e){var t;let n=(t=e.toolCall)==null?void 0:t.toolCallId;if(n&&this.priorParentContexts.has(n)){let i=this.priorParentContexts.get(n);this.priorParentContexts.delete(n),i?iL(i):VY();}let o=this.getState(e.callId);if(!o)return;let r=o.toolSpans.get(e.toolCall.toolCallId);if(r){if(o.toolCallCount+=1,e.success){let i=o.recordOutputs?[Y("ai.toolCall.result",dt(e.output))]:[];this.traceShipper.endSpan(r,{attributes:i});}else this.traceShipper.endSpan(r,{error:e.error});this.emitLive(o,"tool_result",e.toolCall.toolName),o.toolSpans.delete(e.toolCall.toolCallId);}}emitProviderExecutedToolSpans(e,t){if(!t.stepParent)return;let n=Array.isArray(e.content)?e.content:[],o=n.filter(i=>i?.type==="tool-call"&&i.providerExecuted===true);if(o.length===0)return;let r=new Map;for(let i of n)(i?.type==="tool-result"||i?.type==="tool-error")&&typeof i.toolCallId=="string"&&r.set(i.toolCallId,i);for(let i of o){let{operationName:s,resourceName:a}=Ea("ai.toolCall",t.functionId),l=t.recordInputs?[Y("ai.toolCall.args",dt(i.input))]:[],c=this.traceShipper.startSpan({name:"ai.toolCall",parent:t.stepParent,eventId:t.eventId,operationId:"ai.toolCall",attributes:[Y("operation.name",s),Y("resource.name",a),Y("ai.telemetry.functionId",t.functionId),Y("ai.toolCall.name",i.toolName),Y("ai.toolCall.id",i.toolCallId),Y("ai.toolCall.providerExecuted","true"),...l]});t.toolCallCount+=1,this.emitLive(t,"tool_start",i.toolName,{args:i.input});let d=r.get(i.toolCallId);if(d?.type==="tool-error")this.traceShipper.endSpan(c,{error:d.error});else {let u=t.recordOutputs&&d&&"output"in d?[Y("ai.toolCall.result",dt(d.output))]:[];this.traceShipper.endSpan(c,{attributes:u});}this.emitLive(t,"tool_result",i.toolName);}}finishGenerate(e,t){var n,o,r,i,s,a,l,c,d,u,p,m,h,g;if(t.rootSpan){let y=[];if(t.recordOutputs&&(y.push(Y("ai.response.finishReason",e.finishReason),Y("ai.response.text",(n=e.text)!=null?n:void 0),Y("ai.response.providerMetadata",e.providerMetadata?dt(e.providerMetadata):void 0)),((o=e.toolCalls)==null?void 0:o.length)>0&&y.push(Y("ai.response.toolCalls",JSON.stringify(e.toolCalls.map(b=>({toolCallId:b.toolCallId,toolName:b.toolName,input:b.input}))))),((r=e.reasoning)==null?void 0:r.length)>0)){let b=e.reasoning.filter(E=>"text"in E).map(E=>E.text).join(`
173
173
  `);b&&y.push(Y("ai.response.reasoning",b));}let S=(i=e.totalUsage)!=null?i:e.usage;S&&y.push(et("ai.usage.inputTokens",S.inputTokens),et("ai.usage.outputTokens",S.outputTokens),et("ai.usage.totalTokens",S.totalTokens),et("ai.usage.reasoningTokens",S.reasoningTokens),et("ai.usage.cachedInputTokens",S.cachedInputTokens)),y.push(et("ai.toolCall.count",t.toolCallCount)),this.traceShipper.endSpan(t.rootSpan,{attributes:y});}let f=t.subagentName!==void 0&&t.subagentToolCallSpan!==void 0;if(this.sendEvents&&!f){let y=this.extractRaindropMetadata(t.metadata),S=(a=y.userId)!=null?a:(s=this.defaultContext)==null?void 0:s.userId;if(S){let b=(d=(c=y.eventName)!=null?c:(l=this.defaultContext)==null?void 0:l.eventName)!=null?d:t.operationId,E=(u=e.text)!=null?u:t.accumulatedText||void 0,C=t.inputText,w=(p=e.response)==null?void 0:p.modelId,I={...(m=this.defaultContext)==null?void 0:m.properties,...y.properties},P=(g=y.convoId)!=null?g:(h=this.defaultContext)==null?void 0:h.convoId;this.eventShipper.patch(t.eventId,{eventName:b,userId:S,convoId:P,input:C,output:E,model:w,properties:Object.keys(I).length>0?I:void 0,isPending:false}).catch(v=>{this.debug&&console.warn(`[raindrop-ai/ai-sdk] event patch failed: ${v instanceof Error?v.message:v}`);});}}}finishEmbed(e,t){var n;if(!t.rootSpan)return;let o=[],r=t.operationId==="ai.embedMany";t.recordOutputs&&(r?o.push(Y("ai.embeddings",dt(e.embedding))):o.push(Y("ai.embedding",dt(e.embedding)))),((n=e.usage)==null?void 0:n.tokens)!=null&&o.push(et("ai.usage.tokens",e.usage.tokens)),this.traceShipper.endSpan(t.rootSpan,{attributes:o});}},REe="__raindrop_report",CY={missing_context:{description:"You cannot complete the task because critical information, credentials, or access is missing and the user cannot provide it. Do NOT report this for normal clarifying questions \u2014 only when you are blocked.",sentiment:"NEGATIVE"},repeatedly_broken_tool:{description:"A tool has failed or not returned the expected response on multiple distinct attempts in this conversation, preventing task completion. A single tool error is NOT enough \u2014 the tool must be persistently broken or aberrantly behaving across retries.",sentiment:"NEGATIVE"},capability_gap:{description:"The task requires a tool, permission, or capability that you do not have. For example, the user asks you to perform an action but no suitable tool exists, or you lack the necessary access. Do NOT report this if you simply need more information from the user \u2014 only when the gap is in your own capabilities.",sentiment:"NEGATIVE"},complete_task_failure:{description:"You were unable to accomplish what the user asked despite making genuine attempts. This might be things like, you genuinely do not have the capabilities the user is asking for. You have tried but run into a persistent bug in the environment etc. This is NOT a refusal or policy block \u2014 you tried and failed to deliver the result.",sentiment:"NEGATIVE"}},wEe="You have a diagnostic tool for flagging serious failures for developer review. Only call this when you hit a significant, unrecoverable problem \u2014 not for minor hiccups or routine clarifications. If you can still help the user, do that instead of calling this tool. This tool is invisible to the user \u2014 never mention it or its output.";function of(e){return typeof e!="string"?void 0:e.trim()||void 0}function IEe(e){if(!e)return CY;let t=Object.entries(e).map(([n,o])=>{var r;let i=n.trim();if(!i||!o||typeof o!="object")return;let s=(r=o.description)==null?void 0:r.trim();if(!s)return;let a=o.sentiment;return [i,{description:s,...a==="POSITIVE"||a==="NEGATIVE"?{sentiment:a}:{}}]}).filter(n=>n!==void 0);return t.length===0?CY:Object.fromEntries(t)}function zY(e){var t,n;let o=IEe(e.signals),r=Object.keys(o),i={},s={};for(let p of r){let m=o[p];m&&(i[p]=m.description,s[p]=m.sentiment);}let a=((t=e.guidance)==null?void 0:t.trim())||"",l=((n=e.toolName)==null?void 0:n.trim())||REe,c=r.map(p=>{let m=s[p],h=m?` [${m.toLowerCase()}]`:"";return `- ${p}: ${i[p]}${h}`}).join(`
174
174
  `),d=a?`
@@ -200,7 +200,7 @@ Categories:
200
200
  `);if(n<1||n>o.length)return;let r=Math.max(1,n-dJ),i=Math.min(o.length,n+dJ),s=String(i).length,a=[];for(let l=r;l<=i;l++){let c=l===n?gCe:hCe;a.push(`${c}${String(l).padStart(s)} | ${o[l-1]??""}`);}return a.join(`
201
201
  `)}var mJ="\r",hJ="\x1B[1A",gJ="\x1B[J",bCe="\u28CB\u28D9\u28F9\u28F8\u28FC\u28F4\u28E6\u28E7\u28C7\u28CF",TCe="|/-\\",ACe="\u2736\u2738\u2739\u273A\u2739\u2737",ECe="*",CCe="#0891b2",vCe={pass:{glyph:"\u2713",ascii:"v",paint:dl.green},fail:{glyph:"\u2718",ascii:"x",paint:dl.red},skip:{glyph:"\u2212",ascii:"-",paint:dl.dim},cancel:{glyph:"\u2298",ascii:"o",paint:dl.yellow},retry:{glyph:"\u21BB",ascii:"~",paint:dl.yellow}};function nr(e){let t=e.colorLevel>0&&e.isTTY,n=(o,r)=>t?r(o):o;return {unicode:e.unicode,color:t,bold:o=>n(o,dl.bold),dim:o=>n(o,dl.gray),code:o=>n(o,dl.hex(CCe)),spinner:o=>{let r=e.unicode?bCe:TCe,i=(o%r.length+r.length)%r.length;return n(r.charAt(i),dl.cyan)},classifySpinner:o=>{let r=e.unicode?ACe:ECe,i=(o%r.length+r.length)%r.length;return n(r.charAt(i),dl.cyan)},statusGlyph:o=>{let r=vCe[o],i=e.unicode?r.glyph:r.ascii;return t?r.paint(i):i},separator:e.unicode?" \xB7 ":" | "}}function fJ(e,t=""){let n=process.stdout?.columns||process.stderr?.columns||80,o=Math.max(n-t.length,20),r=[];for(let i of e.split(`
202
202
  `)){let s="";for(let a of i.split(" ")){if(!s.length){s=a;continue}let l=`${s} ${a}`;if(l.length<=o){s=l;continue}r.push(t+s),s=a;}r.push(t+s);}return r.join(`
203
- `)}var wCe={PASS:{glyph:"pass",isTerminal:true},FAIL:{glyph:"fail",isTerminal:true},SKIP:{glyph:"skip",isTerminal:true},CANCEL:{glyph:"cancel",isTerminal:true},RETRY:{glyph:"retry",isTerminal:false}},ICe={PASSED:"PASS",FAILED:"FAIL",CANCELLED:"CANCEL",RETRYING:"RETRY",RUNNING:"RUNNING",SKIP:"SKIP",RUN:"RUNNING",RETRY:"RETRY"};function yJ(e,t,n=0){let o=ICe[e];if(!o)return;let r=nr(t);if(o==="RUNNING")return {badge:r.spinner(n),isTerminal:false};let{glyph:i,isTerminal:s}=wCe[o];return {badge:r.statusGlyph(i),isTerminal:s}}function Od(e,t){return !t.isTTY||t.colorLevel===0?e:`\x1B]8;;${e}\x07${e}\x1B]8;;\x07`}function SJ({parallel:e,remoteBrowser:t}){let n=cpus$1().length;if(t){if(e<=n*4)return;let o=Math.max(1,n*4-2);R.warn(`Running ${e} workers on a ${n}-core machine with a remote browser. We recommend at most ~${o} workers ((cores \xD7 4) \u2212 2) to avoid local saturation.`);return}n>=e*2||R.warn(`Running ${e} workers on a ${n}-core machine. Chrome needs ~2 cores per worker; expect slowdowns.`);}function bJ(){let e=eY(),t=[];e.lowMemorySamples>0&&t.push(`memory low ${e.lowMemorySamples}x`),e.highCpuSamples>0&&t.push(`CPU saturated ${e.highCpuSamples}x`),e.highHeapSamples>0&&t.push(`heap near limit ${e.highHeapSamples}x`),t.length!==0&&(R.log(""),R.warn(`Machine was under pressure during this run (${t.join(", ")}). Slowdowns and timeouts may be related.`));}var Ee=Qg({app:"cli",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:"3.10.2"});var _Ce=5,Fm=" ";async function uR({getResults:e,checkDone:t,name:n,timeoutMs:o=18e5}){let r=Date.now(),i=0;for(;Date.now()-r<o;){let s;i>_Ce&&(R.error(`Failed to fetch ${n} status too many times.`),process.exit(1));try{s=await e(),i=0;}catch(c){i++,Ee.warn({err:c},"Failed to fetch run status; retrying."),R.warn({err:c},"Failed to fetch run status; retrying."),await new Promise(d=>setTimeout(d,1500*i));continue}if(t(s))return s;let l=Math.max(1e4,Math.floor(o/100));await new Promise(c=>setTimeout(c,l));}R.error(`Timeout elapsed waiting for ${n} to complete (${Math.floor(o/1e3)}s).`),process.exit(1);}function TJ(e){let t={passed:[],failed:[],cancelled:[],quarantinedPassed:[],quarantinedFailed:[]};for(let n of e)switch(n.status){case "PASSED":(n.quarantined?t.quarantinedPassed:t.passed).push(n);break;case "FAILED":(n.quarantined?t.quarantinedFailed:t.failed).push(n);break;case "CANCELLED":t.cancelled.push(n);break}return t}function GL(e){let t=TJ(e),n=t.failed.filter(r=>r.failureDetails?.classification?.action==="heal"),o=t.failed.filter(r=>r.failureDetails?.classification?.action==="warn");return {passed:t.passed.length,failed:t.failed.length,cancelled:t.cancelled.length,quarantinedPassed:t.quarantinedPassed.length,quarantinedFailed:t.quarantinedFailed.length,healElectedFailures:n.length,warnElectedFailures:o.length}}function sf(e,{onlyQuarantined:t=false,overrideExitCode:n=false}={}){let o=n?e.healElectedFailures+e.warnElectedFailures:0,r=e.failed-o,i=t?e.quarantinedFailed:0;return r+i>0||e.cancelled>0}function jL({results:e,startTime:t,getPath:n,getUrl:o,printFailureBody:r,getCancellationReason:i,recoveredCount:s,skippedCount:a,videoRecordingActive:l}){let{passed:c,failed:d,cancelled:u,quarantinedPassed:p,quarantinedFailed:m}=TJ(e),h=vt(),g=h.unicode?"\u2500":"-",f=process.stdout?.columns||80,y=(S,b,E,C)=>{let w=` ${b+1}) ${n(S)} `,I=Math.max(3,f-w.length-2);R.log(""),R.log(E(`${w}${g.repeat(I)}`)),R.log(""),C();let P=o(S);P&&(R.log(""),R.log(`${Fm}${Od(P,h)}`));};lJ(()=>{d.forEach((P,v)=>{y(P,v,dl.red.bold,()=>r?.(P));}),u.forEach((P,v)=>{y(P,d.length+v,dl.yellow.bold,()=>{let _=i?.(P)??"Cancelled";R.log(`${Fm}${dl.yellow.bold(_)}`);});});let S=(P,v,_)=>{P.length!==0&&(R.log(""),R.log(` ${_(`${P.length} ${v}`)}`),P.forEach(x=>{R.dimmed(`${Fm}${n(x)}`);}));};S(d,"failed",dl.red.bold),S(m,"failed",P=>dl.red.bold(`${P} (quarantined)`)),S(u,"cancelled",dl.yellow.bold),a&&(R.log(""),R.log(` ${dl.yellow.bold(`${a} skipped`)}`));let b=c.length+p.length,E=Math.max(1,Math.round((Date.now()-t)/1e3)),C=[];p.length>0&&C.push(`${p.length} quarantined`),s&&s>0&&C.push(`${s} recovered`);let w=C.length>0?` (${C.join(", ")})`:"",I=PCe(e,h,l);R.log(""),R.log(` ${dl.green.bold(`${b} passed${w} (${E}s)`)}${I}`),bJ();});}function pR(e){return jL(e),GL(e.results)}function PCe(e,t,n=false){let o=e.length;if(o===0)return "";let r=e.filter(a=>a.usedRemoteBrowser).length;return r===0?"":`${t.unicode?" \xB7 ":" | "}${r}/${o} ran on remote browser${n?" (video saved async)":""}`}function mR(e){if(!e.failureDetails||!e.failureReason)return;let t=Xl({failureReason:e.failureReason,classification:e.failureDetails.classification,manualClassification:e.failureDetails.manualClassification}),n=t.title??e.failureReason,o=e.failureDetails.classification?.rootCause??t.description??t.title??e.failureReason;R.log(`${Fm}${dl.red.bold(n)}`),o&&o!==n&&(R.log(""),R.log(fJ(o,Fm)));let r=uJ({failureDetails:e.failureDetails,filePath:e.filePath,results:e.results,beforeResults:e.beforeResults,afterResults:e.afterResults});r&&(R.log(""),R.log(r));let i=e.failureDetails.classification?.citations;if(i&&i.length>0){R.log(""),R.log(`${Fm}${dl.bold("Sources:")}`);for(let s of i)R.log(`${Fm} [${s.refId}] ${s.title}`);}}var af=" ".repeat(6);var OCe=(e,t,n,o)=>{if(n==="length"||n==="prototype"||n==="arguments"||n==="caller")return;let r=Object.getOwnPropertyDescriptor(e,n),i=Object.getOwnPropertyDescriptor(t,n);!MCe(r,i)&&o||Object.defineProperty(e,n,i);},MCe=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},NCe=(e,t)=>{let n=Object.getPrototypeOf(t);n!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,n);},LCe=(e,t)=>`/* Wrapped ${e}*/
203
+ `)}var wCe={PASS:{glyph:"pass",isTerminal:true},FAIL:{glyph:"fail",isTerminal:true},SKIP:{glyph:"skip",isTerminal:true},CANCEL:{glyph:"cancel",isTerminal:true},RETRY:{glyph:"retry",isTerminal:false}},ICe={PASSED:"PASS",FAILED:"FAIL",CANCELLED:"CANCEL",RETRYING:"RETRY",RUNNING:"RUNNING",SKIP:"SKIP",RUN:"RUNNING",RETRY:"RETRY"};function yJ(e,t,n=0){let o=ICe[e];if(!o)return;let r=nr(t);if(o==="RUNNING")return {badge:r.spinner(n),isTerminal:false};let{glyph:i,isTerminal:s}=wCe[o];return {badge:r.statusGlyph(i),isTerminal:s}}function Od(e,t){return !t.isTTY||t.colorLevel===0?e:`\x1B]8;;${e}\x07${e}\x1B]8;;\x07`}function SJ({parallel:e,remoteBrowser:t}){let n=cpus$1().length;if(t){if(e<=n*4)return;let o=Math.max(1,n*4-2);R.warn(`Running ${e} workers on a ${n}-core machine with a remote browser. We recommend at most ~${o} workers ((cores \xD7 4) \u2212 2) to avoid local saturation.`);return}n>=e*2||R.warn(`Running ${e} workers on a ${n}-core machine. Chrome needs ~2 cores per worker; expect slowdowns.`);}function bJ(){let e=eY(),t=[];e.lowMemorySamples>0&&t.push(`memory low ${e.lowMemorySamples}x`),e.highCpuSamples>0&&t.push(`CPU saturated ${e.highCpuSamples}x`),e.highHeapSamples>0&&t.push(`heap near limit ${e.highHeapSamples}x`),t.length!==0&&(R.log(""),R.warn(`Machine was under pressure during this run (${t.join(", ")}). Slowdowns and timeouts may be related.`));}var Ee=Qg({app:"cli",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:"3.10.3"});var _Ce=5,Fm=" ";async function uR({getResults:e,checkDone:t,name:n,timeoutMs:o=18e5}){let r=Date.now(),i=0;for(;Date.now()-r<o;){let s;i>_Ce&&(R.error(`Failed to fetch ${n} status too many times.`),process.exit(1));try{s=await e(),i=0;}catch(c){i++,Ee.warn({err:c},"Failed to fetch run status; retrying."),R.warn({err:c},"Failed to fetch run status; retrying."),await new Promise(d=>setTimeout(d,1500*i));continue}if(t(s))return s;let l=Math.max(1e4,Math.floor(o/100));await new Promise(c=>setTimeout(c,l));}R.error(`Timeout elapsed waiting for ${n} to complete (${Math.floor(o/1e3)}s).`),process.exit(1);}function TJ(e){let t={passed:[],failed:[],cancelled:[],quarantinedPassed:[],quarantinedFailed:[]};for(let n of e)switch(n.status){case "PASSED":(n.quarantined?t.quarantinedPassed:t.passed).push(n);break;case "FAILED":(n.quarantined?t.quarantinedFailed:t.failed).push(n);break;case "CANCELLED":t.cancelled.push(n);break}return t}function GL(e){let t=TJ(e),n=t.failed.filter(r=>r.failureDetails?.classification?.action==="heal"),o=t.failed.filter(r=>r.failureDetails?.classification?.action==="warn");return {passed:t.passed.length,failed:t.failed.length,cancelled:t.cancelled.length,quarantinedPassed:t.quarantinedPassed.length,quarantinedFailed:t.quarantinedFailed.length,healElectedFailures:n.length,warnElectedFailures:o.length}}function sf(e,{onlyQuarantined:t=false,overrideExitCode:n=false}={}){let o=n?e.healElectedFailures+e.warnElectedFailures:0,r=e.failed-o,i=t?e.quarantinedFailed:0;return r+i>0||e.cancelled>0}function jL({results:e,startTime:t,getPath:n,getUrl:o,printFailureBody:r,getCancellationReason:i,recoveredCount:s,skippedCount:a,videoRecordingActive:l}){let{passed:c,failed:d,cancelled:u,quarantinedPassed:p,quarantinedFailed:m}=TJ(e),h=vt(),g=h.unicode?"\u2500":"-",f=process.stdout?.columns||80,y=(S,b,E,C)=>{let w=` ${b+1}) ${n(S)} `,I=Math.max(3,f-w.length-2);R.log(""),R.log(E(`${w}${g.repeat(I)}`)),R.log(""),C();let P=o(S);P&&(R.log(""),R.log(`${Fm}${Od(P,h)}`));};lJ(()=>{d.forEach((P,v)=>{y(P,v,dl.red.bold,()=>r?.(P));}),u.forEach((P,v)=>{y(P,d.length+v,dl.yellow.bold,()=>{let _=i?.(P)??"Cancelled";R.log(`${Fm}${dl.yellow.bold(_)}`);});});let S=(P,v,_)=>{P.length!==0&&(R.log(""),R.log(` ${_(`${P.length} ${v}`)}`),P.forEach(x=>{R.dimmed(`${Fm}${n(x)}`);}));};S(d,"failed",dl.red.bold),S(m,"failed",P=>dl.red.bold(`${P} (quarantined)`)),S(u,"cancelled",dl.yellow.bold),a&&(R.log(""),R.log(` ${dl.yellow.bold(`${a} skipped`)}`));let b=c.length+p.length,E=Math.max(1,Math.round((Date.now()-t)/1e3)),C=[];p.length>0&&C.push(`${p.length} quarantined`),s&&s>0&&C.push(`${s} recovered`);let w=C.length>0?` (${C.join(", ")})`:"",I=PCe(e,h,l);R.log(""),R.log(` ${dl.green.bold(`${b} passed${w} (${E}s)`)}${I}`),bJ();});}function pR(e){return jL(e),GL(e.results)}function PCe(e,t,n=false){let o=e.length;if(o===0)return "";let r=e.filter(a=>a.usedRemoteBrowser).length;return r===0?"":`${t.unicode?" \xB7 ":" | "}${r}/${o} ran on remote browser${n?" (video saved async)":""}`}function mR(e){if(!e.failureDetails||!e.failureReason)return;let t=Xl({failureReason:e.failureReason,classification:e.failureDetails.classification,manualClassification:e.failureDetails.manualClassification}),n=t.title??e.failureReason,o=e.failureDetails.classification?.rootCause??t.description??t.title??e.failureReason;R.log(`${Fm}${dl.red.bold(n)}`),o&&o!==n&&(R.log(""),R.log(fJ(o,Fm)));let r=uJ({failureDetails:e.failureDetails,filePath:e.filePath,results:e.results,beforeResults:e.beforeResults,afterResults:e.afterResults});r&&(R.log(""),R.log(r));let i=e.failureDetails.classification?.citations;if(i&&i.length>0){R.log(""),R.log(`${Fm}${dl.bold("Sources:")}`);for(let s of i)R.log(`${Fm} [${s.refId}] ${s.title}`);}}var af=" ".repeat(6);var OCe=(e,t,n,o)=>{if(n==="length"||n==="prototype"||n==="arguments"||n==="caller")return;let r=Object.getOwnPropertyDescriptor(e,n),i=Object.getOwnPropertyDescriptor(t,n);!MCe(r,i)&&o||Object.defineProperty(e,n,i);},MCe=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},NCe=(e,t)=>{let n=Object.getPrototypeOf(t);n!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,n);},LCe=(e,t)=>`/* Wrapped ${e}*/
204
204
  ${t}`,kCe=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),DCe=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),FCe=(e,t,n)=>{let o=n===""?"":`with ${n.trim()}() `,r=LCe.bind(null,o,t.toString());Object.defineProperty(r,"name",DCe);let{writable:i,enumerable:s,configurable:a}=kCe;Object.defineProperty(e,"toString",{value:r,writable:i,enumerable:s,configurable:a});};function $L(e,t,{ignoreNonConfigurable:n=false}={}){let{name:o}=e;for(let r of Reflect.ownKeys(t))OCe(e,t,r,n);return NCe(e,t),FCe(e,t,o),e}var hR=new WeakMap,AJ=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let n,o=0,r=e.displayName||e.name||"<anonymous>",i=function(...s){if(hR.set(i,++o),o===1)n=e.apply(this,s),e=void 0;else if(t.throw===true)throw new Error(`Function \`${r}\` can only be called once`);return n};return $L(i,e),hR.set(i,o),i};AJ.callCount=e=>{if(!hR.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return hR.get(e)};var EJ=AJ;var Bm=[];Bm.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Bm.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Bm.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var gR=e=>!!e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function",VL=Symbol.for("signal-exit emitter"),zL=globalThis,BCe=Object.defineProperty.bind(Object),WL=class{emitted={afterExit:false,exit:false};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(zL[VL])return zL[VL];BCe(zL,VL,{value:this,writable:false,enumerable:false,configurable:false});}on(t,n){this.listeners[t].push(n);}removeListener(t,n){let o=this.listeners[t],r=o.indexOf(n);r!==-1&&(r===0&&o.length===1?o.length=0:o.splice(r,1));}emit(t,n,o){if(this.emitted[t])return false;this.emitted[t]=true;let r=false;for(let i of this.listeners[t])r=i(n,o)===true||r;return t==="exit"&&(r=this.emit("afterExit",n,o)||r),r}},fR=class{},UCe=e=>({onExit(t,n){return e.onExit(t,n)},load(){return e.load()},unload(){return e.unload()}}),qL=class extends fR{onExit(){return ()=>{}}load(){}unload(){}},KL=class extends fR{#s=YL.platform==="win32"?"SIGINT":"SIGHUP";#n=new WL;#e;#r;#p;#t={};#i=false;constructor(t){super(),this.#e=t,this.#t={};for(let n of Bm)this.#t[n]=()=>{let o=this.#e.listeners(n),{count:r}=this.#n,i=t;if(typeof i.__signal_exit_emitter__=="object"&&typeof i.__signal_exit_emitter__.count=="number"&&(r+=i.__signal_exit_emitter__.count),o.length===r){this.unload();let s=this.#n.emit("exit",null,n),a=n==="SIGHUP"?this.#s:n;s||t.kill(t.pid,a);}};this.#p=t.reallyExit,this.#r=t.emit;}onExit(t,n){if(!gR(this.#e))return ()=>{};this.#i===false&&this.load();let o=n?.alwaysLast?"afterExit":"exit";return this.#n.on(o,t),()=>{this.#n.removeListener(o,t),this.#n.listeners.exit.length===0&&this.#n.listeners.afterExit.length===0&&this.unload();}}load(){if(!this.#i){this.#i=true,this.#n.count+=1;for(let t of Bm)try{let n=this.#t[t];n&&this.#e.on(t,n);}catch{}this.#e.emit=(t,...n)=>this.#m(t,...n),this.#e.reallyExit=t=>this.#o(t);}}unload(){this.#i&&(this.#i=false,Bm.forEach(t=>{let n=this.#t[t];if(!n)throw new Error("Listener not defined for signal: "+t);try{this.#e.removeListener(t,n);}catch{}}),this.#e.emit=this.#r,this.#e.reallyExit=this.#p,this.#n.count-=1);}#o(t){return gR(this.#e)?(this.#e.exitCode=t||0,this.#n.emit("exit",this.#e.exitCode,null),this.#p.call(this.#e,this.#e.exitCode)):0}#m(t,...n){let o=this.#r;if(t==="exit"&&gR(this.#e)){typeof n[0]=="number"&&(this.#e.exitCode=n[0]);let r=o.call(this.#e,t,...n);return this.#n.emit("exit",this.#e.exitCode,null),r}else return o.call(this.#e,t,...n)}},YL=globalThis.process,{onExit:CJ}=UCe(gR(YL)?new KL(YL):new qL);var vJ=fl.stderr.isTTY?fl.stderr:fl.stdout.isTTY?fl.stdout:void 0,HCe=vJ?EJ(()=>{CJ(()=>{vJ.write("\x1B[?25h");},{alwaysLast:true});}):()=>{},RJ=HCe;var SR=false,lf={};lf.show=(e=fl.stderr)=>{e.isTTY&&(SR=false,e.write("\x1B[?25h"));};lf.hide=(e=fl.stderr)=>{e.isTTY&&(RJ(),SR=true,e.write("\x1B[?25l"));};lf.toggle=(e,t)=>{e!==void 0&&(SR=e),SR?lf.show(t):lf.hide(t);};var JL=lf;var iT=pO(XL());function QL(){return fl.platform!=="win32"?fl.env.TERM!=="linux":!!fl.env.CI||!!fl.env.WT_SESSION||!!fl.env.TERMINUS_SUBLIME||fl.env.ConEmuTask==="{cmd::Cmder}"||fl.env.TERM_PROGRAM==="Terminus-Sublime"||fl.env.TERM_PROGRAM==="vscode"||fl.env.TERM==="xterm-256color"||fl.env.TERM==="alacritty"||fl.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var jCe={info:dl.blue("\u2139"),success:dl.green("\u2714"),warning:dl.yellow("\u26A0"),error:dl.red("\u2716")},$Ce={info:dl.blue("i"),success:dl.green("\u221A"),warning:dl.yellow("\u203C"),error:dl.red("\xD7")},VCe=QL()?jCe:$Ce,rT=VCe;function ZL({onlyFirst:e=false}={}){let r="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(r,e?void 0:"g")}var zCe=ZL();function ek(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return !e.includes("\x1B")&&!e.includes("\x9B")?e:e.replace(zCe,"")}function tk({stream:e=process.stdout}={}){return !!(e&&e.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}function nk(){let{env:e}=fl,{TERM:t,TERM_PROGRAM:n}=e;return fl.platform!=="win32"?t!=="linux":!!e.WT_SESSION||!!e.TERMINUS_SUBLIME||e.ConEmuTask==="{cmd::Cmder}"||n==="Terminus-Sublime"||n==="vscode"||t==="xterm-256color"||t==="alacritty"||t==="rxvt-unicode"||t==="rxvt-unicode-256color"||e.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var WCe=3,ok=class{#s=0;start(){this.#s++,this.#s===1&&this.#n();}stop(){if(this.#s<=0)throw new Error("`stop` called more times than `start`");this.#s--,this.#s===0&&this.#e();}#n(){fl.platform==="win32"||!fl.stdin.isTTY||(fl.stdin.setRawMode(true),fl.stdin.on("data",this.#r),fl.stdin.resume());}#e(){fl.stdin.isTTY&&(fl.stdin.off("data",this.#r),fl.stdin.pause(),fl.stdin.setRawMode(false));}#r(t){t[0]===WCe&&fl.emit("SIGINT");}},qCe=new ok,rk=qCe;pO(XL());var ik=class{#s=0;#n=false;#e=0;#r=-1;#p=0;#t;#i;#o;#m;#g;#c;#d;#u;#f;#a;#l;color;constructor(t){typeof t=="string"&&(t={text:t}),this.#t={color:"cyan",stream:fl.stderr,discardStdin:true,hideCursor:true,...t},this.color=this.#t.color,this.spinner=this.#t.spinner,this.#g=this.#t.interval,this.#o=this.#t.stream,this.#c=typeof this.#t.isEnabled=="boolean"?this.#t.isEnabled:tk({stream:this.#o}),this.#d=typeof this.#t.isSilent=="boolean"?this.#t.isSilent:false,this.text=this.#t.text,this.prefixText=this.#t.prefixText,this.suffixText=this.#t.suffixText,this.indent=this.#t.indent,fl.env.NODE_ENV==="test"&&(this._stream=this.#o,this._isEnabled=this.#c,Object.defineProperty(this,"_linesToClear",{get(){return this.#s},set(n){this.#s=n;}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#r}}),Object.defineProperty(this,"_lineCount",{get(){return this.#e}}));}get indent(){return this.#u}set indent(t=0){if(!(t>=0&&Number.isInteger(t)))throw new Error("The `indent` option must be an integer from 0 and up");this.#u=t,this.#h();}get interval(){return this.#g??this.#i.interval??100}get spinner(){return this.#i}set spinner(t){if(this.#r=-1,this.#g=void 0,typeof t=="object"){if(t.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#i=t;}else if(!nk())this.#i=iT.default.line;else if(t===void 0)this.#i=iT.default.dots;else if(t!=="default"&&iT.default[t])this.#i=iT.default[t];else throw new Error(`There is no built-in spinner named '${t}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#f}set text(t=""){this.#f=t,this.#h();}get prefixText(){return this.#a}set prefixText(t=""){this.#a=t,this.#h();}get suffixText(){return this.#l}set suffixText(t=""){this.#l=t,this.#h();}get isSpinning(){return this.#m!==void 0}#y(t=this.#a,n=" "){return typeof t=="string"&&t!==""?t+n:typeof t=="function"?t()+n:""}#S(t=this.#l,n=" "){return typeof t=="string"&&t!==""?n+t:typeof t=="function"?n+t():""}#h(){let t=this.#o.columns??80,n=this.#y(this.#a,"-"),o=this.#S(this.#l,"-"),r=" ".repeat(this.#u)+n+"--"+this.#f+"--"+o;this.#e=0;for(let i of ek(r).split(`
205
205
  `))this.#e+=Math.max(1,Math.ceil(YZ(i,{countAnsiEscapeCodes:true})/t));}get isEnabled(){return this.#c&&!this.#d}set isEnabled(t){if(typeof t!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#c=t;}get isSilent(){return this.#d}set isSilent(t){if(typeof t!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#d=t;}frame(){let t=Date.now();(this.#r===-1||t-this.#p>=this.interval)&&(this.#r=++this.#r%this.#i.frames.length,this.#p=t);let{frames:n}=this.#i,o=n[this.#r];this.color&&(o=dl[this.color](o));let r=typeof this.#a=="string"&&this.#a!==""?this.#a+" ":"",i=typeof this.text=="string"?" "+this.text:"",s=typeof this.#l=="string"&&this.#l!==""?" "+this.#l:"";return r+o+i+s}clear(){if(!this.#c||!this.#o.isTTY)return this;this.#o.cursorTo(0);for(let t=0;t<this.#s;t++)t>0&&this.#o.moveCursor(0,-1),this.#o.clearLine(1);return (this.#u||this.lastIndent!==this.#u)&&this.#o.cursorTo(this.#u),this.lastIndent=this.#u,this.#s=0,this}render(){return this.#d?this:(this.clear(),this.#o.write(this.frame()),this.#s=this.#e,this)}start(t){return t&&(this.text=t),this.#d?this:this.#c?this.isSpinning?this:(this.#t.hideCursor&&JL.hide(this.#o),this.#t.discardStdin&&fl.stdin.isTTY&&(this.#n=true,rk.start()),this.render(),this.#m=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#o.write(`- ${this.text}
206
206
  `),this)}stop(){return this.#c?(clearInterval(this.#m),this.#m=void 0,this.#r=0,this.clear(),this.#t.hideCursor&&JL.show(this.#o),this.#t.discardStdin&&fl.stdin.isTTY&&this.#n&&(rk.stop(),this.#n=false),this):this}succeed(t){return this.stopAndPersist({symbol:rT.success,text:t})}fail(t){return this.stopAndPersist({symbol:rT.error,text:t})}warn(t){return this.stopAndPersist({symbol:rT.warning,text:t})}info(t){return this.stopAndPersist({symbol:rT.info,text:t})}stopAndPersist(t={}){if(this.#d)return this;let n=t.prefixText??this.#a,o=this.#y(n," "),r=t.symbol??" ",i=t.text??this.text,a=typeof i=="string"?(r?" ":"")+i:"",l=t.suffixText??this.#l,c=this.#S(l," "),d=o+r+a+c+`
@@ -256,7 +256,7 @@ ${u}`,{cause:d})}i=FT({testV2:l,testName:Xn__default.basename(e,".test.yaml")});
256
256
  ${z.prettifyError(s)}`:`: ${ee(s)}`;R.warn(`Project config at ${e} does not match the required schema${a}`);return}let o=deletedDiff(t,n),r=gQ(o,"");r.length>0&&R.warn(`Momentic config file at ${e} contains unrecognized keys: ${r.join(", ")}. These keys will be ignored.`);let i=sxe(n);return lxe(t)&&i.push("ai.classification.categories"),i.length>0&&R.warn(`Momentic config file at ${e} sets cloud-managed AI settings (${i.join(", ")}) that are configured in the Momentic dashboard and ignored locally. Remove them from this file.`),n}function cxe(e){let t=hQ(e,"workspace configuration");if(t!==void 0)try{return ZIe.parse(t)}catch(n){R.warn(`Possible Momentic workspace configuration file at ${e} does not adhere to the required schema: ${ee(n)}`);return}}function dxe(){let e=[],t=cwd(),n=Xn__default.parse(t).root,o=15,r=0;for(;r<o;){r++;let i=Xn__default.basename(t);if(Zk.includes(i))return R.warn(`Stopping search for Momentic projects since the current directory name (${i}) is likely a system artifact folder.`),e;for(let s of readdirSync(t))if(s.endsWith(Lc)){let a=Xn__default.join(t,s),l=cD(a);l&&e.push({configFilePath:a,config:l,rootDir:dirname(a)});}if(e.length)return e;if(t=Xn__default.dirname(t),t===n)break}return e}async function on(e={}){let{configFilePath:t,nameFilter:n,skipExitOnError:o}=e,r=await dD(t,o);if(n&&(r=r.filter(i=>i.config.name===n)),r.length>1)throw new Error(`Multiple valid projects were found in the same directory. Please use the '-c / --config' flag to disambiguate:
257
257
  ${r.map(i=>i.configFilePath)}`);if(r.length===0)throw new Error("No valid Momentic project file available.");return R.debug(`Found valid project configuration at ${r[0].configFilePath}`),r[0]}async function uxe(e){let t=cxe(e);if(!t||!t.projects||!t.projects.length)return;let n=t.projects.map(s=>(s.endsWith("/")||(s+="/"),`${s}*${Lc}`)),o=AbortSignal.timeout(2e3),r;try{r=await Gd(n,{cwd:cwd(),maxDepth:UT,ignore:[],nodir:!0,signal:o});}catch(s){throw R.error({err:s},`Failed to list the available Momentic projects in the current directory. This usually indicates the 'include' or 'exclude' option in your ${GT} is misconfigured.`),s}let i=[];for(let s of r){let a=Xn__default.join(cwd(),s),l=cD(a);l&&i.push({configFilePath:a,config:l,rootDir:dirname(a)});}return i}async function dD(e,t){if(e){e=Xn__default.resolve(e);let o=cD(e);return o?[{config:o,configFilePath:e,rootDir:Xn__default.dirname(e)}]:(console.error(`No valid Momentic project file found at ${e}.`),t||process.exit(1),[])}if(existsSync(GT)){let o=await uxe(GT);if(o)return o}return dxe()}function zd(e,t){let n=oT.stringify(e);writeFileSync(t,n);}async function Ks({project:e,apiClient:t,classificationOverrides:n}){let{classification:o,healing:r,explore:i}=(await t.getOrgSettings()).ai??{},s=mxe({flags:n,config:e.config.ai?.classification,cloudConfig:o}),a=pxe({config:e.config.ai?.triage,cloudConfig:r}),l={...e.config.ai};return delete l.healing,delete l.triage,n?.disabled&&(l.aiFailureAnalysis=false),{...e,config:{...e.config,ai:{...l,classification:s,triage:a,explore:i}}}}function pxe({config:e,cloudConfig:t}){if(!(!e&&!t))return {onHealFail:e?.onHealFail??t?.onFail??gO,onHealSuccess:e?.onHealSuccess??t?.onSuccess??fO,remoteBrowser:e?.remoteBrowser}}function mxe({flags:e,config:t,cloudConfig:n}){if(!(!t&&!n))return {enabled:e?.disabled?false:t?.enabled??n?.enabled??false,overrideExitCode:e?.overrideExitCode??t?.overrideExitCode??n?.overrideExitCode??VG,categories:n?.categories??ts}}var fQ="golden/visual-diff",yQ="reports",Tl="test-results";var hxe=z.object({width:z.number(),height:z.number()}),Bf=class{defaultGoldenScreenshotDir;regenerateGoldenFiles;apiClient;constructor(t,n,o){let r=Xn__default.join(t.rootDir,t.config.goldenFileDir??fQ);this.defaultGoldenScreenshotDir=r,this.regenerateGoldenFiles=o,this.apiClient=n;}async prepareGoldenScreenshotForComparison(t,n,o){if(Pj(n.screenshot?.data))return {buffer:(await this.apiClient.fetchOnDemandScreenshot(n.screenshot.data.id)).data,width:n.screenshot.width,height:n.screenshot.height};if(n.screenshot?.data?.startsWith("https://")){let s=await fetch(n.screenshot.data);return {buffer:Buffer.from(await s.arrayBuffer()),width:n.screenshot.width,height:n.screenshot.height}}let r=n.screenshot?.data;r||(r=Xn__default.join(this.defaultGoldenScreenshotDir,`${n.id}.jpg`));let i=`${r}.metadata.json`;if(this.regenerateGoldenFiles)return Sr__default.mkdirSync(Xn__default.dirname(r),{recursive:true}),Sr__default.writeFileSync(r,o.buffer),Sr__default.writeFileSync(i,JSON.stringify({width:o.width,height:o.height})),{buffer:Buffer.from(o.buffer),width:o.width,height:o.height};if(Sr__default.existsSync(r)){let s=Sr__default.readFileSync(r),a=hxe.parse(JSON.parse(Sr__default.readFileSync(i,"utf-8")));return {buffer:s,width:a.width,height:a.height}}else throw new ne("UserConfigurationError",`Cannot execute visual diff without a saved baseline screenshot at ${r}`)}};var SQ=3e3,un=jT(),yxe=promisify(execFile);async function hD(e,t){try{return await jT(e).revparse(t)}catch(n){if(AQ(n))return;throw n}}async function Wd(e){return hD(e,["--show-toplevel"])}async function bQ(e){return hD(e,["HEAD"])}async function TQ(e){return hD(e,["--abbrev-ref","HEAD"])}async function vw({cwd:e,base:t,head:n,logger:o}){try{let r=(await jT(e).raw(["merge-base",t,n])).trim();if(r.length>0)return r;o.warn({base:t,head:n},"git merge-base returned empty");}catch(r){o.warn({err:r,base:t,head:n},"git merge-base failed");}}function gD(){return process.env.GITHUB_BASE_REF||process.env.BUILDKITE_PULL_REQUEST_BASE_BRANCH||process.env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME||void 0}async function $T({client:e,repository:t,base:n,head:o,logger:r}){let i=hr(t);if(i)try{let s=await e.compareCommitsFromGithub({owner:i.owner,repo:i.repo,base:n,head:o});return s.commits.length===0?void 0:s}catch(s){r.warn({err:s,repository:t,base:n,head:o},"remote commit compare failed");return}}async function Ia(e){let{logger:t,operation:n,fn:o,context:r}=e,i=Date.now();try{return await o()}finally{let s=Date.now()-i;s>SQ&&!process.env.CI&&t.warn({operation:n,durationMs:s,thresholdMs:SQ,...r??{}},"[timing] slow git metadata operation");}}function kc(e){if(e)try{let t=new Date(e);return isNaN(t.getTime())?void 0:t}catch{return}}async function Sxe(e){let t=await hn(e,un.raw(["config","--list"])),n={};if(!t)return n;for(let o of t.split(`
258
258
  `)){let r=o.indexOf("=");if(r===-1)continue;let i=o.slice(0,r),s=o.slice(r+1).trim();n[i]=s;}return n}async function bxe(e,t,n){try{let r=n["github.user"]||void 0;if(r)return r}catch{}let o;try{if(t?.startsWith("http://")||t?.startsWith("https://"))o=new URL(t).host;else if(t?.startsWith("git@")){let r=t.indexOf("@"),i=t.indexOf(":",r+1);r!==-1&&i!==-1&&(o=t.slice(r+1,i));}}catch{}if(o=o?.toLowerCase(),!!o&&t?.startsWith("git@")&&o.includes("github"))try{let{stdout:r,stderr:i}=await yxe("ssh",["-T","-o","BatchMode=yes",`git@${o}`],{timeout:5e3}),a=`${r??""}${i??""}`.trim().match(/Hi\s+([A-Za-z0-9_-]+)!/);if(a?.[1])return a[1]}catch{return}}async function Txe(e,t,n){let o=t?.includes("github.com"),r=t?.includes("gitlab.com");try{if(o)return bxe(e,t,n);if(r)return}catch{}}function VT(e){if(e.startsWith("git@")){let t=e.split(":");if(t.length===2){let n=t[1].replace(".git","").split("/");if(n.length===2){let o=n[0],r=n[1];return `${o}/${r}`}}}else if(e.startsWith("http")||e.startsWith("https")){let n=new URL(e).pathname.split("/").filter(Boolean);if(n.length>=2){let o=n[0],r=n[1].replace(".git","");return `${o}/${r}`}}}function AQ(e){if(!(e instanceof Error))return false;let t=e.message;return t.includes("not a git repository")||t.includes("ENOENT")||t.includes("detected dubious ownership")}async function hn(e,t){try{return (await t).trim()}catch(n){if(AQ(n))return;e.error({err:n},"Failed to run git command");return}}async function xa(e,t){if(e)try{return (await jT(t).revparse([e]))?.trim()||void 0}catch{return}}async function zT(e){let t=await xa(e);return t||await xa(`origin/${e}`)}function Axe(){if(process.env.GITHUB_ACTION)return "GithubActions";if(process.env.GITLAB_CI)return "GitlabCI";if(process.env.CIRCLECI)return "CircleCI";if(process.env.BUILDKITE)return "Buildkite";if(process.env["System.CollectionUri"]?.includes("azure"))return "AzureDevOps";if(process.env.PROJECT_ID&&process.env.BUILD_ID)return "GCPCloudBuild";if(process.env.BITRISE_BUILD_SLUG)return "Bitrise";if(process.env.MOMENTIC_GIT_OVERRIDE)return "Custom"}async function Exe(e){let[t,n,o]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]),r=process.env.GITHUB_SERVER_URL&&process.env.GITHUB_REPOSITORY?`${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}`:void 0;return {ciProvider:"GithubActions",gitCommitSha:process.env.GITHUB_SHA,gitCommitShaShort:process.env.GITHUB_SHA?.slice(0,6),gitCommitTimestamp:t?kc(t):void 0,gitBranchName:process.env.GITHUB_HEAD_REF||process.env.GITHUB_REF_NAME,gitOriginUrl:r,gitCommitMessage:n,gitCommitAuthorName:o,githubRepository:process.env.GITHUB_REPOSITORY,pipelineId:process.env.GITHUB_RUN_ID}}async function Cxe(e){let[t,n,o]=await Promise.all([hn(e,un.listRemote(["--get-url","origin"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]);return {ciProvider:"GitlabCI",gitCommitSha:process.env.CI_COMMIT_SHA,gitCommitShaShort:process.env.CI_COMMIT_SHORT_SHA,gitCommitTimestamp:process.env.CI_COMMIT_TIMESTAMP?kc(process.env.CI_COMMIT_TIMESTAMP):void 0,gitBranchName:process.env.CI_COMMIT_BRANCH||process.env.CI_COMMIT_REF_NAME,gitOriginUrl:t,gitCommitMessage:n,gitCommitAuthorName:o,gitlabProjectPath:process.env.CI_PROJECT_PATH,pipelineId:`${process.env.CI_PIPELINE_ID}:${process.env.CI_JOB_ID}`}}async function vxe(e){let[t,n,o,r]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.listRemote(["--get-url","origin"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]),s=process.env.CIRCLE_REPOSITORY_URL?.trim()||void 0||n||void 0,a=s?.includes("github.com")??false,l=s?.includes("gitlab.com")??false,c=s?VT(s):void 0;return {ciProvider:"CircleCI",gitCommitSha:process.env.CIRCLE_SHA1,gitCommitShaShort:process.env.CIRCLE_SHA1?.slice(0,6),gitCommitTimestamp:t?kc(t):void 0,gitBranchName:process.env.CIRCLE_BRANCH,gitOriginUrl:s,gitCommitMessage:o,gitCommitAuthorName:r,githubRepository:a?c:void 0,gitlabProjectPath:l?c:void 0,pipelineId:process.env.CIRCLE_PIPELINE_ID}}async function Rxe(e){let[t,n,o]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]),r=process.env.BUILDKITE_REPO,i=r?.includes("github.com"),s=r?.includes("gitlab.com"),a=r?VT(r):void 0;return {ciProvider:"Buildkite",gitCommitSha:process.env.BUILDKITE_COMMIT,gitCommitShaShort:process.env.BUILDKITE_COMMIT?.slice(0,6),gitCommitTimestamp:t?kc(t):void 0,gitBranchName:process.env.BUILDKITE_BRANCH,gitOriginUrl:r,gitCommitMessage:n,gitCommitAuthorName:o,githubRepository:i?a:void 0,gitlabProjectPath:s?a:void 0,pipelineId:`${process.env.BUILDKITE_PIPELINE_ID}:${process.env.BUILDKITE_BUILD_ID}:${process.env.BUILDKITE_JOB_ID}`}}async function wxe(e){let[t,n,o]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"]))]),r=process.env["Build.Repository.Uri"],i=r?.includes("github.com"),s=r?.includes("gitlab.com"),a=r?VT(r):void 0;return {ciProvider:"AzureDevOps",gitCommitSha:process.env["Build.SourceVersion"],gitCommitShaShort:process.env["Build.SourceVersion"]?.slice(0,6),gitCommitTimestamp:t?kc(t):void 0,gitBranchName:process.env["System.PullRequest.SourceBranch"]??process.env["Build.SourceBranchName"],gitOriginUrl:r,gitCommitMessage:n,gitCommitAuthorName:o,githubRepository:i?a:void 0,gitlabProjectPath:s?a:void 0,pipelineId:`${process.env["System.JobId"]}:${process.env["System.JobAttempt"]}`}}async function Ixe(e,t,n){let[o,r,i,s,a,l,c,d,u]=await Promise.all([hn(e,un.revparse(["HEAD"])),hn(e,un.revparse(["--short","HEAD"])),hn(e,un.revparse(["--abbrev-ref","HEAD"])),hn(e,un.listRemote(["--get-url","origin"])),hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%B"])),hn(e,un.show(["-s","--pretty=%an"])),t?hn(e,un.raw(["merge-base","--fork-point",t])):Promise.resolve(void 0),Sxe(e)]),p=d||(t?await hn(e,un.raw(["merge-base",t,"HEAD"])):void 0),m=p?await hn(e,un.show(["--no-patch","--format=%ci",p])):void 0,h=s?.includes("github.com"),g=s?.includes("gitlab.com"),f=s?VT(s):void 0,y=u["user.email"]||void 0,S=u["user.name"]||void 0,b=u["user.username"]||void 0,E=u["github.user"]||void 0,I=(n?.includeHostingUsername??true?await Txe(e,s,u):void 0)??b??E??void 0;return {ciProvider:"none",gitCommitSha:o,gitCommitShaShort:r,gitBranchName:i,gitOriginUrl:s,gitCommitTimestamp:a?kc(a):void 0,gitCommitMessage:l,gitCommitAuthorName:c,gitLocalUsername:I,gitLocalEmail:y,gitLocalName:S,lastCommitOnMainSha:p,lastCommitOnMainTimestamp:m?kc(m):void 0,githubRepository:h?f:void 0,gitlabProjectPath:g?f:void 0,pipelineId:void 0}}async function xxe(e){let[t,n]=await Promise.all([hn(e,un.show(["--no-patch","--format=%ci"])),hn(e,un.show(["-s","--pretty=%an"]))]),o=process.env.GIT_REPOSITORY_URL,r=o?.includes("github.com"),i=o?.includes("gitlab.com"),s=o?VT(o):void 0;return {ciProvider:"Bitrise",gitCommitSha:process.env.BITRISE_GIT_COMMIT,gitCommitShaShort:process.env.BITRISE_GIT_COMMIT?.slice(0,6),gitCommitTimestamp:t?kc(t):void 0,gitBranchName:process.env.BITRISE_GIT_BRANCH,gitOriginUrl:o,gitCommitMessage:process.env.BITRISE_GIT_MESSAGE,gitCommitAuthorName:n,githubRepository:r?s:void 0,gitlabProjectPath:i?s:void 0,pipelineId:`${process.env.BITRISE_APP_SLUG}:${process.env.BITRISE_BUILD_SLUG}`}}async function _xe(){let e=process.env._HEAD_REPO_URL;return {ciProvider:"GCPCloudBuild",gitCommitSha:process.env.COMMIT_SHA,gitCommitShaShort:process.env.COMMIT_SHA?.slice(0,6),gitBranchName:process.env.BRANCH_NAME,gitOriginUrl:e?process.env._HEAD_REPO_URL:void 0,gitCommitTimestamp:void 0,gitCommitMessage:void 0,gitCommitAuthorName:void 0,githubRepository:e?process.env.REPO_FULL_NAME:void 0,pipelineId:`${process.env.PROJECT_ID}:${process.env.BUILD_ID}`}}function Pxe(){return {ciProvider:"Custom",gitCommitSha:process.env.GIT_COMMIT_SHA,gitCommitShaShort:process.env.GIT_COMMIT_SHA_SHORT??process.env.GIT_COMMIT_SHA?.slice(0,6),gitCommitTimestamp:kc(process.env.GIT_COMMIT_TIMESTAMP),gitBranchName:process.env.GIT_BRANCH_NAME,gitOriginUrl:process.env.GIT_ORIGIN_URL,gitCommitAuthorName:process.env.GIT_COMMIT_AUTHOR_NAME,gitCommitMessage:process.env.GIT_COMMIT_MESSAGE,lastCommitOnMainSha:process.env.LAST_COMMIT_ON_MAIN_SHA,lastCommitOnMainTimestamp:kc(process.env.LAST_COMMIT_ON_MAIN_TIMESTAMP),mergedGitBranchName:process.env.MERGED_GIT_BRANCH_NAME,githubRepository:process.env.GITHUB_REPOSITORY,gitlabProjectPath:process.env.GITLAB_PROJECT_PATH,gitLocalUsername:process.env.GIT_USERNAME,gitLocalEmail:process.env.GIT_EMAIL,gitLocalName:process.env.GIT_NAME}}async function Oxe(e){let t=[...e.config.gitProtectedBranches??[]];return e.config.gitMainBranch&&t.push(e.config.gitMainBranch),{gitMainBranch:e.config.gitMainBranch,gitProtectedBranches:t}}async function _a(e,t,n){let o=Axe();if(!o)return Ixe(e,t,n);switch(o){case "GithubActions":return Exe(e);case "GitlabCI":return Cxe(e);case "CircleCI":return vxe(e);case "Buildkite":return Rxe(e);case "AzureDevOps":return wxe(e);case "GCPCloudBuild":return _xe();case "Bitrise":return xxe(e);case "Custom":return Pxe()}}async function Mxe(e,t,n,o){let r=o,i=o.gitCommitSha;if(!i)return r;let s=o.gitMainBranch;if(s&&(!r.lastCommitOnMainSha||!r.lastCommitOnMainTimestamp))try{let a=await Ia({logger:e,operation:"getRemoteMetadataFromGitlab.getMergeBaseCommitFromGitlab",fn:()=>t.getMergeBaseCommitFromGitlab(n,s,i),context:{projectPath:n,mainBranch:s}});r={...r,lastCommitOnMainSha:a.sha,lastCommitOnMainTimestamp:a.committer.date};}catch(a){e.warn({err:a},"Failed to get merge base commit from Gitlab");}if(!r.gitCommitTimestamp||!r.gitCommitAuthorName||!r.gitCommitMessage||!r.gitCommitAuthorName)try{let a=await Ia({logger:e,operation:"getRemoteMetadataFromGitlab.getCommitFromGitlab",fn:()=>t.getCommitFromGitlab(n,i),context:{projectPath:n,gitCommitSha:i}});a&&(r={...r,gitCommitTimestamp:r.gitCommitTimestamp??a.committer.date,gitCommitAuthorName:r.gitCommitAuthorName??a.author.name,gitCommitMessage:r.gitCommitMessage??a.message});}catch(a){e.warn({err:a},"Failed to get commit from Gitlab");}if(o.gitBranchName&&o.gitBranchName===o.gitMainBranch&&!r.mergedGitBranchName){let a=o.gitBranchName;try{let l=await Ia({logger:e,operation:"getRemoteMetadataFromGitlab.getMergedBranchFromGitlab",fn:()=>t.getMergedBranchFromGitlab(n,a,i),context:{projectPath:n,branchName:a,gitCommitSha:i}});l.mergedBranch&&(r={...r,mergedGitBranchName:l.mergedBranch});}catch(l){e.warn({err:l},"Failed to get merged branch from Gitlab");}}return r}async function Nxe(e,t,n,o,r){let i=r,s=r.gitCommitSha;if(!s)return i;let a=r.gitMainBranch;if(a&&(!i.lastCommitOnMainSha||!i.lastCommitOnMainTimestamp))try{let l=await Ia({logger:e,operation:"getRemoteMetadataFromGitHub.getMergeBaseCommitFromGithub",fn:()=>t.getMergeBaseCommitFromGithub(n,o,a,s),context:{owner:n,repo:o,mainBranch:a}});i={...i,lastCommitOnMainSha:l.sha,lastCommitOnMainTimestamp:l.committer.date};}catch(l){e.warn({err:l},"Failed to get merge base commit from GitHub");}if(!i.gitCommitTimestamp||!i.gitCommitAuthorName||!i.gitCommitMessage||!i.gitCommitAuthorName)try{let l=await Ia({logger:e,operation:"getRemoteMetadataFromGitHub.getCommitFromGithub",fn:()=>t.getCommitFromGithub(n,o,s),context:{owner:n,repo:o,gitCommitSha:s}});l&&(i={...i,gitCommitTimestamp:i.gitCommitTimestamp??l.committer.date,gitCommitAuthorName:i.gitCommitAuthorName??l.author.name,gitCommitMessage:i.gitCommitMessage??l.message});}catch(l){e.warn({err:l},"Failed to get commit from GitHub");}if(r.gitBranchName&&r.gitBranchName===r.gitMainBranch&&!i.mergedGitBranchName){let l=r.gitBranchName;try{let c=await Ia({logger:e,operation:"getRemoteMetadataFromGitHub.getMergedBranchFromGithub",fn:()=>t.getMergedBranchFromGithub(n,o,l,s),context:{owner:n,repo:o,branchName:l,gitCommitSha:s}});c.mergedBranch&&(i={...i,mergedGitBranchName:c.mergedBranch});}catch(c){e.warn({err:c},"Failed to get merged branch from GitHub");}}return i}async function Lxe(e,t,n){try{if(n.githubRepository){let{owner:o,repo:r}=HW(n.githubRepository);return await Ia({logger:e,operation:"getRemoteMetadataIfNeeded.getRemoteMetadataFromGitHub",fn:()=>Nxe(e,t,o,r,n),context:{githubRepository:n.githubRepository}})}else if(n.gitlabProjectPath){let o=n.gitlabProjectPath;return await Ia({logger:e,operation:"getRemoteMetadataIfNeeded.getRemoteMetadataFromGitlab",fn:()=>Mxe(e,t,o,n),context:{gitlabProjectPath:o}})}}catch(o){e.warn({err:o},"Failed to get remote git metadata");}return n}async function kxe(e,t,n,o){let r={},i={gitMainBranch:n.config.gitMainBranch};return Ia({logger:e,operation:"getGitMetadata.total",fn:async()=>{let[s,a]=await Promise.all([Ia({logger:e,operation:"getGitMetadata.getConfiguredGitMetadata",fn:()=>Oxe(n),context:{projectConfigPath:n.configFilePath}}),Ia({logger:e,operation:"getGitMetadata.getEnvironmentGitMetadata",fn:async()=>{let d=await _a(e,n.config.gitMainBranch,o);return i.ciProvider=d.ciProvider,d},context:i})]),l={...s,...a};r.gitBranchName=l.gitBranchName,r.githubRepository=l.githubRepository,r.gitlabProjectPath=l.gitlabProjectPath,(!l.lastCommitOnMainSha||!l.lastCommitOnMainTimestamp)&&l.gitBranchName===s.gitMainBranch&&(l.lastCommitOnMainSha=l.gitCommitSha,l.lastCommitOnMainTimestamp=l.gitCommitTimestamp);let c=await Ia({logger:e,operation:"getGitMetadata.getRemoteMetadataIfNeeded",fn:()=>Lxe(e,t,l),context:{githubRepository:l.githubRepository,gitlabProjectPath:l.gitlabProjectPath,gitBranchName:l.gitBranchName}});return {...s,...a,...c}},context:r})}async function EQ(e){try{let t=await jT(e).remote(["show","origin"]);return t?t.match(/HEAD branch: (.*)$/m)?.[1]?.trim():void 0}catch{return}}async function CQ(){try{return (await un.revparse(["--is-inside-work-tree"])).trim()==="true"}catch{return false}}var mD=new Map;async function Dxe(e,t,n){let o,r;try{[o,r]=await Promise.all([hn(e,un.raw(["symbolic-ref","--short","-q","HEAD"]).then(a=>a.trim())),hn(e,un.revparse(["--verify","HEAD"]).then(a=>a.trim()))]);}catch{return}if(!o||!r)return;let i=`${t.configFilePath}:${t.config.gitMainBranch}:${t.config.gitProtectedBranches?.join(",")}`,s=`${n?.includeHostingUsername}`;return `${o}:${r}:${i}:${s}`}async function pi(e,t,n,o){let r=await Dxe(e,n,o);if(r&&mD.has(r))return e.debug("Using cached git metadata"),mD.get(r);let i=await kxe(e,t,n,o);return r&&mD.set(r,i),i}var Fxe=1024*1024;async function ww({cwd:e,baseRef:t="HEAD"}){let n=jT(await Hf(e)),[o,r]=await Promise.all([n.diff(["--name-only","--diff-filter=ACDMRTUXB",t,"--"]),n.raw(["ls-files","--others","--exclude-standard"])]);return Bxe(xw([...vQ(o),...vQ(r)]))}function Bxe(e){return e.filter(yD)}function yD(e){let t=Al.basename(e);return e.endsWith(".test.yaml")||e.endsWith(".module.yaml")||t===Lc||t===GT}async function Iw({cwd:e,paths:t,maxFileSizeBytes:n=Fxe}){let o=await Hf(e),r=[];for(let i of xw(t)){let s=xQ({repoRoot:o,relativePath:i});if(!yD(i))throw new Error(`Pull request path is not a Momentic file: ${i}`);let a=await promises.stat(s).catch(()=>{});if(!a){r.push({operation:"delete",path:i});continue}if(!a.isFile())throw new Error(`Cannot create pull request change for non-file path: ${i}`);if(a.size>n)throw new Error(`Cannot create pull request change for oversized file: ${i}`);let l=await promises.readFile(s,"utf8");if(l.includes("\0"))throw new Error(`Cannot create pull request change for binary file: ${i}`);r.push({operation:"upsert",path:i,content:l});}return r}async function RQ({cwd:e}){let t=await Hf(e),n=await promises.mkdtemp(Al.join(fD.tmpdir(),"momentic-git-snapshot-"));try{let o=jT(t).env("GIT_INDEX_FILE",Al.join(n,"index"));return await o.raw(["read-tree","HEAD"]),await o.raw(["add","-A","--"]),(await o.raw(["write-tree"])).trim()}finally{await promises.rm(n,{recursive:true,force:true});}}async function Uf({cwd:e,paths:t,baseRef:n="HEAD",maxFileSizeBytes:o}){let r=await Hf(e),i=xw(t??await ww({cwd:r,baseRef:n}));if(i.length===0)return "";let a=(await Iw({cwd:r,paths:i,maxFileSizeBytes:o})).filter(c=>c.operation==="upsert").map(c=>c.path),l=await promises.mkdtemp(Al.join(fD.tmpdir(),"momentic-git-patch-"));try{let c=jT(r).env("GIT_INDEX_FILE",Al.join(l,"index"));return await c.raw(["read-tree",n]),a.length>0&&await c.raw(["add","--intent-to-add","--",...a]),await c.raw(["diff","--binary","--",...i])}finally{await promises.rm(l,{recursive:true,force:true});}}async function wQ({cwd:e,patch:t}){let n=await Hf(e),o=await promises.mkdtemp(Al.join(fD.tmpdir(),"momentic-git-apply-")),r=Al.join(o,"heal.patch");try{await promises.writeFile(r,t,"utf8");let i=jT(n),s=Uxe(await i.raw(["apply","--numstat","-z","--",r]));if(s.length===0)throw new Error("Cannot apply an empty heal patch.");for(let a of s)if(xQ({repoRoot:n,relativePath:a}),!yD(a))throw new Error(`Heal patch path is not a Momentic file: ${a}`);return await i.raw(["apply","--check","--",r]),await i.raw(["apply","--",r]),s}finally{await promises.rm(o,{recursive:true,force:true});}}async function IQ({cwd:e,paths:t,baseBranch:n,baseCommitSha:o,headBranch:r,branchPrefix:i,idempotencyKey:s,commitMessage:a,title:l,body:c,reviewers:d,draft:u,coAuthorRange:p,maxFileSizeBytes:m}){let h=await Hf(e),g=await Iw({cwd:h,paths:t??await ww({cwd:h,baseRef:o}),maxFileSizeBytes:m}),f=n??await TQ(h);if(!f)throw new De(`Cannot determine base branch because git is not usable in '${h}'.`);let y=o??await bQ(h);if(!y)throw new De(`Cannot determine base commit SHA because git is not usable in '${h}'.`);return {baseBranch:f,baseCommitSha:y,headBranch:r,branchPrefix:i,idempotencyKey:s,commitMessage:a,title:l,body:c,changes:g,reviewers:d,draft:u,coAuthorRange:p}}function vQ(e){return e?e.split(`
259
- `).filter(t=>t.length>0):[]}function xw(e){return [...new Set(e)]}function Uxe(e){let t=e.split("\0"),n=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r)continue;let i=r.split(" ");if(i.length<3)throw new Error("Cannot determine files touched by heal patch.");let s=i.slice(2).join(" ");if(s){n.push(s);continue}let a=t[++o],l=t[++o];if(!a||!l)throw new Error("Cannot determine renamed files touched by heal patch.");n.push(a,l);}return xw(n)}async function Hf(e){let t=await Wd(e);if(!t)throw new De(`Cannot find a git repository at '${e}'. Install git and run this from inside a git worktree.`);return t}function xQ({repoRoot:e,relativePath:t}){if(!t||Al.isAbsolute(t)||t.includes("\0"))throw new Error(`Unsafe pull request path: ${t}`);let n=Al.resolve(e),o=Al.resolve(n,t);if(o!==n&&!o.startsWith(`${n}${Al.sep}`))throw new Error(`Pull request path escapes repository root: ${t}`);return o}var _Q=new Set([".DS_Store","__MACOSX"]),PQ={status:(e,t)=>{if(e.status===t.status)return e.status;if(e.status==="FAILED"||t.status==="FAILED")return "FAILED";if(e.status==="CANCELLED"||t.status==="CANCELLED")return "CANCELLED";if(e.status==="RETRYING"||t.status==="RETRYING")return "RETRYING";if(e.status==="RUNNING"||t.status==="RUNNING")return "RUNNING";if(e.status==="PENDING"||t.status==="PENDING")return "PENDING";throw new Error(`Invalid run status merge: ${e.status} and ${t.status}`)},startedAt:(e,t)=>e.startedAt<t.startedAt?e.startedAt:t.startedAt,updatedAt:(e,t)=>e.updatedAt>t.updatedAt?e.updatedAt:t.updatedAt,finishedAt:(e,t)=>!e.finishedAt||!t.finishedAt?new Date:e.finishedAt>t.finishedAt?e.finishedAt:t.finishedAt,gitCommitTimestamp:(e,t)=>{if(!(!e&&!t)){if(!e.gitCommitTimestamp||!t.gitCommitTimestamp||e.gitCommitTimestamp.getTime()!==t.gitCommitTimestamp.getTime())throw new Error(`Git commit timestamps must match to be merged: ${e.gitCommitTimestamp} and ${t.gitCommitTimestamp}`);return e.gitCommitTimestamp}},pipelineId:(e,t)=>e.pipelineId===t.pipelineId?e.pipelineId:!e.pipelineId&&t.pipelineId?t.pipelineId:!t.pipelineId&&e.pipelineId?e.pipelineId:e.startedAt<t.startedAt?t.pipelineId:e.pipelineId,labels:(e,t)=>{let n=new Set([...e.labels??[],...t.labels??[]]);return Array.from(n)},ai:(e,t)=>e.ai??t.ai,browser:(e,t)=>e.browser??t.browser,aiSelect:(e,t)=>{let n=[...e.aiSelect??[],...t.aiSelect??[]];return n.length>0?n:void 0},healRiskSummary:()=>{}};function Gxe(e,t,n){if(PQ[n]){let i=PQ[n];return i(e,t)}let o=e[n],r=t[n];if(o===void 0)return r;if(r===void 0)return o;if(o!==r)throw new Error(`Metadata values for key "${n}" do not match: "${o}" vs "${r}"`);return o}var SD=class extends Error{constructor(t,n){let o=`${t} contains invalid Momentic results: ${n}. Please ensure that the path points to a folder containing only valid results. If you passed \`--output-dir test-results/results-1\` to the \`run\` command, your results path for merging should be \`test-results\`.`;super(o),this.name="InvalidMomenticResultsPathError";}};function OQ(e,t){try{let n=Xn__default.join(t,ct);return Ta.parse(JSON.parse(Sr__default.readFileSync(n,"utf-8")))}catch{throw new SD(e,t)}}function MQ(e,t,n){let o=randomUUID(),r=e.child({runGroupId:o});Sr__default.rmSync(t,{recursive:true,force:true});let i=Sr__default.readdirSync(n).filter(l=>!_Q.has(l)).map(l=>Xn__default.join(n,l));if(i.length===0)throw new Error(`No run groups found in results path: ${n}`);Sr__default.mkdirSync(t,{recursive:true});let s={...OQ(n,i[0]),id:o,healRiskSummary:void 0,aiSelect:void 0};for(let l of i){let c=Xn__default.join(l,oo);if(!Sr__default.existsSync(c))continue;let d=OQ(n,l);r.info({oldRunGroupId:d.id},"Merging run groups");for(let p in d){if(p==="id")continue;let m=p;s[m]=Gxe(s,d,m);}let u=Sr__default.readdirSync(c);for(let p of u){if(_Q.has(p))continue;let m=Xn__default.join(c,p),h=Xn__default.join(t,oo,p);Sr__default.cpSync(m,h,{recursive:true});}}let a=Xn__default.join(t,ct);Sr__default.writeFileSync(a,JSON.stringify(s,null,2));}var be="v1",bD="cli",Jm="3.10.2";var jxe=9e4,$xe=3,Vxe=1500,zxe=15e3,ro=class extends Error{status;rawError;constructor(t,n,o,r={}){super(o,r),this.status=t,this.rawError=n;}},TD=class extends De{constructor(t,n={}){super(t,n),this.name="PlanLimitExceededError";}};async function Wxe(e){return e.text().then(t=>{try{return JSON.parse(t).error}catch{return t}})}var AD=class{baseUrl;logger;constructor(t){this.baseUrl=t.baseUrl,this.logger=t.logger;}getHeaders(){let t={"Content-Type":"application/json"};return (t[wv]=Jm),(t[_2]=bD),t}async sendRequest(t,n){let{retries:o=$xe,requestTimeoutMs:r=jxe,initialRetryDelayMs:i=Vxe,maxRetryDelayMs:s=zxe,onFailedRequest:a}=n,l=o,c=o,d,u={path:t,baseUrl:this.baseUrl,method:n.method};for(;l>0;)try{return l--,await this.sendSingleRequestHelper(t,n,r)}catch(p){d=p;try{a?.(d);}catch{}if(p instanceof ro&&p.status>=400&&p.status<500)throw p.status===402?new TD(p.rawError,{cause:p}):p;if(p instanceof Error&&p.name==="AbortError"&&(d=new zu),l===0)throw d;let m=c-l,h=Math.min(i*Math.pow(2,m-1),s);await new Promise(g=>setTimeout(g,h));}throw this.logger.warn({...u,err:d},"Got fatal error response from Momentic server"),d}async sendSingleRequestHelper(t,n,o){let r={path:t,baseUrl:this.baseUrl,method:n.method},i=new AbortController,s=setTimeout(()=>i.abort(),o),a=()=>i.abort();n.signal&&n.signal.addEventListener("abort",a,{once:true});let l=Date.now(),c={...this.getHeaders(),...n.extraHeaders};try{let d=await fetch(`${this.baseUrl}${t}`,{method:n.method,body:n.body?JSON.stringify(n.body):void 0,headers:c,signal:i.signal});if(!d.ok){let m=await Wxe(d);throw new ro(d.status,m,`Request to ${n.method} ${t} failed with status ${d.status}: ${m}`)}let u;if(d.status===204)u={};else if(n.responseType==="buffer"){let m=await d.arrayBuffer();u=Buffer.from(m);}else {let m=await d.text();try{u=JSON.parse(m);}catch{u=m;}}this.logger&&n.logResponse===!0&&u&&this.logger.debug({result:u,status:d.status,durationMs:Date.now()-l,...r},"Got response from Momentic server");let p=n.responseHeadersObject;return p&&d.headers.forEach((m,h)=>{p[h.toLowerCase()]=m;}),u}finally{clearTimeout(s),n.signal&&n.signal.removeEventListener("abort",a);}}},qi=class extends AD{apiKey;mode;runner;constructor(t){super(t),this.apiKey=t.apiKey,this.mode=t.mode,this.runner=t.runner;}getHeaders(){return {...super.getHeaders(),Authorization:`Bearer ${this.apiKey}`,[x2]:this.mode,[Iv]:this.runner}}};var _w=class extends Error{constructor(t,n){super(t),this.name="ParseError",this.type=n.type,this.field=n.field,this.value=n.value,this.line=n.line;}};function ED(e){}function NQ(e){if(typeof e=="function")throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=ED,onError:n=ED,onRetry:o=ED,onComment:r}=e,i="",s=true,a,l="",c="";function d(g){let f=s?g.replace(/^\xEF\xBB\xBF/,""):g,[y,S]=qxe(`${i}${f}`);for(let b of y)u(b);i=S,s=false;}function u(g){if(g===""){m();return}if(g.startsWith(":")){r&&r(g.slice(g.startsWith(": ")?2:1));return}let f=g.indexOf(":");if(f!==-1){let y=g.slice(0,f),S=g[f+1]===" "?2:1,b=g.slice(f+S);p(y,b,g);return}p(g,"",g);}function p(g,f,y){switch(g){case "event":c=f;break;case "data":l=`${l}${f}
259
+ `).filter(t=>t.length>0):[]}function xw(e){return [...new Set(e)]}function Uxe(e){let t=e.split("\0"),n=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r)continue;let i=r.split(" ");if(i.length<3)throw new Error("Cannot determine files touched by heal patch.");let s=i.slice(2).join(" ");if(s){n.push(s);continue}let a=t[++o],l=t[++o];if(!a||!l)throw new Error("Cannot determine renamed files touched by heal patch.");n.push(a,l);}return xw(n)}async function Hf(e){let t=await Wd(e);if(!t)throw new De(`Cannot find a git repository at '${e}'. Install git and run this from inside a git worktree.`);return t}function xQ({repoRoot:e,relativePath:t}){if(!t||Al.isAbsolute(t)||t.includes("\0"))throw new Error(`Unsafe pull request path: ${t}`);let n=Al.resolve(e),o=Al.resolve(n,t);if(o!==n&&!o.startsWith(`${n}${Al.sep}`))throw new Error(`Pull request path escapes repository root: ${t}`);return o}var _Q=new Set([".DS_Store","__MACOSX"]),PQ={status:(e,t)=>{if(e.status===t.status)return e.status;if(e.status==="FAILED"||t.status==="FAILED")return "FAILED";if(e.status==="CANCELLED"||t.status==="CANCELLED")return "CANCELLED";if(e.status==="RETRYING"||t.status==="RETRYING")return "RETRYING";if(e.status==="RUNNING"||t.status==="RUNNING")return "RUNNING";if(e.status==="PENDING"||t.status==="PENDING")return "PENDING";throw new Error(`Invalid run status merge: ${e.status} and ${t.status}`)},startedAt:(e,t)=>e.startedAt<t.startedAt?e.startedAt:t.startedAt,updatedAt:(e,t)=>e.updatedAt>t.updatedAt?e.updatedAt:t.updatedAt,finishedAt:(e,t)=>!e.finishedAt||!t.finishedAt?new Date:e.finishedAt>t.finishedAt?e.finishedAt:t.finishedAt,gitCommitTimestamp:(e,t)=>{if(!(!e&&!t)){if(!e.gitCommitTimestamp||!t.gitCommitTimestamp||e.gitCommitTimestamp.getTime()!==t.gitCommitTimestamp.getTime())throw new Error(`Git commit timestamps must match to be merged: ${e.gitCommitTimestamp} and ${t.gitCommitTimestamp}`);return e.gitCommitTimestamp}},pipelineId:(e,t)=>e.pipelineId===t.pipelineId?e.pipelineId:!e.pipelineId&&t.pipelineId?t.pipelineId:!t.pipelineId&&e.pipelineId?e.pipelineId:e.startedAt<t.startedAt?t.pipelineId:e.pipelineId,labels:(e,t)=>{let n=new Set([...e.labels??[],...t.labels??[]]);return Array.from(n)},ai:(e,t)=>e.ai??t.ai,browser:(e,t)=>e.browser??t.browser,aiSelect:(e,t)=>{let n=[...e.aiSelect??[],...t.aiSelect??[]];return n.length>0?n:void 0},healRiskSummary:()=>{}};function Gxe(e,t,n){if(PQ[n]){let i=PQ[n];return i(e,t)}let o=e[n],r=t[n];if(o===void 0)return r;if(r===void 0)return o;if(o!==r)throw new Error(`Metadata values for key "${n}" do not match: "${o}" vs "${r}"`);return o}var SD=class extends Error{constructor(t,n){let o=`${t} contains invalid Momentic results: ${n}. Please ensure that the path points to a folder containing only valid results. If you passed \`--output-dir test-results/results-1\` to the \`run\` command, your results path for merging should be \`test-results\`.`;super(o),this.name="InvalidMomenticResultsPathError";}};function OQ(e,t){try{let n=Xn__default.join(t,ct);return Ta.parse(JSON.parse(Sr__default.readFileSync(n,"utf-8")))}catch{throw new SD(e,t)}}function MQ(e,t,n){let o=randomUUID(),r=e.child({runGroupId:o});Sr__default.rmSync(t,{recursive:true,force:true});let i=Sr__default.readdirSync(n).filter(l=>!_Q.has(l)).map(l=>Xn__default.join(n,l));if(i.length===0)throw new Error(`No run groups found in results path: ${n}`);Sr__default.mkdirSync(t,{recursive:true});let s={...OQ(n,i[0]),id:o,healRiskSummary:void 0,aiSelect:void 0};for(let l of i){let c=Xn__default.join(l,oo);if(!Sr__default.existsSync(c))continue;let d=OQ(n,l);r.info({oldRunGroupId:d.id},"Merging run groups");for(let p in d){if(p==="id")continue;let m=p;s[m]=Gxe(s,d,m);}let u=Sr__default.readdirSync(c);for(let p of u){if(_Q.has(p))continue;let m=Xn__default.join(c,p),h=Xn__default.join(t,oo,p);Sr__default.cpSync(m,h,{recursive:true});}}let a=Xn__default.join(t,ct);Sr__default.writeFileSync(a,JSON.stringify(s,null,2));}var be="v1",bD="cli",Jm="3.10.3";var jxe=9e4,$xe=3,Vxe=1500,zxe=15e3,ro=class extends Error{status;rawError;constructor(t,n,o,r={}){super(o,r),this.status=t,this.rawError=n;}},TD=class extends De{constructor(t,n={}){super(t,n),this.name="PlanLimitExceededError";}};async function Wxe(e){return e.text().then(t=>{try{return JSON.parse(t).error}catch{return t}})}var AD=class{baseUrl;logger;constructor(t){this.baseUrl=t.baseUrl,this.logger=t.logger;}getHeaders(){let t={"Content-Type":"application/json"};return (t[wv]=Jm),(t[_2]=bD),t}async sendRequest(t,n){let{retries:o=$xe,requestTimeoutMs:r=jxe,initialRetryDelayMs:i=Vxe,maxRetryDelayMs:s=zxe,onFailedRequest:a}=n,l=o,c=o,d,u={path:t,baseUrl:this.baseUrl,method:n.method};for(;l>0;)try{return l--,await this.sendSingleRequestHelper(t,n,r)}catch(p){d=p;try{a?.(d);}catch{}if(p instanceof ro&&p.status>=400&&p.status<500)throw p.status===402?new TD(p.rawError,{cause:p}):p;if(p instanceof Error&&p.name==="AbortError"&&(d=new zu),l===0)throw d;let m=c-l,h=Math.min(i*Math.pow(2,m-1),s);await new Promise(g=>setTimeout(g,h));}throw this.logger.warn({...u,err:d},"Got fatal error response from Momentic server"),d}async sendSingleRequestHelper(t,n,o){let r={path:t,baseUrl:this.baseUrl,method:n.method},i=new AbortController,s=setTimeout(()=>i.abort(),o),a=()=>i.abort();n.signal&&n.signal.addEventListener("abort",a,{once:true});let l=Date.now(),c={...this.getHeaders(),...n.extraHeaders};try{let d=await fetch(`${this.baseUrl}${t}`,{method:n.method,body:n.body?JSON.stringify(n.body):void 0,headers:c,signal:i.signal});if(!d.ok){let m=await Wxe(d);throw new ro(d.status,m,`Request to ${n.method} ${t} failed with status ${d.status}: ${m}`)}let u;if(d.status===204)u={};else if(n.responseType==="buffer"){let m=await d.arrayBuffer();u=Buffer.from(m);}else {let m=await d.text();try{u=JSON.parse(m);}catch{u=m;}}this.logger&&n.logResponse===!0&&u&&this.logger.debug({result:u,status:d.status,durationMs:Date.now()-l,...r},"Got response from Momentic server");let p=n.responseHeadersObject;return p&&d.headers.forEach((m,h)=>{p[h.toLowerCase()]=m;}),u}finally{clearTimeout(s),n.signal&&n.signal.removeEventListener("abort",a);}}},qi=class extends AD{apiKey;mode;runner;constructor(t){super(t),this.apiKey=t.apiKey,this.mode=t.mode,this.runner=t.runner;}getHeaders(){return {...super.getHeaders(),Authorization:`Bearer ${this.apiKey}`,[x2]:this.mode,[Iv]:this.runner}}};var _w=class extends Error{constructor(t,n){super(t),this.name="ParseError",this.type=n.type,this.field=n.field,this.value=n.value,this.line=n.line;}};function ED(e){}function NQ(e){if(typeof e=="function")throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=ED,onError:n=ED,onRetry:o=ED,onComment:r}=e,i="",s=true,a,l="",c="";function d(g){let f=s?g.replace(/^\xEF\xBB\xBF/,""):g,[y,S]=qxe(`${i}${f}`);for(let b of y)u(b);i=S,s=false;}function u(g){if(g===""){m();return}if(g.startsWith(":")){r&&r(g.slice(g.startsWith(": ")?2:1));return}let f=g.indexOf(":");if(f!==-1){let y=g.slice(0,f),S=g[f+1]===" "?2:1,b=g.slice(f+S);p(y,b,g);return}p(g,"",g);}function p(g,f,y){switch(g){case "event":c=f;break;case "data":l=`${l}${f}
260
260
  `;break;case "id":a=f.includes("\0")?void 0:f;break;case "retry":/^\d+$/.test(f)?o(parseInt(f,10)):n(new _w(`Invalid \`retry\` value: "${f}"`,{type:"invalid-retry",value:f,line:y}));break;default:n(new _w(`Unknown field "${g.length>20?`${g.slice(0,20)}\u2026`:g}"`,{type:"unknown-field",field:g,value:f,line:y}));break}}function m(){l.length>0&&t({id:a,event:c||void 0,data:l.endsWith(`
261
261
  `)?l.slice(0,-1):l}),a=void 0,l="",c="";}function h(g={}){i&&g.consume&&u(i),s=true,a=void 0,l="",c="",i="";}return {feed:d,reset:h}}function qxe(e){let t=[],n="",o=0;for(;o<e.length;){let r=e.indexOf("\r",o),i=e.indexOf(`
262
262
  `,o),s=-1;if(r!==-1&&i!==-1?s=Math.min(r,i):r!==-1?s=r:i!==-1&&(s=i),s===-1){n=e.slice(o);break}else {let a=e.slice(o,s);t.push(a),o=s+1,e[o-1]==="\r"&&e[o]===`
@@ -288,7 +288,7 @@ ${t}:`]}}function $5({id:e,model:t,created:n}){return {id:e??void 0,modelId:t??v
288
288
 
289
289
  `,SNe=1e4,dZ=O__default.object({stream:O__default.boolean().optional(),type:O__default.literal("response.create").optional()}).passthrough(),bNe=dZ.extend({stream:O__default.literal(true)});function uZ(e={}){let t=new rF(e);return async(n,o)=>{if(!ENe(n,o))return fetch(n,o);let r=await TNe(o?.body);if(!r)return fetch(n,o);let i=bNe.safeParse(r);return i.success?t.fetch({httpUrl:pZ(n),init:o,request:i.data}):fetch(n,o)}}var rF=class{constructor(t){this.options=t;}websocket;openPromise;latestResponseId;previousFullInput;pendingRequest;async fetch({httpUrl:t,init:n,request:o}){if(this.pendingRequest)return fetch(t,n);let r=await this.open({httpUrl:t,init:n}),i=new ReadableStream({start:s=>{let a={controller:s,fullRequest:o,sentContinuation:false,startedStreaming:false,retryingFullContext:false};this.pendingRequest=a,this.sendRequest({websocket:r,pendingRequest:a});},cancel:()=>{this.websocket?.close(),this.websocket=void 0,this.openPromise=void 0,this.latestResponseId=void 0,this.previousFullInput=void 0,this.pendingRequest=void 0;}});return new Response(i,{status:200,headers:{"content-type":"text/event-stream","cache-control":"no-cache, no-transform"}})}async open({httpUrl:t,init:n}){return this.websocket?.readyState===oF.OPEN?this.websocket:this.openPromise?this.openPromise:(this.openPromise=new Promise((o,r)=>{let i=new oF(CNe(t),{headers:vNe(n?.headers)}),s=setTimeout(()=>{i.terminate(),r(new Error("Timed out opening OpenAI responses websocket"));},SNe);i.once("open",()=>{clearTimeout(s),this.websocket=i,this.openPromise=void 0,o(i);}),i.once("error",a=>{clearTimeout(s),this.resetConnection(),r(a);}),i.on("close",()=>{this.resetConnection();}),i.on("message",a=>{this.handleMessage(a);});}),this.openPromise)}sendRequest({websocket:t,pendingRequest:n}){let o=this.buildPayload(n.fullRequest);n.sentContinuation=!!o.previous_response_id,t.send(JSON.stringify(o));}buildPayload(t){let{background:n,stream:o,...r}=t,i={...r,type:"response.create"};INe({payload:i,compactThreshold:this.options.compactThreshold});let s=Array.isArray(t.input)?t.input:void 0,a=this.latestResponseId&&s&&this.previousFullInput?RNe({currentInput:s,previousInput:this.previousFullInput}):void 0;return a&&a.length>0?(i.input=a,i.previous_response_id=this.latestResponseId,i):(delete i.previous_response_id,i)}handleMessage(t){let n=this.pendingRequest;if(!n)return;let o=_Ne(t),r;try{r=JSON.parse(o);}catch(a){n.controller.error(a),this.pendingRequest=void 0,this.websocket?.close();return}let i=Kz.safeParse(r),s=i.success?i.data:void 0;if(xNe(s)&&n.sentContinuation&&!n.startedStreaming&&!n.retryingFullContext&&this.websocket?.readyState===oF.OPEN){this.latestResponseId=void 0,this.previousFullInput=void 0,n.retryingFullContext=true,n.sentContinuation=false;let a=this.buildPayload(n.fullRequest);delete a.previous_response_id,this.websocket.send(JSON.stringify(a));return}if(n.startedStreaming=true,n.controller.enqueue(PNe(o)),s?.type==="response.completed"){this.latestResponseId=s.response.id,this.previousFullInput=Array.isArray(n.fullRequest.input)?n.fullRequest.input:void 0,this.closePendingRequest();return}s?.type==="error"&&(this.latestResponseId=void 0,this.previousFullInput=void 0,this.closePendingRequest());}closePendingRequest(){let t=this.pendingRequest;t&&(t.controller.enqueue(new TextEncoder().encode(yNe)),t.controller.close(),this.pendingRequest=void 0);}resetConnection(){this.websocket=void 0,this.openPromise=void 0,this.latestResponseId=void 0,this.previousFullInput=void 0;let t=this.pendingRequest;t&&(t.controller.error(new Error("OpenAI responses websocket connection closed")),this.pendingRequest=void 0);}};async function TNe(e){let t=await ANe(e);if(!t)return;let n=dZ.safeParse(JSON.parse(t));return n.success?n.data:void 0}async function ANe(e){if(typeof e=="string")return e;if(e instanceof URLSearchParams)return e.toString();if(e instanceof Blob)return e.text();if(e instanceof ArrayBuffer)return new TextDecoder().decode(e);if(ArrayBuffer.isView(e))return new TextDecoder().decode(e)}function ENe(e,t){return (t?.method??(e instanceof Request?e.method:"GET")).toUpperCase()==="POST"&&pZ(e).endsWith("/responses")}function pZ(e){return e instanceof Request?e.url:e.toString()}function CNe(e){let t=new URL(e);return t.protocol=t.protocol==="https:"?"wss:":"ws:",t.toString()}function vNe(e){if(!e)return {};if(e instanceof Headers){let t={};return e.forEach((n,o)=>{t[o]=n;}),t}return Array.isArray(e)?Object.fromEntries(e):e}function RNe({currentInput:e,previousInput:t}){let n=0;for(;n<e.length&&n<t.length&&JSON.stringify(e[n])===JSON.stringify(t[n]);)n+=1;if(!(n<t.length))return e.slice(n).filter(wNe)}function wNe(e){return "role"in e&&e.role==="assistant"?false:"type"in e?e.type==="item_reference"||e.type==="reasoning"?false:e.type!=="function_call"&&e.type!=="custom_tool_call"&&e.type!=="local_shell_call":true}function INe({payload:e,compactThreshold:t}){t&&(e.context_management=[{type:"compaction",compact_threshold:t}]);}function xNe(e){return e?.type==="error"&&e.code==="previous_response_not_found"}function _Ne(e){return typeof e=="string"?e:e instanceof ArrayBuffer?new TextDecoder().decode(e):Array.isArray(e)?Buffer.concat(e).toString("utf8"):e.toString("utf8")}function PNe(e){return new TextEncoder().encode(`data: ${e}
290
290
 
291
- `)}var MNe="MOMENTIC_OPENAI_RESPONSES_WEBSOCKET_COMPACT_THRESHOLD",NNe=2e5;function Yf(e){let{apiKey:t,sessionId:n,loggerTags:o,runner:r,parentTraceId:i}=e,s={Authorization:`Bearer ${t}`,[wv]:Jm,...n&&{[O2]:n},...r&&{[Iv]:r},...i&&{[M2]:i},...o&&{[P2]:JSON.stringify(o)}};for(let[a,l]of Object.entries(s))s[a]=l.replace(/[\u0100-\uffff]/g,c=>"\\u"+c.charCodeAt(0).toString(16).padStart(4,"0"));return s}var mZ="bedrock/",hZ="azure/",gZ=e=>t=>{let n=Yf(e),o=`${e.baseUrl}/v1/llm/anthropic/${encodeURIComponent(t)}`;return t.startsWith(mZ)?o=`${e.baseUrl}/v1/llm/provider/bedrock/anthropic/${encodeURIComponent(t.slice(mZ.length))}`:t.startsWith(hZ)&&(o=`${e.baseUrl}/v1/llm/provider/foundry/anthropic/${encodeURIComponent(t.slice(hZ.length))}`),createAnthropic({baseURL:o,headers:n,apiKey:e.apiKey})(t)},fZ=e=>t=>{let n=Yf(e),o=e.useOpenAIResponsesWebSocket??false,r=o?e.openAIResponsesWebSocketCompactThreshold??LNe(process.env[MNe])??NNe:void 0;return Kf({baseURL:`${e.baseUrl}/v1/llm/provider/openai/${t}`,headers:n,apiKey:e.apiKey,fetch:o?uZ({compactThreshold:r}):void 0})(t)},yZ=e=>t=>{let n=Yf(e);return Kf({baseURL:`${e.baseUrl}/v1/llm/provider/xai/${t}`,headers:n,apiKey:e.apiKey})(t)},SZ=e=>t=>{let n=Yf(e);return Kf({baseURL:`${e.baseUrl}/v1/llm/provider/azure/${t}`,headers:n,apiKey:e.apiKey})(t)};function iF(e){return t=>n=>{let o=Yf(t);return Kf({baseURL:`${t.baseUrl}/v1/llm/provider/${e}/${n}`,headers:o,apiKey:t.apiKey}).chat(n)}}var bZ=iF("azure/deepseek"),TZ=iF("azure/kimi"),AZ=iF("fireworks/glm"),EZ=e=>t=>{let n=Yf(e);return VD({baseURL:`${e.baseUrl}/v1/llm/provider/vertex`,headers:n,apiKey:e.apiKey})(t)};function LNe(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}var yr=class extends qi{agentConfig;constructor(t,n){let o={...Ig,...t};$C(o),super(n),this.agentConfig=o;}getAgentConfig(){return this.agentConfig}async rankChunksWithAi(t,n){let o={...t,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/recommend-chunks-ai`,{method:"POST",body:o,signal:n.abortSignal});return IV.parse(r)}async rankChunksWithRag(t,n){let o=await this.sendRequest(`/${be}/web-agent/recommend-chunks`,{method:"POST",body:{cliVersion:Jm,...t},signal:n.abortSignal});return wV.parse(o)}async getScreenshotFromS3(t){let n=await this.sendRequest(`/${be}/s3/visual-diff-screenshot`,{method:"POST",body:{url:t}});return z.string().parse(n)}async getElementLocation(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags,useMemory:n.useMemory,cacheBustReason:n.cacheBustReason,agentConfigVersion:this.agentConfig?.locator},r=await this.sendRequest(`/${be}/web-agent/locate-element`,{method:"POST",body:o,signal:n.abortSignal});return k2.parse(r)}async getAssertionResult(t,n){let o={...t,disableCache:!!n.disableCache,useConsensus:!!n.useConsensus,attemptNumber:n.attemptNumber,loggerTags:n.loggerTags,useMemory:n.useMemory,agentConfigVersion:this.agentConfig?.assertion},r=await this.sendRequest(`/${be}/web-agent/assertion`,{method:"POST",body:o,signal:n.abortSignal});return _N.parse(r)}async getLintStepResult(t,n){let o={...t,disableCache:!!n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/lint/step`,{method:"POST",body:o,signal:n.abortSignal});return L2.parse(r)}async getVisualAssertionResult(t,n){let o={...t,disableCache:!!n.disableCache,useConsensus:!!n.useConsensus,attemptNumber:n.attemptNumber,loggerTags:n.loggerTags,useMemory:n.useMemory,agentConfigVersion:this.agentConfig?.["visual-assertion"]},r=await this.sendRequest(`/${be}/web-agent/visual-assertion`,{method:"POST",body:o,signal:n.abortSignal});return _N.parse(r)}async getAiActionCommand(t,n){let o=await this.sendRequest(`/${be}/web-agent/next-command-dynamic`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return N2.parse(o)}async getMultiturnAiActionCommand(t,n){return await this.sendRequest(`/${be}/web-agent/ai-action/next-command`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal})}async getMultiturnAiActionEvaluation(t,n){let o=await this.sendRequest(`/${be}/web-agent/ai-action/evaluate`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return WO.parse(o)}async getReverseMappedDescription(t,n){let o=await this.sendRequest(`/${be}/web-agent/reverse-mapped-description`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return D2.parse(o)}async getTextExtraction(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags,agentConfigVersion:this.agentConfig?.["text-extraction"]},r=await this.sendRequest(`/${be}/web-agent/text-extraction`,{method:"POST",body:o,signal:n.abortSignal});return zO.parse(r)}async getPageSummary(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/page-summary`,{method:"POST",body:o,signal:n.abortSignal});return w$.parse(r)}async getSmartWaitingDecision(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/smart-waiting`,{method:"POST",body:o,signal:n.abortSignal});return I$.parse(r)}async getKnowledgeSuggestion(t,n){throw new Error("Knowledge suggestion generation is only available on InternalGenerator")}async getTestResultClassification(t,n){let o=await this.sendRequest(`/${be}/web-agent/result-classification`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return rC.parse(o)}async getExtractedKeywords(t,n){let o=await this.sendRequest(`/${be}/web-agent/extract-keywords`,{method:"POST",body:t,signal:n.abortSignal});return UV.parse(o)}async getAutohealingProposal(t,n){let o=await this.sendRequest(`/${be}/web-agent/autoheal-section`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return A$.parse(o)}async getFailureRecoveryProposal(t,n){let o=await this.sendRequest(`/${be}/web-agent/failure-recovery`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return v$.parse(o)}async getFailureRecoveryPlan(t,n){let o=await this.sendRequest(`/${be}/web-agent/failure-recovery-plan`,{method:"POST",body:{...t,loggerTags:n.loggerTags,agentConfigVersion:this.agentConfig?.["failure-recovery"]},signal:n.abortSignal});return C$.parse(o)}async getIframeRegex(t,n){let o=await this.sendRequest(`/${be}/web-agent/iframe-regex`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return qG.parse(o)}createAgentTrace(t){let n=randomUUID(),{completionType:o,runId:r,orgId:i,logger:s}=t,a=async l=>{try{await this.sendRequest(`/${be}/traces/result-classification`,{method:"POST",body:{id:n,completionType:o,input:{runId:r},...l,metadata:{orgId:i,runId:r,...l.metadata}}});}catch(c){s.warn({err:c},"Failed to upsert result classification trace");}};return a({}),{id:n,update:a}}getAnthropicModelFactory(t){return this.buildModelFactory(gZ,t)}getAnthropicBedrockModelFactory(t){let n=this.getAnthropicModelFactory(t);return o=>n(`bedrock/${o}`)}getAnthropicFoundryModelFactory(t){let n=this.getAnthropicModelFactory(t);return o=>n(`azure/${o}`)}getOpenAIModelFactory(t){let{sessionId:n,logger:o,streamType:r,useOpenAIResponsesWebSocket:i,parentTraceId:s}=t;return fZ({baseUrl:this.baseUrl,apiKey:this.apiKey,loggerTags:{...jt(o),promptType:r},sessionId:n,useOpenAIResponsesWebSocket:i,runner:this.runner,parentTraceId:s})}getXAIModelFactory(t){return this.buildModelFactory(yZ,t)}getAzureOpenAIModelFactory(t){return this.buildModelFactory(SZ,t)}getAzureDeepSeekModelFactory(t){return this.buildModelFactory(bZ,t)}getAzureKimiModelFactory(t){return this.buildModelFactory(TZ,t)}getFireworksGLMModelFactory(t){return this.buildModelFactory(AZ,t)}getVertexGeminiModelFactory(t){return this.buildModelFactory(EZ,t)}buildModelFactory(t,n){let{sessionId:o,logger:r,streamType:i,parentTraceId:s}=n;return t({baseUrl:this.baseUrl,apiKey:this.apiKey,loggerTags:{...jt(r),promptType:i},sessionId:o,runner:this.runner,parentTraceId:s})}};var Ft=class extends qi{getAppUrl(){return Kg(this.baseUrl)}async getAuthInfo(){let t;try{t=await this.sendRequest(`/${be}/auth/check`,{method:"GET",retries:10,requestTimeoutMs:5e3});}catch(n){throw n instanceof ro?n.status>=400&&n.status<500?new Error(n.rawError,{cause:n}):new Error(`Momentic server error (HTTP ${n.status}). Please try again in a moment.`,{cause:n}):new Error(`Could not reach Momentic server at ${this.baseUrl}. Check your network connection. If you're on a restricted network (VPN, firewall, or proxy), you may need to whitelist Momentic's servers: https://momentic.ai/docs/environment/authentication#ip-whitelist`,{cause:n})}return X2.parse(t)}async getCliAnnouncements(){let t=await this.sendRequest(`/${be}/announcements`,{method:"GET",retries:1,requestTimeoutMs:5e3});return TW.parse(t).announcements}async getQuotaStatus(){let t=await this.sendRequest(`/${be}/billing/check-quota`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Q2.parse(t)}async createRemoteBrowserConnection(t){let n=await this.sendRequest(`/${be}/browsers/connection`,{method:"POST",body:{...t?.runId?{runId:t.runId}:{},...t?.attemptedProviders?{attemptedProviders:t.attemptedProviders}:{}},retries:3,requestTimeoutMs:1e4});return gK.parse(n)}async bulkGetRunStatus(t){let n=await this.sendRequest(`/${be}/runs/status`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return W2.parse(n)}async getRunExport(t){let n=await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/export`,{method:"GET",retries:3,requestTimeoutMs:1e4});return K2.parse(n)}async getResultClassificationCacheEntries(t){let n=await this.sendRequest(`/${be}/result-classification-cache`,{method:"POST",body:t,retries:1,requestTimeoutMs:1e4});return CK.parse(n)}async createResultClassificationCacheEntries(t){await this.sendRequest(`/${be}/result-classification-cache`,{method:"PATCH",body:t,retries:1,requestTimeoutMs:1e4});}async saveRunClassification(t,n){await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/classification`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async saveRunHealMetadataBatch(t){await this.sendRequest(`/${be}/runs/heal-metadata`,{method:"PATCH",body:t,retries:3,requestTimeoutMs:1e4});}async getTestYAMLExport(t){let n=await this.sendRequest(`/${be}/tests/export`,{method:"POST",body:t,retries:3,requestTimeoutMs:3e4});return B2.parse(n)}async updateStepCaches(t,n){await this.sendRequest(`/${be}/cache`,{method:"PATCH",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async updateSnapshotCaches(t,n){await this.sendRequest(`/${be}/snapshot-cache`,{method:"PATCH",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async getStepCacheForTest(t,n){let o=await this.sendRequest(`/${be}/cache`,{method:"POST",body:t,extraHeaders:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return H2.parse(o)}async getSnapshotCacheForTest(t,n){let o=await this.sendRequest(`/${be}/snapshot-cache`,{method:"POST",body:t,extraHeaders:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return G2.parse(o)}async deleteStepCacheEntry(t,n){await this.sendRequest(`/${be}/cache/entry`,{method:"DELETE",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4});}async getWebStepCacheMemoryTraces(t){let n=await this.sendRequest(`/${be}/cache/traces`,{method:"POST",body:t,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return PN.parse(n)}cacheRouteForPlatform(t){switch(t){case "ANDROID":return "android-cache";case "IOS":return "ios-cache"}}async deleteMobileStepCacheEntry({platform:t,body:n,headers:o}){await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}/entry`,{method:"DELETE",body:n,extraHeaders:o,retries:3,requestTimeoutMs:1e4});}async getMobileStepCacheMemoryTraces(t,n){let o=await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}/traces`,{method:"POST",body:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return PN.parse(o)}async updateMobileStepCaches(t){await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t.platform)}`,{method:"PATCH",body:t.body,extraHeaders:t.headers,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async getMobileStepCacheForTest({platform:t,body:n,headers:o}){let r=await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}`,{method:"POST",body:n,extraHeaders:o,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return j2[t](r)}async queueTests(t){let n=await this.sendRequest(`/${be}/tests/queue`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return F2.parse(n)}async uploadScreenshot(t){let n=await this.sendRequest(`/${be}/screenshots`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});return J2.parse(n)}async uploadOnDemandScreenshot(t){return await this.sendRequest(`/${be}/on-demand-screenshots`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3}),{apiServerUrl:`${this.baseUrl}/${be}/on-demand-screenshots/${t.id}`}}async fetchOnDemandScreenshot(t){let n={};return {data:await this.sendRequest(`/${be}/on-demand-screenshots/${encodeURIComponent(t)}`,{method:"GET",retries:3,requestTimeoutMs:5e3,responseType:"buffer",responseHeadersObject:n}),contentType:n["content-type"]??"image/jpeg"}}async getAllEnvironments(){let t=await this.sendRequest(`/${be}/environments`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Z2.parse(t)}async acquireCacheLock(t,n){let o=await this.sendRequest(`/${be}/result-cache/lock`,{method:"POST",body:t,signal:n,retries:3,requestTimeoutMs:3e4});return bK.parse(o)}async releaseCacheLock(t){await this.sendRequest(`/${be}/result-cache/lock`,{method:"DELETE",body:{key:t},retries:3,requestTimeoutMs:5e3});}async deleteCacheResult(t){await this.sendRequest(`/${be}/result-cache/entry`,{method:"DELETE",body:t,retries:3,requestTimeoutMs:5e3});}async setCacheResult(t){await this.sendRequest(`/${be}/result-cache/entry`,{method:"PATCH",body:t,retries:3,requestTimeoutMs:5e3});}async getCacheResult(t){try{return await this.sendRequest(`/${be}/result-cache/entry`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3})}catch(n){if(n instanceof Error&&n.message.includes("404"))return null;throw n}}async queueSuiteRuns(t){let n=await this.sendRequest(`/${be}/suites/queue`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});return nK.parse(n)}async bulkGetRunGroupStatus(t){let n={runGroupIds:t},o=await this.sendRequest(`/${be}/run-groups/status`,{method:"POST",body:n,retries:3,requestTimeoutMs:5e3});return bV.array().parse(o)}async getRunGroupWithRuns(t){try{let n=await this.sendRequest(`/${be}/run-groups/${encodeURIComponent(t)}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return TV.parse(n)}catch(n){if(n instanceof ro&&n.status===404)return null;throw n}}async getRun(t){try{let n=await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/metadata`,{method:"GET",retries:3,requestTimeoutMs:1e4});return is.parse(n)}catch(n){if(n instanceof ro&&n.status===404)return null;throw n}}async getRunsByCommit(t){let o=[];for(let r=1;;r++){let i=await this.listRuns({gitCommitSha:t,includeFailureDetails:true,limit:100,page:r});if(o.push(...i.runs.map(s=>({...s,test:null}))),i.runs.length<100||r>=i.pageCount)break}return o}async updateGithubPRHealRiskSummary(t,n){await this.sendRequest(`/${be}/run-groups/${encodeURIComponent(t)}/github-pr-heal-risk-summary`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async uploadProposedSteps(t,n){try{await this.sendRequest(`/${be}/test-fragments/`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});}catch(o){n.error({err:o},"Failed to upload proposed steps");}}async reportBillableEvents(t,n){try{await this.sendRequest(`/${be}/billing/events`,{method:"POST",body:n,retries:10,requestTimeoutMs:1e4});}catch(o){t.error({err:o},"Failed to report billable event");}}async fetchTestFragment(t){let n=await this.sendRequest(`/${be}/test-fragments/${t}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return oK.parse(n)}async patchTestFragment(t,n){await this.sendRequest(`/${be}/test-fragments/${t}`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async getPastTestResults(t,n){let o=await this.sendRequest(`/${be}/results/tests/${t}`,{method:"POST",body:n,retries:3,requestTimeoutMs:1e4});return rK.parse(o)}async listRuns(t){let n=await this.sendRequest(`/${be}/results/runs`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return iK.parse(n)}async generateTestResultsUploadUrl(){let t=await this.sendRequest(`/${be}/results/uploads`,{method:"POST",retries:3,requestTimeoutMs:1e4});return sK.parse(t)}async startProcessingResultsUpload(t,n){let o=await this.sendRequest(`/${be}/results/uploads/${t}/process`,{method:"POST",body:n,retries:3,requestTimeoutMs:1e4});return aK.parse(o)}async fetchIconKnowledgeBase(t){try{let n=await this.sendRequest(`/${be}/knowledge-base/icons`,{method:"GET",retries:3,requestTimeoutMs:5e3});return wK.parse(n)}catch(n){return t.error({err:n},"Failed to fetch icon knowledge base"),null}}async saveNewIcons(t,n){try{await this.sendRequest(`/${be}/knowledge-base/icons`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});}catch(o){n.error({err:o},"Failed to save new icons to icon knowledge base");}}async retrieveKnowledgeBase({query:t,clientName:n,testId:o,types:r,agentSubtype:i,limit:s,mode:a,scoreMultiplier:l,retries:c,signal:d},u){try{let p=await this.sendRequest(`/${be}/knowledge-base/retrieve`,{method:"POST",body:{query:t,clientName:n,testId:o,types:r,agentSubtype:i,limit:s,mode:a,scoreMultiplier:l},retries:c??3,requestTimeoutMs:5e3,signal:d});return j$.parse(p)}catch(p){return u.warn({err:p},"Failed to retrieve from knowledge base"),null}}async createKnowledgeItem(t){let n=await this.sendRequest(`/${be}/knowledge-base/items`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return oM.parse(n)}async getMergeBaseCommitFromGithub(t,n,o,r){let i=new URLSearchParams;i.set("base",o),i.set("head",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/merge-base-commit?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return Vb.parse(s)}async compareCommitsFromGithub({owner:t,repo:n,base:o,head:r}){let i=new URLSearchParams;i.set("base",o),i.set("head",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/compare?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return kW.parse(s)}async getGithubFileContent({owner:t,repo:n,path:o,ref:r}){let i=new URLSearchParams;i.set("path",o),i.set("ref",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/contents?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return DW.parse(s).content??void 0}async getGithubBranchMetadata(t,n,o){let r=new URLSearchParams;r.set("branch",o);let i=await this.sendRequest(`/${be}/git/github/${t}/${n}/branch-metadata?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return FW.parse(i)}async createGithubPullRequest(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-requests`,{method:"POST",body:o,retries:3,requestTimeoutMs:6e4});return MW.parse(r)}async createGithubCommit(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/commits`,{method:"POST",body:o,retries:3,requestTimeoutMs:6e4});return NW.parse(r)}async getGithubPullRequestTemplate(t,n){try{let o=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-request-template`,{method:"GET",retries:3,requestTimeoutMs:1e4});return UW.parse(o).template}catch(o){if(o instanceof ro&&o.status===404)return;throw o}}async getGithubPullRequestForBranch(t,n,o){let r=new URLSearchParams;r.set("branch",o);let i;try{i=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-requests?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});}catch(s){if(s instanceof ro&&s.status===404)return;throw s}return LW.parse(i)}async getCommitFromGithub(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/commits/${o}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return Vb.parse(r)}async getMergedBranchFromGithub(t,n,o,r){let i=encodeURIComponent(o),s=await this.sendRequest(`/${be}/git/github/${t}/${n}/${i}/${r}/merged-branch`,{method:"GET",retries:3,requestTimeoutMs:1e4});return NN.parse(s)}async getMergeBaseCommitFromGitlab(t,n,o){let r=new URLSearchParams;r.set("base",n),r.set("head",o);let i=encodeURIComponent(t),s=await this.sendRequest(`/${be}/git/gitlab/${i}/merge-base-commit?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Vb.parse(s)}async getGitlabMergeRequestForBranch(t,n){let o=new URLSearchParams;o.set("branch",n);let r=encodeURIComponent(t),i;try{i=await this.sendRequest(`/${be}/git/gitlab/${r}/merge-requests?${o.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});}catch(s){if(s instanceof ro&&s.status===404)return;throw s}return BW.parse(i)}async getCommitFromGitlab(t,n){let o=encodeURIComponent(t),r=await this.sendRequest(`/${be}/git/gitlab/${o}/commits/${n}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return Vb.parse(r)}async getMergedBranchFromGitlab(t,n,o){let r=encodeURIComponent(n),i=encodeURIComponent(t),s=await this.sendRequest(`/${be}/git/gitlab/${i}/${r}/${o}/merged-branch`,{method:"GET",retries:3,requestTimeoutMs:1e4});return NN.parse(s)}async getAgentConfig(){let t=await this.sendRequest(`/${be}/web-agent/agent-config`,{method:"GET",retries:3,requestTimeoutMs:5e3});return z.record(z.string(),z.string()).parse(t)}async getOrgSettings(){try{let t=await this.sendRequest(`/${be}/org-settings`,{method:"GET",retries:3,requestTimeoutMs:5e3});return aV(t)}catch(t){if(t instanceof ro&&t.status===404)return this.logger.warn({err:t},"Momentic server does not expose org settings; continuing with local project settings"),Rg.parse({});throw t}}async getQuarantinedTests(){let t=await this.sendRequest(`/${be}/quarantine`,{method:"GET"});return lK.parse(t)}async sendExploreSlackNotification(t){await this.sendRequest(`/${be}/explore/slack-notification`,{method:"POST",body:t,retries:2,requestTimeoutMs:1e4});}async recordExplorerSuggestedTests(t){await this.sendRequest(`/${be}/explore/suggested-tests`,{method:"POST",body:t,retries:2,requestTimeoutMs:1e4});}async quarantineTest(t,n,o){await this.sendRequest(`/${be}/quarantine`,{method:"POST",body:{testId:t.id,testName:t.name,reason:n,...o??{}},retries:3,requestTimeoutMs:1e4});}async unquarantineTest(t,n,o){await this.sendRequest(`/${be}/quarantine/${t.id}`,{method:"DELETE",body:{testName:t.name,reason:n,...o??{}},retries:3,requestTimeoutMs:1e4});}platformRoute(t){switch(t){case "ANDROID":return "android";case "IOS":return "ios"}}async createAndroidEmulator(t){let n=await this.sendRequest(`/${be}/limbar/android`,{method:"POST",retries:3,body:t,requestTimeoutMs:9e4,initialRetryDelayMs:5e3,maxRetryDelayMs:15e3});return dK.parse(n)}async extendEmulatorTtl(t,n){try{await this.sendRequest(`/${be}/limbar/${this.platformRoute(t)}/${n}/keepalive`,{method:"POST",retries:3,requestTimeoutMs:15e3});}catch{}}async generateAssetUploadUrl({channel:t,tag:n,md5:o,platform:r}){let i={channel:t,tag:n,md5:o},s=await this.sendRequest(`/${be}/limbar/${this.platformRoute(r)}/upload-url`,{method:"POST",retries:3,body:i,requestTimeoutMs:15e3,logResponse:true});return pK.parse(s)}async deleteAndroidEmulator(t){await this.sendRequest(`/${be}/limbar/android/${t}`,{method:"DELETE",retries:3,requestTimeoutMs:3e4});}async getMobileAssets(){let t=await this.sendRequest(`/${be}/limbar/assets`,{method:"GET",retries:3,requestTimeoutMs:1e4});return mK.parse(t)}async getLimbarAssetDownloadUrl(t,n,o){let r=await this.sendRequest(`/${be}/limbar/assets/${t}/${n}/${this.platformRoute(o)}/download-url`,{method:"GET",retries:2,requestTimeoutMs:3e4});return hK.parse(r)}async deleteAsset(t,n,o){await this.sendRequest(`/${be}/limbar/assets/${t}/${n}/${this.platformRoute(o)}`,{method:"DELETE",retries:3,requestTimeoutMs:1e4});}async createIosEmulator(t){let n=await this.sendRequest(`/${be}/limbar/ios`,{method:"POST",retries:3,body:t,requestTimeoutMs:9e4,initialRetryDelayMs:5e3,maxRetryDelayMs:15e3});return uK.parse(n)}async deleteIosEmulator(t){await this.sendRequest(`/${be}/limbar/ios/${t}`,{method:"DELETE",retries:3,requestTimeoutMs:3e4});}async generateMobileLogcatUploadUrl(t){let n=await this.sendRequest(`/${be}/logcat/mobile/upload`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return hW.parse(n)}async generateMcpSessionTraceUploadUrl(t){let n=await this.sendRequest(`/${be}/mcp/upload`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return ON.parse(n)}};async function nh(e){let t=process.versions.node,n=parseInt(t.split(".")[0]);(isNaN(n)||n<18)&&(R.error(`Node.js version 20 or higher is required to run the CLI. Detected: ${process.versions.node}.`),process.exit(1)),R.debug(`Identified node version ${t}`);let o=await e.client.getAuthInfo();return R.debug("Got auth info from API"),o}var Jd=class{apiClient;constructor(t){this.apiClient=t;}async reportBillableEvents(t,n){await this.apiClient.reportBillableEvents(t,n);}};var Xd=class extends qi{generator;constructor(t,n){super(t),this.generator=n;}async runTemplateMatching(t,n={}){let o=await this.sendRequest(`/${be}/web-agent/template-matching`,{method:"POST",body:t,signal:n?.signal});return KG.parse(o)}async constructIframeRegex(t,n={}){return this.generator.getIframeRegex(t,{abortSignal:n.signal,loggerTags:n.loggerTags})}};var Jf=class{constructor(t,n){this.client=t;this.orgId=n;}getApiServerUrl(){return this.client.baseUrl}getAppServerUrl(){let t=this.getApiServerUrl();return Kg(t)}async acquireCacheLock(t,n){return this.client.acquireCacheLock(t,n)}async createOnDemandScreenshot(t,n,o){let{apiServerUrl:r}=await this.client.uploadOnDemandScreenshot({id:t,screenshot:n.toString("base64"),contentType:o});return {apiServerUrl:r,appServerUrl:`${this.getAppServerUrl()}/api/on-demand-screenshots/${t}`,universalHandle:{id:t,contentType:o}}}async fetchOnDemandScreenshot(t){return this.client.fetchOnDemandScreenshot(t.id)}async releaseCacheLock(t){return this.client.releaseCacheLock(t)}async deleteCacheResult(t){return this.client.deleteCacheResult(t)}async setCacheResult(t){return this.client.setCacheResult(t)}async getCacheResult(t){return this.client.getCacheResult(t)}fetchIconKnowledgeBase(t){return this.client.fetchIconKnowledgeBase(t)}saveNewIcons(t,n){return this.client.saveNewIcons(t,n)}};var Qd="v1",UNe=2e3,CZ="sms.lease() and sms.release() are only supported when running tests via the Momentic CLI.",Zd=class{httpClient;fakerInstance;supportsLease;type="API_CLIENT";sms={send:this.sendSms.bind(this),fetchLatest:this.fetchLatestSms.bind(this),lease:this.leasePhoneNumber.bind(this),release:this.releasePhoneNumber.bind(this)};email={send:this.sendEmail.bind(this),fetchLatest:this.fetchLatestEmail.bind(this),fetchAll:this.fetchAllEmails.bind(this),create:this.createEmail.bind(this)};activeLeases=new Map;constructor(t){this.httpClient=t.httpClient,this.supportsLease=t.supportsLease??true,t.fakerSeed&&(this.fakerInstance=new Faker({locale:en$1}),this.fakerInstance.seed(t.fakerSeed));}async sendSms(t){return this.httpClient.sendRequest(`/${Qd}/tools/sms/send`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to send sms: ${n.message}`)})}async fetchLatestSms(t){return this.httpClient.sendRequest(`/${Qd}/tools/sms/fetchLatest`,{method:"POST",body:t}).catch(n=>{throw n instanceof ro?new Error(n.rawError):n})}async leasePhoneNumber(t){if(!this.supportsLease)throw new Error(CZ);let n=await this.httpClient.sendRequest(`/${Qd}/tools/sms/lease`,{method:"POST",body:t??{}}).catch(r=>{throw r instanceof ro?new Error(r.rawError):new Error(`Failed to lease phone number: ${r.message}`)}),o=AW.parse(n);return this.activeLeases.set(o.phoneNumber,{leaseToken:o.leaseToken}),o}async releasePhoneNumber(t){if(!this.supportsLease)throw new Error(CZ);return this.activeLeases.delete(t.phoneNumber),this.httpClient.sendRequest(`/${Qd}/tools/sms/release`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to release phone number: ${n.message}`)})}async dispose(){let t=[...this.activeLeases.entries()];this.activeLeases.clear(),await Promise.allSettled(t.map(([n,{leaseToken:o}])=>Ie(this.httpClient.sendRequest(`/${Qd}/tools/sms/release`,{method:"POST",body:{phoneNumber:n,leaseToken:o}}),{milliseconds:UNe,fallback:()=>{}})));}async sendEmail(t){return this.httpClient.sendRequest(`/${Qd}/tools/email/send`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to send email: ${n.message}`)})}async fetchAllEmails(t){return this.httpClient.sendRequest(`/${Qd}/tools/email/fetchAll`,{method:"POST",body:t}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to fetch all emails: ${n.message}`)})}async fetchLatestEmail(t){return this.httpClient.sendRequest(`/${Qd}/tools/email/fetchLatest`,{method:"POST",body:t}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to fetch latest emails: ${n.message}`)})}async createEmail(){let t=await this.httpClient.sendRequest(`/${Qd}/tools/email/create`,{method:"POST",body:{}}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to create email inbox: ${n.message}`)});return EW.parse(t)}};function vZ(e,t,n){return fetch(e,{method:"PUT",body:n,headers:{"Content-Type":t}})}var Yw=class{constructor(t){this.client=t;}async uploadResultsArchive(t){let{runGroupId:n,archive:o,persist:r}=t,{uploadUrl:i,id:s}=await this.client.generateTestResultsUploadUrl(),a=await vZ(i,"application/zip",o);if(!a.ok)throw new Error(`Failed to upload test results: ${await a.text()}`);let{runGroupId:l}=await this.client.startProcessingResultsUpload(s,{runGroupId:n,persist:r});return l}};function eu({logger:e,orgId:t,client:n,gitMetadata:o,regenerateCache:r,alwaysSaveCache:i,noCache:s,isolateCachesByEnvironment:a=false,bustOldestCachePercentage:l}){return s?new _v:new aF(e,t,n,o,{regenerateCache:r,alwaysSaveCache:i,bustOldestCachePercentage:l,isolateCachesByEnvironment:a})}var aF=class{constructor(t,n,o,r,i){this.orgId=n;this.client=o;let{regenerateCache:s,alwaysSaveCache:a,bustOldestCachePercentage:l,isolateCachesByEnvironment:c}=i,{gitBranchName:d,gitProtectedBranches:u}=r;t.info({options:i,gitBranchName:d,gitProtectedBranches:u},"Cache storage initialization options"),this.cacheHeaders=xv(r),this.isolateCachesByEnvironment=c,this.readCaches=!s;let p=d&&u.includes(d);a||!p?this.writeCaches=true:this.writeCaches=false,p||(this.bustOldestCachePercentage=l);}cacheHeaders;readCaches;writeCaches;isolateCachesByEnvironment;bustOldestCachePercentage;async saveStepCacheEntries({entries:t,logger:n}){if(!this.writeCaches){n.debug("Skipping cache storage because branch is protected");return}try{await this.client.updateStepCaches({entries:FN(t,this.isolateCachesByEnvironment)},this.cacheHeaders);}catch(o){n.error({err:o},"Failed to save step cache entries");}}async saveSnapshotCacheEntries({entries:t,logger:n}){if(t.length!==0){if(!this.writeCaches){n.debug("Skipping snapshot cache storage because branch is protected");return}try{await this.client.updateSnapshotCaches({entries:FN(t,this.isolateCachesByEnvironment)},this.cacheHeaders);}catch(o){n.error({err:o},"Failed to save snapshot cache entries");}}}async deleteStepCacheEntry({logger:t,testId:n,key:o,environment:r}){try{await this.client.deleteStepCacheEntry({testId:n,key:o,environment:this.isolateCachesByEnvironment?r:void 0},this.cacheHeaders);}catch(i){t.error({err:i},"Failed to delete step cache entry");}}async resolveStepCacheEntries(t){if(!this.readCaches){t.logger.debug("Skipping cache resolution because of regenerate flag");return}let n=t.useSnapshotIdentityCache?await this.tryRestoreStepIdsFromSnapshot(t):void 0,{steps:o,beforeSteps:r,afterSteps:i}=t.stepLists,s=await this.client.getStepCacheForTest({testId:t.testId,environment:this.isolateCachesByEnvironment?t.environment:void 0},this.cacheHeaders);if(this.bustOldestCachePercentage!==void 0){let u=Object.entries(s).map(([h,g])=>({key:h,time:g.value.cache?.updatedAt?.getTime()??0}));u.sort((h,g)=>h.time-g.time);let p=u.length,m=Math.max(1,Math.floor(p*this.bustOldestCachePercentage/100));u.slice(0,m).forEach(({key:h})=>{delete s[h];}),t.logger.info({nCachesToBust:m,bustOldestCachePercentage:this.bustOldestCachePercentage,totalCaches:p},"Busted oldest caches");}let a={totalSteps:0,cacheKeysHit:[],cacheKeysMissed:[],uniqueKeysHit:[],cacheMissSamples:[]};for(let u of [o,r,i]){if(!u)continue;let p=np({steps:u,stepCacheEntries:s,logger:t.logger});a.totalSteps+=p.totalSteps,a.cacheKeysHit.push(...p.cacheKeysHit),a.cacheKeysMissed.push(...p.cacheKeysMissed),a.uniqueKeysHit.push(...p.uniqueKeysHit),a.cacheMissSamples.push(...p.cacheMissSamples);}n&&GNe({cacheResolutionStats:a,logger:t.logger,restoredIdentity:n,schemaVersion:t.schemaVersion,testId:t.testId});let l=["platform:web","source:local",`fileFormat:${t.useSnapshotIdentityCache?"v2":"v1"}`,`snapshotIdentityCache:${t.useSnapshotIdentityCache}`,`orgId:${this.orgId}`,"cliVersion:3.10.2"];if(Tt.increment("step_cache_resolution",a.cacheKeysHit.length,[...l,"outcome:hit"]),Tt.increment("step_cache_resolution",a.cacheKeysMissed.length,[...l,"outcome:miss"]),Tt.increment("step_cache_resolution",a.totalSteps,[...l,"outcome:total"]),!this.writeCaches){t.logger.debug("Skipping cache last used at update because branch is protected");return}let{cachesToSave:c,snapshotCachesToSave:d}=await Jn({stepLists:t.stepLists,useSnapshotIdentityCache:t.useSnapshotIdentityCache,cacheCreationParams:{environment:t.environment,testId:t.testId,orgId:this.orgId}});t.useSnapshotIdentityCache&&this.saveSnapshotCacheEntries({entries:d,logger:t.logger}),this.saveStepCacheEntries({entries:c,logger:t.logger});}async tryRestoreStepIdsFromSnapshot(t){try{return await this.restoreStepIdsFromSnapshot(t)}catch(n){t.logger.warn({err:n,testId:t.testId},"Failed to restore step ids from snapshot cache; proceeding without identity cache"),Tt.increment("step_cache_resolution",1,["platform:web","source:local","fileFormat:v2","snapshotIdentityCache:true",`orgId:${this.orgId}`,"cliVersion:3.10.2","outcome:identity_restore_error"]);return}}async restoreStepIdsFromSnapshot(t){let{logger:n,testId:o}=t,r=await this.client.getSnapshotCacheForTest({testId:o,environment:this.isolateCachesByEnvironment?t.environment:void 0},this.cacheHeaders);for(let a of r){if(!a.schema_version)continue;let l=oN(a.schema_version),c=oN(at);if(l&&c&&l.compare(c)>0){n.warn(`Snapshot cache for test ${o} was written at schema version ${a.schema_version}, which is newer than this CLI's latest (${at}). Please update your momentic package version. Skipping identity restoration from snapshot cache.`);return}}let i=QR({entries:r,orgId:this.orgId,testId:o,logger:n}),s=XR({currentStepLists:t.stepLists,previousSnapshot:i.testSnapshot,previousModuleSnapshots:i.moduleSnapshots,generateUuid:randomUUID});return t.stepLists.steps.splice(0,t.stepLists.steps.length,...s.stepLists.steps),t.stepLists.beforeSteps=s.stepLists.beforeSteps,t.stepLists.afterSteps=s.stepLists.afterSteps,n.debug({snapshotEntries:r.length,testSnapshotHit:!!i.testSnapshot,moduleSnapshots:Array.from(i.moduleSnapshots.keys()),mintedSteps:s.stats.mintedSteps,stats:s.stats,moduleRestoreResults:s.moduleRestoreResults.map(({moduleId:a,snapshotHit:l,stats:c})=>({moduleId:a,snapshotHit:l,stats:c}))},"Restored step ids from snapshot cache"),s}};function GNe({cacheResolutionStats:e,logger:t,restoredIdentity:n,schemaVersion:o,testId:r}){let i=e.cacheKeysHit.length,s=e.cacheKeysMissed.length,a=i+s,l=a>0?Math.round(s/a*1e3)/10:0,c=n.stats.matchedSteps+n.stats.mintedSteps,d=c>0?Math.round(n.stats.mintedSteps/c*1e3)/10:0,u=n.moduleRestoreResults.filter(({snapshotHit:g,stats:f})=>!g||f.mintedSteps>0||f.bustedConditionals>0).slice(0,10).map(({moduleId:g,snapshotHit:f,stats:y})=>({moduleId:g,snapshotHit:f,stats:y})),p=n.stats.mintedSteps>=5&&d>=25,m=p||n.stats.bustedConditionals>0||u.some(({stats:g})=>g.mintedSteps>=5||g.bustedConditionals>0),h={cacheHits:i,cacheMissRate:l,cacheMisses:s,cacheMissSamples:e.cacheMissSamples.slice(0,10),hasHighMintRate:p,identityMintRate:d,moduleIdentityIssueCount:u.length,moduleIdentityIssues:u,schemaVersion:o,snapshotIdentityCache:true,stepIdentityStats:n.stats,testId:r,totalCacheableSteps:e.totalSteps};if(!m){t.debug(h,"V2 cache resolution completed");return}t.warn(h,"V2 cache resolution degraded");}function jNe(e){let t=new RZ,n=Xn__default.join(e,ct),o=Ta.parse(JSON.parse(Sr__default.readFileSync(n,"utf-8")));t.addLocalFile(n);for(let r of Sr__default.readdirSync(Xn__default.join(e,oo))){if(!r.endsWith(".zip"))continue;let i=r.replace(/\.zip$/,""),s=new RZ(Xn__default.join(e,oo,r));for(let a of s.getEntries())a.isDirectory||t.addFile(Xn__default.join(oo,i,a.entryName),a.getData());}return {runGroupId:o.id,buffer:t.toBuffer()}}async function JT(e){let{client:t,resultsPath:n,persist:o}=e;if(!Sr__default.existsSync(n))return {success:false,error:"results path does not exist"};let r=new Yw(t);try{let{runGroupId:i,buffer:s}=jNe(n),a=await r.uploadResultsArchive({runGroupId:i,archive:s,persist:o});return {success:!0,runGroupUrl:`${t.getAppUrl()}/run-groups/${a}`}}catch(i){return {success:false,error:ee(i)}}}var XT=class e{constructor(t,n=true){this.filePath=t;n&&Sr__default.rmSync(this.filePath,{recursive:true,force:true}),Sr__default.mkdirSync(this.filePath,{recursive:true});}children=[];streams=[];close(){for(let t of this.children)t.close();for(let t of this.streams)t.end();}cd(t){let n=new e(Xn__default.join(this.filePath,t));return this.children.push(n),n}cwd(){return this.filePath}mkdir(t){Sr__default.mkdirSync(Xn__default.join(this.filePath,t),{recursive:true});}readFile(t){let n=Xn__default.join(this.filePath,t);if(Sr__default.existsSync(n))return Sr__default.readFileSync(n)}storeFile(t){let{name:n,contents:o}=t,r=Xn__default.join(this.filePath,n);try{Sr__default.mkdirSync(Xn__default.dirname(r),{recursive:!0}),Sr__default.writeFileSync(r,o);}catch{}}createFileStream(t){let n=Xn__default.join(this.filePath,t),o=Sr__default.createWriteStream(n);return this.streams.push(o),o}createRunArchive(t,n){let o=new cF(Xn__default.join(this.filePath,oo),t,n);return this.children.push(o),o}},cF=class{children=[];tempPath;finalPath;logger;closed=false;constructor(t,n,o){this.tempPath=Xn__default.join(t,`temp-storage-${n}`),this.finalPath=Xn__default.join(t,`${n}.zip`),this.logger=o,Sr__default.rmSync(this.tempPath,{recursive:true,force:true}),Sr__default.rmSync(this.finalPath,{recursive:true,force:true}),Sr__default.mkdirSync(this.tempPath,{recursive:true});}readFile(t){let n=Xn__default.join(this.tempPath,t);if(Sr__default.existsSync(n))return Sr__default.readFileSync(n)}mkdir(t){Sr__default.mkdirSync(Xn__default.join(this.tempPath,t),{recursive:true});}cd(t){let n=new XT(Xn__default.join(this.tempPath,t));return this.children.push(n),n}cwd(){return this.tempPath}storeFile(t){if(this.closed)return;let{name:n,contents:o}=t,r=Xn__default.join(this.tempPath,n);Sr__default.mkdirSync(Xn__default.dirname(r),{recursive:true}),Sr__default.writeFileSync(r,o);}close(){if(!this.closed){this.closed=true;for(let t of this.children)t.close();try{let t=new RZ;t.addLocalFolder(this.tempPath,void 0,o=>o!==".DS_Store");let n=t.toBuffer();Sr__default.writeFileSync(this.finalPath,n),Sr__default.rmSync(this.tempPath,{recursive:!0,force:!0});}catch(t){this.logger.warn({err:t,finalPath:this.finalPath,tempPath:this.tempPath},"Failed to archive run artifacts; leaving raw files on disk");}}}};function _Z(e){try{return Sr__default.existsSync(e)?JSON.parse(Sr__default.readFileSync(e,"utf-8")):void 0}catch{return}}function wZ(e){return Sr__default.existsSync(e)?Sr__default.readFileSync(e,"utf-8").split(`
291
+ `)}var MNe="MOMENTIC_OPENAI_RESPONSES_WEBSOCKET_COMPACT_THRESHOLD",NNe=2e5;function Yf(e){let{apiKey:t,sessionId:n,loggerTags:o,runner:r,parentTraceId:i}=e,s={Authorization:`Bearer ${t}`,[wv]:Jm,...n&&{[O2]:n},...r&&{[Iv]:r},...i&&{[M2]:i},...o&&{[P2]:JSON.stringify(o)}};for(let[a,l]of Object.entries(s))s[a]=l.replace(/[\u0100-\uffff]/g,c=>"\\u"+c.charCodeAt(0).toString(16).padStart(4,"0"));return s}var mZ="bedrock/",hZ="azure/",gZ=e=>t=>{let n=Yf(e),o=`${e.baseUrl}/v1/llm/anthropic/${encodeURIComponent(t)}`;return t.startsWith(mZ)?o=`${e.baseUrl}/v1/llm/provider/bedrock/anthropic/${encodeURIComponent(t.slice(mZ.length))}`:t.startsWith(hZ)&&(o=`${e.baseUrl}/v1/llm/provider/foundry/anthropic/${encodeURIComponent(t.slice(hZ.length))}`),createAnthropic({baseURL:o,headers:n,apiKey:e.apiKey})(t)},fZ=e=>t=>{let n=Yf(e),o=e.useOpenAIResponsesWebSocket??false,r=o?e.openAIResponsesWebSocketCompactThreshold??LNe(process.env[MNe])??NNe:void 0;return Kf({baseURL:`${e.baseUrl}/v1/llm/provider/openai/${t}`,headers:n,apiKey:e.apiKey,fetch:o?uZ({compactThreshold:r}):void 0})(t)},yZ=e=>t=>{let n=Yf(e);return Kf({baseURL:`${e.baseUrl}/v1/llm/provider/xai/${t}`,headers:n,apiKey:e.apiKey})(t)},SZ=e=>t=>{let n=Yf(e);return Kf({baseURL:`${e.baseUrl}/v1/llm/provider/azure/${t}`,headers:n,apiKey:e.apiKey})(t)};function iF(e){return t=>n=>{let o=Yf(t);return Kf({baseURL:`${t.baseUrl}/v1/llm/provider/${e}/${n}`,headers:o,apiKey:t.apiKey}).chat(n)}}var bZ=iF("azure/deepseek"),TZ=iF("azure/kimi"),AZ=iF("fireworks/glm"),EZ=e=>t=>{let n=Yf(e);return VD({baseURL:`${e.baseUrl}/v1/llm/provider/vertex`,headers:n,apiKey:e.apiKey})(t)};function LNe(e){if(!e)return;let t=Number.parseInt(e,10);return Number.isFinite(t)&&t>0?t:void 0}var yr=class extends qi{agentConfig;constructor(t,n){let o={...Ig,...t};$C(o),super(n),this.agentConfig=o;}getAgentConfig(){return this.agentConfig}async rankChunksWithAi(t,n){let o={...t,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/recommend-chunks-ai`,{method:"POST",body:o,signal:n.abortSignal});return IV.parse(r)}async rankChunksWithRag(t,n){let o=await this.sendRequest(`/${be}/web-agent/recommend-chunks`,{method:"POST",body:{cliVersion:Jm,...t},signal:n.abortSignal});return wV.parse(o)}async getScreenshotFromS3(t){let n=await this.sendRequest(`/${be}/s3/visual-diff-screenshot`,{method:"POST",body:{url:t}});return z.string().parse(n)}async getElementLocation(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags,useMemory:n.useMemory,cacheBustReason:n.cacheBustReason,agentConfigVersion:this.agentConfig?.locator},r=await this.sendRequest(`/${be}/web-agent/locate-element`,{method:"POST",body:o,signal:n.abortSignal});return k2.parse(r)}async getAssertionResult(t,n){let o={...t,disableCache:!!n.disableCache,useConsensus:!!n.useConsensus,attemptNumber:n.attemptNumber,loggerTags:n.loggerTags,useMemory:n.useMemory,agentConfigVersion:this.agentConfig?.assertion},r=await this.sendRequest(`/${be}/web-agent/assertion`,{method:"POST",body:o,signal:n.abortSignal});return _N.parse(r)}async getLintStepResult(t,n){let o={...t,disableCache:!!n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/lint/step`,{method:"POST",body:o,signal:n.abortSignal});return L2.parse(r)}async getVisualAssertionResult(t,n){let o={...t,disableCache:!!n.disableCache,useConsensus:!!n.useConsensus,attemptNumber:n.attemptNumber,loggerTags:n.loggerTags,useMemory:n.useMemory,agentConfigVersion:this.agentConfig?.["visual-assertion"]},r=await this.sendRequest(`/${be}/web-agent/visual-assertion`,{method:"POST",body:o,signal:n.abortSignal});return _N.parse(r)}async getAiActionCommand(t,n){let o=await this.sendRequest(`/${be}/web-agent/next-command-dynamic`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return N2.parse(o)}async getMultiturnAiActionCommand(t,n){return await this.sendRequest(`/${be}/web-agent/ai-action/next-command`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal})}async getMultiturnAiActionEvaluation(t,n){let o=await this.sendRequest(`/${be}/web-agent/ai-action/evaluate`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return WO.parse(o)}async getReverseMappedDescription(t,n){let o=await this.sendRequest(`/${be}/web-agent/reverse-mapped-description`,{method:"POST",body:{...t,disableCache:n.disableCache,loggerTags:n.loggerTags},signal:n.abortSignal});return D2.parse(o)}async getTextExtraction(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags,agentConfigVersion:this.agentConfig?.["text-extraction"]},r=await this.sendRequest(`/${be}/web-agent/text-extraction`,{method:"POST",body:o,signal:n.abortSignal});return zO.parse(r)}async getPageSummary(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/page-summary`,{method:"POST",body:o,signal:n.abortSignal});return w$.parse(r)}async getSmartWaitingDecision(t,n){let o={...t,disableCache:n.disableCache,loggerTags:n.loggerTags},r=await this.sendRequest(`/${be}/web-agent/smart-waiting`,{method:"POST",body:o,signal:n.abortSignal});return I$.parse(r)}async getKnowledgeSuggestion(t,n){throw new Error("Knowledge suggestion generation is only available on InternalGenerator")}async getTestResultClassification(t,n){let o=await this.sendRequest(`/${be}/web-agent/result-classification`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return rC.parse(o)}async getExtractedKeywords(t,n){let o=await this.sendRequest(`/${be}/web-agent/extract-keywords`,{method:"POST",body:t,signal:n.abortSignal});return UV.parse(o)}async getAutohealingProposal(t,n){let o=await this.sendRequest(`/${be}/web-agent/autoheal-section`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return A$.parse(o)}async getFailureRecoveryProposal(t,n){let o=await this.sendRequest(`/${be}/web-agent/failure-recovery`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return v$.parse(o)}async getFailureRecoveryPlan(t,n){let o=await this.sendRequest(`/${be}/web-agent/failure-recovery-plan`,{method:"POST",body:{...t,loggerTags:n.loggerTags,agentConfigVersion:this.agentConfig?.["failure-recovery"]},signal:n.abortSignal});return C$.parse(o)}async getIframeRegex(t,n){let o=await this.sendRequest(`/${be}/web-agent/iframe-regex`,{method:"POST",body:{...t,loggerTags:n.loggerTags},signal:n.abortSignal});return qG.parse(o)}createAgentTrace(t){let n=randomUUID(),{completionType:o,runId:r,orgId:i,logger:s}=t,a=async l=>{try{await this.sendRequest(`/${be}/traces/result-classification`,{method:"POST",body:{id:n,completionType:o,input:{runId:r},...l,metadata:{orgId:i,runId:r,...l.metadata}}});}catch(c){s.warn({err:c},"Failed to upsert result classification trace");}};return a({}),{id:n,update:a}}getAnthropicModelFactory(t){return this.buildModelFactory(gZ,t)}getAnthropicBedrockModelFactory(t){let n=this.getAnthropicModelFactory(t);return o=>n(`bedrock/${o}`)}getAnthropicFoundryModelFactory(t){let n=this.getAnthropicModelFactory(t);return o=>n(`azure/${o}`)}getOpenAIModelFactory(t){let{sessionId:n,logger:o,streamType:r,useOpenAIResponsesWebSocket:i,parentTraceId:s}=t;return fZ({baseUrl:this.baseUrl,apiKey:this.apiKey,loggerTags:{...jt(o),promptType:r},sessionId:n,useOpenAIResponsesWebSocket:i,runner:this.runner,parentTraceId:s})}getXAIModelFactory(t){return this.buildModelFactory(yZ,t)}getAzureOpenAIModelFactory(t){return this.buildModelFactory(SZ,t)}getAzureDeepSeekModelFactory(t){return this.buildModelFactory(bZ,t)}getAzureKimiModelFactory(t){return this.buildModelFactory(TZ,t)}getFireworksGLMModelFactory(t){return this.buildModelFactory(AZ,t)}getVertexGeminiModelFactory(t){return this.buildModelFactory(EZ,t)}buildModelFactory(t,n){let{sessionId:o,logger:r,streamType:i,parentTraceId:s}=n;return t({baseUrl:this.baseUrl,apiKey:this.apiKey,loggerTags:{...jt(r),promptType:i},sessionId:o,runner:this.runner,parentTraceId:s})}};var Ft=class extends qi{getAppUrl(){return Kg(this.baseUrl)}async getAuthInfo(){let t;try{t=await this.sendRequest(`/${be}/auth/check`,{method:"GET",retries:10,requestTimeoutMs:5e3});}catch(n){throw n instanceof ro?n.status>=400&&n.status<500?new Error(n.rawError,{cause:n}):new Error(`Momentic server error (HTTP ${n.status}). Please try again in a moment.`,{cause:n}):new Error(`Could not reach Momentic server at ${this.baseUrl}. Check your network connection. If you're on a restricted network (VPN, firewall, or proxy), you may need to whitelist Momentic's servers: https://momentic.ai/docs/environment/authentication#ip-whitelist`,{cause:n})}return X2.parse(t)}async getCliAnnouncements(){let t=await this.sendRequest(`/${be}/announcements`,{method:"GET",retries:1,requestTimeoutMs:5e3});return TW.parse(t).announcements}async getQuotaStatus(){let t=await this.sendRequest(`/${be}/billing/check-quota`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Q2.parse(t)}async createRemoteBrowserConnection(t){let n=await this.sendRequest(`/${be}/browsers/connection`,{method:"POST",body:{...t?.runId?{runId:t.runId}:{},...t?.attemptedProviders?{attemptedProviders:t.attemptedProviders}:{}},retries:3,requestTimeoutMs:1e4});return gK.parse(n)}async bulkGetRunStatus(t){let n=await this.sendRequest(`/${be}/runs/status`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return W2.parse(n)}async getRunExport(t){let n=await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/export`,{method:"GET",retries:3,requestTimeoutMs:1e4});return K2.parse(n)}async getResultClassificationCacheEntries(t){let n=await this.sendRequest(`/${be}/result-classification-cache`,{method:"POST",body:t,retries:1,requestTimeoutMs:1e4});return CK.parse(n)}async createResultClassificationCacheEntries(t){await this.sendRequest(`/${be}/result-classification-cache`,{method:"PATCH",body:t,retries:1,requestTimeoutMs:1e4});}async saveRunClassification(t,n){await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/classification`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async saveRunHealMetadataBatch(t){await this.sendRequest(`/${be}/runs/heal-metadata`,{method:"PATCH",body:t,retries:3,requestTimeoutMs:1e4});}async getTestYAMLExport(t){let n=await this.sendRequest(`/${be}/tests/export`,{method:"POST",body:t,retries:3,requestTimeoutMs:3e4});return B2.parse(n)}async updateStepCaches(t,n){await this.sendRequest(`/${be}/cache`,{method:"PATCH",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async updateSnapshotCaches(t,n){await this.sendRequest(`/${be}/snapshot-cache`,{method:"PATCH",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async getStepCacheForTest(t,n){let o=await this.sendRequest(`/${be}/cache`,{method:"POST",body:t,extraHeaders:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return H2.parse(o)}async getSnapshotCacheForTest(t,n){let o=await this.sendRequest(`/${be}/snapshot-cache`,{method:"POST",body:t,extraHeaders:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return G2.parse(o)}async deleteStepCacheEntry(t,n){await this.sendRequest(`/${be}/cache/entry`,{method:"DELETE",body:t,extraHeaders:n,retries:3,requestTimeoutMs:1e4});}async getWebStepCacheMemoryTraces(t){let n=await this.sendRequest(`/${be}/cache/traces`,{method:"POST",body:t,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return PN.parse(n)}cacheRouteForPlatform(t){switch(t){case "ANDROID":return "android-cache";case "IOS":return "ios-cache"}}async deleteMobileStepCacheEntry({platform:t,body:n,headers:o}){await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}/entry`,{method:"DELETE",body:n,extraHeaders:o,retries:3,requestTimeoutMs:1e4});}async getMobileStepCacheMemoryTraces(t,n){let o=await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}/traces`,{method:"POST",body:n,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return PN.parse(o)}async updateMobileStepCaches(t){await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t.platform)}`,{method:"PATCH",body:t.body,extraHeaders:t.headers,retries:3,requestTimeoutMs:1e4,initialRetryDelayMs:3e3});}async getMobileStepCacheForTest({platform:t,body:n,headers:o}){let r=await this.sendRequest(`/${be}/${this.cacheRouteForPlatform(t)}`,{method:"POST",body:n,extraHeaders:o,retries:10,requestTimeoutMs:3e4,initialRetryDelayMs:3e3});return j2[t](r)}async queueTests(t){let n=await this.sendRequest(`/${be}/tests/queue`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return F2.parse(n)}async uploadScreenshot(t){let n=await this.sendRequest(`/${be}/screenshots`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});return J2.parse(n)}async uploadOnDemandScreenshot(t){return await this.sendRequest(`/${be}/on-demand-screenshots`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3}),{apiServerUrl:`${this.baseUrl}/${be}/on-demand-screenshots/${t.id}`}}async fetchOnDemandScreenshot(t){let n={};return {data:await this.sendRequest(`/${be}/on-demand-screenshots/${encodeURIComponent(t)}`,{method:"GET",retries:3,requestTimeoutMs:5e3,responseType:"buffer",responseHeadersObject:n}),contentType:n["content-type"]??"image/jpeg"}}async getAllEnvironments(){let t=await this.sendRequest(`/${be}/environments`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Z2.parse(t)}async acquireCacheLock(t,n){let o=await this.sendRequest(`/${be}/result-cache/lock`,{method:"POST",body:t,signal:n,retries:3,requestTimeoutMs:3e4});return bK.parse(o)}async releaseCacheLock(t){await this.sendRequest(`/${be}/result-cache/lock`,{method:"DELETE",body:{key:t},retries:3,requestTimeoutMs:5e3});}async deleteCacheResult(t){await this.sendRequest(`/${be}/result-cache/entry`,{method:"DELETE",body:t,retries:3,requestTimeoutMs:5e3});}async setCacheResult(t){await this.sendRequest(`/${be}/result-cache/entry`,{method:"PATCH",body:t,retries:3,requestTimeoutMs:5e3});}async getCacheResult(t){try{return await this.sendRequest(`/${be}/result-cache/entry`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3})}catch(n){if(n instanceof Error&&n.message.includes("404"))return null;throw n}}async queueSuiteRuns(t){let n=await this.sendRequest(`/${be}/suites/queue`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});return nK.parse(n)}async bulkGetRunGroupStatus(t){let n={runGroupIds:t},o=await this.sendRequest(`/${be}/run-groups/status`,{method:"POST",body:n,retries:3,requestTimeoutMs:5e3});return bV.array().parse(o)}async getRunGroupWithRuns(t){try{let n=await this.sendRequest(`/${be}/run-groups/${encodeURIComponent(t)}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return TV.parse(n)}catch(n){if(n instanceof ro&&n.status===404)return null;throw n}}async getRun(t){try{let n=await this.sendRequest(`/${be}/runs/${encodeURIComponent(t)}/metadata`,{method:"GET",retries:3,requestTimeoutMs:1e4});return is.parse(n)}catch(n){if(n instanceof ro&&n.status===404)return null;throw n}}async getRunsByCommit(t){let o=[];for(let r=1;;r++){let i=await this.listRuns({gitCommitSha:t,includeFailureDetails:true,limit:100,page:r});if(o.push(...i.runs.map(s=>({...s,test:null}))),i.runs.length<100||r>=i.pageCount)break}return o}async updateGithubPRHealRiskSummary(t,n){await this.sendRequest(`/${be}/run-groups/${encodeURIComponent(t)}/github-pr-heal-risk-summary`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async uploadProposedSteps(t,n){try{await this.sendRequest(`/${be}/test-fragments/`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});}catch(o){n.error({err:o},"Failed to upload proposed steps");}}async reportBillableEvents(t,n){try{await this.sendRequest(`/${be}/billing/events`,{method:"POST",body:n,retries:10,requestTimeoutMs:1e4});}catch(o){t.error({err:o},"Failed to report billable event");}}async fetchTestFragment(t){let n=await this.sendRequest(`/${be}/test-fragments/${t}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return oK.parse(n)}async patchTestFragment(t,n){await this.sendRequest(`/${be}/test-fragments/${t}`,{method:"PATCH",body:n,retries:3,requestTimeoutMs:1e4});}async getPastTestResults(t,n){let o=await this.sendRequest(`/${be}/results/tests/${t}`,{method:"POST",body:n,retries:3,requestTimeoutMs:1e4});return rK.parse(o)}async listRuns(t){let n=await this.sendRequest(`/${be}/results/runs`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return iK.parse(n)}async generateTestResultsUploadUrl(){let t=await this.sendRequest(`/${be}/results/uploads`,{method:"POST",retries:3,requestTimeoutMs:1e4});return sK.parse(t)}async startProcessingResultsUpload(t,n){let o=await this.sendRequest(`/${be}/results/uploads/${t}/process`,{method:"POST",body:n,retries:3,requestTimeoutMs:1e4});return aK.parse(o)}async fetchIconKnowledgeBase(t){try{let n=await this.sendRequest(`/${be}/knowledge-base/icons`,{method:"GET",retries:3,requestTimeoutMs:5e3});return wK.parse(n)}catch(n){return t.error({err:n},"Failed to fetch icon knowledge base"),null}}async saveNewIcons(t,n){try{await this.sendRequest(`/${be}/knowledge-base/icons`,{method:"POST",body:t,retries:3,requestTimeoutMs:5e3});}catch(o){n.error({err:o},"Failed to save new icons to icon knowledge base");}}async retrieveKnowledgeBase({query:t,clientName:n,testId:o,types:r,agentSubtype:i,limit:s,mode:a,scoreMultiplier:l,retries:c,signal:d},u){try{let p=await this.sendRequest(`/${be}/knowledge-base/retrieve`,{method:"POST",body:{query:t,clientName:n,testId:o,types:r,agentSubtype:i,limit:s,mode:a,scoreMultiplier:l},retries:c??3,requestTimeoutMs:5e3,signal:d});return j$.parse(p)}catch(p){return u.warn({err:p},"Failed to retrieve from knowledge base"),null}}async createKnowledgeItem(t){let n=await this.sendRequest(`/${be}/knowledge-base/items`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return oM.parse(n)}async getMergeBaseCommitFromGithub(t,n,o,r){let i=new URLSearchParams;i.set("base",o),i.set("head",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/merge-base-commit?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return Vb.parse(s)}async compareCommitsFromGithub({owner:t,repo:n,base:o,head:r}){let i=new URLSearchParams;i.set("base",o),i.set("head",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/compare?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return kW.parse(s)}async getGithubFileContent({owner:t,repo:n,path:o,ref:r}){let i=new URLSearchParams;i.set("path",o),i.set("ref",r);let s=await this.sendRequest(`/${be}/git/github/${t}/${n}/contents?${i.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return DW.parse(s).content??void 0}async getGithubBranchMetadata(t,n,o){let r=new URLSearchParams;r.set("branch",o);let i=await this.sendRequest(`/${be}/git/github/${t}/${n}/branch-metadata?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return FW.parse(i)}async createGithubPullRequest(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-requests`,{method:"POST",body:o,retries:3,requestTimeoutMs:6e4});return MW.parse(r)}async createGithubCommit(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/commits`,{method:"POST",body:o,retries:3,requestTimeoutMs:6e4});return NW.parse(r)}async getGithubPullRequestTemplate(t,n){try{let o=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-request-template`,{method:"GET",retries:3,requestTimeoutMs:1e4});return UW.parse(o).template}catch(o){if(o instanceof ro&&o.status===404)return;throw o}}async getGithubPullRequestForBranch(t,n,o){let r=new URLSearchParams;r.set("branch",o);let i;try{i=await this.sendRequest(`/${be}/git/github/${t}/${n}/pull-requests?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});}catch(s){if(s instanceof ro&&s.status===404)return;throw s}return LW.parse(i)}async getCommitFromGithub(t,n,o){let r=await this.sendRequest(`/${be}/git/github/${t}/${n}/commits/${o}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return Vb.parse(r)}async getMergedBranchFromGithub(t,n,o,r){let i=encodeURIComponent(o),s=await this.sendRequest(`/${be}/git/github/${t}/${n}/${i}/${r}/merged-branch`,{method:"GET",retries:3,requestTimeoutMs:1e4});return NN.parse(s)}async getMergeBaseCommitFromGitlab(t,n,o){let r=new URLSearchParams;r.set("base",n),r.set("head",o);let i=encodeURIComponent(t),s=await this.sendRequest(`/${be}/git/gitlab/${i}/merge-base-commit?${r.toString()}`,{method:"GET",retries:3,requestTimeoutMs:5e3});return Vb.parse(s)}async getGitlabMergeRequestForBranch(t,n){let o=new URLSearchParams;o.set("branch",n);let r=encodeURIComponent(t),i;try{i=await this.sendRequest(`/${be}/git/gitlab/${r}/merge-requests?${o.toString()}`,{method:"GET",retries:3,requestTimeoutMs:1e4});}catch(s){if(s instanceof ro&&s.status===404)return;throw s}return BW.parse(i)}async getCommitFromGitlab(t,n){let o=encodeURIComponent(t),r=await this.sendRequest(`/${be}/git/gitlab/${o}/commits/${n}`,{method:"GET",retries:3,requestTimeoutMs:1e4});return Vb.parse(r)}async getMergedBranchFromGitlab(t,n,o){let r=encodeURIComponent(n),i=encodeURIComponent(t),s=await this.sendRequest(`/${be}/git/gitlab/${i}/${r}/${o}/merged-branch`,{method:"GET",retries:3,requestTimeoutMs:1e4});return NN.parse(s)}async getAgentConfig(){let t=await this.sendRequest(`/${be}/web-agent/agent-config`,{method:"GET",retries:3,requestTimeoutMs:5e3});return z.record(z.string(),z.string()).parse(t)}async getOrgSettings(){try{let t=await this.sendRequest(`/${be}/org-settings`,{method:"GET",retries:3,requestTimeoutMs:5e3});return aV(t)}catch(t){if(t instanceof ro&&t.status===404)return this.logger.warn({err:t},"Momentic server does not expose org settings; continuing with local project settings"),Rg.parse({});throw t}}async getQuarantinedTests(){let t=await this.sendRequest(`/${be}/quarantine`,{method:"GET"});return lK.parse(t)}async sendExploreSlackNotification(t){await this.sendRequest(`/${be}/explore/slack-notification`,{method:"POST",body:t,retries:2,requestTimeoutMs:1e4});}async recordExplorerSuggestedTests(t){await this.sendRequest(`/${be}/explore/suggested-tests`,{method:"POST",body:t,retries:2,requestTimeoutMs:1e4});}async quarantineTest(t,n,o){await this.sendRequest(`/${be}/quarantine`,{method:"POST",body:{testId:t.id,testName:t.name,reason:n,...o??{}},retries:3,requestTimeoutMs:1e4});}async unquarantineTest(t,n,o){await this.sendRequest(`/${be}/quarantine/${t.id}`,{method:"DELETE",body:{testName:t.name,reason:n,...o??{}},retries:3,requestTimeoutMs:1e4});}platformRoute(t){switch(t){case "ANDROID":return "android";case "IOS":return "ios"}}async createAndroidEmulator(t){let n=await this.sendRequest(`/${be}/limbar/android`,{method:"POST",retries:3,body:t,requestTimeoutMs:9e4,initialRetryDelayMs:5e3,maxRetryDelayMs:15e3});return dK.parse(n)}async extendEmulatorTtl(t,n){try{await this.sendRequest(`/${be}/limbar/${this.platformRoute(t)}/${n}/keepalive`,{method:"POST",retries:3,requestTimeoutMs:15e3});}catch{}}async generateAssetUploadUrl({channel:t,tag:n,md5:o,platform:r}){let i={channel:t,tag:n,md5:o},s=await this.sendRequest(`/${be}/limbar/${this.platformRoute(r)}/upload-url`,{method:"POST",retries:3,body:i,requestTimeoutMs:15e3,logResponse:true});return pK.parse(s)}async deleteAndroidEmulator(t){await this.sendRequest(`/${be}/limbar/android/${t}`,{method:"DELETE",retries:3,requestTimeoutMs:3e4});}async getMobileAssets(){let t=await this.sendRequest(`/${be}/limbar/assets`,{method:"GET",retries:3,requestTimeoutMs:1e4});return mK.parse(t)}async getLimbarAssetDownloadUrl(t,n,o){let r=await this.sendRequest(`/${be}/limbar/assets/${t}/${n}/${this.platformRoute(o)}/download-url`,{method:"GET",retries:2,requestTimeoutMs:3e4});return hK.parse(r)}async deleteAsset(t,n,o){await this.sendRequest(`/${be}/limbar/assets/${t}/${n}/${this.platformRoute(o)}`,{method:"DELETE",retries:3,requestTimeoutMs:1e4});}async createIosEmulator(t){let n=await this.sendRequest(`/${be}/limbar/ios`,{method:"POST",retries:3,body:t,requestTimeoutMs:9e4,initialRetryDelayMs:5e3,maxRetryDelayMs:15e3});return uK.parse(n)}async deleteIosEmulator(t){await this.sendRequest(`/${be}/limbar/ios/${t}`,{method:"DELETE",retries:3,requestTimeoutMs:3e4});}async generateMobileLogcatUploadUrl(t){let n=await this.sendRequest(`/${be}/logcat/mobile/upload`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return hW.parse(n)}async generateMcpSessionTraceUploadUrl(t){let n=await this.sendRequest(`/${be}/mcp/upload`,{method:"POST",body:t,retries:3,requestTimeoutMs:1e4});return ON.parse(n)}};async function nh(e){let t=process.versions.node,n=parseInt(t.split(".")[0]);(isNaN(n)||n<18)&&(R.error(`Node.js version 20 or higher is required to run the CLI. Detected: ${process.versions.node}.`),process.exit(1)),R.debug(`Identified node version ${t}`);let o=await e.client.getAuthInfo();return R.debug("Got auth info from API"),o}var Jd=class{apiClient;constructor(t){this.apiClient=t;}async reportBillableEvents(t,n){await this.apiClient.reportBillableEvents(t,n);}};var Xd=class extends qi{generator;constructor(t,n){super(t),this.generator=n;}async runTemplateMatching(t,n={}){let o=await this.sendRequest(`/${be}/web-agent/template-matching`,{method:"POST",body:t,signal:n?.signal});return KG.parse(o)}async constructIframeRegex(t,n={}){return this.generator.getIframeRegex(t,{abortSignal:n.signal,loggerTags:n.loggerTags})}};var Jf=class{constructor(t,n){this.client=t;this.orgId=n;}getApiServerUrl(){return this.client.baseUrl}getAppServerUrl(){let t=this.getApiServerUrl();return Kg(t)}async acquireCacheLock(t,n){return this.client.acquireCacheLock(t,n)}async createOnDemandScreenshot(t,n,o){let{apiServerUrl:r}=await this.client.uploadOnDemandScreenshot({id:t,screenshot:n.toString("base64"),contentType:o});return {apiServerUrl:r,appServerUrl:`${this.getAppServerUrl()}/api/on-demand-screenshots/${t}`,universalHandle:{id:t,contentType:o}}}async fetchOnDemandScreenshot(t){return this.client.fetchOnDemandScreenshot(t.id)}async releaseCacheLock(t){return this.client.releaseCacheLock(t)}async deleteCacheResult(t){return this.client.deleteCacheResult(t)}async setCacheResult(t){return this.client.setCacheResult(t)}async getCacheResult(t){return this.client.getCacheResult(t)}fetchIconKnowledgeBase(t){return this.client.fetchIconKnowledgeBase(t)}saveNewIcons(t,n){return this.client.saveNewIcons(t,n)}};var Qd="v1",UNe=2e3,CZ="sms.lease() and sms.release() are only supported when running tests via the Momentic CLI.",Zd=class{httpClient;fakerInstance;supportsLease;type="API_CLIENT";sms={send:this.sendSms.bind(this),fetchLatest:this.fetchLatestSms.bind(this),lease:this.leasePhoneNumber.bind(this),release:this.releasePhoneNumber.bind(this)};email={send:this.sendEmail.bind(this),fetchLatest:this.fetchLatestEmail.bind(this),fetchAll:this.fetchAllEmails.bind(this),create:this.createEmail.bind(this)};activeLeases=new Map;constructor(t){this.httpClient=t.httpClient,this.supportsLease=t.supportsLease??true,t.fakerSeed&&(this.fakerInstance=new Faker({locale:en$1}),this.fakerInstance.seed(t.fakerSeed));}async sendSms(t){return this.httpClient.sendRequest(`/${Qd}/tools/sms/send`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to send sms: ${n.message}`)})}async fetchLatestSms(t){return this.httpClient.sendRequest(`/${Qd}/tools/sms/fetchLatest`,{method:"POST",body:t}).catch(n=>{throw n instanceof ro?new Error(n.rawError):n})}async leasePhoneNumber(t){if(!this.supportsLease)throw new Error(CZ);let n=await this.httpClient.sendRequest(`/${Qd}/tools/sms/lease`,{method:"POST",body:t??{}}).catch(r=>{throw r instanceof ro?new Error(r.rawError):new Error(`Failed to lease phone number: ${r.message}`)}),o=AW.parse(n);return this.activeLeases.set(o.phoneNumber,{leaseToken:o.leaseToken}),o}async releasePhoneNumber(t){if(!this.supportsLease)throw new Error(CZ);return this.activeLeases.delete(t.phoneNumber),this.httpClient.sendRequest(`/${Qd}/tools/sms/release`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to release phone number: ${n.message}`)})}async dispose(){let t=[...this.activeLeases.entries()];this.activeLeases.clear(),await Promise.allSettled(t.map(([n,{leaseToken:o}])=>Ie(this.httpClient.sendRequest(`/${Qd}/tools/sms/release`,{method:"POST",body:{phoneNumber:n,leaseToken:o}}),{milliseconds:UNe,fallback:()=>{}})));}async sendEmail(t){return this.httpClient.sendRequest(`/${Qd}/tools/email/send`,{method:"POST",body:t}).then(()=>{}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to send email: ${n.message}`)})}async fetchAllEmails(t){return this.httpClient.sendRequest(`/${Qd}/tools/email/fetchAll`,{method:"POST",body:t}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to fetch all emails: ${n.message}`)})}async fetchLatestEmail(t){return this.httpClient.sendRequest(`/${Qd}/tools/email/fetchLatest`,{method:"POST",body:t}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to fetch latest emails: ${n.message}`)})}async createEmail(){let t=await this.httpClient.sendRequest(`/${Qd}/tools/email/create`,{method:"POST",body:{}}).catch(n=>{throw n instanceof ro?new Error(n.rawError):new Error(`Failed to create email inbox: ${n.message}`)});return EW.parse(t)}};function vZ(e,t,n){return fetch(e,{method:"PUT",body:n,headers:{"Content-Type":t}})}var Yw=class{constructor(t){this.client=t;}async uploadResultsArchive(t){let{runGroupId:n,archive:o,persist:r}=t,{uploadUrl:i,id:s}=await this.client.generateTestResultsUploadUrl(),a=await vZ(i,"application/zip",o);if(!a.ok)throw new Error(`Failed to upload test results: ${await a.text()}`);let{runGroupId:l}=await this.client.startProcessingResultsUpload(s,{runGroupId:n,persist:r});return l}};function eu({logger:e,orgId:t,client:n,gitMetadata:o,regenerateCache:r,alwaysSaveCache:i,noCache:s,isolateCachesByEnvironment:a=false,bustOldestCachePercentage:l}){return s?new _v:new aF(e,t,n,o,{regenerateCache:r,alwaysSaveCache:i,bustOldestCachePercentage:l,isolateCachesByEnvironment:a})}var aF=class{constructor(t,n,o,r,i){this.orgId=n;this.client=o;let{regenerateCache:s,alwaysSaveCache:a,bustOldestCachePercentage:l,isolateCachesByEnvironment:c}=i,{gitBranchName:d,gitProtectedBranches:u}=r;t.info({options:i,gitBranchName:d,gitProtectedBranches:u},"Cache storage initialization options"),this.cacheHeaders=xv(r),this.isolateCachesByEnvironment=c,this.readCaches=!s;let p=d&&u.includes(d);a||!p?this.writeCaches=true:this.writeCaches=false,p||(this.bustOldestCachePercentage=l);}cacheHeaders;readCaches;writeCaches;isolateCachesByEnvironment;bustOldestCachePercentage;async saveStepCacheEntries({entries:t,logger:n}){if(!this.writeCaches){n.debug("Skipping cache storage because branch is protected");return}try{await this.client.updateStepCaches({entries:FN(t,this.isolateCachesByEnvironment)},this.cacheHeaders);}catch(o){n.error({err:o},"Failed to save step cache entries");}}async saveSnapshotCacheEntries({entries:t,logger:n}){if(t.length!==0){if(!this.writeCaches){n.debug("Skipping snapshot cache storage because branch is protected");return}try{await this.client.updateSnapshotCaches({entries:FN(t,this.isolateCachesByEnvironment)},this.cacheHeaders);}catch(o){n.error({err:o},"Failed to save snapshot cache entries");}}}async deleteStepCacheEntry({logger:t,testId:n,key:o,environment:r}){try{await this.client.deleteStepCacheEntry({testId:n,key:o,environment:this.isolateCachesByEnvironment?r:void 0},this.cacheHeaders);}catch(i){t.error({err:i},"Failed to delete step cache entry");}}async resolveStepCacheEntries(t){if(!this.readCaches){t.logger.debug("Skipping cache resolution because of regenerate flag");return}let n=t.useSnapshotIdentityCache?await this.tryRestoreStepIdsFromSnapshot(t):void 0,{steps:o,beforeSteps:r,afterSteps:i}=t.stepLists,s=await this.client.getStepCacheForTest({testId:t.testId,environment:this.isolateCachesByEnvironment?t.environment:void 0},this.cacheHeaders);if(this.bustOldestCachePercentage!==void 0){let u=Object.entries(s).map(([h,g])=>({key:h,time:g.value.cache?.updatedAt?.getTime()??0}));u.sort((h,g)=>h.time-g.time);let p=u.length,m=Math.max(1,Math.floor(p*this.bustOldestCachePercentage/100));u.slice(0,m).forEach(({key:h})=>{delete s[h];}),t.logger.info({nCachesToBust:m,bustOldestCachePercentage:this.bustOldestCachePercentage,totalCaches:p},"Busted oldest caches");}let a={totalSteps:0,cacheKeysHit:[],cacheKeysMissed:[],uniqueKeysHit:[],cacheMissSamples:[]};for(let u of [o,r,i]){if(!u)continue;let p=np({steps:u,stepCacheEntries:s,logger:t.logger});a.totalSteps+=p.totalSteps,a.cacheKeysHit.push(...p.cacheKeysHit),a.cacheKeysMissed.push(...p.cacheKeysMissed),a.uniqueKeysHit.push(...p.uniqueKeysHit),a.cacheMissSamples.push(...p.cacheMissSamples);}n&&GNe({cacheResolutionStats:a,logger:t.logger,restoredIdentity:n,schemaVersion:t.schemaVersion,testId:t.testId});let l=["platform:web","source:local",`fileFormat:${t.useSnapshotIdentityCache?"v2":"v1"}`,`snapshotIdentityCache:${t.useSnapshotIdentityCache}`,`orgId:${this.orgId}`,"cliVersion:3.10.3"];if(Tt.increment("step_cache_resolution",a.cacheKeysHit.length,[...l,"outcome:hit"]),Tt.increment("step_cache_resolution",a.cacheKeysMissed.length,[...l,"outcome:miss"]),Tt.increment("step_cache_resolution",a.totalSteps,[...l,"outcome:total"]),!this.writeCaches){t.logger.debug("Skipping cache last used at update because branch is protected");return}let{cachesToSave:c,snapshotCachesToSave:d}=await Jn({stepLists:t.stepLists,useSnapshotIdentityCache:t.useSnapshotIdentityCache,cacheCreationParams:{environment:t.environment,testId:t.testId,orgId:this.orgId}});t.useSnapshotIdentityCache&&this.saveSnapshotCacheEntries({entries:d,logger:t.logger}),this.saveStepCacheEntries({entries:c,logger:t.logger});}async tryRestoreStepIdsFromSnapshot(t){try{return await this.restoreStepIdsFromSnapshot(t)}catch(n){t.logger.warn({err:n,testId:t.testId},"Failed to restore step ids from snapshot cache; proceeding without identity cache"),Tt.increment("step_cache_resolution",1,["platform:web","source:local","fileFormat:v2","snapshotIdentityCache:true",`orgId:${this.orgId}`,"cliVersion:3.10.3","outcome:identity_restore_error"]);return}}async restoreStepIdsFromSnapshot(t){let{logger:n,testId:o}=t,r=await this.client.getSnapshotCacheForTest({testId:o,environment:this.isolateCachesByEnvironment?t.environment:void 0},this.cacheHeaders);for(let a of r){if(!a.schema_version)continue;let l=oN(a.schema_version),c=oN(at);if(l&&c&&l.compare(c)>0){n.warn(`Snapshot cache for test ${o} was written at schema version ${a.schema_version}, which is newer than this CLI's latest (${at}). Please update your momentic package version. Skipping identity restoration from snapshot cache.`);return}}let i=QR({entries:r,orgId:this.orgId,testId:o,logger:n}),s=XR({currentStepLists:t.stepLists,previousSnapshot:i.testSnapshot,previousModuleSnapshots:i.moduleSnapshots,generateUuid:randomUUID});return t.stepLists.steps.splice(0,t.stepLists.steps.length,...s.stepLists.steps),t.stepLists.beforeSteps=s.stepLists.beforeSteps,t.stepLists.afterSteps=s.stepLists.afterSteps,n.debug({snapshotEntries:r.length,testSnapshotHit:!!i.testSnapshot,moduleSnapshots:Array.from(i.moduleSnapshots.keys()),mintedSteps:s.stats.mintedSteps,stats:s.stats,moduleRestoreResults:s.moduleRestoreResults.map(({moduleId:a,snapshotHit:l,stats:c})=>({moduleId:a,snapshotHit:l,stats:c}))},"Restored step ids from snapshot cache"),s}};function GNe({cacheResolutionStats:e,logger:t,restoredIdentity:n,schemaVersion:o,testId:r}){let i=e.cacheKeysHit.length,s=e.cacheKeysMissed.length,a=i+s,l=a>0?Math.round(s/a*1e3)/10:0,c=n.stats.matchedSteps+n.stats.mintedSteps,d=c>0?Math.round(n.stats.mintedSteps/c*1e3)/10:0,u=n.moduleRestoreResults.filter(({snapshotHit:g,stats:f})=>!g||f.mintedSteps>0||f.bustedConditionals>0).slice(0,10).map(({moduleId:g,snapshotHit:f,stats:y})=>({moduleId:g,snapshotHit:f,stats:y})),p=n.stats.mintedSteps>=5&&d>=25,m=p||n.stats.bustedConditionals>0||u.some(({stats:g})=>g.mintedSteps>=5||g.bustedConditionals>0),h={cacheHits:i,cacheMissRate:l,cacheMisses:s,cacheMissSamples:e.cacheMissSamples.slice(0,10),hasHighMintRate:p,identityMintRate:d,moduleIdentityIssueCount:u.length,moduleIdentityIssues:u,schemaVersion:o,snapshotIdentityCache:true,stepIdentityStats:n.stats,testId:r,totalCacheableSteps:e.totalSteps};if(!m){t.debug(h,"V2 cache resolution completed");return}t.warn(h,"V2 cache resolution degraded");}function jNe(e){let t=new RZ,n=Xn__default.join(e,ct),o=Ta.parse(JSON.parse(Sr__default.readFileSync(n,"utf-8")));t.addLocalFile(n);for(let r of Sr__default.readdirSync(Xn__default.join(e,oo))){if(!r.endsWith(".zip"))continue;let i=r.replace(/\.zip$/,""),s=new RZ(Xn__default.join(e,oo,r));for(let a of s.getEntries())a.isDirectory||t.addFile(Xn__default.join(oo,i,a.entryName),a.getData());}return {runGroupId:o.id,buffer:t.toBuffer()}}async function JT(e){let{client:t,resultsPath:n,persist:o}=e;if(!Sr__default.existsSync(n))return {success:false,error:"results path does not exist"};let r=new Yw(t);try{let{runGroupId:i,buffer:s}=jNe(n),a=await r.uploadResultsArchive({runGroupId:i,archive:s,persist:o});return {success:!0,runGroupUrl:`${t.getAppUrl()}/run-groups/${a}`}}catch(i){return {success:false,error:ee(i)}}}var XT=class e{constructor(t,n=true){this.filePath=t;n&&Sr__default.rmSync(this.filePath,{recursive:true,force:true}),Sr__default.mkdirSync(this.filePath,{recursive:true});}children=[];streams=[];close(){for(let t of this.children)t.close();for(let t of this.streams)t.end();}cd(t){let n=new e(Xn__default.join(this.filePath,t));return this.children.push(n),n}cwd(){return this.filePath}mkdir(t){Sr__default.mkdirSync(Xn__default.join(this.filePath,t),{recursive:true});}readFile(t){let n=Xn__default.join(this.filePath,t);if(Sr__default.existsSync(n))return Sr__default.readFileSync(n)}storeFile(t){let{name:n,contents:o}=t,r=Xn__default.join(this.filePath,n);try{Sr__default.mkdirSync(Xn__default.dirname(r),{recursive:!0}),Sr__default.writeFileSync(r,o);}catch{}}createFileStream(t){let n=Xn__default.join(this.filePath,t),o=Sr__default.createWriteStream(n);return this.streams.push(o),o}createRunArchive(t,n){let o=new cF(Xn__default.join(this.filePath,oo),t,n);return this.children.push(o),o}},cF=class{children=[];tempPath;finalPath;logger;closed=false;constructor(t,n,o){this.tempPath=Xn__default.join(t,`temp-storage-${n}`),this.finalPath=Xn__default.join(t,`${n}.zip`),this.logger=o,Sr__default.rmSync(this.tempPath,{recursive:true,force:true}),Sr__default.rmSync(this.finalPath,{recursive:true,force:true}),Sr__default.mkdirSync(this.tempPath,{recursive:true});}readFile(t){let n=Xn__default.join(this.tempPath,t);if(Sr__default.existsSync(n))return Sr__default.readFileSync(n)}mkdir(t){Sr__default.mkdirSync(Xn__default.join(this.tempPath,t),{recursive:true});}cd(t){let n=new XT(Xn__default.join(this.tempPath,t));return this.children.push(n),n}cwd(){return this.tempPath}storeFile(t){if(this.closed)return;let{name:n,contents:o}=t,r=Xn__default.join(this.tempPath,n);Sr__default.mkdirSync(Xn__default.dirname(r),{recursive:true}),Sr__default.writeFileSync(r,o);}close(){if(!this.closed){this.closed=true;for(let t of this.children)t.close();try{let t=new RZ;t.addLocalFolder(this.tempPath,void 0,o=>o!==".DS_Store");let n=t.toBuffer();Sr__default.writeFileSync(this.finalPath,n),Sr__default.rmSync(this.tempPath,{recursive:!0,force:!0});}catch(t){this.logger.warn({err:t,finalPath:this.finalPath,tempPath:this.tempPath},"Failed to archive run artifacts; leaving raw files on disk");}}}};function _Z(e){try{return Sr__default.existsSync(e)?JSON.parse(Sr__default.readFileSync(e,"utf-8")):void 0}catch{return}}function wZ(e){return Sr__default.existsSync(e)?Sr__default.readFileSync(e,"utf-8").split(`
292
292
  `).map(n=>n.trim()).filter(n=>n.length>0):[]}function WNe(e,t){let n=e.attemptIdToAttemptNumber.get(t);if(n)return Xn__default.join(e.inflatedPath,"attempts",n);let o=Xn__default.join(e.inflatedPath,"attempts");if(!Sr__default.existsSync(o))return;let r=Sr__default.readdirSync(o,{withFileTypes:true}).filter(i=>i.isDirectory()).map(i=>i.name);for(let i of r){let s=Xn__default.join(o,i,ct),a=_Z(s);if(typeof a!="object"||a===null)continue;let l=a.id;if(typeof l=="string"&&l===t)return e.attemptIdToAttemptNumber.set(t,i),Xn__default.join(o,i)}}function IZ(e,t,n){let o=Xn__default.join(e,"attempts");if(!Sr__default.existsSync(o))return;let r=Sr__default.readdirSync(o,{withFileTypes:true}).filter(i=>i.isDirectory()).map(i=>i.name);for(let i of r){let s=Xn__default.join(o,i,"assets",`${t}.${n}`);if(Sr__default.existsSync(s))return s}}var Xw=class{constructor(t,n,o){this.outputDir=t;this.runId=n;this.runAttemptId=o;this.runsDir=Xn__default.join(t,oo),this.zipPath=Xn__default.join(this.runsDir,`${n}.zip`);}inflatedByRunId=new Map;zipPath;runsDir;ensureInflatedRun(t){let n=this.inflatedByRunId.get(t);if(n)return n;if(t!==this.runId||!Sr__default.existsSync(this.zipPath))return;let o=Xn__default.join(this.runsDir,`temp-unzipped-${t}-${randomUUID()}`);Sr__default.mkdirSync(o,{recursive:true}),new RZ(this.zipPath).extractAllTo(o,true);let i={runId:t,zipPath:this.zipPath,inflatedPath:o,attemptIdToAttemptNumber:new Map};return this.inflatedByRunId.set(t,i),i}close(){for(let t of this.inflatedByRunId.values())Sr__default.rmSync(t.inflatedPath,{recursive:true,force:true});this.inflatedByRunId.clear();}getAttemptDir(){let t=this.ensureInflatedRun(this.runId);if(t)return WNe(t,this.runAttemptId)}listVideoAssetPaths(){let t=this.getAttemptDir();if(!t)return [];let n=Xn__default.join(t,"assets");return Sr__default.existsSync(n)?Sr__default.readdirSync(n,{withFileTypes:true}).filter(r=>r.isFile()).map(r=>Xn__default.join(n,r.name)).filter(r=>{let i=Xn__default.extname(r).toLowerCase();return i===".webm"||i===".mp4"}):[]}readAttemptAssetText(t,n){let o=this.getAttemptDir();if(!o)return;let r=Xn__default.join(o,"assets",`${t}.${n}`);if(Sr__default.existsSync(r))try{return Sr__default.readFileSync(r,"utf-8")}catch{return}}async getConsoleLogsForRunAttempt(t,n,o){if(n!==this.runId||o!==this.runAttemptId)return;let r=this.getAttemptDir();if(!r)return;let i=_Z(Xn__default.join(r,"console.json")),s=rN.safeParse(i);return s.success?s.data:void 0}async getNetworkLogsForRunAttempt(t,n,o){if(n!==this.runId||o!==this.runAttemptId)return;let r=this.getAttemptDir();if(!r)return;let i=Xn__default.join(r,"assets","har-pages.log"),s=Xn__default.join(r,"assets","har-entries.log"),a={};for(let d of wZ(i)){let u=Ob.safeParse(xZ(d));u.success&&(a[u.data.id]=u.data);}let l={},c=wZ(s);for(let d=0;d<c.length;d++){let u=c[d],p=Mb.safeParse(xZ(u));if(!p.success)continue;let m=`${p.data.startedDateTime}-${d}`;l[m]=p.data;}if(Object.keys(l).length!==0)return iN(a,l)}async getHtmlSnapshot(t,n){let o=this.readAttemptAssetText(n,"html");if(o)return o;let r=this.ensureInflatedRun(this.runId);if(!r)return;let i=IZ(r.inflatedPath,n,"html");if(i)try{return Sr__default.readFileSync(i,"utf-8")}catch{return}}async getA11yTreeSnapshot(t,n){let o=this.readAttemptAssetText(n,"xml");if(o)return o;let r=this.ensureInflatedRun(this.runId);if(!r)return;let i=IZ(r.inflatedPath,n,"xml");if(i)try{return Sr__default.readFileSync(i,"utf-8")}catch{return}}async getScreenshot(t,n){if(!this.ensureInflatedRun(this.runId))return;let r=this.getAttemptDir();if(r)for(let i of ["png","jpeg"])try{return Sr__default.readFileSync(Xn__default.join(r,"assets",`${n}.${i}`))}catch{continue}}};function xZ(e){try{return JSON.parse(e)}catch{return}}function PZ(e,t){let n=qNe(e);return n==="EACCES"||n==="EPERM"?{status:403,body:{error:`Permission denied: ${t}`}}:n==="ENOENT"?{status:404,body:{error:`Not found: ${t}`}}:n==="ENOTDIR"?{status:400,body:{error:`Not a directory: ${t}`}}:n==="EISDIR"?{status:400,body:{error:`Is a directory: ${t}`}}:n==="EEXIST"?{status:409,body:{error:`Already exists: ${t}`}}:n==="ENOTEMPTY"?{status:409,body:{error:`Directory is not empty: ${t}`}}:{status:500,body:{error:`${t}: ${ee(e)}`}}}function qNe(e){if(e&&typeof e=="object"&&"code"in e&&typeof e.code=="string")return e.code}function Xf({test:e,envNameOverride:t,urlOverride:n,resolveEnv:o}){let r=t??KNe(e),i,s={};if(r){try{i=o(r);}catch(l){let c=`Failed to resolve environment ${r} for test ${e.name}: ${ee(l)}`;throw l instanceof De?new De(c,{cause:l}):new Error(c,{cause:l})}s=i.variables;}let a=e.baseUrl;if(n)a=n;else if(!a){let l=s[Ir];typeof l=="string"&&(a=l);}if(!a)throw new _u(`Cannot run test with no base URL and no ${Ir} variable defined in its environment`);return {envName:r,resolvedEnv:i,environmentVariables:s,baseUrl:a}}function KNe(e){for(let t of e.envs??[])if(t.default)return t.name}async function QT(e,t,n,o,r=pt){let i=o??await Ve(e,false,r),s=i[n],a=YNe(s,t);if(t.id){if(a.length===0)throw new mt(`No ${n} found with id '${t.id}' in project '${e.rootDir}'.`);return Qw(a,i)}if(t.name){if(a.length===0)throw new mt(`No ${n} found with exact name '${t.name}' in project '${e.rootDir}'.`);if(a.length>1){let l=a.map(c=>({id:c.id,path:c.relativePath}));throw new mt([`Multiple ${n} found with exact name '${t.name}'. Please disambiguate by id or path.`,JSON.stringify(l,null,2)].join(`
293
293
  `))}return Qw(a,i)}if(t.path){let l=t.path;if(a.length===0)throw new mt(`No ${n} found at path '${l}'. Provide an absolute path or a path relative to '${e.rootDir}'.`);if(a.length>1){let c=a.filter(u=>u.fullFilePath===l||u.relativePath===l||u.fullFilePath.endsWith(`/${l}`)||u.relativePath.endsWith(`/${l}`));if(c.length===1)return Qw(c,i);let d=a.map(u=>({id:u.id,path:u.fullFilePath}));throw new mt([`Multiple ${n} matched the provided path '${l}'. Please pass the absolute path.`,JSON.stringify(d,null,2)].join(`
294
294
  `))}return Qw(a,i)}throw new Error("No valid selector field provided. Exactly one of id, name, or path must be specified.")}function Qw(e,t){let n=e[0];if(!n)throw e.length>0?new Error("No entity found: matches array is not empty. Unknown error."):new Error("No entity found.");return {entity:n,momenticFiles:t}}function YNe(e,t){if(t.id){let n=Object.values(e).find(o=>o.id===t.id);return n?[n]:[]}if(t.name)return Object.values(e).filter(n=>n.name===t.name);if(t.path){let n=t.path;return Object.values(e).filter(o=>o.fullFilePath.includes(n)||o.relativePath.includes(n))}throw new Error("No valid selector field provided: expected exactly one of 'id', 'name', or 'path'.")}function OZ({momenticFiles:e,logger:t}){let n=new Set,o=new Set,r=Object.values(e.tests).map(i=>i.fullFilePath);for(;r.length>0;){let i=r.shift();if(!i||o.has(i))continue;o.add(i);let s=JNe({fullFilePath:i,momenticFiles:e,logger:t});for(let a of s){let l=e.modules[a];!l||n.has(a)||(n.add(a),r.push(l.fullFilePath));}}return Object.values(e.modules).filter(i=>!n.has(i.id)).sort((i,s)=>i.relativePath.localeCompare(s.relativePath))}function JNe({fullFilePath:e,momenticFiles:t,logger:n}){try{return Ew(e,t)}catch(o){return n.warn({err:o,fullFilePath:e},"Failed to analyze a file while searching for unused modules."),new Set}}async function MZ({cwd:e,projectName:t}){let n=Xn__default.join(e,Lc);if(Sr__default.existsSync(n))throw new Error(`A ${Lc} file already exists at ${n}. Please rename or remove it to initialize a new project.`);let o=await EQ(e)??"main",r={name:t,include:Lf,gitMainBranch:o,fileFormat:"v2",browser:{disableSecondaryCacheResolution:true},ai:{useMemory:true,failureRecovery:true,agentConfig:{...Ig}}};return zd(r,n),{configPath:n}}var ZNe="npx skills@latest add momentic-ai/skills",eLe="https://momentic.ai/docs/integrations/mcp-server",tLe={web:["https://momentic.ai/docs/quickstart/web"],mobile:["https://momentic.ai/docs/quickstart/ios","https://momentic.ai/docs/quickstart/android"]};function NZ({platform:e}){let t="npx momentic app",n=tLe[e].map(r=>dl.underline.cyan(r)).join(dl.dim(" \xB7 ")),o=(r,i)=>` ${dl.dim(r.padEnd(14))}${i}`;R.log(""),R.log(dl.bold("Next steps")),R.log(o("Editor skills",dl.cyan(ZNe))),R.log(o("Coding agent",`${dl.dim("Momentic MCP \u2192")} ${dl.underline.cyan(eLe)}`)),R.log(o("Local editor",dl.cyan(t))),R.log(o("Docs",n));}var LZ=["cursor","claude-code","codex","opencode","copilot"],oLe={cursor:Xn__default.join(".cursor","skills"),"claude-code":Xn__default.join(".claude","skills"),codex:Xn__default.join(".agents","skills"),opencode:Xn__default.join(".opencode","skills"),copilot:Xn__default.join(".github","skills")};function kZ({editor:e,skillsDir:t,cwd:n=process.cwd()}){Sr__default.existsSync(t)||(R.error(`Could not find skills directory at ${t}. Is the CLI package installed correctly?`),process.exit(1));let o=Sr__default.readdirSync(t).filter(s=>s.endsWith(".md"));o.length===0&&(R.error(`No skill markdown files found in ${t}. Is the CLI package installed correctly?`),process.exit(1));let r=rLe({cwd:n}),i=Xn__default.join(r,oLe[e]);for(let s of o){let a=Xn__default.basename(s,".md"),l=Xn__default.join(i,a),c=Sr__default.readFileSync(Xn__default.join(t,s),"utf8");Sr__default.mkdirSync(l,{recursive:true}),Sr__default.writeFileSync(Xn__default.join(l,"SKILL.md"),c),R.success(`Installed SKILL.md at ${Xn__default.join(l,"SKILL.md")}.`);}}function rLe({cwd:e}){try{return execSync("git rev-parse --show-toplevel",{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim()||e}catch{return e}}var FZ=Xn__default.join(_d.homedir(),".momentic"),tu=Xn__default.join(FZ,"auth.json"),sLe=new Set(["EPERM","EACCES","EROFS"]),aLe=z.object({workos:z.object({accessToken:z.string(),refreshToken:z.string(),expiresAt:z.number()}),user:z.object({id:z.string(),email:z.string().optional()}),organizationId:z.string(),apiKey:z.string(),apiKeyName:z.string(),serverUrl:z.string(),createdAt:z.string(),selfServe:z.boolean().optional()});function BZ(){if(!Sr__default.existsSync(tu))return null;try{let e=Sr__default.readFileSync(tu,"utf-8"),t=aLe.safeParse(JSON.parse(e));return t.success?t.data:null}catch{return null}}function UZ(e){try{Sr__default.mkdirSync(FZ,{recursive:!0,mode:448}),Sr__default.writeFileSync(tu,JSON.stringify(e,null,2),{mode:384});}catch(t){throw WJ(t)&&sLe.has(t.code)?new De(`Couldn't save your Momentic credentials to ${tu} (${t.code}). Make sure that file and its parent directory are writable and owned by you \u2014 for example, they may have been created by a previous \`sudo\` run. Fix the permissions and try again.`,{cause:t}):t}}function HZ(){return Sr__default.existsSync(tu)?(Sr__default.unlinkSync(tu),true):false}function Zw(){return BZ()?.apiKey||void 0}function eI(){return BZ()?.serverUrl||void 0}var dF="client_01HM3P9MPY20QDSXAECT6PY1JF",GZ="https://api.workos.com";async function jZ({clientId:e}){let t=await fetch(`${GZ}/user_management/authorize/device`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:e}).toString()});if(!t.ok)throw new Error(`WorkOS device authorization failed (${t.status}): ${await t.text()}`);return await t.json()}async function $Z({clientId:e,deviceCode:t,interval:n,expiresIn:o,onProgress:r}){let i=Date.now()+o*1e3,s=Math.max(n,1);for(;Date.now()<i;){await lLe(s*1e3);let a=await fetch(`${GZ}/user_management/authenticate`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:t,client_id:e}).toString()});if(a.ok)return await a.json();let l=await a.json().catch(()=>({})),c=l.error??"";if(c==="authorization_pending"){r?.("polling");continue}if(c==="slow_down"){s+=5,r?.("slow_down");continue}throw c==="expired_token"?new De("The login request expired. Please run `login` again."):c==="access_denied"?new De("Login was denied."):new Error(`WorkOS device token exchange failed: ${l.error_description??c??a.statusText}`)}throw new De("Timed out waiting for sign-in. Please run `login` again.")}function lLe(e){return new Promise(t=>setTimeout(t,e))}async function uF({serverUrl:e,body:t}){let n=await fetch(`${e}/v1/auth/exchange-workos-token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)}),o=await n.text(),r;try{r=o?JSON.parse(o):void 0;}catch{}if(n.status===200){let s=eK.safeParse(r);if(s.success)return {kind:"ok",data:s.data}}if(n.status===409){let s=tK.safeParse(r);if(s.success)return {kind:"multi_org",data:s.data}}let i=cLe(r)??o??n.statusText;return {kind:"error",status:n.status,message:i}}function cLe(e){if(e&&typeof e=="object"&&"error"in e){let{error:t}=e;if(typeof t=="string")return t}}async function zZ({serverUrl:e,ui:t,openBrowser:n=true,clientName:o=_d.hostname(),coldRun:r=false}){let i=await jZ({clientId:dF}),s=i.verification_uri_complete??i.verification_uri,a=r?"Create account or sign in":"Sign in",l=r?"Waiting for you to create your account or sign in...":"Waiting for you to sign in...",c=r?"Waiting for you to create your account or sign in (slowing polling)...":"Waiting for you to sign in (slowing polling)...";if(t.note(`${dl.bold(i.user_code)}
@@ -312,7 +312,7 @@ ${l}`:a}function mF(e,t,n={}){if(e.length===0)return "";let o=nr(t),r=Math.max(n
312
312
  ${r}
313
313
  `);}catch(n){e.logger.warn({err:n},"Failed to check CLI version against npm");}}async function ULe(e,t,n){if(!s6){s6=true;try{let o=await e.getCliAnnouncements();for(let{announcement:r,level:i}of o)R.log(`
314
314
  ${t6({announcement:r,level:i},n)}
315
- `);}catch(o){t.warn({err:o},"Failed to fetch CLI announcements");}}}var hF="^22.12.0 || >=24.0.0";function d6(){(iu.satisfies(process.version,hF)||(R.error(`Momentic requires Node.js ${hF}, but you are running ${process.version}. Upgrade Node.js (https://nodejs.org/en/download) and try again.`),process.exit(1)));}var tA=25;function u6(e){return {v2ProjectConfig:{...e.config,fileFormat:"v2"},migratedFilePaths:[]}}function p6(e){return {legacyProjectConfig:{...e.config,fileFormat:"v1"},migratedFilePaths:[]}}function gF({project:e,newProjectConfig:t,fileFormatLabel:n,migratedFilePaths:o}){e.config=t,zd(e.config,e.configFilePath),o.push(e.configFilePath),R.info(`Updated ${e.configFilePath} to use ${n} file format`),t.hooks?.postSave&&(R.info(`Running post-save hook for ${o.length} migrated files`),gw([...new Set(o)],t));}async function nA(e,t,n){for(let o=0;o<e.length;o+=t)await Promise.all(e.slice(o,o+t).map(n));}function fF(e){return e.upgradedAgents.length>0||e.enabledUseMemory||e.enabledFailureRecovery}function GLe(e){let t=e.ai??={},n=t.agentConfig??={},o=[];for(let[s,a]of Object.entries(Ig)){let l=n[s];l!==a&&(l?.startsWith(`${a}.`)||(n[s]=a,o.push({type:s,newValue:a})));}let r=t.useMemory!==true;r&&(t.useMemory=true);let i=t.failureRecovery!==true;return i&&(t.failureRecovery=true),{upgradedAgents:o,enabledUseMemory:r,enabledFailureRecovery:i}}async function m6({project:e,dryRun:t,migrate:n}){let o=e.config.fileFormat!=="v2",r=GLe(e.config);return o?{fileFormatChanged:o,aiSettings:r,migration:await n()}:(!t&&fF(r)&&zd(e.config,e.configFilePath),{fileFormatChanged:false,aiSettings:r,migration:yF()})}function yF(){return {migratedTestPaths:[],migratedModulePaths:[],alreadyV2TestCount:0,alreadyV2ModuleCount:0}}function SF({summary:e,fileFormatChanged:t,aiSettings:n,dryRun:o,testNoun:r="test",moduleNoun:i="module"}){let s=o?"Would migrate":"Migrated",a=pT(r,e.migratedTestPaths.length),l=pT(i,e.migratedModulePaths.length);R.info(`${s} ${e.migratedTestPaths.length} ${a} and ${e.migratedModulePaths.length} ${l} to v2.`),(e.alreadyV2TestCount>0||e.alreadyV2ModuleCount>0)&&R.dimmed(` Skipped ${e.alreadyV2TestCount} already-v2 ${pT(r,e.alreadyV2TestCount)} and ${e.alreadyV2ModuleCount} already-v2 ${pT(i,e.alreadyV2ModuleCount)}.`),t&&R.dimmed(" + fileFormat: v2");for(let c of n.upgradedAgents)R.dimmed(` + ai.agentConfig.${c.type}: ${c.newValue}`);n.enabledUseMemory&&R.dimmed(" + ai.useMemory: true"),n.enabledFailureRecovery&&R.dimmed(" + ai.failureRecovery: true");}var bF=false,h6;try{let e=await import('@sentry/node'),t="production";e.init({dsn:"https://89e980855f7b9c6e56fc6c7e7143888b@o4506426201800704.ingest.us.sentry.io/4508343221354497",environment:t,enabled:t!=="development",dist:"production",release:"cli@3.10.2",tracesSampleRate:0,skipOpenTelemetrySetup:!0,sendDefaultPii:!0,beforeSend(n,o){return hX(o?.originalException)||dC(o?.originalException,De)||gX(o?.originalException)?null:n}}),mY(e.captureException),h6=n=>{if(!n){e.setUser(null);return}e.setUser({id:n.userId,organizationId:n.orgId,...n.email&&{email:n.email}});},bF=!0;}catch{}var g6=e=>h6?.(e);var $Le=new IR(30,60*1e3),pI="https://api.momentic.ai",ny,f6,su=e=>{pI=e;},Xr=()=>pI,y6=()=>Kg(pI),bp=e=>{f6=e;},au=()=>f6,rr=()=>ny,S6=()=>{if(!ny)throw new Error("Global API client has not been initialized.");return ny};var oA,lI,b6,T6,A6,cI,E6,C6=({authInfo:e,apiKey:t,apiClient:n})=>{ny=n,oA=e.orgId,lI=e.userId,b6=e.email,T6=e.name,A6=e.pylonEmailHash,cI=t,E6=e.selfServe;},oy=async({apiClient:e,apiKey:t,skipPrompts:n})=>{let o=await nh({client:e});return C6({authInfo:o,apiKey:t,apiClient:e}),o},mI=async({apiKey:e,mode:t,runner:n})=>{if(ny&&oA&&cI)return oA;let o=new Ft({baseUrl:pI,apiKey:e,logger:R,mode:t,runner:n});ny=o;try{let r=await o.getAuthInfo();return C6({authInfo:r,apiKey:e,apiClient:o}),r.orgId}catch(r){throw new Error(`Error checking API key against server: ${r}`,{cause:r})}},io=()=>{if(!oA)throw new Error("Your organization ID is invalid.");return oA},Bc=()=>{if(!lI)throw new Error("Your user ID is invalid.");return lI},v6=()=>lI,ry=()=>b6,R6=()=>T6,w6=()=>A6,hI=()=>E6,Xs=()=>{if(!cI)throw new Error("Your API key is invalid.");return cI},dI,uI,lu=()=>{uI?.abort(),uI=void 0;},iy=(e,t)=>{dI=e,lu(),uI=new AbortController;let n=uI.signal,o=[e.configFilePath];e.config.environments?.forEach(r=>{if(!r.envFile)return;let i=Xn__default.resolve(e.rootDir,r.envFile);try{if(Sr__default.lstatSync(i).isSymbolicLink())return;Sr__default.existsSync(i)&&o.push(i);}catch(s){R.warn({err:s},`Failed to check if env file ${i} exists`);}});try{VLe({filesToWatch:o,revalidator:t,signal:n,project:e});}catch(r){R.error({err:r},"Failed to start config file watchers");}};async function sy({project:e,apiClient:t}){let n=o=>Ks({project:o,apiClient:t});iy(await n(e),async o=>n(await on({configFilePath:o})));}var st=()=>{if(!dI)throw new De("No Momentic project is currently loaded. Open or select a project before invoking this action.");return dI};function VLe({filesToWatch:e,revalidator:t,signal:n,project:o}){R.debug("Starting watch on the following files:"),e.forEach(r=>{R.debug(`- ${r}`);}),e.forEach(r=>{let i=async(a,l)=>{if(a.mtime.getTime()!==l.mtime.getTime()){$Le.increment("setLocalProject")&&R.warn(`A file change under the ${o.rootDir} directory has caused Momentic to reload its configuration more than 30 times in the last minute. Rapid changes to files may indicate your momentic.config.yaml 'include' glob is incorrect. Please ensure temporary, library, and auto-generated files are not included in Momentic's context.`);try{dI=await Promise.resolve(t(o.configFilePath));}catch(c){R.warn({err:c},`Failed to reload Momentic configuration after a change to ${r}; continuing with the previously loaded configuration`);}}};Sr__default.watchFile(r,{persistent:false},i);let s=()=>{Sr__default.unwatchFile(r,i),n.removeEventListener("abort",s);};n.addEventListener("abort",s);});}function St(e){return function(...t){let n=t[t.length-1],o=e(...t);Promise.resolve(o).catch(n);}}var WLe="3.10.2",ih=Qg({app:"desktop-server",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:WLe});(async()=>{try{let e=await _a(ih);e.gitBranchName&&ih.addBinding("branch",e.gitBranchName);}catch{}})();var I6=Router();I6.get("/",async(e,t)=>{let n=st(),o=rr();if(!o){t.status(500).json({message:"API client not initialized"});return}let r=await pi(ih,o,n),i=r?.gitProtectedBranches&&r?.gitBranchName&&r.gitProtectedBranches.includes(r.gitBranchName),{noCache:s,alwaysSaveCache:a}=au(),l=!s&&(a||!i);t.status(200).json({saveCaches:l,checkedOutBranch:r?.gitBranchName});});var TF=I6;var YLe=5e3,JLe=[".js",".mjs",".cjs",".ts"];function AF(e={}){let t=Router();function n(){let u=st();return Xn__default.dirname(u.configFilePath)}function o(u){return Xn__default.join(n(),...u)}function r(u){let p=Xn__default.relative(n(),u);return p?p.split(Xn__default.sep):[]}function i(u,p){let m=Sr__default.statSync(u),h=r(u);return cN.parse({name:p,absolutePath:u,relativePath:h.join(Xn__default.sep),pathSegments:h,isDirectory:m.isDirectory(),size:m.size,createdAt:m.birthtime,modifiedAt:m.mtime,accessedAt:m.atime})}function s(u){let p=Xn__default.relative(n(),u);return p===""||!p.startsWith("..")&&!Xn__default.isAbsolute(p)}async function a(u){let p=st();return Gd(["*"],{cwd:u,ignore:p.config.exclude??[],maxDepth:1,nodir:false,signal:AbortSignal.timeout(YLe)})}function l(u){let p=u.trimStart().replace(/^file:\/\//,"").replaceAll("\\","/"),m=p.lastIndexOf("/");return m===-1?{directoryText:"",filePrefix:p}:{directoryText:p.slice(0,m+1),filePrefix:p.slice(m+1)}}function c(u){return u.replaceAll("\\","/").split("/").filter(p=>p&&p!==".")}function d({sourceDirectoryPath:u,targetPath:p,isDirectory:m}){let h=Xn__default.relative(u,p).split(Xn__default.sep).join("/");return m?h?`${h}/`:"./":h}return t.post("/file-reference-suggestions",St(async(u,p,m)=>{let h=o1.safeParse(u.body);if(!h.success){p.status(400).json({error:`Failed to parse file-reference-suggestions body: ${h.error.message}`});return}let{sourceDirectoryPath:g="",value:f}=h.data,y=new Set((h.data.allowedExtensions??JLe).map(v=>v.toLowerCase())),S=l(f);if(S.directoryText.startsWith("/")){p.status(200).json({suggestions:[]});return}let b=Xn__default.resolve(n(),...c(g)),E=Xn__default.resolve(b,...c(S.directoryText));if(!s(b)||!s(E)){p.status(200).json({suggestions:[]});return}if(!Sr__default.existsSync(E)||!Sr__default.statSync(E).isDirectory()){p.status(200).json({suggestions:[]});return}let C;try{C=await a(E);}catch(v){if(v instanceof Error&&v.name==="TimeoutError"){p.status(408).json({error:"Folder listing timed out. This directory may contain too many files."});return}throw v}let w=C.map(v=>{let _=Xn__default.join(E,v);return {entryName:v,targetPath:_,isDirectory:Sr__default.statSync(_).isDirectory()}}),I=S.filePrefix.toLowerCase(),P=w.filter(v=>v.entryName.startsWith(".")||!v.entryName.toLowerCase().startsWith(I)?false:v.isDirectory?true:y.has(Xn__default.extname(v.entryName).toLowerCase())).sort((v,_)=>v.isDirectory!==_.isDirectory?v.isDirectory?-1:1:v.entryName.localeCompare(_.entryName)).map(v=>({name:v.entryName,isDirectory:v.isDirectory,value:d({sourceDirectoryPath:b,targetPath:v.targetPath,isDirectory:v.isDirectory})}));p.status(200).json({suggestions:P});})),t.post("/",St(async(u,p,m)=>{let h;try{h=n1.parse(u.body).pathSegments;}catch(E){p.status(400).json({error:`Failed to parse folder read body: ${E}`});return}let g=o(h);if(!Sr__default.existsSync(g)){p.status(404).json({error:`Path not found: ${h.join(Xn__default.sep)}`});return}if(!Sr__default.statSync(g).isDirectory()){p.status(400).json({error:`Path is not a directory: ${h.join(Xn__default.sep)}`});return}let y;try{y=await a(g);}catch(E){if(E instanceof Error&&E.name==="TimeoutError"){p.status(408).json({error:"Folder listing timed out. This directory may contain too many files."});return}throw E}let S=y.map(E=>{let C=Xn__default.join(g,E);return i(C,E)});if(e.allowedFileTypes){let E=new Set(e.allowedFileTypes);S=(await Promise.all(S.map(async C=>{if(C.isDirectory||!(C.name.endsWith(".test.yaml")||C.name.endsWith(".module.yaml")))return C;let I=await XLe(C.absolutePath);return I!==void 0&&E.has(I)?C:null}))).filter(C=>C!==null);}let b={absolutePath:g,pathSegments:h,contents:S};p.status(200).json(b);})),t.put("/",St(async(u,p,m)=>{let h;try{h=r1.parse(u.body).pathSegments;}catch(y){p.status(400).json({error:`Failed to parse folder create body: ${y}`});return}let g=o(h);if(Sr__default.existsSync(g)){p.status(200).json({success:true,message:`Folder already exists: ${h.join(Xn__default.sep)}`,pathSegments:h});return}Sr__default.mkdirSync(g,{recursive:true});let f={success:true,message:`Folder created: ${h.join(Xn__default.sep)}`,pathSegments:h};p.status(201).json(f);})),t.patch("/",St(async(u,p,m)=>{let h,g;try{let E=i1.parse(u.body);h=E.pathSegments,g=E.newPathSegments;}catch(E){p.status(400).json({error:`Failed to parse folder update body: ${E}`});return}let f=o(h),y=o(g);if(!Sr__default.existsSync(f)){p.status(400).json({error:`Folder not found: ${h.join(Xn__default.sep)}`});return}if(Sr__default.existsSync(y)){p.status(400).json({error:`Destination already exists: ${g.join(Xn__default.sep)}`});return}let S=Xn__default.dirname(y);Sr__default.existsSync(S)||Sr__default.mkdirSync(S,{recursive:true}),Sr__default.renameSync(f,y);let b={success:true,message:`Folder moved from ${h.join(Xn__default.sep)} to ${g.join(Xn__default.sep)}`,pathSegments:g};p.status(200).json(b);})),t.delete("/",St(async(u,p,m)=>{let h,g=true;try{let b=s1.parse(u.body);h=b.pathSegments,g=b.recursive??!0;}catch(b){p.status(400).json({error:`Failed to parse folder delete body: ${b}`});return}let f=o(h);if(!Sr__default.existsSync(f)){p.status(200).json({success:true,message:`Folder not found: ${h.join(Xn__default.sep)}`,pathSegments:h});return}if(!Sr__default.statSync(f).isDirectory()){p.status(400).json({error:`Path is not a directory: ${h.join(Xn__default.sep)}`});return}try{if(g)Sr__default.rmSync(f,{recursive:!0,force:!0});else {if(Sr__default.readdirSync(f).length>0){p.status(409).json({error:`Cannot delete non-empty directory without recursive flag: ${h.join("/")}`});return}Sr__default.rmdirSync(f);}}catch(b){let{status:E,body:C}=PZ(b,`delete folder ${h.join("/")}`);p.status(E).json(C);return}let S={success:true,message:`Folder deleted: ${h.join("/")}`,pathSegments:h};p.status(200).json(S);})),t}async function XLe(e){try{let t=await Sr__default.promises.open(e,"r");try{let n=Buffer.alloc(4096),{bytesRead:o}=await t.read(n,0,n.length,0);return n.toString("utf-8",0,o).match(/^fileType:\s*(.+)$/m)?.[1]?.trim()}finally{await t.close();}}catch{}}var x6=Router();x6.get("/",async(e,t)=>{let n=st(),o=rr();if(!o){t.status(500).json({message:"API client not initialized"});return}let r=await pi(ih,o,n);t.status(200).json(r);});var EF=x6;var ZLe=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async()=>{t.info({sessionId:o},"Cancel event received");let r=n.getSession(o);if(!r)throw new Error("No active session found");try{r.controller.setClosed();}catch{}}},_6={event:"cancel",createHandler:ZLe};var eke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{testId:o,sessionId:r}=e;return async(i,s)=>{let{stepId:a,environment:l,parentStepIdChain:c}=i;t.info({testId:o,stepId:a},"Clearing AI action cache");try{let d=n.getSession(r);if(!d)throw new Error("No active session found");let u=DR(a,c.join(":")||void 0);await Promise.all(u.map(p=>d.cacheStorage.deleteStepCacheEntry({logger:t,testId:o,key:p,environment:l}))),s({ok:!0});}catch(d){t.error({testId:o,stepId:a,err:d},"Failed to clear AI action cache"),s({ok:false,error:ee(d)});}}},P6={event:"clearAIActionCache",createHandler:eke};var tke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async(r,i)=>{let s=n.getSession(o);if(!s)throw new Error("No active session found");s.controller.setOpen();let a=s.controller.browser;try{let c=(await a.getBrowserState({skipWait:!0})).serialize();t.debug({a11yTree:c},"Fetched a11y tree from the browser"),i({a11yTree:c});}catch(l){t.error({err:l},"Error fetching a11y tree from the browser"),i({err:l.message});}}},O6={event:"fetchA11yTree",createHandler:tke};var nke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async(r,i)=>{let s=n.getSession(o);if(!s)throw new Error("No active session found");s.controller.setOpen();let a=s.controller.browser;try{let l=await a.html();i({html:l});}catch(l){t.error({err:l},"Error fetching DOM from the browser"),l.name==="TimeoutError"?i({err:"Timed out fetching DOM tree. This page may be too large for Momentic to process."}):i({err:l.message});}}},M6={event:"fetchDom",createHandler:nke};var oke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return r=>{t.info({sessionId:o,reason:r},`Disconnect event received (${r})`),n.removeSession(o,t);}},N6={event:"disconnect",createHandler:oke};function ys(e){let{result:t,nestedResults:n}=e;if(!e.nestedResults.length)return;let{firstMetadata:o,lastMetadata:r}=rke(n);ike(t,o,r);let i=[...e.asyncTasks];e.asyncTasks.push((async()=>{try{await ske(i,t,o,r);}catch(s){e.logger.error({result:e.result,err:s},"Error hoisting scalar result metadata");}})());}function rke(e){let t=e[0],n;for(;;){switch(t.type){case "PRESET_ACTION":case "CONDITIONAL":n=t;break;case "AI_ACTION_DYNAMIC":case "AI_ACTION":case "MODULE":case "SECTION":case "WHILE_LOOP":if(!t.results.length){n=t;break}t=t.results[0];break;default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}if(n)break}let o=e[e.length-1],r;for(;;){switch(o.type){case "PRESET_ACTION":{r=o;break}case "AI_ACTION_DYNAMIC":case "CONDITIONAL":case "AI_ACTION":case "MODULE":case "SECTION":case "WHILE_LOOP":if(!o.results.length){r=o;break}o=o.results[o.results.length-1];break;default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}if(r)break}return {firstMetadata:n,lastMetadata:r}}function ike(e,t,n){t&&(e.beforeUrl=t.beforeUrl),n&&(e.afterUrl=n.afterUrl,e.data=n.data,n.status!=="SUCCESS"&&(e.message=n.message,e.failureClassification=n.failureClassification));}async function ske(e,t,n,o){await Promise.allSettled(e),n&&(t.beforeSnapshot=n.beforeSnapshot),o&&(t.afterSnapshot=o.afterSnapshot);}async function L6(e){let t;try{t=new URL(e.url).hostname;}catch{}let n=[];return e.headers.getSetCookie()?.forEach(o=>{let r=rv(o,t);n.push(...r);}),n}function hke(e,t){if(!e&&!t)return;let n;if(e){let{url:r,options:i}=e;n=new Request(r,i);}let o;if(t){let{body:r,options:i}=t;o=new Response(r??null,i);}return {request:n,response:o}}async function gke(e,t){switch(e){case "RAW":return t;case "RESPONSE":if(t instanceof Response){let n=[];return t.headers.forEach((r,i)=>{n.push([i,r]);}),{status:t.status,headers:n,body:await t.text()}}else throw new Error("Result is not a Response object")}}var fke=Object.getPrototypeOf(async function(){}).constructor;async function k6(e,t,n){let o=t.code;t.options.fragment&&(o=`return ${t.code}`),o=`${o}
315
+ `);}catch(o){t.warn({err:o},"Failed to fetch CLI announcements");}}}var hF="^22.12.0 || >=24.0.0";function d6(){(iu.satisfies(process.version,hF)||(R.error(`Momentic requires Node.js ${hF}, but you are running ${process.version}. Upgrade Node.js (https://nodejs.org/en/download) and try again.`),process.exit(1)));}var tA=25;function u6(e){return {v2ProjectConfig:{...e.config,fileFormat:"v2"},migratedFilePaths:[]}}function p6(e){return {legacyProjectConfig:{...e.config,fileFormat:"v1"},migratedFilePaths:[]}}function gF({project:e,newProjectConfig:t,fileFormatLabel:n,migratedFilePaths:o}){e.config=t,zd(e.config,e.configFilePath),o.push(e.configFilePath),R.info(`Updated ${e.configFilePath} to use ${n} file format`),t.hooks?.postSave&&(R.info(`Running post-save hook for ${o.length} migrated files`),gw([...new Set(o)],t));}async function nA(e,t,n){for(let o=0;o<e.length;o+=t)await Promise.all(e.slice(o,o+t).map(n));}function fF(e){return e.upgradedAgents.length>0||e.enabledUseMemory||e.enabledFailureRecovery}function GLe(e){let t=e.ai??={},n=t.agentConfig??={},o=[];for(let[s,a]of Object.entries(Ig)){let l=n[s];l!==a&&(l?.startsWith(`${a}.`)||(n[s]=a,o.push({type:s,newValue:a})));}let r=t.useMemory!==true;r&&(t.useMemory=true);let i=t.failureRecovery!==true;return i&&(t.failureRecovery=true),{upgradedAgents:o,enabledUseMemory:r,enabledFailureRecovery:i}}async function m6({project:e,dryRun:t,migrate:n}){let o=e.config.fileFormat!=="v2",r=GLe(e.config);return o?{fileFormatChanged:o,aiSettings:r,migration:await n()}:(!t&&fF(r)&&zd(e.config,e.configFilePath),{fileFormatChanged:false,aiSettings:r,migration:yF()})}function yF(){return {migratedTestPaths:[],migratedModulePaths:[],alreadyV2TestCount:0,alreadyV2ModuleCount:0}}function SF({summary:e,fileFormatChanged:t,aiSettings:n,dryRun:o,testNoun:r="test",moduleNoun:i="module"}){let s=o?"Would migrate":"Migrated",a=pT(r,e.migratedTestPaths.length),l=pT(i,e.migratedModulePaths.length);R.info(`${s} ${e.migratedTestPaths.length} ${a} and ${e.migratedModulePaths.length} ${l} to v2.`),(e.alreadyV2TestCount>0||e.alreadyV2ModuleCount>0)&&R.dimmed(` Skipped ${e.alreadyV2TestCount} already-v2 ${pT(r,e.alreadyV2TestCount)} and ${e.alreadyV2ModuleCount} already-v2 ${pT(i,e.alreadyV2ModuleCount)}.`),t&&R.dimmed(" + fileFormat: v2");for(let c of n.upgradedAgents)R.dimmed(` + ai.agentConfig.${c.type}: ${c.newValue}`);n.enabledUseMemory&&R.dimmed(" + ai.useMemory: true"),n.enabledFailureRecovery&&R.dimmed(" + ai.failureRecovery: true");}var bF=false,h6;try{let e=await import('@sentry/node'),t="production";e.init({dsn:"https://89e980855f7b9c6e56fc6c7e7143888b@o4506426201800704.ingest.us.sentry.io/4508343221354497",environment:t,enabled:t!=="development",dist:"production",release:"cli@3.10.3",tracesSampleRate:0,skipOpenTelemetrySetup:!0,sendDefaultPii:!0,beforeSend(n,o){return hX(o?.originalException)||dC(o?.originalException,De)||gX(o?.originalException)?null:n}}),mY(e.captureException),h6=n=>{if(!n){e.setUser(null);return}e.setUser({id:n.userId,organizationId:n.orgId,...n.email&&{email:n.email}});},bF=!0;}catch{}var g6=e=>h6?.(e);var $Le=new IR(30,60*1e3),pI="https://api.momentic.ai",ny,f6,su=e=>{pI=e;},Xr=()=>pI,y6=()=>Kg(pI),bp=e=>{f6=e;},au=()=>f6,rr=()=>ny,S6=()=>{if(!ny)throw new Error("Global API client has not been initialized.");return ny};var oA,lI,b6,T6,A6,cI,E6,C6=({authInfo:e,apiKey:t,apiClient:n})=>{ny=n,oA=e.orgId,lI=e.userId,b6=e.email,T6=e.name,A6=e.pylonEmailHash,cI=t,E6=e.selfServe;},oy=async({apiClient:e,apiKey:t,skipPrompts:n})=>{let o=await nh({client:e});return C6({authInfo:o,apiKey:t,apiClient:e}),o},mI=async({apiKey:e,mode:t,runner:n})=>{if(ny&&oA&&cI)return oA;let o=new Ft({baseUrl:pI,apiKey:e,logger:R,mode:t,runner:n});ny=o;try{let r=await o.getAuthInfo();return C6({authInfo:r,apiKey:e,apiClient:o}),r.orgId}catch(r){throw new Error(`Error checking API key against server: ${r}`,{cause:r})}},io=()=>{if(!oA)throw new Error("Your organization ID is invalid.");return oA},Bc=()=>{if(!lI)throw new Error("Your user ID is invalid.");return lI},v6=()=>lI,ry=()=>b6,R6=()=>T6,w6=()=>A6,hI=()=>E6,Xs=()=>{if(!cI)throw new Error("Your API key is invalid.");return cI},dI,uI,lu=()=>{uI?.abort(),uI=void 0;},iy=(e,t)=>{dI=e,lu(),uI=new AbortController;let n=uI.signal,o=[e.configFilePath];e.config.environments?.forEach(r=>{if(!r.envFile)return;let i=Xn__default.resolve(e.rootDir,r.envFile);try{if(Sr__default.lstatSync(i).isSymbolicLink())return;Sr__default.existsSync(i)&&o.push(i);}catch(s){R.warn({err:s},`Failed to check if env file ${i} exists`);}});try{VLe({filesToWatch:o,revalidator:t,signal:n,project:e});}catch(r){R.error({err:r},"Failed to start config file watchers");}};async function sy({project:e,apiClient:t}){let n=o=>Ks({project:o,apiClient:t});iy(await n(e),async o=>n(await on({configFilePath:o})));}var st=()=>{if(!dI)throw new De("No Momentic project is currently loaded. Open or select a project before invoking this action.");return dI};function VLe({filesToWatch:e,revalidator:t,signal:n,project:o}){R.debug("Starting watch on the following files:"),e.forEach(r=>{R.debug(`- ${r}`);}),e.forEach(r=>{let i=async(a,l)=>{if(a.mtime.getTime()!==l.mtime.getTime()){$Le.increment("setLocalProject")&&R.warn(`A file change under the ${o.rootDir} directory has caused Momentic to reload its configuration more than 30 times in the last minute. Rapid changes to files may indicate your momentic.config.yaml 'include' glob is incorrect. Please ensure temporary, library, and auto-generated files are not included in Momentic's context.`);try{dI=await Promise.resolve(t(o.configFilePath));}catch(c){R.warn({err:c},`Failed to reload Momentic configuration after a change to ${r}; continuing with the previously loaded configuration`);}}};Sr__default.watchFile(r,{persistent:false},i);let s=()=>{Sr__default.unwatchFile(r,i),n.removeEventListener("abort",s);};n.addEventListener("abort",s);});}function St(e){return function(...t){let n=t[t.length-1],o=e(...t);Promise.resolve(o).catch(n);}}var WLe="3.10.3",ih=Qg({app:"desktop-server",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:WLe});(async()=>{try{let e=await _a(ih);e.gitBranchName&&ih.addBinding("branch",e.gitBranchName);}catch{}})();var I6=Router();I6.get("/",async(e,t)=>{let n=st(),o=rr();if(!o){t.status(500).json({message:"API client not initialized"});return}let r=await pi(ih,o,n),i=r?.gitProtectedBranches&&r?.gitBranchName&&r.gitProtectedBranches.includes(r.gitBranchName),{noCache:s,alwaysSaveCache:a}=au(),l=!s&&(a||!i);t.status(200).json({saveCaches:l,checkedOutBranch:r?.gitBranchName});});var TF=I6;var YLe=5e3,JLe=[".js",".mjs",".cjs",".ts"];function AF(e={}){let t=Router();function n(){let u=st();return Xn__default.dirname(u.configFilePath)}function o(u){return Xn__default.join(n(),...u)}function r(u){let p=Xn__default.relative(n(),u);return p?p.split(Xn__default.sep):[]}function i(u,p){let m=Sr__default.statSync(u),h=r(u);return cN.parse({name:p,absolutePath:u,relativePath:h.join(Xn__default.sep),pathSegments:h,isDirectory:m.isDirectory(),size:m.size,createdAt:m.birthtime,modifiedAt:m.mtime,accessedAt:m.atime})}function s(u){let p=Xn__default.relative(n(),u);return p===""||!p.startsWith("..")&&!Xn__default.isAbsolute(p)}async function a(u){let p=st();return Gd(["*"],{cwd:u,ignore:p.config.exclude??[],maxDepth:1,nodir:false,signal:AbortSignal.timeout(YLe)})}function l(u){let p=u.trimStart().replace(/^file:\/\//,"").replaceAll("\\","/"),m=p.lastIndexOf("/");return m===-1?{directoryText:"",filePrefix:p}:{directoryText:p.slice(0,m+1),filePrefix:p.slice(m+1)}}function c(u){return u.replaceAll("\\","/").split("/").filter(p=>p&&p!==".")}function d({sourceDirectoryPath:u,targetPath:p,isDirectory:m}){let h=Xn__default.relative(u,p).split(Xn__default.sep).join("/");return m?h?`${h}/`:"./":h}return t.post("/file-reference-suggestions",St(async(u,p,m)=>{let h=o1.safeParse(u.body);if(!h.success){p.status(400).json({error:`Failed to parse file-reference-suggestions body: ${h.error.message}`});return}let{sourceDirectoryPath:g="",value:f}=h.data,y=new Set((h.data.allowedExtensions??JLe).map(v=>v.toLowerCase())),S=l(f);if(S.directoryText.startsWith("/")){p.status(200).json({suggestions:[]});return}let b=Xn__default.resolve(n(),...c(g)),E=Xn__default.resolve(b,...c(S.directoryText));if(!s(b)||!s(E)){p.status(200).json({suggestions:[]});return}if(!Sr__default.existsSync(E)||!Sr__default.statSync(E).isDirectory()){p.status(200).json({suggestions:[]});return}let C;try{C=await a(E);}catch(v){if(v instanceof Error&&v.name==="TimeoutError"){p.status(408).json({error:"Folder listing timed out. This directory may contain too many files."});return}throw v}let w=C.map(v=>{let _=Xn__default.join(E,v);return {entryName:v,targetPath:_,isDirectory:Sr__default.statSync(_).isDirectory()}}),I=S.filePrefix.toLowerCase(),P=w.filter(v=>v.entryName.startsWith(".")||!v.entryName.toLowerCase().startsWith(I)?false:v.isDirectory?true:y.has(Xn__default.extname(v.entryName).toLowerCase())).sort((v,_)=>v.isDirectory!==_.isDirectory?v.isDirectory?-1:1:v.entryName.localeCompare(_.entryName)).map(v=>({name:v.entryName,isDirectory:v.isDirectory,value:d({sourceDirectoryPath:b,targetPath:v.targetPath,isDirectory:v.isDirectory})}));p.status(200).json({suggestions:P});})),t.post("/",St(async(u,p,m)=>{let h;try{h=n1.parse(u.body).pathSegments;}catch(E){p.status(400).json({error:`Failed to parse folder read body: ${E}`});return}let g=o(h);if(!Sr__default.existsSync(g)){p.status(404).json({error:`Path not found: ${h.join(Xn__default.sep)}`});return}if(!Sr__default.statSync(g).isDirectory()){p.status(400).json({error:`Path is not a directory: ${h.join(Xn__default.sep)}`});return}let y;try{y=await a(g);}catch(E){if(E instanceof Error&&E.name==="TimeoutError"){p.status(408).json({error:"Folder listing timed out. This directory may contain too many files."});return}throw E}let S=y.map(E=>{let C=Xn__default.join(g,E);return i(C,E)});if(e.allowedFileTypes){let E=new Set(e.allowedFileTypes);S=(await Promise.all(S.map(async C=>{if(C.isDirectory||!(C.name.endsWith(".test.yaml")||C.name.endsWith(".module.yaml")))return C;let I=await XLe(C.absolutePath);return I!==void 0&&E.has(I)?C:null}))).filter(C=>C!==null);}let b={absolutePath:g,pathSegments:h,contents:S};p.status(200).json(b);})),t.put("/",St(async(u,p,m)=>{let h;try{h=r1.parse(u.body).pathSegments;}catch(y){p.status(400).json({error:`Failed to parse folder create body: ${y}`});return}let g=o(h);if(Sr__default.existsSync(g)){p.status(200).json({success:true,message:`Folder already exists: ${h.join(Xn__default.sep)}`,pathSegments:h});return}Sr__default.mkdirSync(g,{recursive:true});let f={success:true,message:`Folder created: ${h.join(Xn__default.sep)}`,pathSegments:h};p.status(201).json(f);})),t.patch("/",St(async(u,p,m)=>{let h,g;try{let E=i1.parse(u.body);h=E.pathSegments,g=E.newPathSegments;}catch(E){p.status(400).json({error:`Failed to parse folder update body: ${E}`});return}let f=o(h),y=o(g);if(!Sr__default.existsSync(f)){p.status(400).json({error:`Folder not found: ${h.join(Xn__default.sep)}`});return}if(Sr__default.existsSync(y)){p.status(400).json({error:`Destination already exists: ${g.join(Xn__default.sep)}`});return}let S=Xn__default.dirname(y);Sr__default.existsSync(S)||Sr__default.mkdirSync(S,{recursive:true}),Sr__default.renameSync(f,y);let b={success:true,message:`Folder moved from ${h.join(Xn__default.sep)} to ${g.join(Xn__default.sep)}`,pathSegments:g};p.status(200).json(b);})),t.delete("/",St(async(u,p,m)=>{let h,g=true;try{let b=s1.parse(u.body);h=b.pathSegments,g=b.recursive??!0;}catch(b){p.status(400).json({error:`Failed to parse folder delete body: ${b}`});return}let f=o(h);if(!Sr__default.existsSync(f)){p.status(200).json({success:true,message:`Folder not found: ${h.join(Xn__default.sep)}`,pathSegments:h});return}if(!Sr__default.statSync(f).isDirectory()){p.status(400).json({error:`Path is not a directory: ${h.join(Xn__default.sep)}`});return}try{if(g)Sr__default.rmSync(f,{recursive:!0,force:!0});else {if(Sr__default.readdirSync(f).length>0){p.status(409).json({error:`Cannot delete non-empty directory without recursive flag: ${h.join("/")}`});return}Sr__default.rmdirSync(f);}}catch(b){let{status:E,body:C}=PZ(b,`delete folder ${h.join("/")}`);p.status(E).json(C);return}let S={success:true,message:`Folder deleted: ${h.join("/")}`,pathSegments:h};p.status(200).json(S);})),t}async function XLe(e){try{let t=await Sr__default.promises.open(e,"r");try{let n=Buffer.alloc(4096),{bytesRead:o}=await t.read(n,0,n.length,0);return n.toString("utf-8",0,o).match(/^fileType:\s*(.+)$/m)?.[1]?.trim()}finally{await t.close();}}catch{}}var x6=Router();x6.get("/",async(e,t)=>{let n=st(),o=rr();if(!o){t.status(500).json({message:"API client not initialized"});return}let r=await pi(ih,o,n);t.status(200).json(r);});var EF=x6;var ZLe=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async()=>{t.info({sessionId:o},"Cancel event received");let r=n.getSession(o);if(!r)throw new Error("No active session found");try{r.controller.setClosed();}catch{}}},_6={event:"cancel",createHandler:ZLe};var eke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{testId:o,sessionId:r}=e;return async(i,s)=>{let{stepId:a,environment:l,parentStepIdChain:c}=i;t.info({testId:o,stepId:a},"Clearing AI action cache");try{let d=n.getSession(r);if(!d)throw new Error("No active session found");let u=DR(a,c.join(":")||void 0);await Promise.all(u.map(p=>d.cacheStorage.deleteStepCacheEntry({logger:t,testId:o,key:p,environment:l}))),s({ok:!0});}catch(d){t.error({testId:o,stepId:a,err:d},"Failed to clear AI action cache"),s({ok:false,error:ee(d)});}}},P6={event:"clearAIActionCache",createHandler:eke};var tke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async(r,i)=>{let s=n.getSession(o);if(!s)throw new Error("No active session found");s.controller.setOpen();let a=s.controller.browser;try{let c=(await a.getBrowserState({skipWait:!0})).serialize();t.debug({a11yTree:c},"Fetched a11y tree from the browser"),i({a11yTree:c});}catch(l){t.error({err:l},"Error fetching a11y tree from the browser"),i({err:l.message});}}},O6={event:"fetchA11yTree",createHandler:tke};var nke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return async(r,i)=>{let s=n.getSession(o);if(!s)throw new Error("No active session found");s.controller.setOpen();let a=s.controller.browser;try{let l=await a.html();i({html:l});}catch(l){t.error({err:l},"Error fetching DOM from the browser"),l.name==="TimeoutError"?i({err:"Timed out fetching DOM tree. This page may be too large for Momentic to process."}):i({err:l.message});}}},M6={event:"fetchDom",createHandler:nke};var oke=({metadata:e,logger:t,globalE2eStateManager:n})=>{let{sessionId:o}=e;return r=>{t.info({sessionId:o,reason:r},`Disconnect event received (${r})`),n.removeSession(o,t);}},N6={event:"disconnect",createHandler:oke};function ys(e){let{result:t,nestedResults:n}=e;if(!e.nestedResults.length)return;let{firstMetadata:o,lastMetadata:r}=rke(n);ike(t,o,r);let i=[...e.asyncTasks];e.asyncTasks.push((async()=>{try{await ske(i,t,o,r);}catch(s){e.logger.error({result:e.result,err:s},"Error hoisting scalar result metadata");}})());}function rke(e){let t=e[0],n;for(;;){switch(t.type){case "PRESET_ACTION":case "CONDITIONAL":n=t;break;case "AI_ACTION_DYNAMIC":case "AI_ACTION":case "MODULE":case "SECTION":case "WHILE_LOOP":if(!t.results.length){n=t;break}t=t.results[0];break;default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}if(n)break}let o=e[e.length-1],r;for(;;){switch(o.type){case "PRESET_ACTION":{r=o;break}case "AI_ACTION_DYNAMIC":case "CONDITIONAL":case "AI_ACTION":case "MODULE":case "SECTION":case "WHILE_LOOP":if(!o.results.length){r=o;break}o=o.results[o.results.length-1];break;default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}if(r)break}return {firstMetadata:n,lastMetadata:r}}function ike(e,t,n){t&&(e.beforeUrl=t.beforeUrl),n&&(e.afterUrl=n.afterUrl,e.data=n.data,n.status!=="SUCCESS"&&(e.message=n.message,e.failureClassification=n.failureClassification));}async function ske(e,t,n,o){await Promise.allSettled(e),n&&(t.beforeSnapshot=n.beforeSnapshot),o&&(t.afterSnapshot=o.afterSnapshot);}async function L6(e){let t;try{t=new URL(e.url).hostname;}catch{}let n=[];return e.headers.getSetCookie()?.forEach(o=>{let r=rv(o,t);n.push(...r);}),n}function hke(e,t){if(!e&&!t)return;let n;if(e){let{url:r,options:i}=e;n=new Request(r,i);}let o;if(t){let{body:r,options:i}=t;o=new Response(r??null,i);}return {request:n,response:o}}async function gke(e,t){switch(e){case "RAW":return t;case "RESPONSE":if(t instanceof Response){let n=[];return t.headers.forEach((r,i)=>{n.push([i,r]);}),{status:t.status,headers:n,body:await t.text()}}else throw new Error("Result is not a Response object")}}var fke=Object.getPrototypeOf(async function(){}).constructor;async function k6(e,t,n){let o=t.code;t.options.fragment&&(o=`return ${t.code}`),o=`${o}
316
316
  //# sourceURL=${cv}`;let{env:r,additionalBindings:i,request:s,response:a}=t.bindings,l=t.tools,c={},d=(b,E)=>{r[b]=E,c[b]=E;},u={},p=(b,E)=>{r[b]=E,u[b]=E;},m;o.includes("Octokit")&&(m=(await import('@octokit/rest')).Octokit);let h;o.includes("createAppAuth")&&(h=(await import('@octokit/auth-app')).createAppAuth);let g=async()=>{try{return await Promise.resolve(new fke("axios","moment","faker","assert","pg","Octokit","createAppAuth","OTPAuth","child_process","extractCookiesFromResponse","env","setVariable","setPersistentVariable","sendSms","waitForLatestSms","email","sms","mock",...Object.keys(i??{}),o)(cke,uke,l.fakerInstance??faker,lke,mke,m,h,pke,dke,L6,r,t.options.disallowVariableUpdates?void 0:d,t.options.disallowVariableUpdates?void 0:p,E=>l.sms.send(E),E=>l.sms.fetchLatest(E),l.email,l.sms,hke(s,a),...Object.values(i??{})))}catch(b){throw new iC(ee(b),{cause:b})}},f=true,y,S;try{let b=await Ie(g(),{milliseconds:t.options.timeoutMs,message:`Timeout of ${t.options.timeoutMs}ms exceeded for code execution`,signal:t.signal});y=await gke(t.options.responseSerialization??"RAW",b);}catch(b){n.error({err:b,env:r,evalCode:o},`[${e}] Error executing code: ${b}`),f=false,b instanceof zu?S=`Timeout of ${t.options.timeoutMs}ms exceeded for code execution`:S=b instanceof Error?b.message:`${b}`;}return {result:y,variableUpdates:c,persistentVariableUpdates:u,success:f,error:S}}async function D6({code:e,fragment:t,context:n,localTools:o,logger:r,signal:i,timeoutMs:s=Gu,disallowVariableUpdates:a,additionalBindings:l,responseSerialization:c,mock:d}){let u=randomUUID(),p=await k6(u,{code:e,options:{fragment:t,timeoutMs:s,disallowVariableUpdates:a,responseSerialization:c},bindings:{...n.toObjectCopy(),...d,additionalBindings:l},tools:o,signal:i},r);return R.debug(`[${u}] Got execution result: ${JSON.stringify(p)}`),p}var Ake=PTe(global.fetch,{retries:3,retryOn:function(e,t,n){return !!(t!==null||n&&n.status>=500)},retryDelay:function(e){return Math.pow(2,e)*500}}),F6=process.env.GCP_JS_EVAL_FUNCTION_ENDPOINT,B6=process.env.MOMENTIC_LAMBDA_AUTH_SECRET;async function U6({orgId:e,code:t,fragment:n,context:o,timeoutMs:r=Gu,retries:i=2,signal:s,logger:a,additionalBindings:l,disallowVariableUpdates:c,responseSerialization:d,mock:u}){if(!F6)throw new Error("GCP_JS_EVAL_FUNCTION_ENDPOINT environment variable not set");let p,m,h=0;if(!B6)throw new Error("Missing lambda auth secret.");let g=createHmac("sha256",B6).update(e).digest("hex");for(;h<=i;){h++,s?.throwIfAborted();let y={id:randomUUID(),orgId:e,momenticLambdaAuthHash:g,code:t,fragment:n,state:{...o.toObjectCopy(),...u,additionalBindings:l},timeoutMs:r,disallowVariableUpdates:c,responseSerialization:d};try{if(p=await Ie(Ake(F6,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)}),{milliseconds:r,message:`Timeout of ${r}ms exceeded for code execution`,signal:s}),!p)throw new Error("Got empty response from code evaluation server");if(!p.ok)throw new Error(`Code evaluation server returned error code ${p.status}`);m=void 0;break}catch(S){m=S;}}if(m)throw a.error({err:m},"Failed to evaluate code remotely"),m;if(!p)throw new Error(`An unexpected code evaluation error occurred${m?`: ${m}`:""}`);let f;try{f=vW.parse(await p.json());}catch(y){throw new Error(`Code evaluation server returned invalid response: ${y}`)}if(f.error)throw new Error(`Code evaluation error: ${f.error}`);return f}async function Tp(e){let t;if(process.env.GCP_JS_EVAL_FUNCTION_ENDPOINT)t=await U6(e);else if(e.localTools)t=await D6({...e,localTools:e.localTools});else throw new Error("No code evaluation environment available");if(t.error){let n=`Failed to evaluate code:
317
317
  ${t.error}
318
318
  Code received:
@@ -5760,7 +5760,7 @@ ${e}`;case "ELEMENT_CHECK":return `${H9}
5760
5760
  ${e}`;default:return e}}async function La({frameConfig:e,action:t,browser:n}){let o=n.getActiveFrameConfig();e?n.setActiveFrameConfig(e):o?.type==="auto"&&n.setActiveFrameConfig(void 0);try{return await t()}finally{n.setActiveFrameConfig(o);}}var eBe=["NAVIGATE","NEW_TAB","CLOSE_TAB","TAB","REFRESH","WAIT_FOR_URL"];async function $9({beforeUrl:e,beforePages:t,browser:n,command:o,logger:r}){if(eBe.includes(o.type))return;await Po().startAsyncSpan("AUTO_FOLLOW_NEW_TABS",async s=>{let c=("cache"in o&&o.cache&&"target"in o.cache?o.cache.target:void 0)?.nodeOnlySerializedHtml?.includes("<a")??false?300:3e3,d=Date.now(),u=0;for(r.info({command:o.type,beforePages:t,beforeUrl:e,timeout:c},"Checking for new tabs to auto-follow");u===0||Date.now()-d<c;){await ot(250),u++;let p=(await n.getOpenPages()).map(h=>h.url),m=n.url();if(p.length!==t.length)for(let h=p.length-1;h>=t.length;h--){let g=p[h];if(rp(g,r)&&g!==e&&g!==m){r.info({beforePages:t,afterPages:p,beforeUrl:e},"Auto-following new tab after preset action"),await n.switchToPage({type:"INDEX",index:String(h)}),s.result={followed:true};return}}}s.result={followed:false};});}async function jc(e,t={}){let n=await e.getBrowserState(t);return {serializedTree:n.serialize(t.serializationOpts),tree:n}}var V9=e=>!!e&&zh(e),z9=e=>{let{cache:t,description:n,disableSecondaryCacheResolution:o,logger:r}=e,i=t,s=false,a;if(i&&o&&i.targetSource==="HEURISTIC_HEALED"&&(s=true,a="Heuristic healed cache incompatible",i=void 0),i){let l=i.inputDescription;(l?!G9(n,l):!!n)&&(r.warn({old:i.inputDescription,new:n},"Target cache was generated with a different description, clearing it automatically"),s=true,a="Description changed",i=void 0);}return {cache:i,cacheBustedBeforeAction:s,cacheBustReason:a}};var q9={minChunkTokenCount:1e4,acceptableChunkTokenCount:25e3,maxChunkTokenCount:5e4,maxLineLength:4e3},W9=/<(\S+) id="(\d+)".*?>/g,tBe=/(<\/(\S+)>)|(<(\S+).*?\/>)/g,K9=["h1","h2","section","footer","nav","aside","form","label","dialog"],nBe=[...K9,"span","div","h3"],oBe=["table","select","form","ul","ol","menu","pre","code","dialog"],rBe=["table","form","dialog","nav","section","ul","select"];function Y9(e){return iBe(e)}function iBe({logger:e,serializedTree:t,options:n}){let{minChunkTokenCount:o,acceptableChunkTokenCount:r,maxChunkTokenCount:i,maxLineLength:s}=n,a=[],l=t.split(`
5761
5761
  `),c=0,d=[],u=0,p=[],m=[],h=false;for(;c<l.length;){h&&(a.push({ids:p,content:d.join(`
5762
5762
  `),tokenLength:u}),d=[],u=0,p=m.length?[m[m.length-1].id]:[],h=false);let g=l[c],f=At(g);u+=f,g.length>s&&(g=g.slice(0,s));let b=Array.from(g.matchAll(W9)).map(V=>V&&V.length>=3?{tagName:V[1],id:V[2]}:void 0).filter(V=>!!V),C=Array.from(g.matchAll(tBe)).map(V=>V&&(V[2]||V[4])).filter(V=>!!V);C.reverse();let w=g.replace(/ id="[0-9]+"/g,"");d.push(w);for(let V of b)p.push(V.id),m.push(V);for(let V of C){let te=m[m.length-1];te&&te.tagName===V&&m.pop();}let I=m.some(V=>oBe.includes(V.tagName)),P=l[c+1]??"",v=At(P),x=Array.from(P.matchAll(W9)).map(V=>V&&V.length>2?V[1]:void 0).filter(V=>!!V),D=x.some(V=>K9.includes(V)),U=x.some(V=>nBe.includes(V));u+v>=i&&(h=true),u>=o&&(D&&!I||C.some(V=>rBe.includes(V)))&&(h=true),u>=r&&U&&!I&&(h=true),c++;}return d.length&&a.push({ids:p,content:d.join(`
5763
- `),tokenLength:u}),a.forEach((g,f)=>{let y=g.ids[0],S=g.ids[g.ids.length-1];e.debug({tokenLength:g.tokenLength,minId:y,maxId:S},`Chunk for page filtering (index ${f+1}/${a.length})`);}),{chunks:a}}var J9=5e6,aBe=1e5,lBe=3e4,cBe=6e4,dBe=1e5;async function Qs(e){let{fixtures:t}=e,{logger:n}=t,o=e.tree,r=e.serializedTree,i=At(r);if(i>J9)throw new ne("UserConfigurationError",`Page accessibility tree is too large for AI page filtering (${i} tokens). Maximum supported size is ${J9} tokens.`);if(i>aBe){let s=Y9({serializedTree:r,options:q9,logger:n}),a=randomUUID();o=await uBe({...e,chunks:s.chunks,callId:a}),r=o.serialize();let l=At(r);n.info({oldTokens:i,newTokens:l,langfuseCallId:a},"Filtered page using AI chunk ranking");}return r}async function uBe({type:e,callId:t,chunks:n,description:o,fixtures:r,tree:i}){let{generator:s,signal:a,logger:l}=r,c=await s.rankChunksWithAi({chunks:n,description:o,type:e,softTokenLimit:lBe,mediumTokenLimit:cBe,hardTokenLimit:dBe,callId:t},{abortSignal:a,logger:l,loggerTags:jt(l)}),d=[];return n.forEach((p,m)=>{c.indices.includes(m)&&(d=d.concat(p.ids));}),i.pruneUsingRelevantIds(new Set(d))}async function mB(e,t){if(!e.description)throw new ne("UserConfigurationError","Cannot locate element with empty description");return La({action:async()=>mBe(e,t),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,browser:t.browser,logger:e.logger})}async function mBe(e,t){let{disableCache:n,testContext:o,filterByViewport:r,skipWait:i,source:s,memory:a,logger:l,allowNotActionableNodesOverride:c,allowIneligibleTagRedirect:d,showZeroOpacityElementsOverride:u,skipSavingVisualAttributes:p,isAutoHeal:m,cacheBustReason:h,acceptElementMovedError:g}=e,{orgId:f,browser:y,localCodeEvalTools:S,generator:b,abortSignal:E}=t,C=e.description,w=Po(),I=e.useMemory&&!n;o&&(C=await fi({orgId:f,s:C,context:o,localTools:S,signal:E,logger:l})),s&&(C=j9(C,s));let{serializedTree:P,tree:v}=await w.startAsyncSpan("GET_PAGE_STATE",async()=>jc(y,{allowNotActionableNodesOverride:c,allowIneligibleTagRedirect:d,showZeroOpacityElementsOverride:u,filterByViewport:r,abortSignal:E,skipWait:i,logger:l}),{}),_=await w.startAsyncSpan("GET_PAGE_SCREENSHOT",async()=>{let j,F=Date.now(),J;for(;!j&&Date.now()-F<3e3;){E.throwIfAborted();try{j=await y.screenshot({clearHighlights:!0,respectActiveFrame:!0,retries:2});}catch(X){J=X;}}if(!j)throw new ne("ActionFailureError",`Failed to take screenshot of page to locate element. The page may be unresponsive, or your machine might be severely resource constrained. Error: ${J?.message}`);return j}),x=P,D=false,V=`data:image/jpeg;base64,${_.toString("base64")}`,te=jt(l);x=await Qs({type:"locator",description:C,screenshot:V,serializedTree:P,tree:v,fixtures:{generator:b,signal:E,logger:l,orgId:f}}),x!==P&&(D=true);let re=await w.startAsyncSpan("AI_LOCATOR_CALL",async j=>{m&&(j.attributes.isAutoHeal=true),h&&(j.attributes.cacheBustReason=h);let F=await b.getElementLocation({browserState:x,goal:C,screenshot:V,source:s,memory:I?a:void 0},{disableCache:n,abortSignal:E,logger:l,loggerTags:te,useMemory:I,cacheBustReason:h});if(j.result=F,I&&(j.attributes.useMemory=true,j.attributes.memoryTraces=F.rememberedTraces??[],F.updatedMemory&&(j.attributes.memorySavedNewResult=true)),w.storeTraceAsset){let J=randomUUID();w.storeTraceAsset({snapshotId:J,data:_}),j.screenshotSnapshotId=J;}return F});if(l.debug({usedRag:D,result:re},"Got locator result"),!(re.id>0))throw new sg(`Could not find any relevant element: ${re.thoughts}`,re.updatedMemory?{type:"GCS_TRACES",traces:re.updatedMemory}:void 0);let{resolution:z,target:M,frameConfig:K}=await w.startAsyncSpan("TARGET_RESOLUTION",async j=>{let F=await y.createTargetFromA11yId({id:re.id,requirements:re.requirements,additionalElements:re.additionalElements,description:C,targetSource:"AI",logger:l,skipSavingVisualAttributes:p,acceptElementMovedError:g});return j.result={serializedElement:F.target.nodeOnlySerializedHtml??"Unknown HTML element"},F});if(z.a11yNode?.properties?.hidden&&z.a11yNode?.properties?.hidden!=="false")throw new ne("ActionFailureError",`Momentic's AI found a relevant element to interact with, but it is explicitly marked with an 'aria-hidden' attribute. Please remove this attribute or adjust the element description to locate a different element. Element chosen: ${z.displayString}`);return I&&(re.updatedMemory?M.memory={type:"GCS_TRACES",traces:re.updatedMemory}:a&&(M.memory=a)),{thoughts:re.thoughts,target:M,resolution:z,frameConfig:K,screenshot:V}}var hBe=15;async function NI({command:e,logger:t,fixtures:n,useMemory:o,maxRetries:r=hBe,recoveryHint:i}){if(!e.assertion.trim())throw new ne("ActionFailureError","Assertion command is missing the assertion content");let s=hM.optional().catch(void 0).parse(e.source);e.source&&!s&&t.warn(`Invalid source ${e.source} for AI assertion, ignoring...`);let a=Po();return a.startAsyncSpan("AI_ASSERTION_CALL",async l=>{let{browser:c}=n,d=e.timeout?e.timeout*1e3:c.smartWaitingTimeout,u=N3(d,r-1),p=0,m=Date.now(),h=m+d,g=m,f,y,S;try{await La({action:()=>c.clearHighlights(),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,browser:c,logger:t});}catch(C){t.warn({err:C},"Failed to clear highlights before AI check, continuing...");}for(;p<r;){n.abortSignal.throwIfAborted();let C=Date.now();if(p>0){if(C>=h)break;let P=h-C,v=g-C,_=Math.min(v,P);_>0&&await ot(_,n.abortSignal);}let w=Date.now();if(p>0&&w>=h)break;let I=false;try{if(f=await La({action:async()=>{let v=await Q9(c,t,n.abortSignal);return y&&y.serializedTree===v.serializedTree&&y.screenshotBuff.equals(v.screenshotBuff)?(I=!0,f):(y=v,Z9({command:e,state:v,fixtures:n,useMemory:o,useConsensus:!1,highlightElementsOnFailure:!1,attemptNumber:p,logger:t,source:s,recoveryHint:i}))},frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,logger:t,browser:c}),f?.aiResult.result){f?.updatedMemory&&ST(e,f.updatedMemory,t);break}else throw f?.aiResult.thoughts?new ne("AssertionFailureError",f.aiResult.thoughts):new ne("InternalPlatformError","No thoughts were provided for AI assertion failure")}catch(P){n.abortSignal.throwIfAborted(),S=P instanceof Error?P:new Error(`${P}`),I?t.info(`AI check attempt ${p} failed (re-used previous result)`):t.info({err:P},`AI check assert attempt ${p} failed, retrying...`);}finally{p++,g=w+u;}}if(!f?.aiResult.result){let C=h-Date.now();C>0&&await ot(C,n.abortSignal);}if(!f?.aiResult.result)try{f=await La({action:async()=>Z9({command:e,state:await Q9(c,t,n.abortSignal),fixtures:n,useMemory:o,useConsensus:!0,highlightElementsOnFailure:!0,attemptNumber:p,logger:t,recoveryHint:i}),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,logger:t,browser:c});}catch(C){n.abortSignal.throwIfAborted(),S=C instanceof Error?C:new Error(`${C}`);}finally{p++;}f?.updatedMemory&&ST(e,f.updatedMemory,t);let b=f?.afterScreenshotOverride;if(b&&a.storeTraceAsset){let C=randomUUID();a.storeTraceAsset({snapshotId:C,data:b}),l.screenshotSnapshotId=C;}let E=f?.elementScreenshotOverride;if(E&&a.storeTraceAsset){let C=randomUUID();a.storeTraceAsset({snapshotId:C,data:E}),l.elementScreenshotSnapshotId=C;}if(o&&(l.attributes.useMemory=true,l.attributes.memoryTraces=f?.aiResult.rememberedTraces??[],f?.updatedMemory&&(l.attributes.memorySavedNewResult=true)),!f?.aiResult.result){l.result=f?.aiResult??{thoughts:S?.message??"AI check failed after all attempts",result:false};let C=`AI check still failing after ${p} attempts.`;throw S&&(C+=` Latest result: ${S.message}`),new ne("AssertionFailureError",C)}return l.result=f.aiResult,{...f,thoughts:f.aiResult.thoughts,succeedImmediately:false,urlAfterCommand:c.url()}})}async function Q9(e,t,n){await e.waitForPageLoad({signal:n});let[o,r]=await Promise.all([jc(e,{abortSignal:n,skipWait:true,skipWaitForPageLoad:true,logger:t}),e.screenshot({retries:1,respectActiveFrame:true})]);return {...o,screenshotBuff:r}}async function Z9({command:e,state:t,fixtures:n,useConsensus:o,useMemory:r,highlightElementsOnFailure:i,attemptNumber:s,source:a,logger:l,recoveryHint:c}){let {browser:d,generator:u,abortSignal:p}=n,{serializedTree:h,tree:g}=t,f=t.screenshotBuff,y=f.toString("base64"),S=d.url(),b=e.contextChoice??"MULTIMODAL",E=h;b!=="VISION_ONLY"&&(E=await Qs({type:"assertion",serializedTree:h,tree:g,description:e.assertion,screenshot:y,fixtures:{generator:u,signal:p,logger:l,orgId:n.orgId}}),E);let C={goal:e.assertion,url:S,memory:r?e.cache?.memory:void 0,browserState:E,screenshot:y,contextChoice:b,source:a,recoveryHint:c},I=await(b==="VISION_ONLY"?(v,_)=>u.getVisualAssertionResult(v,_):(v,_)=>u.getAssertionResult(v,_))(C,{useConsensus:o,attemptNumber:s,useMemory:r,disableCache:!!e.disableCache,abortSignal:p,logger:l,loggerTags:jt(l)}),P;if((I.result||i)&&I.relevantElements?.length){I.relevantElements.map(v=>d.getSerializedFormFromA11yId(v)).filter(v=>!!v);try{let v=I.relevantElements[0],{resolution:_}=await d.createTargetFromA11yId({id:v,description:null,targetSource:"AI",skipSaveToCache:!0});P=await d.screenshot({locator:_.locator,clearHighlights:!0,respectActiveFrame:!0});}catch(v){l.debug({err:v},"Failed to capture element screenshot for trace, continuing...");}await gBe(I.relevantElements,d,l);}return {aiResult:I,afterScreenshotOverride:f,elementScreenshotOverride:P,updatedMemory:r?I.updatedMemory:void 0}}async function gBe(e,t,n){let o=Date.now();for(let r of e){if(Date.now()-o>2e3){n.debug("Highlighting relevant elements took over 2s, aborting...");return}try{let i=new AbortController;await Ie(t.highlightA11yId(r),{milliseconds:1e3,fallback:()=>{throw i.abort(),new Error("Timed out waiting for highlighting to complete")}});}catch(i){n.debug({err:i},"Failed to highlight relevant element after assertion, continuing...");return}}}async function t7(e){let{command:t,logger:n,fixtures:o,disableCache:r}=e,{browser:i,generator:s,abortSignal:a}=o;if(!t.goal.trim())throw new ne("ActionFailureError","Cannot perform AI extraction without goal");if(t.schema){let u=OK(t.schema);if(u)throw new ne("UserConfigurationError",u)}let l=await i.getCondensedHtml(),c=await i.screenshot({retries:2}),d=Po();try{return await d.startAsyncSpan("AI_EXTRACTION_CALL",async u=>{let p=await s.getTextExtraction({goal:t.goal,browserState:l,returnSchema:t.schema,screenshot:`data:image/jpeg;base64,${c.toString("base64")}`},{disableCache:r,abortSignal:a,loggerTags:jt(n)});if(u.result=p,fBe({tracer:d,span:u,screenshot:c,htmlState:l,logger:n}),p.result==="NOT_FOUND")throw new ne("ActionFailureError","No relevant data found for extraction goal on this page");if(p.thoughts?.includes("MaxGenerationLengthExceededError"))throw new ne("UserConfigurationError",p.thoughts);return {thoughts:p.thoughts||void 0,data:p.result,succeedImmediately:!1,urlAfterCommand:i.url()}})}catch(u){let p=ee(u);throw p.includes("MaxGenerationLengthExceededError")?new ne("UserConfigurationError","You tried to extract too much data. Please rephrase your query to limit the results returned or use a JavaScript step in the browser instead."):p.includes("AIProviderError")&&p.includes("time")?new ne("AIProviderError","The AI provider responded with an error. This may be because you tried to extract too much data. Please limit extraction results to 2000 characters.",{errOptions:{cause:u}}):u}}function fBe(e){let{tracer:t,span:n,screenshot:o,htmlState:r,logger:i}=e;if(t.storeTraceAsset)try{let s=randomUUID();t.storeTraceAsset({snapshotId:s,data:o}),n.screenshotSnapshotId=s;let a=randomUUID();t.storeTraceAsset({snapshotId:a,data:Buffer.from(r),extension:"html"}),n.browserStateSnapshotId=a;}catch(s){i.debug({err:s},"Failed to store extraction trace assets");}}async function n7(e,t){let{logger:n}=e,{abortSignal:o,browser:r}=t,i=Date.now();try{await yBe(i,e,t);}catch(s){if(s instanceof Error&&(s.name==="AbortError"||s.name==="TimeoutError")||o.aborted)return;n.warn({err:s},"Unexpected error occurred during AI smart waiting");let a=r.smartWaitingTimeout-(Date.now()-i);a>0&&await ot(a,o);}finally{n.debug({durationMs:Date.now()-i},"AI smart waiting complete");}}async function yBe(e,t,n){let{abortSignal:o,browser:r}=n;if(r.smartWaitingTimeout<3e3){await ot(r.smartWaitingTimeout,o);return}if(!t.description)throw new ne("UserConfigurationError","Cannot locate element with empty description");await Ie(SBe(e,t,n),{milliseconds:r.smartWaitingTimeout});}async function SBe(e,t,n){let{logger:o,iframeUrl:r}=t,{browser:i}=n;for(;Date.now()-e<i.smartWaitingTimeout;)if(await La({action:async()=>bBe(t,n),frameConfig:r?{type:"url",url:r}:void 0,browser:i,logger:o}))return}async function bBe(e,t){let{testContext:n,logger:o}=e,{browser:r,abortSignal:i,localCodeEvalTools:s,orgId:a,generator:l}=t,c=e.description;n&&(c=await fi({orgId:a,s:c,context:n,localTools:s,signal:i,logger:o})),i.throwIfAborted();let d;try{d=await r.screenshot({clearHighlights:!0,respectActiveFrame:!0,retries:2});}catch(h){throw new ne("ActionFailureError",`Failed to take screenshot of page to perform smart waiting. The page may be unresponsive, or your machine might be severely resource constrained. Error: ${h instanceof Error?h.message:h}`)}let p=`data:image/jpeg;base64,${d.toString("base64")}`;i.throwIfAborted();let m=await l.getSmartWaitingDecision({description:c,screenshot:p},{abortSignal:i,loggerTags:jt(o)});return o.debug({result:m},"Got smart waiting result"),m.isPageReady}var TBe=3e4;async function i7(e){return Po().startAsyncSpan("ELEMENT_ASSERTION",async n=>ABe(e,n),{name:"Element check"})}async function ABe(e,t){let{command:n,timeoutMs:o,fixtures:r,disableCache:i}=e,{abortSignal:s}=r,a=()=>YE(n.cache)?n.cache:void 0,l=a(),c=!i&&!!l?.target&&zh(l.target),d=cloneDeep(l),u=(E=false)=>{if(l=a(),!!l)if(E){let C=Ak(d,l);l.target=C.target,l.updatedAt=C.updatedAt;}else {if(!d){l=void 0;return}l.target=d.target,l.updatedAt=d.updatedAt;}},p=Date.now(),m=c?Math.max(o/10,TBe):0,h=p,g=0,f,y=500,S=false;for(;g<2||Date.now()-p<o;){g++,g>1&&await ot(y,s),s?.throwIfAborted(),l=a();let E=g===1,C=c&&Date.now()-h>=m;C&&(h=Date.now());let{result:w,elementWasFound:I}=await o7({cacheToUse:l,skipAISmartWaiting:!E,useAIIfCacheFails:!c||C,params:e});if(f=w,S=S||I,w.success)break;u(),y=Math.min(y*1.25,1e4);}if(!f)throw new ne("InternalPlatformError",`Failed to evaluate manual element assertion in ${o}ms.`);if(s?.throwIfAborted(),!f.success){let E=a(),C=E?.target?.memory?{target:{id:-1,memory:E.target.memory}}:void 0,{result:w,elementWasFound:I}=await o7({cacheToUse:C,skipAISmartWaiting:true,useAIIfCacheFails:true,params:e});f=w,S=S||I,f.success||u(true);}let b=a();return f.success&&b?.target&&!S&&(b.target=yT(b.target),b.updatedAt=new Date),t.result={success:f.success,message:f.err?.message},f}async function o7({cacheToUse:e,skipAISmartWaiting:t,useAIIfCacheFails:n,params:o}){let{command:r,disableCache:i,fixtures:s,tracer:a,targetingWrapper:l}=o,{logger:c}=s;if(r.target&&!dd(r.target))throw new Error("Element assertion with x/y is not supported yet");let d=TX(r.assertion),u=EBe(r.assertion),p,m=false,h=cloneDeep(e);try{let{elementInteractedDisplayString:g,result:f,thoughts:y}=await l({tracer:a,command:r,target:r.target,cache:h?.target,action:async S=>CBe(S.locator,o),options:{...r,allowNotActionableNodesOverride:u,allowIneligibleTagRedirect:u,showZeroOpacityElementsOverride:!0,disableCache:i,memory:h?.target?.memory,disableGlobalLocatorRedirect:!0,source:Tm(r),skipAISmartWaiting:t,targetName:"target"},retriesWithAI:n?1:0});return p={success:f.success,data:f.data,err:f.err,elementInteractedDisplayString:g,thoughts:y},m=!0,f.success||(c.warn({aiThoughts:y,elementString:g,err:f.err},"Element check found an element but failed"),p={...f,thoughts:y}),{result:p,elementWasFound:m}}catch(g){if(d)return p={success:true,thoughts:`The element described does not exist on the page: ${g.message}`,err:void 0,data:void 0},{result:p,elementWasFound:m};if(!(g instanceof ne)||g.reason!="ActionFailureError")throw g;return p={success:false,err:g,data:void 0,thoughts:void 0},c.warn({err:g},"Element check did not find an element and failed"),{result:p,elementWasFound:m}}}function EBe(e){return !(e.type==="ELEMENT_EXISTENCE"&&e.condition==="VISIBLE"&&!e.negated)}async function CBe(e,{command:t,fixtures:n}){return await n.browser.highlight(e),await vBe(e,t.assertion)}async function vBe(e,t){let n=true,o,r;switch(t.type){case "ELEMENT_CONTENT":{let s=await e.textContent()??"";if(r={elementTextContent:mn(s,500,true)},!mT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=pf(t);n=false,o=new ne("AssertionFailureError",`The content ${a} '${t.value}': ${s}`);}break}case "ELEMENT_ATTRIBUTE":{r={elementOuterHtml:mn(await e.evaluate(a=>a.cloneNode(false).outerHTML),500,true)};let s=null;try{s=await e.getAttribute(t.attr,{timeout:3e3});}catch(a){o=new ne("AssertionFailureError",ee(a)),n=false;break}if(!mT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=pf(t);n=false,t.operation==="EXISTS"?o=new ne("AssertionFailureError",`The attribute ${t.attr} ${a}`):o=new ne("AssertionFailureError",`The attribute ${t.attr} ${a} '${t.value}': ${s}`);}break}case "ELEMENT_EXISTENCE":{switch(t.condition){case "VISIBLE":{n=await e.evaluate(async(a,l)=>{let c=Date.now();for(;Date.now()-c<l;){await new Promise(u=>setTimeout(u,250));let d=a.getBoundingClientRect();if(!(d.width===0||d.height===0)&&window.getComputedStyle(a).visibility!=="hidden"&&window.getComputedStyle(a).display!=="none")return true}return false},ua*1e3);break}case "EDITABLE":{n=await e.isEditable({timeout:ua*1e3});break}case "EXISTS":{n=true;break}case "ENABLED":{n=await e.isEnabled({timeout:ua*1e3});break}case "FOCUSED":{n=await e.evaluate(a=>a===document.activeElement);break}default:return (a=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})(t.condition)}if(n=t.negated?!n:n,!n){let s=pf(t);o=new ne("AssertionFailureError",`The element ${s}`);}break}case "ELEMENT_NAME":{let s=await e.evaluate(a=>a.tagName);if(!mT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:true})){let a=pf(t);n=false,o=new ne("AssertionFailureError",`The element tag name ${a} '${t.value}': ${s}`);}break}case "ELEMENT_STYLE":{let s=await e.evaluate((a,l)=>window.getComputedStyle(a).getPropertyValue(l),t.property);if(!mT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=pf(t);n=false,t.operation==="EXISTS"?o=new ne("AssertionFailureError",`The style property ${t.property} ${a}`):o=new ne("AssertionFailureError",`The style property ${t.property} ${a} '${t.value}': ${s}`);}break}default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}return {thoughts:void 0,success:n,data:r,err:o}}function s7(e){return e.type==="ELEMENT_EXISTENCE"&&e.negated&&e.condition==="EXISTS"}async function cA(e,t){let n=await e.screenshot(t),{width:o,height:r}=imageSize(n);return {buffer:n,width:Math.ceil(o),height:Math.ceil(r)}}async function l7(e){let{command:t,browser:n,logger:o}=e;if(t.target&&!dd(t.target))throw new Error("Visual Diff with x/y is not supported yet");return await n.waitForStability({logger:o}),Po().startAsyncSpan("VISUAL_DIFF",async i=>{try{let s=await IBe(e);return i.result={success:!s.fail,message:s.thoughts},s}catch(s){throw s instanceof ne&&(i.result={success:false,message:s.message}),s}},{name:"Compare against golden"})}async function IBe({tracer:e,command:t,disableCache:n,browser:o,targetingWrapper:r,logger:i,screenshotStorage:s}){let a={clearHighlights:true,hideCaret:true},l=t.target&&dd(t.target)?t.target:void 0,c;l?.elementDescriptor?c=(await r({tracer:e,command:t,target:l,cache:t.cache?.target,action:async x=>cA(o,{locator:x.locator,...a}),options:{...t,disableCache:n,disableGlobalLocatorRedirect:true,memory:t.cache?.target?.memory,targetName:"target"}})).result:c=await cA(o,a);let d=await s.prepareGoldenScreenshotForComparison(i,t,c);if((c.height!==d.height||c.width!==d.width)&&i.warn({currHeight:c.height,currWidth:c.width,savedHeight:d.height,savedWidth:d.width},"Mismatched before and after visual diff screenshot sizes"),Math.abs(c.height-d.height)>10||Math.abs(c.width-d.width)>10){let _=`${c.width}x${c.height}`,x=`${d.width}x${d.height}`;return {fail:true,thoughts:`Current screenshot (${_}) does not match saved screenshot dimensions (${x}) - did you change the size of the target or the viewport?`,beforeScreenshotOverride:d.buffer,afterScreenshotOverride:c.buffer,succeedImmediately:false,urlAfterCommand:o.url()}}let u=await Jimp.fromBuffer(c.buffer),p={width:c.width,height:c.height},m=await Jimp.fromBuffer(d.buffer),h={width:d.width,height:d.height},g,f=p.width*p.height,y=h.width*h.height,S=Math.abs(p.height-h.height),b=Math.abs(p.width-h.width);if(f>y){let _=u.cover({w:h.width,h:h.height});c.buffer=await _.getBuffer("image/jpeg"),g="current",c.width=h.width,c.height=h.height;}else if(y>f){let _=m.cover({w:p.width,h:p.height});d.buffer=await _.getBuffer("image/jpeg"),g="saved";}let E={data:Buffer.alloc(c.width*c.height*4),width:c.width,height:c.height},C=t.threshold??.1,I=sFe(hB.decode(d.buffer).data,hB.decode(c.buffer).data,E.data,c.width,c.height,{threshold:C,diffColorAlt:[0,255,0]})/(c.width*c.height)*100,P=I>C*100,v=`Visual diff of ${I.toFixed(2)}% detected, which is ${P?"over":"under"} the threshold of ${C*100}%.`;if(g&&(v+=` The ${g} screenshot was cropped since it was taller by ${S} pixels and wider by ${b} pixels.`),P)throw new ne("ActionFailureError",v);return {fail:P,thoughts:v,beforeScreenshotOverride:c.buffer,afterScreenshotOverride:hB.encode(E,75).data,succeedImmediately:false,urlAfterCommand:o.url()}}var xBe=3e4;function _Be(e){if(!e.body)return {};switch(e.body.type){case "json":return {content:e.body.content,contentType:"application/json"};case "form-urlencoded":{let t=new URLSearchParams;return Object.entries(e.body.content).forEach(([n,o])=>{t.append(n,o);}),{content:t.toString(),contentType:"application/x-www-form-urlencoded;charset=UTF-8"}}}}async function c7({command:e,logger:t,baseUrl:n,fetchImplementation:o=fetch}){let r=e.timeout??xBe/1e3,i=Object.fromEntries(Object.entries(e.headers||{}).filter(([h,g])=>h&&g)),s=new URLSearchParams;Object.entries(e.params||{}).filter(([h,g])=>h&&g).forEach(([h,g])=>{s.append(h,g);});let a=s.toString(),l;if(bf(e.url)&&(l=e.url),n&&Tf(e.url,n)&&(l=new URL(e.url,n).toString()),!l)throw new ne("ActionFailureError",`Invalid URL: ${e.url}`);let c=l;t.info({url:c,searchParams:a,headers:i,body:e.body,method:e.method},"Making HTTP request");let u=await Ie((async()=>{let h=a?`${c}?${a}`:c;try{let g=_Be(e),f=new Headers(i);return g.contentType&&!f.has("Content-Type")&&f.set("Content-Type",g.contentType),await o(h,{headers:f,method:e.method,body:g.content})}catch(g){throw new Error(`Failed to make HTTP request: ${g}`,{cause:g})}})(),{milliseconds:r*1e3,fallback:()=>{throw new ne("ActionFailureError",`Fetch request timed out after ${r} seconds`)}});if(!u.ok){let h;try{h=await u.text();}catch(g){h=`Failed to read response body: ${g}`;}throw new ne("ActionFailureError",`Fetch request failed with status ${u.status}: ${h}`)}let p={};u.headers.forEach((h,g)=>{p[g]=h;});let m={status:u.status,headers:p,request:{url:u.url,method:e.method,headers:i}};if(e.body?.type==="json"&&e.body.content)try{m.request.json=JSON.parse(e.body.content);}catch{}if(u.headers.get("content-type")?.includes("json"))try{m.json=await u.json();}catch{}else u.headers.get("content-type")?.includes("text")&&(m.text=await u.text());return m}var PBe=5e3;async function LI({timeout:e=ua,...t}){let n=Date.now(),o=e*1e3,r=o+1e4,i,s=0,a=500;for(;s-n<o;){if(Date.now()-n>r){t.logger.warn("Exceeded max system timeout for page assertion, exiting...");break}t.signal?.throwIfAborted();let l=Date.now();i=await d7(t),s=Date.now();let c=s-l;if(c>1e3&&t.logger.warn({pageAssertDuration:c},"Page assertion took longer than expected"),!i.success)await ot(a,t.signal),a=Math.min(Math.floor(a*1.5),PBe);else return i}return i=await d7(t),i}async function d7(e){return Po().startAsyncSpan("PAGE_ASSERTION",async n=>{let o=await OBe(e);return n.result={success:o.success,message:o.err?.message},o},{name:"Page check"})}async function OBe({assertion:e,browser:t,autoExpandIframes:n}){switch(e.type){case "CONTENT":case "CONTENT":{let r,i=false,s;try{let a;if(n){let l=await t.evaluateFunctionInAllFrames(u7,{value:e.value,negated:!!e.negated,returnHtml:!1});i=e.negated?l.every(c=>c.evaluation):l.some(c=>c.evaluation),a=l.find(c=>c.pageHtml)?.pageHtml;}else ({evaluation:i,pageHtml:a}=await t.evaluateFunctionInPage(u7,{value:e.value,negated:!!e.negated,returnHtml:!0},"checking page content"));if(!i){let l=e.negated?Nd.CONTAINS:Ld.CONTAINS;s=new ne("AssertionFailureError",`The page ${l} '${e.value}'.`),r=a;}}catch(a){s=new ne("AssertionFailureError",`Failed to evaluate page content assertion: ${a instanceof Error?a.message:`${a}`}`);}return {success:i,err:s,data:i||!r?void 0:{pageContent:r}}}default:return (r=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}}function u7({value:e,negated:t,returnHtml:n}){let o=document.body.innerHTML,r=o.includes(e)===!t;return o.length>1e4&&(o=o.slice(0,1e4)+"...TRUNCATED"),{evaluation:r,pageHtml:!r&&n?o:void 0}}var MBe=3e4;async function p7({command:e,logger:t,baseUrl:n,fetchImplementation:o=fetch}){let r=e.timeout??MBe/1e3,i=new AbortController,s=Object.fromEntries(Object.entries(e.headers||{}).filter(([u,p])=>u&&p));s["Content-Type"]="application/json";let a;if(bf(e.url)&&(a=e.url),n&&Tf(e.url,n)&&(a=new URL(e.url,n).toString()),!a)throw new ne("ActionFailureError",`Invalid URL: ${e.url}`);let c=await Ie((async()=>{try{return await o(a,{headers:s,method:"POST",body:JSON.stringify({query:e.query,variables:e.variables?JSON.parse(e.variables):void 0}),signal:i.signal})}catch(u){throw new Error(`Failed to make HTTP request: ${u}`,{cause:u})}})(),{milliseconds:r*1e3});if(!c)throw new ne("ActionFailureError",`GraphQL request timed out after ${r} seconds`);if(!c.ok){let u,p=await c.text();try{u=JSON.parse(p);}catch{throw new ne("ActionFailureError",`GraphQL request failed with status ${c.status}: ${p}`)}throw u?.errors?.length&&u?.errors[0]?.message?new ne("ActionFailureError",`GraphQL request failed with status ${c.status}: ${u.errors[0].message}`):new ne("ActionFailureError",`GraphQL request failed with status ${c.status}: ${p}`)}let d={};return c.headers.forEach((u,p)=>{d[p]=u;}),{status:c.status,headers:d,json:await c.json()}}var dy=class{orgId;options;storage;localCodeEvalTools;uploadedFileStorage;visualDiffScreenshotStorage;browser;generator;executeAbortController=new AbortController;logger;executionOptionsStack=[];recordAbortController=null;registeredListeners={};recordedRequests={};constructor({browser:t,generator:n,logger:o,storage:r,orgId:i,localCodeEvalTools:s,uploadedFileStorage:a,visualDiffScreenshotStorage:l,options:c}){this.orgId=i,this.options=c,this.browser=t,this.browser.registerAbortSignal(this.executeAbortController.signal),this.storage=r,this.uploadedFileStorage=a,this.visualDiffScreenshotStorage=l,this.localCodeEvalTools=s,this.generator=n,this.logger=o;}setOpen(){this.executeAbortController=new AbortController,this.browser.registerAbortSignal(this.executeAbortController.signal);}setClosed(){this.executeAbortController.abort();}throwIfClosed(){this.executeAbortController.signal.throwIfAborted();}get closed(){return this.executeAbortController.signal.aborted}async withExecutionOptions(t,n){this.executionOptionsStack.push(t);try{return await n()}finally{this.executionOptionsStack.pop();}}getCurrentExecutionOptions(){return this.executionOptionsStack[this.executionOptionsStack.length-1]??{}}async evaluateAiAction({goal:t,startingScreenshot:n,history:o,disableCache:r,langfuseSessionId:i,lastError:s,logger:a=this.logger}){let[l,c]=await Promise.all([jc(this.browser,{abortSignal:this.executeAbortController.signal,skipWait:true,skipWaitForPageLoad:true,logger:a}),this.browser.screenshot({retries:1,clearHighlights:true})]),d=`data:image/jpeg;base64,${c.toString("base64")}`,u=await Qs({type:"ai-action",description:t,screenshot:d,serializedTree:l.serializedTree,tree:l.tree,fixtures:{generator:this.generator,signal:this.executeAbortController.signal,logger:a,orgId:this.orgId}}),p={url:this.browser.url(),browserState:u,startingScreenshot:n,history:o,goal:t,screenshot:d,lastError:s};return await this.generator.getMultiturnAiActionEvaluation(p,{disableCache:r,abortSignal:this.executeAbortController.signal,loggerTags:{...jt(a)},langfuseSessionId:i})}async promptToCommand({goal:t,startingScreenshot:n,history:o,actionHint:r,disableCache:i,logger:s=this.logger,langfuseSessionId:a}){let l=this.browser.url(),[c,d]=await Promise.all([jc(this.browser,{abortSignal:this.executeAbortController.signal,skipWait:true,skipWaitForPageLoad:true,logger:s}),this.browser.screenshot({retries:1,clearHighlights:true})]),u=`data:image/jpeg;base64,${d.toString("base64")}`,p=await Qs({type:"ai-action",description:t,screenshot:u,serializedTree:c.serializedTree,tree:c.tree,fixtures:{generator:this.generator,signal:this.executeAbortController.signal,logger:s,orgId:this.orgId}}),m={url:l,browserState:p,startingScreenshot:n,history:o,goal:t,actionHint:r,screenshot:u};try{return await this.generator.getMultiturnAiActionCommand(m,{disableCache:i,abortSignal:this.executeAbortController.signal,loggerTags:{...jt(s)},langfuseSessionId:a})}catch(h){throw new ne("InternalWebAgentError",`Error generating command: ${h instanceof Error?h.message:h}`,{errOptions:{cause:h}})}}async getBrowserState(t){return jc(this.browser,t)}async locateElement(t){return await mB(t,this.getControllerFixtures())}async locateElementWithSelector(t,n){return La({action:async()=>{let o=await this.browser.resolveHardcodedCssSelector({selector:t,timeoutMs:2e3,logger:this.logger});return {thoughts:"Located element with selector",target:{id:-1,selector:t,targetSource:"USER_CSS_SELECTOR",targetUpdateTime:new Date().toUTCString()},resolution:o}},frameConfig:n?{type:"url",url:n}:void 0,browser:this.browser,logger:this.logger})}getControllerFixtures(){return {browser:this.browser,generator:this.generator,logger:this.logger,orgId:this.orgId,storage:this.storage,localCodeEvalTools:this.localCodeEvalTools,abortSignal:this.executeAbortController.signal}}shouldUseMemory(){return this.options?.useMemory??true}async wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:o,descriptions:r,caches:i,action:s,options:a,retriesWithAI:l=1}){let c=[];for(let d=0;d<r.length;d++){let u=r[d],p=await this.wrapElementTargetingCommand({tracer:t,command:n,target:u,cache:i[d],action:async m=>m,options:{...a,targetName:o[d]}});c.push(p);}try{let d=await s(...c.map(m=>m.result)),u=m=>m==="fromTarget"?"From Target":m==="toTarget"?"To Target":"Target",p=c.map((m,h)=>m.thoughts?`${u(o[h])}: ${m.thoughts}`:void 0).filter(m=>!!m).join(" -------------- ")||void 0;return {result:d,elementInteractedDisplayStrings:c.map(m=>m.elementInteractedDisplayString),thoughts:p}}catch(d){if(this.throwIfClosed(),l>0)return this.logger.warn({err:d},"Failed to execute action with multiple cached targets, retrying with AI"),this.wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:o,descriptions:r,caches:r.map(()=>{}),action:s,options:a,retriesWithAI:l-1});throw new ne("ActionFailureError",d.message,{errOptions:{cause:d}})}}async wrapHardcodedCssTargetingCommandHelper({target:t,action:n,options:o,command:r}){let i=this.logger.child({commandId:r.id}),{targetName:s}=o;if(t.type!=="description")throw new ne("ActionFailureError","Cannot use selector with non-description target");let a,l=Date.now(),c=Date.now();for(;Date.now()-c<this.browser.smartWaitingTimeout;){l=Date.now();try{let d=await this.browser.resolveHardcodedCssSelector({selector:t.elementDescriptor,targetName:s,logger:i});return {result:await n({locator:d.locator,originalElementLocationResult:void 0,serverSideBoundingBox:null}),elementInteractedDisplayString:d.displayString}}catch(d){if(d.name==="AbortError")throw d;a=d,i.warn({err:d},"Failed to action on hardcoded css selector"),Date.now()-l<500&&await ot(500);}}throw a}async scrollIntoViewAndResolveFinalTarget(t){let{resolutionResult:n,disableGlobalLocatorRedirect:o,logger:r}=t,i=Po(),s=!o&&this.browser.userBrowserSettings.globalLocatorRedirect!==false;(this.browser.userBrowserSettings.visualActions||s)&&await i.startAsyncSpan("SCROLL_ELEMENT_INTO_VIEW",async()=>{await this.browser.scrollIntoViewIfNeeded(n.locator);});let a;return s&&(a=await i.startAsyncSpan("LOCATOR_REDIRECT",async l=>{let{targetingResult:c,metadata:d}=await this.browser.performTargetRedirection(n,r);if(l.result=d,d.outcome==="redirected to new element"&&c&&i.storeTraceAsset&&!this.browser.userBrowserSettings.disableBrowserMonitoring){let u=randomUUID();(async()=>{try{let p=await this.browser.screenshot({locator:c.locator,clearHighlights:!0,boundingBoxOverride:c.serverSideBoundingBox??void 0});i.storeTraceAsset?.({snapshotId:u,data:p});}catch(p){r.debug({err:p},"Failed to capture element screenshot for redirect trace");}})(),l.elementScreenshotSnapshotId=u;}return c})),a||(a={locator:n.locator,serverSideBoundingBox:await n.locator.boundingBox({timeout:Qe}),originalElementLocationResult:n.originalElementLocationResult}),a}async resolveCachedTargetForAction(t){let{cache:n,options:o,logger:r}=t,s=await Po().startAsyncSpan("CACHE_RESOLUTION",async l=>{l.targetSource=n.targetSource,l.attributes.smartWaitingTimeoutMs=this.browser.smartWaitingTimeout;try{let c=await this.browser.resolveTarget(n,{allowNotActionableNodesOverride:o.allowNotActionableNodesOverride,logger:r,signal:this.executeAbortController.signal,...o.resolveTargetOptions,acceptElementMovedError:o.force});l.attributes.targetDisplayString=c.displayString,l.attributes.decisions=c.decisions;let d=c.decisions.find(u=>u.matched);return d&&(l.resolutionMethod=d.type),c}catch(c){throw c instanceof ki&&(l.cacheMissReason=c.cacheMissReason,l.attributes.decisions=c.decisions),c}}),a=await this.scrollIntoViewAndResolveFinalTarget({resolutionResult:s,disableGlobalLocatorRedirect:o.disableGlobalLocatorRedirect,logger:r});return o.force||await s.revalidator?.(),{resolutionResult:s,finalTarget:a}}async wrapElementTargetingCommand(t){return await La({action:()=>this.wrapElementTargetingCommandHelper(t),frameConfig:t.options.iframeUrl?{type:"url",url:t.options.iframeUrl}:void 0,browser:this.browser,logger:this.logger})}async wrapElementTargetingCommandHelper(t){let{tracer:n,target:o,action:r,options:i,command:s,finalAttempt:a=false,originalCache:l=t.cache}=t,{retriesWithAI:c=1}=t,{disableCache:d,useSelector:u,targetName:p}=i,m=Po(),h=this.logger.child({commandId:s.id}),g=this.shouldUseMemory(),f=cloneDeep(t.cache);if((!f||d)&&!XG(o))throw new ne("ActionFailureError","Cannot target element with no cached data or element descriptor");if(u)return this.wrapHardcodedCssTargetingCommandHelper(t);let y=false,S;d&&(h.info("Cache explicitly disabled for this step"),y=true,S="Cache explicitly disabled",f=void 0);let b=z9({cache:f,description:o.elementDescriptor,disableSecondaryCacheResolution:!!this.browser.userBrowserSettings.disableSecondaryCacheResolution,logger:h});f=b.cache,y=y||b.cacheBustedBeforeAction,!S&&b.cacheBustReason&&(S=b.cacheBustReason);let E=true;if(!V9(f))return c--,E=false,this.executeTargetingCommandWithAI({tracer:m,stepTracer:n,target:o,options:i,command:s,action:r,originalCache:l,logger:h,useMemory:g,cacheBustedBeforeAction:y,cacheBustReason:S});try{let{resolutionResult:C,finalTarget:w}=await this.resolveCachedTargetForAction({cache:f,options:i,logger:h}),I=await r(w);if(Tt.increment("cache_target_resolution_v2",1,["outcome:hit","platform:web",`hasRequirements:${!!f.requirements}`,`hasAdditionalElements:${!!f.additionalElements}`,`orgId:${this.orgId}`,"cliVersion:3.10.2"]),FR({cmd:s,key:p,newTarget:f,logger:h,updatedWithAI:!1}),E){let P=C.decisions.filter(v=>v.matched);if(P.length!==1)h.warn({decisions:C.decisions},"Expected exactly 1 matching method for element location, got more or less");else {let v=P[0].type;n.recordTargetAutoHeal({healType:v});}}return {result:I,elementInteractedDisplayString:C.displayString}}catch(C){this.throwIfClosed();let w=PO(C);if(w&&!a)return h.warn({err:C},"Encountered error that is retryable with cache"),this.wrapElementTargetingCommandHelper({tracer:n,command:s,target:o,action:r,cache:l,originalCache:l,retriesWithAI:c,finalAttempt:true,options:i});if(C instanceof ne&&!w)throw h.warn({err:C},"Failed to execute command with target (fatal)"),C;if(c>0&&o){h.info({err:C},"Failed to execute action with cached target, retrying with AI"),Tt.increment("cache_target_resolution_v2",1,["outcome:miss","platform:web",`hasRequirements:${!!f.requirements}`,`hasAdditionalElements:${!!f.additionalElements}`,`orgId:${this.orgId}`,"cliVersion:3.10.2",`missReason:${C instanceof ki?C.cacheMissReason:"unknown"}`]);let I;f.memory&&qE(f.memory)&&(I=f.memory);let P=C instanceof ki&&C.cacheMissReason==="failing-ldist";return this.wrapElementTargetingCommandHelper({tracer:n,command:s,target:o,cache:void 0,action:r,originalCache:l,retriesWithAI:c,finalAttempt:true,options:{...i,memory:I,targetHealingInProgress:true},skipInitialLocateWait:P})}throw new ne("ActionFailureError",`Failed to execute interactive command: ${C instanceof Error?C.message:`${C}`}`,{errOptions:{cause:C}})}}async executeTargetingCommandWithAI(t){let{tracer:n,stepTracer:o,target:r,options:i,command:s,action:a,originalCache:l,logger:c,useMemory:d,cacheBustedBeforeAction:u,cacheBustReason:p,skipInitialLocateWait:m}=t;c.info({description:r.elementDescriptor,targetHealingInProgress:i.targetHealingInProgress,cacheBustedBeforeAction:u,memory:i.memory,useMemory:d},"Prompting AI for an updated element location");let h=false;(u||!l)&&!this.getCurrentExecutionOptions().skipAISmartWaiting&&!i.skipAISmartWaiting?(await n.startAsyncSpan("SMART_WAITING",async()=>await n7({description:r.elementDescriptor,iframeUrl:i.iframeUrl,source:i.source,logger:c,allowNotActionableNodesOverride:i.allowNotActionableNodesOverride},this.getControllerFixtures())),h=true):(u||!l)&&(i.skipAISmartWaiting?c.debug("Skipping AI smart waiting for this targeting attempt"):c.debug("Skipping AI smart waiting due to controller execution options"));let g=2;for(let f=1;f<=g;f++){let y=false,S=this.browser.getActiveFrameConfig(),b=i.force||f>1;try{let E;try{E=await mB({description:r.elementDescriptor,disableCache:!!i.disableCache,iframeUrl:i.iframeUrl,source:i.source,useMemory:d,memory:d?i.memory:void 0,allowNotActionableNodesOverride:i.allowNotActionableNodesOverride,allowIneligibleTagRedirect:i.allowIneligibleTagRedirect,showZeroOpacityElementsOverride:i.showZeroOpacityElementsOverride,logger:c,skipWait:h||m,isAutoHeal:!!i.targetHealingInProgress,cacheBustReason:p,acceptElementMovedError:b},this.getControllerFixtures());}catch(I){if(I instanceof sg&&I.updatedLocatorMemory){let P={id:-1,...l,memory:I.updatedLocatorMemory};FR({cmd:s,key:i.targetName,newTarget:P,logger:c,updatedWithAI:!0});}throw I}E.frameConfig&&(this.browser.setActiveFrameConfig(E.frameConfig),y=!0);let C=await this.scrollIntoViewAndResolveFinalTarget({resolutionResult:E.resolution,disableGlobalLocatorRedirect:i.disableGlobalLocatorRedirect,logger:c}),w=await a(C);return FR({cmd:s,key:i.targetName,newTarget:E.target,logger:c,updatedWithAI:!0}),i.targetHealingInProgress&&(o.recordTargetAutoHeal({healType:"AI"}),E.target.targetSource="AI_HEALED",E.target.targetUpdateTime=new Date().toUTCString(),E.target.targetUpdateLoggerTags=jt(c)),{result:w,elementInteractedDisplayString:E.resolution.displayString,thoughts:E.thoughts}}catch(E){if(y&&this.browser.setActiveFrameConfig(S),this.throwIfClosed(),f<g&&PO(E)){c.warn({err:E,aiAttempt:f},"Encountered retryable AI targeting error; retrying with AI once");continue}throw E instanceof ne?E:new ne("ActionFailureError",E.message)}}throw new ne("ActionFailureError","Failed to execute AI targeting after retry")}async screenshotWithDimensions(t){return cA(this.browser,t)}async executePresetCommand(t,n,o,r,i){this.options?.slowMoMs&&await ot(this.options.slowMoMs);let s=await this.browser.getOpenPages(),a=this.browser.url(),l;try{l=await this.resolveCommandTemplateStrings(n,o);}catch(c){throw this.throwIfClosed(),new ne("ActionFailureError",`Failed to substitute template strings in command: ${c.message}`,{errOptions:{cause:c}})}try{let c=await Ge({name:`cli.command.${n.type}`,attributes:{"momentic.command_type":n.type,"momentic.command_id":n.id},fn:()=>this.executePresetCommandHelper(t,n,o,r,i)});return this.options?.autoFollowNewTabs&&await $9({beforeUrl:a,command:n,beforePages:s.map(d=>d.url),browser:this.browser,logger:this.logger}),c}catch(c){throw c.name!=="AbortError"&&this.logger.error({err:c},"Error thrown in action controller"),c}finally{G6(n,l);}}createCallbacksForBrowser(t){return {createIsolatedFolder:()=>jF(t)}}async traceBrowserInteraction(t,n,o){return Po().startAsyncSpan("BROWSER_INTERACTION",async i=>n(i),{name:t,...o})}async resolveCommandTemplateStrings(t,n){return gI({obj:t,context:n,bannedKeys:["type","a11yData","thoughts","cache","code"],orgId:this.orgId,logger:this.logger,signal:this.executeAbortController.signal,localTools:this.localCodeEvalTools})}async executePresetCommandHelper(t,n,o,r,i){r=r||"disableCache"in n&&!!n.disableCache;let s=this.logger.child({commandId:n.id});switch(n.type){case "SUCCESS":{let a=n.condition;return a?.assertion.trim()?NI({command:a,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory(),logger:s,recoveryHint:i}):{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "AI_ASSERTION":{if(!n.assertion.trim())throw new ne("ActionFailureError","Missing assertion");if(n.timeout&&n.timeout>1800)throw new ne("AssertionFailureError",`AI check timeout of ${n.timeout} exceeds the maximum allowed value of 30 minutes.`);return NI({command:n,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory(),logger:s,recoveryHint:i})}case "AI_EXTRACT":return t7({command:n,logger:s,fixtures:this.getControllerFixtures(),disableCache:r});case "NAVIGATE":if(!bf(n.url)&&!Tf(n.url,this.browser.baseUrl))throw new ne("ActionFailureError",`Invalid URL provided to navigate command: ${n.url}`);await this.traceBrowserInteraction("Navigate",()=>this.browser.navigate({url:n.url,loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0}));break;case "DIALOG":this.browser.registerDialogHandler(n.action);break;case "CAPTCHA":throw new ne("UserConfigurationError","Captcha solving is no longer available on Momentic");case "GO_BACK":await this.traceBrowserInteraction("Go back",()=>this.browser.goBack());break;case "GO_FORWARD":await this.traceBrowserInteraction("Go forward",()=>this.browser.goForward());break;case "SCROLL_LEFT":case "SCROLL_RIGHT":case "SCROLL_DOWN":case "SCROLL_UP":{let a,l;if(n.target&&zl(n.target)){let u=ti(n.target.pixels);await this.browser.hoverUsingVisualCoordinates(u);}else if(n.target&&n.target.elementDescriptor.trim()){let{elementInteractedDisplayString:u,thoughts:p}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:m=>this.browser.hover(m),options:{...n,targetName:"target",disableGlobalLocatorRedirect:true,disableCache:r}});a=u,l=p;}let c=this.browser.getViewport()?.height??Vr.height,d=this.browser.getViewport()?.width??Vr.width;switch(n.type){case "SCROLL_UP":await this.traceBrowserInteraction("Scroll up",()=>this.browser.scrollVertical(-(n.deltaY??c)));break;case "SCROLL_DOWN":await this.traceBrowserInteraction("Scroll down",()=>this.browser.scrollVertical(n.deltaY??c));break;case "SCROLL_LEFT":await this.traceBrowserInteraction("Scroll left",()=>this.browser.scrollHorizontal(-(n.deltaX??d)));break;case "SCROLL_RIGHT":await this.traceBrowserInteraction("Scroll right",()=>this.browser.scrollHorizontal(n.deltaX??d));break}return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "WAIT_FOR_URL":{if(n.timeout&&n.timeout>1800)throw new ne("UserConfigurationError",`Wait for URL timeout of ${n.timeout} exceeds the maximum allowed value of 30 minutes.`);let a=n.matcher;await this.browser.waitForUrl({beforeUrl:this.browser.url(),matcher:a},{timeout:n.timeout?n.timeout*1e3:void 0,negated:n.negated,caseInsensitive:n.caseInsensitive});break}case "WAIT":{if(n.delay>1800)throw new ne("UserConfigurationError",`Wait timeout of ${n.delay} seconds exceeds the maximum allowed value of 30 minutes`);let a=n.delay*1e3;await ot(a,this.executeAbortController.signal);break}case "REFRESH":await this.traceBrowserInteraction("Refresh",()=>this.browser.refresh({loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0}));break;case "CLICK":{if(zl(n.target)){let p=ti(n.target.pixels),m={...n,relativePosition:n.relativePosition?ti(n.relativePosition):void 0};await this.traceBrowserInteraction("Click",()=>this.browser.clickUsingVisualCoordinates(p,m),{coordinates:p});break}let a=this.browser.url(),{elementInteractedDisplayString:l,result:c,thoughts:d}=await this.wrapElementTargetingCommand({tracer:t,target:n.target,command:n,cache:n.cache?.target,action:p=>this.traceBrowserInteraction("Click",async m=>{let h={...n,relativePosition:n.relativePosition?ti(n.relativePosition):void 0},g=await this.browser.click(p,this.createCallbacksForBrowser(this.orgId),h);return g.coordinates&&(m.coordinates=g.coordinates),g},{selector:p.locator.toString()}),options:{...n,targetName:"target",disableCache:r}}),u={urlAfterCommand:this.browser.url(),succeedImmediately:false,elementInteracted:l,thoughts:d,data:c.downloadedFile?{downloadedFile:c.downloadedFile}:void 0};return qR(a,u.urlAfterCommand)&&(u.succeedImmediately=true,u.succeedImmediatelyReason="URL changed"),u}case "COPY":return await this.browser.copy(n.value),{succeedImmediately:false,data:n.value,urlAfterCommand:this.browser.url()};case "PASTE":{await this.browser.paste();break}case "DRAG":{if(zl(n.fromTarget)&&zl(n.toTarget)){let c=ti(n.fromTarget.pixels),d=ti(n.toTarget.pixels);await this.traceBrowserInteraction("Drag",()=>this.browser.dragAndDropUsingVisualCoordinates(c,d,{hoverDurationMs:n.hoverSeconds?n.hoverSeconds*1e3:void 0}),{coordinates:c});break}if(zl(n.fromTarget)||zl(n.toTarget))throw new Error("Drag and drop targets must be both coordinates or both descriptions");let{elementInteractedDisplayStrings:a,thoughts:l}=await this.wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:["fromTarget","toTarget"],descriptions:[n.fromTarget,n.toTarget],caches:[n.cache?.fromTarget,n.cache?.toTarget],action:(c,d)=>this.traceBrowserInteraction("Drag",()=>this.browser.dragAndDrop(c,d,{hoverDurationMs:n.hoverSeconds?n.hoverSeconds*1e3:void 0,steps:n.steps})),options:{...n,disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a[0],thoughts:l}}case "MOUSE_DRAG":{let a=parseInt(n.deltaX),l=parseInt(n.deltaY),c=n.steps??5;if(isNaN(a)||isNaN(l))throw new ne("ActionFailureError",`Invalid pixel values passed to mouse drag command: (${n.deltaX}, ${n.deltaY})`);if(n.target&&zl(n.target)){let p=ti(n.target.pixels);await this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDragUsingVisualCoordinates({deltaX:a,deltaY:l,steps:c,fromTarget:p}),{coordinates:p});break}let d,u;if(n.target?.elementDescriptor){let{elementInteractedDisplayString:p,thoughts:m}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:async h=>this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDrag(a,l,c,h.locator,{force:n.force})),options:{...n,targetName:"target",disableCache:r}});d=p,u=m;}else await this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDrag(a,l,c,void 0,{force:n.force}));return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:d,thoughts:u}}case "SELECT_OPTION":{if(!dd(n.target))throw new Error("Select with x/y is not supported yet");let a=n.target.elementDescriptor,l=n.choice,{elementInteractedDisplayString:c,thoughts:d}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:{type:"description",elementDescriptor:a},cache:n.cache?.target,action:u=>this.traceBrowserInteraction("Select option",()=>this.browser.selectOption(u,l,n.force),{value:l.type==="LABEL"?l.label:l.type==="VALUE"?l.value:l.index}),options:{...n,targetName:"target",disableCache:r,source:Tm(n)}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:c,thoughts:d}}case "TAB":{let a={loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0,retry:true};await this.browser.switchToPage(n.action,a);break}case "NEW_TAB":await this.browser.createNewTab(n.url,{loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0});break;case "CLOSE_TAB":await this.browser.closePage(n.action,{retry:true});break;case "COOKIE":{if(!n.value)break;let a=await this.browser.setCookie(n.value);s.debug({results:a},"Set cookies");break}case "LOCAL_STORAGE":if(!n.value||!n.key)break;await this.browser.setLocalStorage(n.key,n.value);break;case "JAVASCRIPT":{let a;try{n.environment==="BROWSER"?(a=await this.browser.evaluateCodeInPage({code:n.code,fragment:n.fragment??!1,context:o.toObjectCopy(),timeoutMs:n.timeout?n.timeout*1e3:void 0}),s.info({result:a},"Executed JavaScript in browser")):a=await Tp({orgId:this.orgId,code:n.code,fragment:!!n.fragment,context:o,timeoutMs:n.timeout?n.timeout*1e3:void 0,logger:s,localTools:this.localCodeEvalTools,signal:this.executeAbortController.signal,callbacks:{onPersistentVariableUpdates:async l=>{if(!this.options?.scratchPadId){s.warn({updates:l},"Got persistent variable updates but scratch pad is not available");return}await this.storage.savePersistentVariables?.({scratchPadId:this.options?.scratchPadId,orgId:this.orgId,updates:l,logger:s});}}});}catch(l){throw this.throwIfClosed(),new ne("ActionFailureError",l instanceof Error?l.message:`${l}`,{errOptions:{cause:l}})}try{JSON.stringify(a);}catch(l){throw new ne("ActionFailureError",`Return value is not serializable: ${l instanceof Error?l.message:`${l}`}`,{errOptions:{cause:l}})}return {urlAfterCommand:this.browser.url(),succeedImmediately:false,data:a}}case "TYPE":{if(n.target&&zl(n.target)){let m=ti(n.target.pixels),h={...n,relativePosition:n.relativePosition?ti(n.relativePosition):void 0};await this.browser.clickUsingVisualCoordinates(m,h),await this.traceBrowserInteraction("Type",()=>this.browser.type(n.value,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter},true),{value:n.value});break}let a=this.browser.url(),l,c,d=cloneDeep(n.target),u=this.browser.userBrowserSettings.globalLocatorRedirect===void 0||this.browser.userBrowserSettings.globalLocatorRedirect==="always";if(d){let{elementInteractedDisplayString:m,thoughts:h}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:d,cache:n.cache?.target,action:g=>this.traceBrowserInteraction("Type",()=>this.browser.typeIntoTarget(n.value,g,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter,relativePosition:n.relativePosition}),{value:n.value,selector:g.locator.toString()}),options:{...n,targetName:"target",disableCache:r,disableGlobalLocatorRedirect:!u,source:Tm(n)}});l=m,c=h;}else await this.traceBrowserInteraction("Type",()=>this.browser.type(n.value,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter},true),{value:n.value});let p={urlAfterCommand:this.browser.url(),succeedImmediately:false,elementInteracted:l,thoughts:c};return qR(a,p.urlAfterCommand)&&(p.succeedImmediately=true,p.succeedImmediatelyReason="URL changed"),p}case "HOVER":{if(zl(n.target)){let c=ti(n.target.pixels);await this.traceBrowserInteraction("Hover",()=>this.browser.hoverUsingVisualCoordinates(c),{coordinates:c});break}let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:c=>this.traceBrowserInteraction("Hover",()=>this.browser.hover(c,{relativePosition:n.relativePosition?ti(n.relativePosition):void 0}),{selector:c.locator.toString()}),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "FOCUS":{if(!dd(n.target))throw new Error("Focus with x/y is not supported yet");let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:c=>this.browser.focus(c),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "BLUR":{if(n.target&&!dd(n.target))throw new Error("Blur with x/y is not supported yet");if(!n.target||!n.target.elementDescriptor)return await this.browser.blur(null),{succeedImmediately:false,urlAfterCommand:this.browser.url()};let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,target:n.target,command:n,cache:n.cache?.target,action:c=>this.browser.blur(c),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "PRESS":{let a=this.browser.url();await this.traceBrowserInteraction("Press key",()=>this.browser.press(n.value,{repeat:n.repeat,convertMeta:n.convertMeta??true,delayMs:n.delayMs}),{value:n.value});let l={urlAfterCommand:this.browser.url(),succeedImmediately:false};return qR(a,l.urlAfterCommand)&&(l.succeedImmediately=true,l.succeedImmediatelyReason="URL changed"),l}case "KEY_DOWN":return await this.browser.keyDown(n.value,{convertMeta:n.convertMeta??true}),{urlAfterCommand:this.browser.url(),succeedImmediately:false};case "KEY_UP":return await this.browser.keyUp(n.value,{convertMeta:n.convertMeta??true}),{urlAfterCommand:this.browser.url(),succeedImmediately:false};case "REQUEST":{let a=new CookieJar,l=LBe(fetch,a),c;try{c=new URL(n.url).hostname;}catch{}let d=await c7({command:n,baseUrl:this.browser.baseUrl,logger:s,fetchImplementation:l});return {data:vS.parse({...d,cookies:Qz(a,c)}),succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "GRAPHQL_REQUEST":return {data:await p7({command:n,baseUrl:this.browser.baseUrl,logger:s}),succeedImmediately:false,urlAfterCommand:this.browser.url()};case "VISUAL_DIFF":return l7({tracer:t,command:n,disableCache:r,browser:this.browser,logger:s,screenshotStorage:this.visualDiffScreenshotStorage,targetingWrapper:a=>this.wrapElementTargetingCommand(a)});case "FILE_UPLOAD":{let a,l;if(n.fileSource.type==="URL"?(l=n.fileSource.url,a=await I8({uri:n.fileSource.url,logger:s,orgId:this.orgId})):n.fileSource.type==="USER_FILE"&&(l=n.fileSource.name,a=await this.uploadedFileStorage?.getFileForUpload(n.fileSource.name,this.orgId)),!a)throw new ne("UserConfigurationError",`Attempted to use non-existent file for upload step: ${l}`);await this.browser.setFileChooserHandler({...a,filename:n.filename});break}case "AUTH_SAVE":{let a=await this.browser.saveAuthState();if(n.storageState&&cp(n.storageState)){let l=Xn__default.resolve(n.storageState);Sr__default.mkdirSync(Xn__default.dirname(l),{recursive:true}),Sr__default.writeFileSync(l,`${JSON.stringify(a,null,2)}
5763
+ `),tokenLength:u}),a.forEach((g,f)=>{let y=g.ids[0],S=g.ids[g.ids.length-1];e.debug({tokenLength:g.tokenLength,minId:y,maxId:S},`Chunk for page filtering (index ${f+1}/${a.length})`);}),{chunks:a}}var J9=5e6,aBe=1e5,lBe=3e4,cBe=6e4,dBe=1e5;async function Qs(e){let{fixtures:t}=e,{logger:n}=t,o=e.tree,r=e.serializedTree,i=At(r);if(i>J9)throw new ne("UserConfigurationError",`Page accessibility tree is too large for AI page filtering (${i} tokens). Maximum supported size is ${J9} tokens.`);if(i>aBe){let s=Y9({serializedTree:r,options:q9,logger:n}),a=randomUUID();o=await uBe({...e,chunks:s.chunks,callId:a}),r=o.serialize();let l=At(r);n.info({oldTokens:i,newTokens:l,langfuseCallId:a},"Filtered page using AI chunk ranking");}return r}async function uBe({type:e,callId:t,chunks:n,description:o,fixtures:r,tree:i}){let{generator:s,signal:a,logger:l}=r,c=await s.rankChunksWithAi({chunks:n,description:o,type:e,softTokenLimit:lBe,mediumTokenLimit:cBe,hardTokenLimit:dBe,callId:t},{abortSignal:a,logger:l,loggerTags:jt(l)}),d=[];return n.forEach((p,m)=>{c.indices.includes(m)&&(d=d.concat(p.ids));}),i.pruneUsingRelevantIds(new Set(d))}async function mB(e,t){if(!e.description)throw new ne("UserConfigurationError","Cannot locate element with empty description");return La({action:async()=>mBe(e,t),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,browser:t.browser,logger:e.logger})}async function mBe(e,t){let{disableCache:n,testContext:o,filterByViewport:r,skipWait:i,source:s,memory:a,logger:l,allowNotActionableNodesOverride:c,allowIneligibleTagRedirect:d,showZeroOpacityElementsOverride:u,skipSavingVisualAttributes:p,isAutoHeal:m,cacheBustReason:h,acceptElementMovedError:g}=e,{orgId:f,browser:y,localCodeEvalTools:S,generator:b,abortSignal:E}=t,C=e.description,w=Po(),I=e.useMemory&&!n;o&&(C=await fi({orgId:f,s:C,context:o,localTools:S,signal:E,logger:l})),s&&(C=j9(C,s));let{serializedTree:P,tree:v}=await w.startAsyncSpan("GET_PAGE_STATE",async()=>jc(y,{allowNotActionableNodesOverride:c,allowIneligibleTagRedirect:d,showZeroOpacityElementsOverride:u,filterByViewport:r,abortSignal:E,skipWait:i,logger:l}),{}),_=await w.startAsyncSpan("GET_PAGE_SCREENSHOT",async()=>{let j,F=Date.now(),J;for(;!j&&Date.now()-F<3e3;){E.throwIfAborted();try{j=await y.screenshot({clearHighlights:!0,respectActiveFrame:!0,retries:2});}catch(X){J=X;}}if(!j)throw new ne("ActionFailureError",`Failed to take screenshot of page to locate element. The page may be unresponsive, or your machine might be severely resource constrained. Error: ${J?.message}`);return j}),x=P,D=false,V=`data:image/jpeg;base64,${_.toString("base64")}`,te=jt(l);x=await Qs({type:"locator",description:C,screenshot:V,serializedTree:P,tree:v,fixtures:{generator:b,signal:E,logger:l,orgId:f}}),x!==P&&(D=true);let re=await w.startAsyncSpan("AI_LOCATOR_CALL",async j=>{m&&(j.attributes.isAutoHeal=true),h&&(j.attributes.cacheBustReason=h);let F=await b.getElementLocation({browserState:x,goal:C,screenshot:V,source:s,memory:I?a:void 0},{disableCache:n,abortSignal:E,logger:l,loggerTags:te,useMemory:I,cacheBustReason:h});if(j.result=F,I&&(j.attributes.useMemory=true,j.attributes.memoryTraces=F.rememberedTraces??[],F.updatedMemory&&(j.attributes.memorySavedNewResult=true)),w.storeTraceAsset){let J=randomUUID();w.storeTraceAsset({snapshotId:J,data:_}),j.screenshotSnapshotId=J;}return F});if(l.debug({usedRag:D,result:re},"Got locator result"),!(re.id>0))throw new sg(`Could not find any relevant element: ${re.thoughts}`,re.updatedMemory?{type:"GCS_TRACES",traces:re.updatedMemory}:void 0);let{resolution:z,target:M,frameConfig:K}=await w.startAsyncSpan("TARGET_RESOLUTION",async j=>{let F=await y.createTargetFromA11yId({id:re.id,requirements:re.requirements,additionalElements:re.additionalElements,description:C,targetSource:"AI",logger:l,skipSavingVisualAttributes:p,acceptElementMovedError:g});return j.result={serializedElement:F.target.nodeOnlySerializedHtml??"Unknown HTML element"},F});if(z.a11yNode?.properties?.hidden&&z.a11yNode?.properties?.hidden!=="false")throw new ne("ActionFailureError",`Momentic's AI found a relevant element to interact with, but it is explicitly marked with an 'aria-hidden' attribute. Please remove this attribute or adjust the element description to locate a different element. Element chosen: ${z.displayString}`);return I&&(re.updatedMemory?M.memory={type:"GCS_TRACES",traces:re.updatedMemory}:a&&(M.memory=a)),{thoughts:re.thoughts,target:M,resolution:z,frameConfig:K,screenshot:V}}var hBe=15;async function NI({command:e,logger:t,fixtures:n,useMemory:o,maxRetries:r=hBe,recoveryHint:i}){if(!e.assertion.trim())throw new ne("ActionFailureError","Assertion command is missing the assertion content");let s=hM.optional().catch(void 0).parse(e.source);e.source&&!s&&t.warn(`Invalid source ${e.source} for AI assertion, ignoring...`);let a=Po();return a.startAsyncSpan("AI_ASSERTION_CALL",async l=>{let{browser:c}=n,d=e.timeout?e.timeout*1e3:c.smartWaitingTimeout,u=N3(d,r-1),p=0,m=Date.now(),h=m+d,g=m,f,y,S;try{await La({action:()=>c.clearHighlights(),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,browser:c,logger:t});}catch(C){t.warn({err:C},"Failed to clear highlights before AI check, continuing...");}for(;p<r;){n.abortSignal.throwIfAborted();let C=Date.now();if(p>0){if(C>=h)break;let P=h-C,v=g-C,_=Math.min(v,P);_>0&&await ot(_,n.abortSignal);}let w=Date.now();if(p>0&&w>=h)break;let I=false;try{if(f=await La({action:async()=>{let v=await Q9(c,t,n.abortSignal);return y&&y.serializedTree===v.serializedTree&&y.screenshotBuff.equals(v.screenshotBuff)?(I=!0,f):(y=v,Z9({command:e,state:v,fixtures:n,useMemory:o,useConsensus:!1,highlightElementsOnFailure:!1,attemptNumber:p,logger:t,source:s,recoveryHint:i}))},frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,logger:t,browser:c}),f?.aiResult.result){f?.updatedMemory&&ST(e,f.updatedMemory,t);break}else throw f?.aiResult.thoughts?new ne("AssertionFailureError",f.aiResult.thoughts):new ne("InternalPlatformError","No thoughts were provided for AI assertion failure")}catch(P){n.abortSignal.throwIfAborted(),S=P instanceof Error?P:new Error(`${P}`),I?t.info(`AI check attempt ${p} failed (re-used previous result)`):t.info({err:P},`AI check assert attempt ${p} failed, retrying...`);}finally{p++,g=w+u;}}if(!f?.aiResult.result){let C=h-Date.now();C>0&&await ot(C,n.abortSignal);}if(!f?.aiResult.result)try{f=await La({action:async()=>Z9({command:e,state:await Q9(c,t,n.abortSignal),fixtures:n,useMemory:o,useConsensus:!0,highlightElementsOnFailure:!0,attemptNumber:p,logger:t,recoveryHint:i}),frameConfig:e.iframeUrl?{type:"url",url:e.iframeUrl}:void 0,logger:t,browser:c});}catch(C){n.abortSignal.throwIfAborted(),S=C instanceof Error?C:new Error(`${C}`);}finally{p++;}f?.updatedMemory&&ST(e,f.updatedMemory,t);let b=f?.afterScreenshotOverride;if(b&&a.storeTraceAsset){let C=randomUUID();a.storeTraceAsset({snapshotId:C,data:b}),l.screenshotSnapshotId=C;}let E=f?.elementScreenshotOverride;if(E&&a.storeTraceAsset){let C=randomUUID();a.storeTraceAsset({snapshotId:C,data:E}),l.elementScreenshotSnapshotId=C;}if(o&&(l.attributes.useMemory=true,l.attributes.memoryTraces=f?.aiResult.rememberedTraces??[],f?.updatedMemory&&(l.attributes.memorySavedNewResult=true)),!f?.aiResult.result){l.result=f?.aiResult??{thoughts:S?.message??"AI check failed after all attempts",result:false};let C=`AI check still failing after ${p} attempts.`;throw S&&(C+=` Latest result: ${S.message}`),new ne("AssertionFailureError",C)}return l.result=f.aiResult,{...f,thoughts:f.aiResult.thoughts,succeedImmediately:false,urlAfterCommand:c.url()}})}async function Q9(e,t,n){await e.waitForPageLoad({signal:n});let[o,r]=await Promise.all([jc(e,{abortSignal:n,skipWait:true,skipWaitForPageLoad:true,logger:t}),e.screenshot({retries:1,respectActiveFrame:true})]);return {...o,screenshotBuff:r}}async function Z9({command:e,state:t,fixtures:n,useConsensus:o,useMemory:r,highlightElementsOnFailure:i,attemptNumber:s,source:a,logger:l,recoveryHint:c}){let {browser:d,generator:u,abortSignal:p}=n,{serializedTree:h,tree:g}=t,f=t.screenshotBuff,y=f.toString("base64"),S=d.url(),b=e.contextChoice??"MULTIMODAL",E=h;b!=="VISION_ONLY"&&(E=await Qs({type:"assertion",serializedTree:h,tree:g,description:e.assertion,screenshot:y,fixtures:{generator:u,signal:p,logger:l,orgId:n.orgId}}),E);let C={goal:e.assertion,url:S,memory:r?e.cache?.memory:void 0,browserState:E,screenshot:y,contextChoice:b,source:a,recoveryHint:c},I=await(b==="VISION_ONLY"?(v,_)=>u.getVisualAssertionResult(v,_):(v,_)=>u.getAssertionResult(v,_))(C,{useConsensus:o,attemptNumber:s,useMemory:r,disableCache:!!e.disableCache,abortSignal:p,logger:l,loggerTags:jt(l)}),P;if((I.result||i)&&I.relevantElements?.length){I.relevantElements.map(v=>d.getSerializedFormFromA11yId(v)).filter(v=>!!v);try{let v=I.relevantElements[0],{resolution:_}=await d.createTargetFromA11yId({id:v,description:null,targetSource:"AI",skipSaveToCache:!0});P=await d.screenshot({locator:_.locator,clearHighlights:!0,respectActiveFrame:!0});}catch(v){l.debug({err:v},"Failed to capture element screenshot for trace, continuing...");}await gBe(I.relevantElements,d,l);}return {aiResult:I,afterScreenshotOverride:f,elementScreenshotOverride:P,updatedMemory:r?I.updatedMemory:void 0}}async function gBe(e,t,n){let o=Date.now();for(let r of e){if(Date.now()-o>2e3){n.debug("Highlighting relevant elements took over 2s, aborting...");return}try{let i=new AbortController;await Ie(t.highlightA11yId(r),{milliseconds:1e3,fallback:()=>{throw i.abort(),new Error("Timed out waiting for highlighting to complete")}});}catch(i){n.debug({err:i},"Failed to highlight relevant element after assertion, continuing...");return}}}async function t7(e){let{command:t,logger:n,fixtures:o,disableCache:r}=e,{browser:i,generator:s,abortSignal:a}=o;if(!t.goal.trim())throw new ne("ActionFailureError","Cannot perform AI extraction without goal");if(t.schema){let u=OK(t.schema);if(u)throw new ne("UserConfigurationError",u)}let l=await i.getCondensedHtml(),c=await i.screenshot({retries:2}),d=Po();try{return await d.startAsyncSpan("AI_EXTRACTION_CALL",async u=>{let p=await s.getTextExtraction({goal:t.goal,browserState:l,returnSchema:t.schema,screenshot:`data:image/jpeg;base64,${c.toString("base64")}`},{disableCache:r,abortSignal:a,loggerTags:jt(n)});if(u.result=p,fBe({tracer:d,span:u,screenshot:c,htmlState:l,logger:n}),p.result==="NOT_FOUND")throw new ne("ActionFailureError","No relevant data found for extraction goal on this page");if(p.thoughts?.includes("MaxGenerationLengthExceededError"))throw new ne("UserConfigurationError",p.thoughts);return {thoughts:p.thoughts||void 0,data:p.result,succeedImmediately:!1,urlAfterCommand:i.url()}})}catch(u){let p=ee(u);throw p.includes("MaxGenerationLengthExceededError")?new ne("UserConfigurationError","You tried to extract too much data. Please rephrase your query to limit the results returned or use a JavaScript step in the browser instead."):p.includes("AIProviderError")&&p.includes("time")?new ne("AIProviderError","The AI provider responded with an error. This may be because you tried to extract too much data. Please limit extraction results to 2000 characters.",{errOptions:{cause:u}}):u}}function fBe(e){let{tracer:t,span:n,screenshot:o,htmlState:r,logger:i}=e;if(t.storeTraceAsset)try{let s=randomUUID();t.storeTraceAsset({snapshotId:s,data:o}),n.screenshotSnapshotId=s;let a=randomUUID();t.storeTraceAsset({snapshotId:a,data:Buffer.from(r),extension:"html"}),n.browserStateSnapshotId=a;}catch(s){i.debug({err:s},"Failed to store extraction trace assets");}}async function n7(e,t){let{logger:n}=e,{abortSignal:o,browser:r}=t,i=Date.now();try{await yBe(i,e,t);}catch(s){if(s instanceof Error&&(s.name==="AbortError"||s.name==="TimeoutError")||o.aborted)return;n.warn({err:s},"Unexpected error occurred during AI smart waiting");let a=r.smartWaitingTimeout-(Date.now()-i);a>0&&await ot(a,o);}finally{n.debug({durationMs:Date.now()-i},"AI smart waiting complete");}}async function yBe(e,t,n){let{abortSignal:o,browser:r}=n;if(r.smartWaitingTimeout<3e3){await ot(r.smartWaitingTimeout,o);return}if(!t.description)throw new ne("UserConfigurationError","Cannot locate element with empty description");await Ie(SBe(e,t,n),{milliseconds:r.smartWaitingTimeout});}async function SBe(e,t,n){let{logger:o,iframeUrl:r}=t,{browser:i}=n;for(;Date.now()-e<i.smartWaitingTimeout;)if(await La({action:async()=>bBe(t,n),frameConfig:r?{type:"url",url:r}:void 0,browser:i,logger:o}))return}async function bBe(e,t){let{testContext:n,logger:o}=e,{browser:r,abortSignal:i,localCodeEvalTools:s,orgId:a,generator:l}=t,c=e.description;n&&(c=await fi({orgId:a,s:c,context:n,localTools:s,signal:i,logger:o})),i.throwIfAborted();let d;try{d=await r.screenshot({clearHighlights:!0,respectActiveFrame:!0,retries:2});}catch(h){throw new ne("ActionFailureError",`Failed to take screenshot of page to perform smart waiting. The page may be unresponsive, or your machine might be severely resource constrained. Error: ${h instanceof Error?h.message:h}`)}let p=`data:image/jpeg;base64,${d.toString("base64")}`;i.throwIfAborted();let m=await l.getSmartWaitingDecision({description:c,screenshot:p},{abortSignal:i,loggerTags:jt(o)});return o.debug({result:m},"Got smart waiting result"),m.isPageReady}var TBe=3e4;async function i7(e){return Po().startAsyncSpan("ELEMENT_ASSERTION",async n=>ABe(e,n),{name:"Element check"})}async function ABe(e,t){let{command:n,timeoutMs:o,fixtures:r,disableCache:i}=e,{abortSignal:s}=r,a=()=>YE(n.cache)?n.cache:void 0,l=a(),c=!i&&!!l?.target&&zh(l.target),d=cloneDeep(l),u=(E=false)=>{if(l=a(),!!l)if(E){let C=Ak(d,l);l.target=C.target,l.updatedAt=C.updatedAt;}else {if(!d){l=void 0;return}l.target=d.target,l.updatedAt=d.updatedAt;}},p=Date.now(),m=c?Math.max(o/10,TBe):0,h=p,g=0,f,y=500,S=false;for(;g<2||Date.now()-p<o;){g++,g>1&&await ot(y,s),s?.throwIfAborted(),l=a();let E=g===1,C=c&&Date.now()-h>=m;C&&(h=Date.now());let{result:w,elementWasFound:I}=await o7({cacheToUse:l,skipAISmartWaiting:!E,useAIIfCacheFails:!c||C,params:e});if(f=w,S=S||I,w.success)break;u(),y=Math.min(y*1.25,1e4);}if(!f)throw new ne("InternalPlatformError",`Failed to evaluate manual element assertion in ${o}ms.`);if(s?.throwIfAborted(),!f.success){let E=a(),C=E?.target?.memory?{target:{id:-1,memory:E.target.memory}}:void 0,{result:w,elementWasFound:I}=await o7({cacheToUse:C,skipAISmartWaiting:true,useAIIfCacheFails:true,params:e});f=w,S=S||I,f.success||u(true);}let b=a();return f.success&&b?.target&&!S&&(b.target=yT(b.target),b.updatedAt=new Date),t.result={success:f.success,message:f.err?.message},f}async function o7({cacheToUse:e,skipAISmartWaiting:t,useAIIfCacheFails:n,params:o}){let{command:r,disableCache:i,fixtures:s,tracer:a,targetingWrapper:l}=o,{logger:c}=s;if(r.target&&!dd(r.target))throw new Error("Element assertion with x/y is not supported yet");let d=TX(r.assertion),u=EBe(r.assertion),p,m=false,h=cloneDeep(e);try{let{elementInteractedDisplayString:g,result:f,thoughts:y}=await l({tracer:a,command:r,target:r.target,cache:h?.target,action:async S=>CBe(S.locator,o),options:{...r,allowNotActionableNodesOverride:u,allowIneligibleTagRedirect:u,showZeroOpacityElementsOverride:!0,disableCache:i,memory:h?.target?.memory,disableGlobalLocatorRedirect:!0,source:Tm(r),skipAISmartWaiting:t,targetName:"target"},retriesWithAI:n?1:0});return p={success:f.success,data:f.data,err:f.err,elementInteractedDisplayString:g,thoughts:y},m=!0,f.success||(c.warn({aiThoughts:y,elementString:g,err:f.err},"Element check found an element but failed"),p={...f,thoughts:y}),{result:p,elementWasFound:m}}catch(g){if(d)return p={success:true,thoughts:`The element described does not exist on the page: ${g.message}`,err:void 0,data:void 0},{result:p,elementWasFound:m};if(!(g instanceof ne)||g.reason!="ActionFailureError")throw g;return p={success:false,err:g,data:void 0,thoughts:void 0},c.warn({err:g},"Element check did not find an element and failed"),{result:p,elementWasFound:m}}}function EBe(e){return !(e.type==="ELEMENT_EXISTENCE"&&e.condition==="VISIBLE"&&!e.negated)}async function CBe(e,{command:t,fixtures:n}){return await n.browser.highlight(e),await vBe(e,t.assertion)}async function vBe(e,t){let n=true,o,r;switch(t.type){case "ELEMENT_CONTENT":{let s=await e.textContent()??"";if(r={elementTextContent:mn(s,500,true)},!mT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=pf(t);n=false,o=new ne("AssertionFailureError",`The content ${a} '${t.value}': ${s}`);}break}case "ELEMENT_ATTRIBUTE":{r={elementOuterHtml:mn(await e.evaluate(a=>a.cloneNode(false).outerHTML),500,true)};let s=null;try{s=await e.getAttribute(t.attr,{timeout:3e3});}catch(a){o=new ne("AssertionFailureError",ee(a)),n=false;break}if(!mT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=pf(t);n=false,t.operation==="EXISTS"?o=new ne("AssertionFailureError",`The attribute ${t.attr} ${a}`):o=new ne("AssertionFailureError",`The attribute ${t.attr} ${a} '${t.value}': ${s}`);}break}case "ELEMENT_EXISTENCE":{switch(t.condition){case "VISIBLE":{n=await e.evaluate(async(a,l)=>{let c=Date.now();for(;Date.now()-c<l;){await new Promise(u=>setTimeout(u,250));let d=a.getBoundingClientRect();if(!(d.width===0||d.height===0)&&window.getComputedStyle(a).visibility!=="hidden"&&window.getComputedStyle(a).display!=="none")return true}return false},ua*1e3);break}case "EDITABLE":{n=await e.isEditable({timeout:ua*1e3});break}case "EXISTS":{n=true;break}case "ENABLED":{n=await e.isEnabled({timeout:ua*1e3});break}case "FOCUSED":{n=await e.evaluate(a=>a===document.activeElement);break}default:return (a=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})(t.condition)}if(n=t.negated?!n:n,!n){let s=pf(t);o=new ne("AssertionFailureError",`The element ${s}`);}break}case "ELEMENT_NAME":{let s=await e.evaluate(a=>a.tagName);if(!mT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:true})){let a=pf(t);n=false,o=new ne("AssertionFailureError",`The element tag name ${a} '${t.value}': ${s}`);}break}case "ELEMENT_STYLE":{let s=await e.evaluate((a,l)=>window.getComputedStyle(a).getPropertyValue(l),t.property);if(!mT(s,t.value,t.operation,{negated:!!t.negated,ignoreCase:false})){let a=pf(t);n=false,t.operation==="EXISTS"?o=new ne("AssertionFailureError",`The style property ${t.property} ${a}`):o=new ne("AssertionFailureError",`The style property ${t.property} ${a} '${t.value}': ${s}`);}break}default:return (s=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}return {thoughts:void 0,success:n,data:r,err:o}}function s7(e){return e.type==="ELEMENT_EXISTENCE"&&e.negated&&e.condition==="EXISTS"}async function cA(e,t){let n=await e.screenshot(t),{width:o,height:r}=imageSize(n);return {buffer:n,width:Math.ceil(o),height:Math.ceil(r)}}async function l7(e){let{command:t,browser:n,logger:o}=e;if(t.target&&!dd(t.target))throw new Error("Visual Diff with x/y is not supported yet");return await n.waitForStability({logger:o}),Po().startAsyncSpan("VISUAL_DIFF",async i=>{try{let s=await IBe(e);return i.result={success:!s.fail,message:s.thoughts},s}catch(s){throw s instanceof ne&&(i.result={success:false,message:s.message}),s}},{name:"Compare against golden"})}async function IBe({tracer:e,command:t,disableCache:n,browser:o,targetingWrapper:r,logger:i,screenshotStorage:s}){let a={clearHighlights:true,hideCaret:true},l=t.target&&dd(t.target)?t.target:void 0,c;l?.elementDescriptor?c=(await r({tracer:e,command:t,target:l,cache:t.cache?.target,action:async x=>cA(o,{locator:x.locator,...a}),options:{...t,disableCache:n,disableGlobalLocatorRedirect:true,memory:t.cache?.target?.memory,targetName:"target"}})).result:c=await cA(o,a);let d=await s.prepareGoldenScreenshotForComparison(i,t,c);if((c.height!==d.height||c.width!==d.width)&&i.warn({currHeight:c.height,currWidth:c.width,savedHeight:d.height,savedWidth:d.width},"Mismatched before and after visual diff screenshot sizes"),Math.abs(c.height-d.height)>10||Math.abs(c.width-d.width)>10){let _=`${c.width}x${c.height}`,x=`${d.width}x${d.height}`;return {fail:true,thoughts:`Current screenshot (${_}) does not match saved screenshot dimensions (${x}) - did you change the size of the target or the viewport?`,beforeScreenshotOverride:d.buffer,afterScreenshotOverride:c.buffer,succeedImmediately:false,urlAfterCommand:o.url()}}let u=await Jimp.fromBuffer(c.buffer),p={width:c.width,height:c.height},m=await Jimp.fromBuffer(d.buffer),h={width:d.width,height:d.height},g,f=p.width*p.height,y=h.width*h.height,S=Math.abs(p.height-h.height),b=Math.abs(p.width-h.width);if(f>y){let _=u.cover({w:h.width,h:h.height});c.buffer=await _.getBuffer("image/jpeg"),g="current",c.width=h.width,c.height=h.height;}else if(y>f){let _=m.cover({w:p.width,h:p.height});d.buffer=await _.getBuffer("image/jpeg"),g="saved";}let E={data:Buffer.alloc(c.width*c.height*4),width:c.width,height:c.height},C=t.threshold??.1,I=sFe(hB.decode(d.buffer).data,hB.decode(c.buffer).data,E.data,c.width,c.height,{threshold:C,diffColorAlt:[0,255,0]})/(c.width*c.height)*100,P=I>C*100,v=`Visual diff of ${I.toFixed(2)}% detected, which is ${P?"over":"under"} the threshold of ${C*100}%.`;if(g&&(v+=` The ${g} screenshot was cropped since it was taller by ${S} pixels and wider by ${b} pixels.`),P)throw new ne("ActionFailureError",v);return {fail:P,thoughts:v,beforeScreenshotOverride:c.buffer,afterScreenshotOverride:hB.encode(E,75).data,succeedImmediately:false,urlAfterCommand:o.url()}}var xBe=3e4;function _Be(e){if(!e.body)return {};switch(e.body.type){case "json":return {content:e.body.content,contentType:"application/json"};case "form-urlencoded":{let t=new URLSearchParams;return Object.entries(e.body.content).forEach(([n,o])=>{t.append(n,o);}),{content:t.toString(),contentType:"application/x-www-form-urlencoded;charset=UTF-8"}}}}async function c7({command:e,logger:t,baseUrl:n,fetchImplementation:o=fetch}){let r=e.timeout??xBe/1e3,i=Object.fromEntries(Object.entries(e.headers||{}).filter(([h,g])=>h&&g)),s=new URLSearchParams;Object.entries(e.params||{}).filter(([h,g])=>h&&g).forEach(([h,g])=>{s.append(h,g);});let a=s.toString(),l;if(bf(e.url)&&(l=e.url),n&&Tf(e.url,n)&&(l=new URL(e.url,n).toString()),!l)throw new ne("ActionFailureError",`Invalid URL: ${e.url}`);let c=l;t.info({url:c,searchParams:a,headers:i,body:e.body,method:e.method},"Making HTTP request");let u=await Ie((async()=>{let h=a?`${c}?${a}`:c;try{let g=_Be(e),f=new Headers(i);return g.contentType&&!f.has("Content-Type")&&f.set("Content-Type",g.contentType),await o(h,{headers:f,method:e.method,body:g.content})}catch(g){throw new Error(`Failed to make HTTP request: ${g}`,{cause:g})}})(),{milliseconds:r*1e3,fallback:()=>{throw new ne("ActionFailureError",`Fetch request timed out after ${r} seconds`)}});if(!u.ok){let h;try{h=await u.text();}catch(g){h=`Failed to read response body: ${g}`;}throw new ne("ActionFailureError",`Fetch request failed with status ${u.status}: ${h}`)}let p={};u.headers.forEach((h,g)=>{p[g]=h;});let m={status:u.status,headers:p,request:{url:u.url,method:e.method,headers:i}};if(e.body?.type==="json"&&e.body.content)try{m.request.json=JSON.parse(e.body.content);}catch{}if(u.headers.get("content-type")?.includes("json"))try{m.json=await u.json();}catch{}else u.headers.get("content-type")?.includes("text")&&(m.text=await u.text());return m}var PBe=5e3;async function LI({timeout:e=ua,...t}){let n=Date.now(),o=e*1e3,r=o+1e4,i,s=0,a=500;for(;s-n<o;){if(Date.now()-n>r){t.logger.warn("Exceeded max system timeout for page assertion, exiting...");break}t.signal?.throwIfAborted();let l=Date.now();i=await d7(t),s=Date.now();let c=s-l;if(c>1e3&&t.logger.warn({pageAssertDuration:c},"Page assertion took longer than expected"),!i.success)await ot(a,t.signal),a=Math.min(Math.floor(a*1.5),PBe);else return i}return i=await d7(t),i}async function d7(e){return Po().startAsyncSpan("PAGE_ASSERTION",async n=>{let o=await OBe(e);return n.result={success:o.success,message:o.err?.message},o},{name:"Page check"})}async function OBe({assertion:e,browser:t,autoExpandIframes:n}){switch(e.type){case "CONTENT":case "CONTENT":{let r,i=false,s;try{let a;if(n){let l=await t.evaluateFunctionInAllFrames(u7,{value:e.value,negated:!!e.negated,returnHtml:!1});i=e.negated?l.every(c=>c.evaluation):l.some(c=>c.evaluation),a=l.find(c=>c.pageHtml)?.pageHtml;}else ({evaluation:i,pageHtml:a}=await t.evaluateFunctionInPage(u7,{value:e.value,negated:!!e.negated,returnHtml:!0},"checking page content"));if(!i){let l=e.negated?Nd.CONTAINS:Ld.CONTAINS;s=new ne("AssertionFailureError",`The page ${l} '${e.value}'.`),r=a;}}catch(a){s=new ne("AssertionFailureError",`Failed to evaluate page content assertion: ${a instanceof Error?a.message:`${a}`}`);}return {success:i,err:s,data:i||!r?void 0:{pageContent:r}}}default:return (r=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}}function u7({value:e,negated:t,returnHtml:n}){let o=document.body.innerHTML,r=o.includes(e)===!t;return o.length>1e4&&(o=o.slice(0,1e4)+"...TRUNCATED"),{evaluation:r,pageHtml:!r&&n?o:void 0}}var MBe=3e4;async function p7({command:e,logger:t,baseUrl:n,fetchImplementation:o=fetch}){let r=e.timeout??MBe/1e3,i=new AbortController,s=Object.fromEntries(Object.entries(e.headers||{}).filter(([u,p])=>u&&p));s["Content-Type"]="application/json";let a;if(bf(e.url)&&(a=e.url),n&&Tf(e.url,n)&&(a=new URL(e.url,n).toString()),!a)throw new ne("ActionFailureError",`Invalid URL: ${e.url}`);let c=await Ie((async()=>{try{return await o(a,{headers:s,method:"POST",body:JSON.stringify({query:e.query,variables:e.variables?JSON.parse(e.variables):void 0}),signal:i.signal})}catch(u){throw new Error(`Failed to make HTTP request: ${u}`,{cause:u})}})(),{milliseconds:r*1e3});if(!c)throw new ne("ActionFailureError",`GraphQL request timed out after ${r} seconds`);if(!c.ok){let u,p=await c.text();try{u=JSON.parse(p);}catch{throw new ne("ActionFailureError",`GraphQL request failed with status ${c.status}: ${p}`)}throw u?.errors?.length&&u?.errors[0]?.message?new ne("ActionFailureError",`GraphQL request failed with status ${c.status}: ${u.errors[0].message}`):new ne("ActionFailureError",`GraphQL request failed with status ${c.status}: ${p}`)}let d={};return c.headers.forEach((u,p)=>{d[p]=u;}),{status:c.status,headers:d,json:await c.json()}}var dy=class{orgId;options;storage;localCodeEvalTools;uploadedFileStorage;visualDiffScreenshotStorage;browser;generator;executeAbortController=new AbortController;logger;executionOptionsStack=[];recordAbortController=null;registeredListeners={};recordedRequests={};constructor({browser:t,generator:n,logger:o,storage:r,orgId:i,localCodeEvalTools:s,uploadedFileStorage:a,visualDiffScreenshotStorage:l,options:c}){this.orgId=i,this.options=c,this.browser=t,this.browser.registerAbortSignal(this.executeAbortController.signal),this.storage=r,this.uploadedFileStorage=a,this.visualDiffScreenshotStorage=l,this.localCodeEvalTools=s,this.generator=n,this.logger=o;}setOpen(){this.executeAbortController=new AbortController,this.browser.registerAbortSignal(this.executeAbortController.signal);}setClosed(){this.executeAbortController.abort();}throwIfClosed(){this.executeAbortController.signal.throwIfAborted();}get closed(){return this.executeAbortController.signal.aborted}async withExecutionOptions(t,n){this.executionOptionsStack.push(t);try{return await n()}finally{this.executionOptionsStack.pop();}}getCurrentExecutionOptions(){return this.executionOptionsStack[this.executionOptionsStack.length-1]??{}}async evaluateAiAction({goal:t,startingScreenshot:n,history:o,disableCache:r,langfuseSessionId:i,lastError:s,logger:a=this.logger}){let[l,c]=await Promise.all([jc(this.browser,{abortSignal:this.executeAbortController.signal,skipWait:true,skipWaitForPageLoad:true,logger:a}),this.browser.screenshot({retries:1,clearHighlights:true})]),d=`data:image/jpeg;base64,${c.toString("base64")}`,u=await Qs({type:"ai-action",description:t,screenshot:d,serializedTree:l.serializedTree,tree:l.tree,fixtures:{generator:this.generator,signal:this.executeAbortController.signal,logger:a,orgId:this.orgId}}),p={url:this.browser.url(),browserState:u,startingScreenshot:n,history:o,goal:t,screenshot:d,lastError:s};return await this.generator.getMultiturnAiActionEvaluation(p,{disableCache:r,abortSignal:this.executeAbortController.signal,loggerTags:{...jt(a)},langfuseSessionId:i})}async promptToCommand({goal:t,startingScreenshot:n,history:o,actionHint:r,disableCache:i,logger:s=this.logger,langfuseSessionId:a}){let l=this.browser.url(),[c,d]=await Promise.all([jc(this.browser,{abortSignal:this.executeAbortController.signal,skipWait:true,skipWaitForPageLoad:true,logger:s}),this.browser.screenshot({retries:1,clearHighlights:true})]),u=`data:image/jpeg;base64,${d.toString("base64")}`,p=await Qs({type:"ai-action",description:t,screenshot:u,serializedTree:c.serializedTree,tree:c.tree,fixtures:{generator:this.generator,signal:this.executeAbortController.signal,logger:s,orgId:this.orgId}}),m={url:l,browserState:p,startingScreenshot:n,history:o,goal:t,actionHint:r,screenshot:u};try{return await this.generator.getMultiturnAiActionCommand(m,{disableCache:i,abortSignal:this.executeAbortController.signal,loggerTags:{...jt(s)},langfuseSessionId:a})}catch(h){throw new ne("InternalWebAgentError",`Error generating command: ${h instanceof Error?h.message:h}`,{errOptions:{cause:h}})}}async getBrowserState(t){return jc(this.browser,t)}async locateElement(t){return await mB(t,this.getControllerFixtures())}async locateElementWithSelector(t,n){return La({action:async()=>{let o=await this.browser.resolveHardcodedCssSelector({selector:t,timeoutMs:2e3,logger:this.logger});return {thoughts:"Located element with selector",target:{id:-1,selector:t,targetSource:"USER_CSS_SELECTOR",targetUpdateTime:new Date().toUTCString()},resolution:o}},frameConfig:n?{type:"url",url:n}:void 0,browser:this.browser,logger:this.logger})}getControllerFixtures(){return {browser:this.browser,generator:this.generator,logger:this.logger,orgId:this.orgId,storage:this.storage,localCodeEvalTools:this.localCodeEvalTools,abortSignal:this.executeAbortController.signal}}shouldUseMemory(){return this.options?.useMemory??true}async wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:o,descriptions:r,caches:i,action:s,options:a,retriesWithAI:l=1}){let c=[];for(let d=0;d<r.length;d++){let u=r[d],p=await this.wrapElementTargetingCommand({tracer:t,command:n,target:u,cache:i[d],action:async m=>m,options:{...a,targetName:o[d]}});c.push(p);}try{let d=await s(...c.map(m=>m.result)),u=m=>m==="fromTarget"?"From Target":m==="toTarget"?"To Target":"Target",p=c.map((m,h)=>m.thoughts?`${u(o[h])}: ${m.thoughts}`:void 0).filter(m=>!!m).join(" -------------- ")||void 0;return {result:d,elementInteractedDisplayStrings:c.map(m=>m.elementInteractedDisplayString),thoughts:p}}catch(d){if(this.throwIfClosed(),l>0)return this.logger.warn({err:d},"Failed to execute action with multiple cached targets, retrying with AI"),this.wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:o,descriptions:r,caches:r.map(()=>{}),action:s,options:a,retriesWithAI:l-1});throw new ne("ActionFailureError",d.message,{errOptions:{cause:d}})}}async wrapHardcodedCssTargetingCommandHelper({target:t,action:n,options:o,command:r}){let i=this.logger.child({commandId:r.id}),{targetName:s}=o;if(t.type!=="description")throw new ne("ActionFailureError","Cannot use selector with non-description target");let a,l=Date.now(),c=Date.now();for(;Date.now()-c<this.browser.smartWaitingTimeout;){l=Date.now();try{let d=await this.browser.resolveHardcodedCssSelector({selector:t.elementDescriptor,targetName:s,logger:i});return {result:await n({locator:d.locator,originalElementLocationResult:void 0,serverSideBoundingBox:null}),elementInteractedDisplayString:d.displayString}}catch(d){if(d.name==="AbortError")throw d;a=d,i.warn({err:d},"Failed to action on hardcoded css selector"),Date.now()-l<500&&await ot(500);}}throw a}async scrollIntoViewAndResolveFinalTarget(t){let{resolutionResult:n,disableGlobalLocatorRedirect:o,logger:r}=t,i=Po(),s=!o&&this.browser.userBrowserSettings.globalLocatorRedirect!==false;(this.browser.userBrowserSettings.visualActions||s)&&await i.startAsyncSpan("SCROLL_ELEMENT_INTO_VIEW",async()=>{await this.browser.scrollIntoViewIfNeeded(n.locator);});let a;return s&&(a=await i.startAsyncSpan("LOCATOR_REDIRECT",async l=>{let{targetingResult:c,metadata:d}=await this.browser.performTargetRedirection(n,r);if(l.result=d,d.outcome==="redirected to new element"&&c&&i.storeTraceAsset&&!this.browser.userBrowserSettings.disableBrowserMonitoring){let u=randomUUID();(async()=>{try{let p=await this.browser.screenshot({locator:c.locator,clearHighlights:!0,boundingBoxOverride:c.serverSideBoundingBox??void 0});i.storeTraceAsset?.({snapshotId:u,data:p});}catch(p){r.debug({err:p},"Failed to capture element screenshot for redirect trace");}})(),l.elementScreenshotSnapshotId=u;}return c})),a||(a={locator:n.locator,serverSideBoundingBox:await n.locator.boundingBox({timeout:Qe}),originalElementLocationResult:n.originalElementLocationResult}),a}async resolveCachedTargetForAction(t){let{cache:n,options:o,logger:r}=t,s=await Po().startAsyncSpan("CACHE_RESOLUTION",async l=>{l.targetSource=n.targetSource,l.attributes.smartWaitingTimeoutMs=this.browser.smartWaitingTimeout;try{let c=await this.browser.resolveTarget(n,{allowNotActionableNodesOverride:o.allowNotActionableNodesOverride,logger:r,signal:this.executeAbortController.signal,...o.resolveTargetOptions,acceptElementMovedError:o.force});l.attributes.targetDisplayString=c.displayString,l.attributes.decisions=c.decisions;let d=c.decisions.find(u=>u.matched);return d&&(l.resolutionMethod=d.type),c}catch(c){throw c instanceof ki&&(l.cacheMissReason=c.cacheMissReason,l.attributes.decisions=c.decisions),c}}),a=await this.scrollIntoViewAndResolveFinalTarget({resolutionResult:s,disableGlobalLocatorRedirect:o.disableGlobalLocatorRedirect,logger:r});return o.force||await s.revalidator?.(),{resolutionResult:s,finalTarget:a}}async wrapElementTargetingCommand(t){return await La({action:()=>this.wrapElementTargetingCommandHelper(t),frameConfig:t.options.iframeUrl?{type:"url",url:t.options.iframeUrl}:void 0,browser:this.browser,logger:this.logger})}async wrapElementTargetingCommandHelper(t){let{tracer:n,target:o,action:r,options:i,command:s,finalAttempt:a=false,originalCache:l=t.cache}=t,{retriesWithAI:c=1}=t,{disableCache:d,useSelector:u,targetName:p}=i,m=Po(),h=this.logger.child({commandId:s.id}),g=this.shouldUseMemory(),f=cloneDeep(t.cache);if((!f||d)&&!XG(o))throw new ne("ActionFailureError","Cannot target element with no cached data or element descriptor");if(u)return this.wrapHardcodedCssTargetingCommandHelper(t);let y=false,S;d&&(h.info("Cache explicitly disabled for this step"),y=true,S="Cache explicitly disabled",f=void 0);let b=z9({cache:f,description:o.elementDescriptor,disableSecondaryCacheResolution:!!this.browser.userBrowserSettings.disableSecondaryCacheResolution,logger:h});f=b.cache,y=y||b.cacheBustedBeforeAction,!S&&b.cacheBustReason&&(S=b.cacheBustReason);let E=true;if(!V9(f))return c--,E=false,this.executeTargetingCommandWithAI({tracer:m,stepTracer:n,target:o,options:i,command:s,action:r,originalCache:l,logger:h,useMemory:g,cacheBustedBeforeAction:y,cacheBustReason:S});try{let{resolutionResult:C,finalTarget:w}=await this.resolveCachedTargetForAction({cache:f,options:i,logger:h}),I=await r(w);if(Tt.increment("cache_target_resolution_v2",1,["outcome:hit","platform:web",`hasRequirements:${!!f.requirements}`,`hasAdditionalElements:${!!f.additionalElements}`,`orgId:${this.orgId}`,"cliVersion:3.10.3"]),FR({cmd:s,key:p,newTarget:f,logger:h,updatedWithAI:!1}),E){let P=C.decisions.filter(v=>v.matched);if(P.length!==1)h.warn({decisions:C.decisions},"Expected exactly 1 matching method for element location, got more or less");else {let v=P[0].type;n.recordTargetAutoHeal({healType:v});}}return {result:I,elementInteractedDisplayString:C.displayString}}catch(C){this.throwIfClosed();let w=PO(C);if(w&&!a)return h.warn({err:C},"Encountered error that is retryable with cache"),this.wrapElementTargetingCommandHelper({tracer:n,command:s,target:o,action:r,cache:l,originalCache:l,retriesWithAI:c,finalAttempt:true,options:i});if(C instanceof ne&&!w)throw h.warn({err:C},"Failed to execute command with target (fatal)"),C;if(c>0&&o){h.info({err:C},"Failed to execute action with cached target, retrying with AI"),Tt.increment("cache_target_resolution_v2",1,["outcome:miss","platform:web",`hasRequirements:${!!f.requirements}`,`hasAdditionalElements:${!!f.additionalElements}`,`orgId:${this.orgId}`,"cliVersion:3.10.3",`missReason:${C instanceof ki?C.cacheMissReason:"unknown"}`]);let I;f.memory&&qE(f.memory)&&(I=f.memory);let P=C instanceof ki&&C.cacheMissReason==="failing-ldist";return this.wrapElementTargetingCommandHelper({tracer:n,command:s,target:o,cache:void 0,action:r,originalCache:l,retriesWithAI:c,finalAttempt:true,options:{...i,memory:I,targetHealingInProgress:true},skipInitialLocateWait:P})}throw new ne("ActionFailureError",`Failed to execute interactive command: ${C instanceof Error?C.message:`${C}`}`,{errOptions:{cause:C}})}}async executeTargetingCommandWithAI(t){let{tracer:n,stepTracer:o,target:r,options:i,command:s,action:a,originalCache:l,logger:c,useMemory:d,cacheBustedBeforeAction:u,cacheBustReason:p,skipInitialLocateWait:m}=t;c.info({description:r.elementDescriptor,targetHealingInProgress:i.targetHealingInProgress,cacheBustedBeforeAction:u,memory:i.memory,useMemory:d},"Prompting AI for an updated element location");let h=false;(u||!l)&&!this.getCurrentExecutionOptions().skipAISmartWaiting&&!i.skipAISmartWaiting?(await n.startAsyncSpan("SMART_WAITING",async()=>await n7({description:r.elementDescriptor,iframeUrl:i.iframeUrl,source:i.source,logger:c,allowNotActionableNodesOverride:i.allowNotActionableNodesOverride},this.getControllerFixtures())),h=true):(u||!l)&&(i.skipAISmartWaiting?c.debug("Skipping AI smart waiting for this targeting attempt"):c.debug("Skipping AI smart waiting due to controller execution options"));let g=2;for(let f=1;f<=g;f++){let y=false,S=this.browser.getActiveFrameConfig(),b=i.force||f>1;try{let E;try{E=await mB({description:r.elementDescriptor,disableCache:!!i.disableCache,iframeUrl:i.iframeUrl,source:i.source,useMemory:d,memory:d?i.memory:void 0,allowNotActionableNodesOverride:i.allowNotActionableNodesOverride,allowIneligibleTagRedirect:i.allowIneligibleTagRedirect,showZeroOpacityElementsOverride:i.showZeroOpacityElementsOverride,logger:c,skipWait:h||m,isAutoHeal:!!i.targetHealingInProgress,cacheBustReason:p,acceptElementMovedError:b},this.getControllerFixtures());}catch(I){if(I instanceof sg&&I.updatedLocatorMemory){let P={id:-1,...l,memory:I.updatedLocatorMemory};FR({cmd:s,key:i.targetName,newTarget:P,logger:c,updatedWithAI:!0});}throw I}E.frameConfig&&(this.browser.setActiveFrameConfig(E.frameConfig),y=!0);let C=await this.scrollIntoViewAndResolveFinalTarget({resolutionResult:E.resolution,disableGlobalLocatorRedirect:i.disableGlobalLocatorRedirect,logger:c}),w=await a(C);return FR({cmd:s,key:i.targetName,newTarget:E.target,logger:c,updatedWithAI:!0}),i.targetHealingInProgress&&(o.recordTargetAutoHeal({healType:"AI"}),E.target.targetSource="AI_HEALED",E.target.targetUpdateTime=new Date().toUTCString(),E.target.targetUpdateLoggerTags=jt(c)),{result:w,elementInteractedDisplayString:E.resolution.displayString,thoughts:E.thoughts}}catch(E){if(y&&this.browser.setActiveFrameConfig(S),this.throwIfClosed(),f<g&&PO(E)){c.warn({err:E,aiAttempt:f},"Encountered retryable AI targeting error; retrying with AI once");continue}throw E instanceof ne?E:new ne("ActionFailureError",E.message)}}throw new ne("ActionFailureError","Failed to execute AI targeting after retry")}async screenshotWithDimensions(t){return cA(this.browser,t)}async executePresetCommand(t,n,o,r,i){this.options?.slowMoMs&&await ot(this.options.slowMoMs);let s=await this.browser.getOpenPages(),a=this.browser.url(),l;try{l=await this.resolveCommandTemplateStrings(n,o);}catch(c){throw this.throwIfClosed(),new ne("ActionFailureError",`Failed to substitute template strings in command: ${c.message}`,{errOptions:{cause:c}})}try{let c=await Ge({name:`cli.command.${n.type}`,attributes:{"momentic.command_type":n.type,"momentic.command_id":n.id},fn:()=>this.executePresetCommandHelper(t,n,o,r,i)});return this.options?.autoFollowNewTabs&&await $9({beforeUrl:a,command:n,beforePages:s.map(d=>d.url),browser:this.browser,logger:this.logger}),c}catch(c){throw c.name!=="AbortError"&&this.logger.error({err:c},"Error thrown in action controller"),c}finally{G6(n,l);}}createCallbacksForBrowser(t){return {createIsolatedFolder:()=>jF(t)}}async traceBrowserInteraction(t,n,o){return Po().startAsyncSpan("BROWSER_INTERACTION",async i=>n(i),{name:t,...o})}async resolveCommandTemplateStrings(t,n){return gI({obj:t,context:n,bannedKeys:["type","a11yData","thoughts","cache","code"],orgId:this.orgId,logger:this.logger,signal:this.executeAbortController.signal,localTools:this.localCodeEvalTools})}async executePresetCommandHelper(t,n,o,r,i){r=r||"disableCache"in n&&!!n.disableCache;let s=this.logger.child({commandId:n.id});switch(n.type){case "SUCCESS":{let a=n.condition;return a?.assertion.trim()?NI({command:a,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory(),logger:s,recoveryHint:i}):{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "AI_ASSERTION":{if(!n.assertion.trim())throw new ne("ActionFailureError","Missing assertion");if(n.timeout&&n.timeout>1800)throw new ne("AssertionFailureError",`AI check timeout of ${n.timeout} exceeds the maximum allowed value of 30 minutes.`);return NI({command:n,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory(),logger:s,recoveryHint:i})}case "AI_EXTRACT":return t7({command:n,logger:s,fixtures:this.getControllerFixtures(),disableCache:r});case "NAVIGATE":if(!bf(n.url)&&!Tf(n.url,this.browser.baseUrl))throw new ne("ActionFailureError",`Invalid URL provided to navigate command: ${n.url}`);await this.traceBrowserInteraction("Navigate",()=>this.browser.navigate({url:n.url,loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0}));break;case "DIALOG":this.browser.registerDialogHandler(n.action);break;case "CAPTCHA":throw new ne("UserConfigurationError","Captcha solving is no longer available on Momentic");case "GO_BACK":await this.traceBrowserInteraction("Go back",()=>this.browser.goBack());break;case "GO_FORWARD":await this.traceBrowserInteraction("Go forward",()=>this.browser.goForward());break;case "SCROLL_LEFT":case "SCROLL_RIGHT":case "SCROLL_DOWN":case "SCROLL_UP":{let a,l;if(n.target&&zl(n.target)){let u=ti(n.target.pixels);await this.browser.hoverUsingVisualCoordinates(u);}else if(n.target&&n.target.elementDescriptor.trim()){let{elementInteractedDisplayString:u,thoughts:p}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:m=>this.browser.hover(m),options:{...n,targetName:"target",disableGlobalLocatorRedirect:true,disableCache:r}});a=u,l=p;}let c=this.browser.getViewport()?.height??Vr.height,d=this.browser.getViewport()?.width??Vr.width;switch(n.type){case "SCROLL_UP":await this.traceBrowserInteraction("Scroll up",()=>this.browser.scrollVertical(-(n.deltaY??c)));break;case "SCROLL_DOWN":await this.traceBrowserInteraction("Scroll down",()=>this.browser.scrollVertical(n.deltaY??c));break;case "SCROLL_LEFT":await this.traceBrowserInteraction("Scroll left",()=>this.browser.scrollHorizontal(-(n.deltaX??d)));break;case "SCROLL_RIGHT":await this.traceBrowserInteraction("Scroll right",()=>this.browser.scrollHorizontal(n.deltaX??d));break}return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "WAIT_FOR_URL":{if(n.timeout&&n.timeout>1800)throw new ne("UserConfigurationError",`Wait for URL timeout of ${n.timeout} exceeds the maximum allowed value of 30 minutes.`);let a=n.matcher;await this.browser.waitForUrl({beforeUrl:this.browser.url(),matcher:a},{timeout:n.timeout?n.timeout*1e3:void 0,negated:n.negated,caseInsensitive:n.caseInsensitive});break}case "WAIT":{if(n.delay>1800)throw new ne("UserConfigurationError",`Wait timeout of ${n.delay} seconds exceeds the maximum allowed value of 30 minutes`);let a=n.delay*1e3;await ot(a,this.executeAbortController.signal);break}case "REFRESH":await this.traceBrowserInteraction("Refresh",()=>this.browser.refresh({loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0}));break;case "CLICK":{if(zl(n.target)){let p=ti(n.target.pixels),m={...n,relativePosition:n.relativePosition?ti(n.relativePosition):void 0};await this.traceBrowserInteraction("Click",()=>this.browser.clickUsingVisualCoordinates(p,m),{coordinates:p});break}let a=this.browser.url(),{elementInteractedDisplayString:l,result:c,thoughts:d}=await this.wrapElementTargetingCommand({tracer:t,target:n.target,command:n,cache:n.cache?.target,action:p=>this.traceBrowserInteraction("Click",async m=>{let h={...n,relativePosition:n.relativePosition?ti(n.relativePosition):void 0},g=await this.browser.click(p,this.createCallbacksForBrowser(this.orgId),h);return g.coordinates&&(m.coordinates=g.coordinates),g},{selector:p.locator.toString()}),options:{...n,targetName:"target",disableCache:r}}),u={urlAfterCommand:this.browser.url(),succeedImmediately:false,elementInteracted:l,thoughts:d,data:c.downloadedFile?{downloadedFile:c.downloadedFile}:void 0};return qR(a,u.urlAfterCommand)&&(u.succeedImmediately=true,u.succeedImmediatelyReason="URL changed"),u}case "COPY":return await this.browser.copy(n.value),{succeedImmediately:false,data:n.value,urlAfterCommand:this.browser.url()};case "PASTE":{await this.browser.paste();break}case "DRAG":{if(zl(n.fromTarget)&&zl(n.toTarget)){let c=ti(n.fromTarget.pixels),d=ti(n.toTarget.pixels);await this.traceBrowserInteraction("Drag",()=>this.browser.dragAndDropUsingVisualCoordinates(c,d,{hoverDurationMs:n.hoverSeconds?n.hoverSeconds*1e3:void 0}),{coordinates:c});break}if(zl(n.fromTarget)||zl(n.toTarget))throw new Error("Drag and drop targets must be both coordinates or both descriptions");let{elementInteractedDisplayStrings:a,thoughts:l}=await this.wrapMultiElementTargetingCommand({tracer:t,command:n,targetNames:["fromTarget","toTarget"],descriptions:[n.fromTarget,n.toTarget],caches:[n.cache?.fromTarget,n.cache?.toTarget],action:(c,d)=>this.traceBrowserInteraction("Drag",()=>this.browser.dragAndDrop(c,d,{hoverDurationMs:n.hoverSeconds?n.hoverSeconds*1e3:void 0,steps:n.steps})),options:{...n,disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a[0],thoughts:l}}case "MOUSE_DRAG":{let a=parseInt(n.deltaX),l=parseInt(n.deltaY),c=n.steps??5;if(isNaN(a)||isNaN(l))throw new ne("ActionFailureError",`Invalid pixel values passed to mouse drag command: (${n.deltaX}, ${n.deltaY})`);if(n.target&&zl(n.target)){let p=ti(n.target.pixels);await this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDragUsingVisualCoordinates({deltaX:a,deltaY:l,steps:c,fromTarget:p}),{coordinates:p});break}let d,u;if(n.target?.elementDescriptor){let{elementInteractedDisplayString:p,thoughts:m}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:async h=>this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDrag(a,l,c,h.locator,{force:n.force})),options:{...n,targetName:"target",disableCache:r}});d=p,u=m;}else await this.traceBrowserInteraction("Mouse drag",()=>this.browser.mouseDrag(a,l,c,void 0,{force:n.force}));return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:d,thoughts:u}}case "SELECT_OPTION":{if(!dd(n.target))throw new Error("Select with x/y is not supported yet");let a=n.target.elementDescriptor,l=n.choice,{elementInteractedDisplayString:c,thoughts:d}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:{type:"description",elementDescriptor:a},cache:n.cache?.target,action:u=>this.traceBrowserInteraction("Select option",()=>this.browser.selectOption(u,l,n.force),{value:l.type==="LABEL"?l.label:l.type==="VALUE"?l.value:l.index}),options:{...n,targetName:"target",disableCache:r,source:Tm(n)}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:c,thoughts:d}}case "TAB":{let a={loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0,retry:true};await this.browser.switchToPage(n.action,a);break}case "NEW_TAB":await this.browser.createNewTab(n.url,{loadTimeoutMs:n.loadTimeout?n.loadTimeout*1e3:void 0});break;case "CLOSE_TAB":await this.browser.closePage(n.action,{retry:true});break;case "COOKIE":{if(!n.value)break;let a=await this.browser.setCookie(n.value);s.debug({results:a},"Set cookies");break}case "LOCAL_STORAGE":if(!n.value||!n.key)break;await this.browser.setLocalStorage(n.key,n.value);break;case "JAVASCRIPT":{let a;try{n.environment==="BROWSER"?(a=await this.browser.evaluateCodeInPage({code:n.code,fragment:n.fragment??!1,context:o.toObjectCopy(),timeoutMs:n.timeout?n.timeout*1e3:void 0}),s.info({result:a},"Executed JavaScript in browser")):a=await Tp({orgId:this.orgId,code:n.code,fragment:!!n.fragment,context:o,timeoutMs:n.timeout?n.timeout*1e3:void 0,logger:s,localTools:this.localCodeEvalTools,signal:this.executeAbortController.signal,callbacks:{onPersistentVariableUpdates:async l=>{if(!this.options?.scratchPadId){s.warn({updates:l},"Got persistent variable updates but scratch pad is not available");return}await this.storage.savePersistentVariables?.({scratchPadId:this.options?.scratchPadId,orgId:this.orgId,updates:l,logger:s});}}});}catch(l){throw this.throwIfClosed(),new ne("ActionFailureError",l instanceof Error?l.message:`${l}`,{errOptions:{cause:l}})}try{JSON.stringify(a);}catch(l){throw new ne("ActionFailureError",`Return value is not serializable: ${l instanceof Error?l.message:`${l}`}`,{errOptions:{cause:l}})}return {urlAfterCommand:this.browser.url(),succeedImmediately:false,data:a}}case "TYPE":{if(n.target&&zl(n.target)){let m=ti(n.target.pixels),h={...n,relativePosition:n.relativePosition?ti(n.relativePosition):void 0};await this.browser.clickUsingVisualCoordinates(m,h),await this.traceBrowserInteraction("Type",()=>this.browser.type(n.value,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter},true),{value:n.value});break}let a=this.browser.url(),l,c,d=cloneDeep(n.target),u=this.browser.userBrowserSettings.globalLocatorRedirect===void 0||this.browser.userBrowserSettings.globalLocatorRedirect==="always";if(d){let{elementInteractedDisplayString:m,thoughts:h}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:d,cache:n.cache?.target,action:g=>this.traceBrowserInteraction("Type",()=>this.browser.typeIntoTarget(n.value,g,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter,relativePosition:n.relativePosition}),{value:n.value,selector:g.locator.toString()}),options:{...n,targetName:"target",disableCache:r,disableGlobalLocatorRedirect:!u,source:Tm(n)}});l=m,c=h;}else await this.traceBrowserInteraction("Type",()=>this.browser.type(n.value,{force:n.force,clearContent:n.clearContent,forceClearContent:n.forceClearContent,delay:n.delay,pressEnter:n.pressEnter},true),{value:n.value});let p={urlAfterCommand:this.browser.url(),succeedImmediately:false,elementInteracted:l,thoughts:c};return qR(a,p.urlAfterCommand)&&(p.succeedImmediately=true,p.succeedImmediatelyReason="URL changed"),p}case "HOVER":{if(zl(n.target)){let c=ti(n.target.pixels);await this.traceBrowserInteraction("Hover",()=>this.browser.hoverUsingVisualCoordinates(c),{coordinates:c});break}let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:c=>this.traceBrowserInteraction("Hover",()=>this.browser.hover(c,{relativePosition:n.relativePosition?ti(n.relativePosition):void 0}),{selector:c.locator.toString()}),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "FOCUS":{if(!dd(n.target))throw new Error("Focus with x/y is not supported yet");let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,command:n,target:n.target,cache:n.cache?.target,action:c=>this.browser.focus(c),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "BLUR":{if(n.target&&!dd(n.target))throw new Error("Blur with x/y is not supported yet");if(!n.target||!n.target.elementDescriptor)return await this.browser.blur(null),{succeedImmediately:false,urlAfterCommand:this.browser.url()};let{elementInteractedDisplayString:a,thoughts:l}=await this.wrapElementTargetingCommand({tracer:t,target:n.target,command:n,cache:n.cache?.target,action:c=>this.browser.blur(c),options:{...n,targetName:"target",disableCache:r}});return {succeedImmediately:false,urlAfterCommand:this.browser.url(),elementInteracted:a,thoughts:l}}case "PRESS":{let a=this.browser.url();await this.traceBrowserInteraction("Press key",()=>this.browser.press(n.value,{repeat:n.repeat,convertMeta:n.convertMeta??true,delayMs:n.delayMs}),{value:n.value});let l={urlAfterCommand:this.browser.url(),succeedImmediately:false};return qR(a,l.urlAfterCommand)&&(l.succeedImmediately=true,l.succeedImmediatelyReason="URL changed"),l}case "KEY_DOWN":return await this.browser.keyDown(n.value,{convertMeta:n.convertMeta??true}),{urlAfterCommand:this.browser.url(),succeedImmediately:false};case "KEY_UP":return await this.browser.keyUp(n.value,{convertMeta:n.convertMeta??true}),{urlAfterCommand:this.browser.url(),succeedImmediately:false};case "REQUEST":{let a=new CookieJar,l=LBe(fetch,a),c;try{c=new URL(n.url).hostname;}catch{}let d=await c7({command:n,baseUrl:this.browser.baseUrl,logger:s,fetchImplementation:l});return {data:vS.parse({...d,cookies:Qz(a,c)}),succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "GRAPHQL_REQUEST":return {data:await p7({command:n,baseUrl:this.browser.baseUrl,logger:s}),succeedImmediately:false,urlAfterCommand:this.browser.url()};case "VISUAL_DIFF":return l7({tracer:t,command:n,disableCache:r,browser:this.browser,logger:s,screenshotStorage:this.visualDiffScreenshotStorage,targetingWrapper:a=>this.wrapElementTargetingCommand(a)});case "FILE_UPLOAD":{let a,l;if(n.fileSource.type==="URL"?(l=n.fileSource.url,a=await I8({uri:n.fileSource.url,logger:s,orgId:this.orgId})):n.fileSource.type==="USER_FILE"&&(l=n.fileSource.name,a=await this.uploadedFileStorage?.getFileForUpload(n.fileSource.name,this.orgId)),!a)throw new ne("UserConfigurationError",`Attempted to use non-existent file for upload step: ${l}`);await this.browser.setFileChooserHandler({...a,filename:n.filename});break}case "AUTH_SAVE":{let a=await this.browser.saveAuthState();if(n.storageState&&cp(n.storageState)){let l=Xn__default.resolve(n.storageState);Sr__default.mkdirSync(Xn__default.dirname(l),{recursive:true}),Sr__default.writeFileSync(l,`${JSON.stringify(a,null,2)}
5764
5764
  `,"utf8");}return {data:a,succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "AUTH_LOAD":{let a;if(cp(n.storageState))try{a=JSON.parse(Sr__default.readFileSync(Xn__default.resolve(n.storageState),"utf8"));}catch(c){throw new ne("UserConfigurationError",`Failed to read auth state from '${n.storageState}': ${ee(c)}`,{errOptions:{cause:c}})}else if(!n.storageState.trim())a=void 0;else if(a=await Tp({orgId:this.orgId,code:n.storageState,fragment:false,context:o,logger:s,localTools:this.localCodeEvalTools,signal:this.executeAbortController.signal}),typeof a!="object")throw new ne("ActionFailureError",`Credentials must evaluate to an object (received ${typeof a} instead)`);let l;try{l=iv.optional().parse(a);}catch(c){throw new ne("ActionFailureError",`Credentials provided do not follow the required format: ${c}`)}await this.browser.loadAuthState(l);break}case "ELEMENT_CHECK":{let a=(n.timeout??ua)*1e3,l=this.generator.getAgentConfig()?.assertion;if(s7(n.assertion)&&!n.useSelector&&n.target.type==="description"&&l&&l!=="v1"){let d={id:n.id,type:"AI_ASSERTION",assertion:`There is no element on the page closely matches the following description. If the description has single quotes, remember that requires an exact text substring match. Description: ${n.target.elementDescriptor}`,iframeUrl:n.iframeUrl,timeout:n.timeout,source:"NEGATED_CHECK",cache:n.cache&&"memory"in n.cache?{memory:n.cache?.memory}:void 0};try{let u=await NI({command:d,logger:s,fixtures:this.getControllerFixtures(),useMemory:this.shouldUseMemory()});return {succeedImmediately:!1,thoughts:`The element described does not exist on the page: ${u.thoughts}`,urlAfterCommand:this.browser.url(),afterScreenshotOverride:u.afterScreenshotOverride}}finally{d.cache?.memory&&ST(n,d.cache?.memory.traces,s);}}let c=await i7({command:n,tracer:t,timeoutMs:a,targetingWrapper:d=>this.wrapElementTargetingCommand(d),fixtures:this.getControllerFixtures(),disableCache:r});return {fail:!c.success,data:c.data,elementInteracted:c.elementInteractedDisplayString,thoughts:c.err?.message??c.thoughts??`Element assertion ${c.success?"succeeded":"failed"}.`,succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "PAGE_CHECK":{let a=await La({action:async()=>LI({assertion:n.assertion,browser:this.browser,logger:s,timeout:n.timeout,signal:this.executeAbortController.signal,autoExpandIframes:!!this.browser.userBrowserSettings.autoExpandIframes}),frameConfig:n.iframeUrl?{type:"url",url:n.iframeUrl}:void 0,browser:this.browser,logger:s});return {fail:!a.success,data:a.data,thoughts:a.success?"Page assertion passed.":a.err?.message??`Page assertion still failing after ${n.timeout} seconds.`,urlAfterCommand:this.browser.url(),succeedImmediately:false}}case "REGISTER_REQUEST_LISTENER":{let a=new Ip(n.requestMatcher),l=this.browser.registerRequestListener(a);return this.registeredListeners[n.key]=l.then(async c=>await WF(c)).catch(c=>{s.error({err:c},"Failed to get request listener response");}),{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "AWAIT_LISTENER":{let a=this.registeredListeners[n.key];if(!a)throw new ne("ActionFailureError",`No listener registered with key: ${n.key}`);let l=n.timeout??10;return {data:await Ie(a,{milliseconds:l*1e3,message:`Request listener timed out after ${l} seconds`}),succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "RECORD_REQUESTS":{let a=new Ip(n.requestMatcher);return this.recordedRequests[n.key]={},this.browser.registerRequestRecorder(n.key,{matches:l=>a.matches({url:l.request.url,method:l.request.method}),onRequestStart:(l,c)=>{this.recordedRequests[n.key][l]=CI(c);},onRequestComplete:(l,c)=>{this.recordedRequests[n.key]?.[l]&&(this.recordedRequests[n.key][l]=CI(c));}}),{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "GET_RECORDED_REQUESTS":{let a=this.recordedRequests[n.key];if(!a)throw new ne("ActionFailureError",`No recorder registered with key: ${n.key}`);return delete this.recordedRequests[n.key],{data:Object.values(a),succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "SET_HEADER":{let a;return n.requestMatcher&&(a=new Ip(n.requestMatcher)),this.browser.setHeader(n.name,n.value,a),{succeedImmediately:false,urlAfterCommand:this.browser.url()}}case "MOCK_ROUTE":return {data:{key:this.browser.registerMock(n.key,new Ip(n.requestMatcher),async(l,c)=>{let d=await Tp({orgId:this.orgId,code:n.responseGenerator,fragment:false,context:o,timeoutMs:void 0,logger:s,localTools:this.localCodeEvalTools,mock:{request:l,response:c},disallowVariableUpdates:true,responseSerialization:"RESPONSE"}),u=CW.parse(d);return new Response(u.body,{status:u.status,headers:u.headers})},n.fetchOriginalResponse??false)},succeedImmediately:false,urlAfterCommand:this.browser.url()};case "REMOVE_ROUTE_MOCK":return this.browser.removeMock(n.key),{succeedImmediately:false,urlAfterCommand:this.browser.url()};case "OFFLINE_MODE":return await this.browser.setOfflineMode(n.enable),{succeedImmediately:false,urlAfterCommand:this.browser.url()};default:return (l=>{throw "If Typescript complains about the line below, you missed a case or break in the switch above"})()}return {succeedImmediately:false,urlAfterCommand:this.browser.url()}}async getReverseMappedDescription({browserState:t,targetId:n,disableCache:o,screenshot:r}){return (await this.generator.getReverseMappedDescription({browserState:t,target:n,screenshot:r},{disableCache:o,abortSignal:this.executeAbortController.signal,loggerTags:jt(this.logger)})).phrase}async stopRecordMode(){this.recordAbortController?.abort(),await this.browser.clearAllCdpHighlights();}async startRecordMode({params:t,abortController:n,isClickToRecord:o}){this.recordAbortController=n;let r=new _I({signal:n.signal,...t});return await this.browser.startRecording(this.recordAbortController.signal,r,o),r}async runSectionAutohealing(t){return this.generator.getAutohealingProposal(t,{disableCache:true,abortSignal:this.executeAbortController.signal,loggerTags:jt(this.logger)})}async getFailureRecoveryPlan(t,n){return this.generator.getFailureRecoveryPlan(t,{disableCache:true,abortSignal:this.executeAbortController.signal,loggerTags:jt(n??this.logger)})}};var yB=async e=>{let{step:t,resolvedInputs:n}=e.moduleParams,{logger:o,context:r,storage:i,codeEvalTools:s,controller:a}=e.fixtures,l=a.browser,{orgId:c,runId:d}=e.inputs,u=a.executeAbortController.signal;Object.keys(n).length>0&&(r.setInputs(n),o.info(Vs({json:{inputs:n,moduleId:t.moduleId},maxJsonStringSize:1e3}),"Set module inputs"));let p,m=false,h,g;if(t.cacheConfig||t.defaultCacheAllInvocations){let f=t.cacheConfig?.cacheKey||t.defaultCacheKey||"",y=await fi({orgId:c,s:f,context:r,logger:o,localTools:s,signal:u});g={orgId:c,cacheKeys:[y,...Object.entries(n).map(([b,E])=>`${b}:${E}`)]},o.info({original:f,keyParams:g},"Module cache key params");let S=Date.now();for(;Date.now()-S<c1;){u?.throwIfAborted();let b=await i.getCacheResult(g);if(b){o.info({cacheResult:mn(b,1e3,true)},"Got result from module execution cache"),p=kI(t,n,"SUCCESS"),p.message="Used cached module result.",p.data=JSON.parse(b),m=true;break}else o.info({cacheKey:f,keyParams:g},"No cache result found, continuing with lock acquisition");let E=await i.acquireCacheLock({keyParams:g,clientMetadata:`hostName:${hostname()};runId:${d}`},u);if(E.acquired){h=E.keyPrefix,o.info({cacheKeyPrefixIfLockAcquired:h,cacheKey:f,keyParams:g},"Acquired cache lock and proceeding with module execution");break}else o.debug({cacheKeyPrefixIfLockAcquired:h,cacheKey:f,keyParams:g},"Failed to acquire cache lock, retrying...");await ot(2500+Math.random()*1e4,u);}}try{if(!p)p=await FBe(e);else if(t.autoAuth){let f=iv.safeParse(p.data);if(!f.success)throw new ne("UserConfigurationError",`Cached authentication module result is not a valid storage state: ${f.error.message}`);o.debug("Automatically loading auth state after cached module result"),await l.loadAuthState(f.data);let y=!1,S=t.advanced?.cacheInvalidation;if(S&&S.type==="PAGE_CHECK"){let b={type:"CONTENT",value:S.substring},E=await LI({timeout:ua,assertion:b,browser:l,logger:o,signal:u,autoExpandIframes:!!l.userBrowserSettings.autoExpandIframes});E.success?o.debug({invalResult:E},"Cached result still valid after page check, continuing..."):(o.info({invalResult:E},"Invalidating cached result due to page check failure"),y=!0);}if(g&&y)return await i.deleteCacheResult(g),yB(e)}}finally{try{h!==void 0&&!m&&p?.status==="SUCCESS"&&await BBe({step:t,result:p,browser:a.browser,cacheKeyPrefix:h,logger:o,storage:i});}finally{h!==void 0&&await i.releaseCacheLock(h);}}return p},FBe=async e=>{let{currentParentIdChain:t}=e,{step:n,tracer:o}=e.moduleParams,r=kI(n,e.moduleParams.resolvedInputs,"SUCCESS"),i=await o.startSubSteps(),{status:s,results:a}=await e.executeStepList({...e,listParams:{steps:n.steps,containerName:`module ('${n.name}')`,tracer:i,currentParentIdChain:t}});return r.results=a,r.status=s,r.finishedAt=new Date,ys({asyncTasks:e.work.asyncTasks,nestedResults:a,result:r,logger:e.fixtures.logger}),r};function kI(e,t,n){let o={};return Object.entries(t).forEach(([i,s])=>{o[i]=JSON.stringify(s);}),{type:"MODULE",id:e.id,moduleId:e.moduleId,moduleName:e.name,startedAt:new Date,cacheConfig:e.cacheConfig,inputs:o,results:[],finishedAt:new Date,status:n}}async function h7({orgId:e,step:t,context:n,logger:o,codeEvalTools:r,signal:i}){let s={};try{for(let a of t.parameters??[]){let l=t.inputs?.[a]??t.defaultParameters?.[a];if(!l){o.warn(`No value or default found for parameter '${a}' that is required by module '${t.name}'`);continue}s[a]=await Tp({orgId:e,code:l,fragment:!0,context:n,logger:o,localTools:r,signal:i});}return s}catch(a){throw i?.throwIfAborted(),new ne("UserConfigurationError",`Failed to evaluate module inputs: ${a}`)}}async function BBe({step:e,result:t,browser:n,cacheKeyPrefix:o,logger:r,storage:i}){let s=e.cacheConfig?.cacheExpiryMs;(!s||s===TK)&&(s=e.defaultCacheTtl??AK);let a;e.autoAuth?a=JSON.stringify(await n.saveAuthState()):t.data!==void 0?a=JSON.stringify(t.data):a='""',r.debug({cacheKeyPrefix:o,ttlMs:s,truncatedCacheResultJson:Vs({json:a,maxJsonStringSize:1e4})},"Setting module cache result"),await i.setCacheResult({result:a,keyPrefix:o,ttlMs:s});}async function _p(e,t,n){return UBe(e,t,n)}async function UBe(e,t,n){let o=new Date;try{return n.throwIfAborted(),await t()}catch(r){let i=new Date,s="FAILED",a;if(n.aborted||r instanceof DOMException&&r.name==="AbortError"?(a="Step aborted by user.",s="CANCELLED"):r instanceof ne?a=`${r}`:a=`An unexpected error occurred: ${r.message}`,e.type==="RESOLVED_MODULE"){let l=kI(e,{},"FAILED");return l.message=a,l.startedAt=o,l.finishedAt=i,l}return {...Sf(e),startedAt:o,finishedAt:i,status:s,data:null,message:a,results:[]}}}async function Si(e,t){let n=false;try{return e&&!e.state.failureRecoveryDisabled&&(e.state.failureRecoveryDisabled=!0,n=!0),await t()}finally{e&&n&&(e.state.failureRecoveryDisabled=void 0);}}var DI=20;function q({text:e,section:t}){if(!t)return [{type:"text",text:e}];let n=`### ${t}`;return e.length===0?[{type:"text",text:n}]:[{type:"text",text:`${n}
5765
5765
  ${e}`}]}function Yi({base64Data:e,mediaType:t,section:n}){return n?[{type:"text",text:`### ${n}`},{type:"media",data:e,mediaType:t}]:[{type:"media",data:e,mediaType:t}]}function ae(e){if(e.length===0)throw new mt("No content parts provided to construct the tool response content.");return {type:"content",value:e}}function Ol(e){return {type:"content",value:[{type:"text",text:e}]}}function g7(e,t=2e4){let n={};for(let[o,r]of Object.entries(e)){if(typeof r=="object"&&r!==null){let i=JSON.stringify(r,null,2);if(At(i)>t){n[o]="[too large truncated]";continue}n[o]=r;continue}n[o]=r;}return n}function f7(e,t){let n={},o=0,r=Object.entries(e).map(([i,s])=>{let a=JSON.stringify(s,null,2),l=At(a);return {key:i,value:s,tokens:l}}).sort((i,s)=>i.tokens-s.tokens);for(let{key:i,value:s,tokens:a}of r)o+a<=t&&(n[i]=s,o+=a);return n}function y7({projectRoot:e,filePath:t,pathLabel:n="path"}){if(!t||!Xn__default.isAbsolute(t))return t;let o=Xn__default.relative(e,t);if(o.startsWith("..")||Xn__default.isAbsolute(o))throw new Error(`Error: ${n} "${t}" must be inside project root "${e}".`);return o}function S7(e){return e.map(t=>{switch(t.type){case "text":return t;case "media":return {type:"image",data:t.data,mimeType:t.mediaType};default:return (o=>{throw new Error("Unhandled content part")})()}})}var T7=["__generated__"],A7=[".env",".npmrc",".netrc",".git-credentials","credentials","credentials.json"],E7=[".env.","id_rsa","id_ecdsa","id_ed25519","service-account"],C7=[".pem",".key",".p12",".pfx",".keystore",".jks",".tfstate"],v7=[".tfstate."],FI=[...A7.map(e=>`**/${e}`),...E7.map(e=>`**/${e}*`),...C7.map(e=>`**/*${e}`),...v7.map(e=>`**/*${e}*`)];function b7(e){let t=Xn__default.basename(e).toLowerCase();return A7.includes(t)||E7.some(n=>t.startsWith(n))||C7.some(n=>t.endsWith(n))||v7.some(n=>t.includes(n))}function dA(e,t){return Xn__default.resolve(Xn__default.resolve(e),t)}async function R7(e,t){let n=dA(e,t);if(b7(n))throw new Error(`Path '${t}' matches the sensitive-file deny list (likely credentials or secrets) and cannot be read.`);let o=await AB.realpath(n);if(b7(o))throw new Error(`Path '${t}' matches the sensitive-file deny list (likely credentials or secrets) and cannot be read.`);return o}var jBe=z.object({pattern:z.string().min(1).describe("Glob pattern to match against file paths (relative to the search root). Patterns are NOT recursive by default \u2014 `*` matches a single path segment, the same way shell globs do. Prefix with `**/` for recursive globs (e.g. `**/*.ts` to find all TypeScript files, `**/open-app*` to find any file whose basename starts with `open-app`)."),path:z.string().optional().describe("Optional repo-relative directory to start the search in. Defaults to the working directory root."),maxResults:z.int().min(1).max(1e3).default(100).describe("Maximum number of paths to return. Defaults to 100.")}),$Be="Find files by glob pattern. Skips common build/dependency/IDE directories (package manager folders, .git, dist, build, .next, __generated__, etc.) by default. Returns one repo-relative path per line.";function UI(e){return {tool:tool({description:$Be,inputSchema:jBe,execute:async n=>{let o=await VBe(n,e);return ae(q({text:zBe(n.pattern,o)}))},toModelOutput:({output:n})=>n}),name:fd}}async function VBe({pattern:e,path:t,maxResults:n},o){let r=Xn__default.resolve(o.repoRoot),i=t?dA(r,t):r;return (await Gd([e],{cwd:i,ignore:[...T7.map(a=>`**/${a}`),...FI],maxDepth:1/0,nodir:true,signal:AbortSignal.timeout(3e4)})).slice(0,n).map(a=>Xn__default.relative(r,Xn__default.resolve(i,a)))}function zBe(e,t){return t.length===0?!e.includes("**/")&&!e.startsWith("**")?`(no matching files. Tip: '${e}' only matches at the top of the search root \u2014 prepend '**/' for a recursive match, e.g. '**/${e}'.)`:"(no matching files)":t.join(`
5766
5766
  `)}function HI({lines:e,startLine:t,maxLines:n,maxBytes:o,truncateLineChars:r}){let i=e.length,s=Math.max(1,t);if(s>i)return {content:"",endLine:s-1,droppedLines:0,droppedBytesFromByteCap:0};let a=Math.min(i,s-1+n),l=e.slice(s-1,a).map(g=>r?w7(g,300):g),c=l.join(`
@@ -7500,7 +7500,7 @@ with this test we are editing:
7500
7500
  to pick which of these modules are relevant:
7501
7501
 
7502
7502
  `;let p=aWe(c);u+=p;let m=streamObject({schema:z0,model:d("claude-sonnet-4-5-20250929"),system:sWe,messages:[{role:"user",content:u}],providerOptions:{anthropic:Ss}}),h=[];for await(let b of m.textStream)h.push(b);let g=h.join(""),f;try{let b=JSON.parse(g);f=z0.parse(b);}catch(b){r.error({rawResponse:g,parseError:b},"Failed to parse AI response as JSON"),n.addError(`Failed to parse AI response: ${ee(b)}. Raw response: ${g}`);return}let y=new Set(c.map(b=>b.moduleId)),S=f.recommendations.filter(b=>y.has(b.moduleId)?!0:(r.warn({moduleId:b.moduleId,moduleName:b.moduleName},"AI recommended a module that doesn't exist"),!1));n.addPartFromText(JSON.stringify({recommendations:S,totalModulesAnalyzed:c.length},null,2));}catch(c){r.error({err:c},"Error in module recommendation"),n.addError(`Failed to recommend modules: ${ee(c)}`);}}}),a_=[cWe,rWe];var dWe=1e5,Sre=Tr({schema:{name:HS,description:"Get the current browser state for a granular session. Defaults: screenshot on, browser snapshot off. The browser snapshot includes the URL, accessibility tree, and other context. Ask for it (returnBrowserState: true) when you need it for locator resolution or richer page structure\u2014e.g. when screenshot-only output is insufficient. For large pages, pass `hint` to AI-filter the snapshot down to the relevant sections.",inputSchema:{sessionId:z.string().describe("The session id to query."),returnBrowserState:z.boolean().default(false).describe("Include the serialized browser snapshot. Default false. Set to true when you need the browser snapshot for element targeting or page structure."),returnScreenshot:z.boolean().default(true).describe("Include a screenshot. Default true. Set to false if you already have a screenshot of the present state and don't need a new one. EX: you just previewed a step and see that the page is too complicated and need the browser snapshot."),hint:z.string().optional().describe("Short natural-language description of what you need from the page (e.g. the action you are about to take or the element you are looking for). Required when returnBrowserState=true and the page is large: the hint is fed into an AI page-filtering step that returns only the most relevant sections of the accessibility tree, keeping the snapshot under the per-tool token budget.")}},handle:async(e,t,n)=>{let o=jp({response:n,sessionId:t.sessionId,toolName:HS});if(!o)return;o.controller.setOpen();let r=await G0({browser:o.controller.browser,supportsFileOutput:e.supportsFileOutput,returnBrowserState:t.returnBrowserState,returnScreenshot:t.returnScreenshot,tokenLimit:dWe,hint:t.hint,filtering:{generator:e.generator,orgId:e.orgId,logger:e.logger,signal:o.controller.executeAbortController.signal}});n.addContentParts(r);}}),bre=Tr({schema:{name:GS,description:"Get the current environment variables for a session.",inputSchema:{sessionId:z.string()}},handle:async(e,t,n)=>{let o=jp({response:n,sessionId:t.sessionId,toolName:GS});if(!o)return;let r=await sa({testContext:o.context,supportsFileOutput:e.supportsFileOutput});n.addContentParts(r);}});var Tre=Tr({schema:{name:gd,description:`Start a granular browser session for a specific test. Requires a testId. Returns session metadata (sessionId, testId, testFileAbsolutePath, projectConfigAbsolutePath, cwd, viewport, etc.), a Step Authoring Guide artifact that includes projectRootAbsolutePath, projectConfigAbsolutePath, and cwd, and a Test Content section that lists every step in the bound test with its stable stepId context. ${EA} Read the Step Authoring Guide artifact before creating, previewing, running, or splicing CLI-style steps. Use the Test Content section for the step ids required by tools that operate on existing steps in this session's test. After editing with splice, prefer the splice response or request returnTest for the updated active-session step ids. Use ${$r} to inspect persisted test state by id or path, especially for a different test.`,inputSchema:{testId:z.string().describe("The test id to target when starting a session."),envName:z.string().optional().describe("Optional environment override (matches CLI --env behavior). Defaults to the test's default env when omitted."),projectConfigPath:z.string().optional().describe("Optional path to a momentic.config.yaml file (matches CLI --config)."),projectNameFilter:z.string().optional().describe("Optional project name filter for workspace configs (matches CLI --filter)."),headfulBrowser:z.boolean().optional().describe("Whether to launch a headful browser for the session. When omitted, uses the MCP server default if configured."),video:z.boolean().optional().describe("Whether to record a video of the browser session. When omitted, uses the MCP server default if configured. When the session is terminated, the response will include the path to the video output directory.")}},handle:async(e,t,n)=>{let{logger:o}=e,r=t.video??e.videoDefault??false,i;r&&(ta(e.project.rootDir),i=na({rootDir:e.project.rootDir,entity:"video",ext:"d"}),mkdirSync(i,{recursive:true}));let s;try{let l=rr();if(!l){n.addError("API client is not initialized; cannot start MCP session.");return}let c=await Ks({project:await on({configFilePath:t.projectConfigPath??e.project.configFilePath,nameFilter:t.projectNameFilter,skipExitOnError:!0}),apiClient:l}),d=new la(l,e.orgId,c);s=await aa.startSession({logger:o,storage:d,testId:t.testId,idleTimeoutMs:e.sessionIdleTimeoutMs,runner:"mcp",envName:t.envName,headfulOverride:t.headfulBrowser??e.headfulDefault??!0,customHeaders:e.customHeaders,devicePixelRatio:e.devicePixelRatio,videoOutputDir:i});}catch(l){n.addError(ee(l));return}ia({type:"mcp:session_started",test_platform:"web"});let a=s.controller.browser.getViewport();n.addPartFromText(JSON.stringify({sessionId:s.sessionId,testId:s.testId,testFileAbsolutePath:s.testFileAbsolutePath,projectRootAbsolutePath:e.project.rootDir,projectConfigAbsolutePath:e.project.configFilePath,cwd:process.cwd(),createdAt:s.createdAt,expiresAt:s.lastAccessedAt+s.idleTimeoutMs,idleTimeoutMinutes:s.idleTimeoutMs/(60*1e3),envName:s.envName,baseUrl:s.baseUrl,viewport:a},null,2)),n.addContentParts(await $ee({projectRootAbsolutePath:e.project.rootDir,projectConfigAbsolutePath:e.project.configFilePath,cwd:process.cwd(),stepSchema:As(),stepSchemaTitle:"Step schema",supportsFileOutput:e.supportsFileOutput}));try{let l=await Gp({project:s.storage.getProject(),storage:s.storage,selector:{id:s.testId},envName:s.envName,logger:o,mutableStepState:s.mutableStepState,includeCache:!1,hydrateStepIdentity:!0,supportsFileOutput:e.supportsFileOutput});n.addContentParts(l);}catch(l){o.warn({sessionId:s.sessionId,err:l},"Session started but resolved test content could not be loaded");}try{n.addContentParts(await Zr({browser:s.controller.browser,supportsFileOutput:e.supportsFileOutput}));}catch(l){o.warn({sessionId:s.sessionId,err:l},"Session started but initial screenshot capture failed"),n.addPartFromText(JSON.stringify({warning:"Session started successfully, but initial screenshot capture failed.",screenshotError:ee(l)},null,2));}i&&n.addContentParts(q({text:Br({filePath:i,title:"Video output directory"}),section:"Video Output"}));}}),Are=Tr({schema:{name:yC,description:"Kill a granular browser session by sessionId. Returns available session ids if the target is missing.",inputSchema:{sessionId:z.string().describe("The session id to terminate.")}},handle:async(e,t,n)=>{let{sessionId:o}=t;try{let r=aa.getSession(o),i=r?.videoOutputDir,s=await aa.killSession(t.sessionId,"explicit kill");if(s.killed&&ia({type:"mcp:session_killed",test_platform:"web",reason:"explicit kill"}),!s.killed){r?n.addError(`Failed to terminate session '${t.sessionId}'.`):n.addError(JSON.stringify({message:`No active session found for id '${t.sessionId}'.`,availableSessionIds:aa.listSessionIds()},null,2));return}n.addPartFromText(JSON.stringify({sessionId:t.sessionId,killed:!0},null,2));let a=await Vee({killResult:s,rootDir:e.project.rootDir});a&&n.addContentParts(q({text:Br({filePath:a.filePath,title:"Session span report"}),section:"Session Spans"})),i&&n.addContentParts(q({text:Br({filePath:i,title:"Video output directory"}),section:"Video Output"}));}catch(r){n.addError(ee(r));}}});var Ly=async({step:e,controller:t,executionOptions:n,storage:o,codeEvalTools:r,logger:i,socket:s,testContext:a,orgId:l,sessionId:c,usageTracker:d,apiClient:u})=>{let{results:p}=await W0({steps:[e],controller:t,executionOptions:n,storage:o,codeEvalTools:r,logger:i,socket:s,testContext:a,orgId:l,sessionId:c,usageTracker:d,apiClient:u});return p[0]},W0=async({steps:e,fromStep:t,toStep:n,tracer:o,controller:r,executionOptions:i,storage:s,codeEvalTools:a,logger:l,socket:c,testContext:d,orgId:u,sessionId:p,usageTracker:m,apiClient:h})=>{let g={controller:r,storage:s,codeEvalTools:a,logger:l,context:d,usageTracker:m},f=o??(c?new fu({orgId:u,parentStep:null,parentTracer:null,socket:c}):new zb);r.setOpen();let y={results:[],asyncTasks:[],state:{autoHealingDisabled:true,failureRecoveryDisabled:true,failureRecoveryAttempts:0},...t&&{fastForwardingToStep:true}},S=()=>ra({listParams:{containerName:"agent-step-list",steps:e,tracer:f},fixtures:g,options:{collectDebugData:false,reinitializeBrowser:false,disableHealing:true},inputs:{orgId:u,userId:v6(),runId:randomUUID(),sessionId:p,steps:e,testMetadata:null,orgSettings:{},fromStep:t,toStep:n},callbacks:{test:{},step:{}},runParams:h?{apiClient:h}:null,work:y});return i?r.withExecutionOptions(i,S):S()};async function l_({step:e,project:t,logger:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,testContext:c,supportsFileOutput:d,tempCaches:u,usageTracker:p,apiClient:m}){let h=await Ax(e,{project:t,logger:n,tempCaches:u});switch(h.type){case "PRESET_ACTION":return gWe({step:h,logger:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,testContext:c,supportsFileOutput:d,tempCaches:u,usageTracker:p,apiClient:m});case "AI_ACTION_DYNAMIC":return fWe({step:h,logger:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,testContext:c,supportsFileOutput:d,usageTracker:p,apiClient:m});case "RESOLVED_MODULE":return yWe({step:h,logger:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,testContext:c,supportsFileOutput:d,usageTracker:p,apiClient:m});default:{let[g,f]=await Promise.all([Zr({browser:r.browser,supportsFileOutput:d}),sa({testContext:c,supportsFileOutput:d})]);return [...q({text:`Preview for step type ${h.type} is not supported. Only PRESET_ACTION, RESOLVED_MODULE, and AI_ACTION_DYNAMIC are supported.`,section:"Error"}),...g,...f]}}}async function gWe({step:e,logger:t,storage:n,controller:o,codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,supportsFileOutput:c,tempCaches:d,usageTracker:u,apiClient:p}){let m=await Ly({step:e,logger:t,storage:n,controller:o,executionOptions:{skipAISmartWaiting:true},codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,usageTracker:u,apiClient:p}),h=[];m?m.status==="SUCCESS"?(SWe({logger:t,tempCaches:d,command:e.command,parts:h}),h.push(...q({text:`Step Execution successful: ${m.message}`,section:"Successful Result"}))):h.push(...q({text:`Step Execution failed: ${m.message}`,section:"Error"})):h.push(...q({text:"Step Execution errored for an unknown reason.",section:"Error"}));let[g,f]=await Promise.all([Zr({browser:o.browser,supportsFileOutput:c}),sa({testContext:l,supportsFileOutput:c})]);return h.push(...g,...f),h}async function fWe({step:e,logger:t,storage:n,controller:o,codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,supportsFileOutput:c,usageTracker:d,apiClient:u}){let p=await Ly({step:e,logger:t,storage:n,controller:o,executionOptions:{skipAISmartWaiting:true},codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,usageTracker:d,apiClient:u}),m=[];p?p.status==="SUCCESS"?m.push(...q({text:`AI action completed successfully: ${p.message??"Goal achieved"}`,section:"Successful Result"})):m.push(...q({text:`AI action failed: ${p.message??"Unknown error while previewing AI action"}`,section:"Error"})):m.push(...q({text:"AI action executed with unknown result.",section:"Error"}));let[h,g]=await Promise.all([Zr({browser:o.browser,supportsFileOutput:c}),sa({testContext:l,supportsFileOutput:c})]);return m.push(...h,...g),m}async function yWe({step:e,logger:t,storage:n,controller:o,codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,supportsFileOutput:c,usageTracker:d,apiClient:u}){let p=await Ly({step:e,logger:t,storage:n,controller:o,executionOptions:{skipAISmartWaiting:true},codeEvalTools:r,socket:i,orgId:s,sessionId:a,testContext:l,usageTracker:d,apiClient:u}),m=[];p?p.status==="SUCCESS"?m.push(...q({text:`Module executed successfully: ${p.message}`,section:"Successful Result"})):m.push(...q({text:`Module execution failed: ${p.message}`,section:"Error"})):m.push(...q({text:"Module execution errored for an unknown reason.",section:"Error"}));let[h,g]=await Promise.all([Zr({browser:o.browser,supportsFileOutput:c}),sa({testContext:l,supportsFileOutput:c})]);return m.push(...h,...g),m}function SWe({logger:e,tempCaches:t,command:n,parts:o}){if(t&&dr(n)&&n.cache)try{let r=randomUUID();t[r]=Jl.parse(cloneDeep({type:n.type,cache:n.cache})),o.push(...q({text:r,section:"CacheId"}));}catch(r){e.warn({err:r},"Failed to save temp cache for step. Continuing...");}}var Ere=({steps:e,fromStep:t,toStep:n})=>{let o={total:0,fastForwardingToStep:true},r=(i,s)=>{if(i.skipped)return false;let a=s.map(c=>c.id),l=kA(i.id,a,t.fromStepId,t.parentStepIdChain);if(o.fastForwardingToStep){if(!l)return false;o.fastForwardingToStep=false;}return o.total+=1,!!(n&&kA(i.id,a,n.toStepId,n.parentStepIdChain))};return zi({steps:e,earlyStop:true,onPresetAction:(i,s)=>r(i,s.parentChain),onConditional:(i,s)=>{if(i.skipped)return false;let a=s.parentChain.map(c=>c.id),l=kA(i.id,a,t.fromStepId,t.parentStepIdChain);if(o.fastForwardingToStep){if(!l)return false;o.fastForwardingToStep=false;}return !!(n&&kA(i.id,a,n.toStepId,n.parentStepIdChain))},onSimpleStepContainer:(i,s)=>r(i,s.parentChain)}),o.total};var TWe="Cannot add a module step inside another module. Modules cannot be nested.";function q0(e,t){switch(t){case "setup":return e.beforeSteps??[];case "teardown":return e.afterSteps??[];case "main":return e.steps;default:{throw new Error("Unknown test section")}}}function AWe(e,t,n){let o=q0(e,t);if(!n?.length)return o;let r=EX(o,n);if(!r)throw new Error(`No step found with parent chain [${n.join(", ")}] in ${t} section, or parent does not support nested steps`);return r}function Cre(e,t){let n=t.moduleId,o=r=>{r.type!=="RESOLVED_MODULE"||r.moduleId!==n||(t.parameters!==void 0&&(r.parameters=t.parameters),t.parameterEnums!==void 0&&(r.parameterEnums=t.parameterEnums),t.defaultParameters!==void 0&&(r.defaultParameters=t.defaultParameters),t.name!==void 0&&(r.name=t.name),t.description!==void 0&&(r.description=t.description),t.enabled!==void 0&&(r.enabled=t.enabled),t.steps!==void 0&&(r.steps=t.steps));};for(let r of [e.steps,e.beforeSteps,e.afterSteps])zi({steps:r,onPresetAction:o,onConditional:o,onSimpleStepContainer:o});}async function c_({project:e,storage:t,orgId:n,logger:o,testPath:r,saveChangesToDisk:i,supportsFileOutput:s,tempCaches:a,mutableStepState:l,params:c,envName:d}){let u=Xn__default.join(e.rootDir,r),p=await t.getTestByPath({relativeTestPath:r,logger:o}),m=l?.stepLists??p,h=cloneDeep({steps:m.steps??[],beforeSteps:m.beforeSteps??[],afterSteps:m.afterSteps??[]}),g=cloneDeep(h),f=await Promise.all(c.steps.map(v=>Ax(v,{project:e,logger:o,tempCaches:a}))),y=cloneDeep(f),S=c.parentStepIdChain,b;try{b=AWe(g,c.targetSection,S);}catch(v){return ae(q({text:`Error: ${ee(v)}`,section:"Error"}))}if(c.startIndex<0||c.startIndex>b.length)return ae(q({text:`Error: Invalid startIndex ${c.startIndex} for splicing ${c.targetSection} section with ${b.length} steps (must be 0-${b.length})`,section:"Error"}));let E=f.length,C=c.deleteCount,w=cloneDeep(b.slice(c.startIndex,c.startIndex+C)),I=[];if(S?.length){let v=CX(q0(g,c.targetSection),S,c.targetSection);if(I.push(...v),v.some(x=>x.type==="RESOLVED_MODULE")&&f.some(x=>x.type==="RESOLVED_MODULE"))return ae(q({text:`Error: ${TWe}`,section:"Error"}))}b.splice(c.startIndex,c.deleteCount,...f);for(let v of f)v.type==="RESOLVED_MODULE"&&Cre(g,v);for(let v of I)v.type==="RESOLVED_MODULE"&&Cre(g,v);if(l&&(l.stepLists=g),i){let v=await t.updateTestByPath({logger:o,relativeTestPath:r,stepLists:g,schemaVersion:at});o.info({testPath:r,testFilePath:u,projectFileFormat:e.config.fileFormat,moduleUpdateCount:v.moduleUpdates.length,snapshotCacheCount:v.snapshotCachesToSave.length},"MCP splice persisted test changes to disk");}else o.info({testPath:r,testFilePath:u,projectFileFormat:e.config.fileFormat},"MCP splice skipped disk persistence");let P=[...q({text:`Successfully spliced ${E} step(s) at index ${c.startIndex} in the ${c.targetSection} section, removing ${C} step(s).`,section:"Result"})];return P.push(...await vWe({logger:o,project:e,orgId:n,testId:p.id,environment:d,originalSteps:h,updatedSteps:g})),P.push(...await Ine({rootDir:e.rootDir,supportsFileOutput:s,deletedStepRefs:w.map((v,_)=>({id:v.id,index:c.startIndex+_})),insertedStepRefs:y.map((v,_)=>({id:v.id,index:c.startIndex+_})),deletedSteps:ip(w,{includeCache:false}),insertedSteps:ip(y,{includeCache:false}),metadata:{section:c.targetSection,parentStepIdChain:S??[],startIndex:c.startIndex,deleteCount:C,insertedCount:E},artifactEntity:"splice-restoration-payload"})),c.returnTest&&P.push(...q({text:JSON.stringify(await n_({project:e,storage:t,selector:{path:r},envName:d,logger:o,mutableStepState:l,supportsFileOutput:s,hydrateStepIdentity:false}),null,2),section:"Test Content"})),ae(P)}async function d_({project:e,logger:t,testPath:n,storage:o,controller:r,codeEvalTools:i,socket:s,orgId:a,sessionId:l,envName:c,testContext:d,tracer:u,params:p,tokenLimit:m,supportsFileOutput:h,usageTracker:g,mutableStepState:f,apiClient:y,disableCache:S}){let{fromStep:b,toStep:E,targetSection:C}=p,w=await o.getTestByPath({relativeTestPath:n,logger:t}),{alwaysSaveCache:I,noCache:P}=au(),v=await Cs({logger:t,orgId:a,project:e,alwaysSaveCache:I,noCache:P||S===true}),_=f?.stepLists??{beforeSteps:w.beforeSteps??[],afterSteps:w.afterSteps??[],steps:w.steps};await v.resolveStepCacheEntries({logger:t,schemaVersion:w.schemaVersion,stepLists:_,testId:w.id,environment:c,useSnapshotIdentityCache:!f&&e.config.fileFormat==="v2"}),f&&(f.stepLists=_);let x=S?cloneDeep(_):_;S&&EWe(x);let D=q0(x,C),U=cloneDeep({steps:x.steps,beforeSteps:x.beforeSteps,afterSteps:x.afterSteps}),{result:V}=Hm(D,b.fromStepId,b.parentStepIdChain);if(!V)return ae(q({text:`Error: No step found with id "${b.fromStepId}" and parent chain [${b.parentStepIdChain.join(", ")}] in ${C} section.`,section:"Error"}));if(E){let{result:Oe}=Hm(D,E.toStepId,E.parentStepIdChain);if(!Oe)return ae(q({text:`Error: No step found with id "${E.toStepId}" and parent chain [${E.parentStepIdChain.join(", ")}] in ${C} section.`,section:"Error"}))}if(u?.setProgressTotal){let Oe=Ere({steps:D,fromStep:b,toStep:E});u.setProgressTotal(Oe);}r.setOpen();let te;try{te=await W0({steps:D,controller:r,storage:o,codeEvalTools:i,logger:t,socket:s,orgId:a,sessionId:l,testContext:d,fromStep:b,toStep:E,tracer:u,usageTracker:g,apiClient:y});}finally{await g.flush(t);}let{results:re}=te;if(!re||re.length===0)return ae(q({text:"Error: No steps were executed.",section:"Error"}));let H=re.at(-1);if(!H)return ae(q({text:"Error: No steps were executed.",section:"Error"}));let z={logger:t,cacheStorage:v,orgId:a,testId:w.id,environment:c,originalStepsWithCaches:U,updatedStepsWithCaches:{steps:x.steps,beforeSteps:x.beforeSteps??[],afterSteps:x.afterSteps??[]}},M=H.status!=="SUCCESS";await Gm({logger:t,cacheStorage:v,orgId:a,testId:w.id,environment:c,stepLists:z.updatedStepsWithCaches,useSnapshotIdentityCache:e.config.fileFormat==="v2"}),M?H.status==="FAILED"&&await gf(z):await jm(z);let K=C==="main"?"":` in ${C}`,j=Oe=>{let Ye="fromStepId"in Oe?Oe.fromStepId:Oe.toStepId;return Oe.parentStepIdChain.length>0?`id "${Ye}" (parent chain [${Oe.parentStepIdChain.join(", ")}])`:`id "${Ye}"`},F=b?j(b):"beginning",J=E?`Steps from ${F} through ${j(E)}${K}`:`Steps from ${F} to end${K}`,X=[];if(M)X.push(...q({text:`Error: step with id ${H.id} failed: ${H.message}`,section:"Error"}));else {r.setOpen();let Oe=`${J} executed successfully.`;X.push(...q({text:Oe,section:"Result"})),H.data&&X.push(...q({text:`Data: ${JSON.stringify(H.data,null,2)}`,section:"Result Data"}));}let[ue,xe]=await Promise.all([Zr({browser:r.browser,supportsFileOutput:h}),sa({testContext:d,supportsFileOutput:h,limits:{tokenLimit:m}})]);return ae([...X,...ue,...xe])}function EWe(e){for(let t of [e.steps,e.beforeSteps,e.afterSteps])t&&CWe(t);}function CWe(e){zi({steps:e,earlyStop:false,onPresetAction:t=>(dr(t.command)&&delete t.command.cache,false),onSimpleStepContainer:()=>false,onConditional:()=>false});}async function vWe({logger:e,project:t,orgId:n,testId:o,environment:r,originalSteps:i,updatedSteps:s}){let a=[];try{let{alwaysSaveCache:l,noCache:c}=au(),d=await Cs({logger:e,orgId:n,project:t,alwaysSaveCache:l,noCache:c});await Gm({logger:e,cacheStorage:d,orgId:n,testId:o,environment:r,stepLists:s,useSnapshotIdentityCache:t.config.fileFormat==="v2"}),await jm({logger:e,cacheStorage:d,orgId:n,testId:o,environment:r,originalStepsWithCaches:i,updatedStepsWithCaches:s});}catch(l){e.warn({err:l},"Failed to save step caches after execution, future runs may be slower"),a.push(...q({text:"Warning: Steps were saved successfully, but updating the step cache failed. Future runs may be slower until the cache is refreshed.",section:"Warning"}));}return a}var K0=class{constructor(t,n,o,r){this.reporter=t;this.step=n;this.parentStepIdChain=o;this.setTotal=r;}loggerBindings;attachBeforeScreenshot(t){}attachAfterScreenshot(t){}attachBeforeHtmlSnapshot(t){}attachAfterHtmlSnapshot(t){}recordTargetAutoHeal(t){}storeTraceAsset(){}async finish(t){this.reporter.onStepComplete(this.step);}async startSubSteps(){return new u_(this.reporter,this.parentStepIdChain.concat(this.step.id),this.setTotal)}},u_=class{constructor(t,n=[],o){this.reporter=t;this.parentStepIdChain=n;this.setTotal=o;}loggerBindings;setProgressTotal(t){this.setTotal(t);}async getScreenshot(t,n){}async getHtmlSnapshot(t,n){}flushResults(t){}async startStep(t,n){return this.reporter.onStepStart(t.step),new K0(this.reporter,t.step,this.parentStepIdChain,this.setTotal)}};function vre(e,t,n,o){let r=LA(e),i={completed:0,total:0},s=new AbortController,a=false,l=p=>{r&&pne(e,i,p,t,s,n);},c=()=>{r&&(a||(a=true,l("Starting step execution...")));},d=p=>{!Number.isFinite(p)||p<0||(i.total=p);},u={onStepStart:p=>{c(),i.total===i.completed&&(i.total+=1),l(`Starting: ${Yn(p)}`);},onStepComplete:p=>{o(),c(),i.completed+=1,i.total<i.completed&&(i.total=i.completed),l(`Completed: ${Yn(p)}`);}};return new u_(u,[],d)}var wre=`CLI-style step definition. Use the Step Authoring Guide artifact returned from ${gd} when you start your session to get the full step schema.`,RWe=Tr({schema:{name:h$,description:"Create a test. The name must satisfy Momentic entity naming rules, and you must provide either a baseUrl or environment or the tool will fail.",inputSchema:lN},handle:async(e,t,n,o)=>{try{let r=await e.storage.createTest(t);ia({type:"mcp:test_create",test_platform:"web"}),n.addPartFromText(JSON.stringify(r,null,2));}catch(r){n.addError(ee(r));return}}}),wWe=Tr({schema:{name:$r,description:`Fetch a loaded test by id or path, including resolved module steps and stable stepId and parentStepIdChain values for the persisted test state. Use this to inspect a test before starting a session or to inspect a different test. For the active session after ${Sm}, prefer the splice response or request returnTest on the splice call for updated step ids. Step ids from another test are inspection-only for the active session. Start a session for that test before running or editing it.`,inputSchema:{testId:z.string().optional().describe(`Id of the test to fetch. If you do not already know it, list project tests with ${VO}. Either testId or testPath is required.`),testPath:z.string().optional().describe("Path to the test file, relative to the project root or absolute. When provided, skips the entity-registry lookup. Either testId or testPath is required.")}},handle:async(e,t,n,o)=>{try{let r=t.testId?{id:t.testId}:t.testPath?{path:t.testPath}:void 0;if(!r){n.addError("Either testId or testPath is required.");return}let i=await Gp({project:e.project,storage:e.storage,selector:r,envName:void 0,logger:e.logger,includeCache:!1,hydrateStepIdentity:!0,supportsFileOutput:e.supportsFileOutput});n.addContentParts(i);}catch(r){n.addError(ee(r));return}}}),Rre=Tr({schema:{name:fC,description:`Reload the active session's test from disk into mutable in-memory step state. Use this after manually editing a v2 YAML test/module on disk and running lint, before ${hg}. Returns updated Test Content with step ids for the active session.`,inputSchema:{sessionId:z.string().describe("The active session whose bound test should be reloaded.")}},handle:async(e,t,n,o)=>{let r=jp({response:n,sessionId:t.sessionId,toolName:fC});if(!r)return;let i=r.storage.getProject();if(i.config.fileFormat!=="v2"){n.addError(`${fC} is only available for v2 file-format projects.`);return}let s=await r.storage.getTestByPath({relativeTestPath:r.relativeTestPath,logger:e.logger}),a={beforeSteps:s.beforeSteps,steps:s.steps,afterSteps:s.afterSteps},{alwaysSaveCache:l,noCache:c}=au(),d=await Cs({logger:e.logger,orgId:r.orgId,project:i,alwaysSaveCache:l,noCache:c});r.mutableStepState.testId=s.id,r.mutableStepState.stepLists=await Rc({cacheStorage:d,logger:e.logger,schemaVersion:s.schemaVersion,stepLists:a,testId:s.id,environment:r.envName,useSnapshotIdentityCache:true}),n.addContentParts(q({text:`Reloaded test ${s.id} from disk into session ${r.sessionId}.`,section:"Result"})),n.addContentParts(await Gp({project:i,storage:r.storage,selector:{path:r.relativeTestPath},envName:r.envName,logger:e.logger,mutableStepState:r.mutableStepState,includeCache:false,hydrateStepIdentity:false,supportsFileOutput:e.supportsFileOutput}));}}),IWe={...Rre,addToolToMcpServer:(e,t)=>{e.project.config.fileFormat==="v2"&&Rre.addToolToMcpServer(e,t);}},xWe=Tr({schema:{name:VO,description:`List local test artifacts. Returns a Project Context section with projectRootAbsolutePath, projectConfigAbsolutePath, and cwd, plus separate segments for each relevant artifact type: tests, modules, and environments. ${EA} When file output is enabled, the artifact links are relative to cwd. Read or grep only the specific artifact files you need instead of loading everything at once. Assume nothing changed since your last successful call to this tool unless the user indicates updates (e.g. new/changed tests, modules, environments, or project config change); avoid redundant calls just to refresh.`,inputSchema:{}},handle:async(e,t,n,o)=>{let{project:r,logger:i}=e,s=[],a=[];try{let[c,d]=await Promise.all([e.storage.listTests(),e.storage.listModules()]),u=c.map(m=>({id:m.id,name:m.name,description:m.description,testFileAbsolutePath:m.fullFilePath,labels:m.labels||[]}));s.push({title:"Tests",entity:"test-list",payload:{tests:u}});let p=d.map(m=>({id:m.id,name:m.name,description:m.description,fullFilePath:m.fullFilePath,type:m.type}));s.push({title:"Modules",entity:"module-list",payload:{modules:p}});}catch(c){a.push(`Tests and modules discovery failed: ${ee(c)}`);}try{let c=e.storage.listEnvironments(i);s.push({title:"Environments",entity:"environment-list",payload:{environments:c}});}catch(c){a.push(`Environments discovery failed: ${ee(c)}`);}let l=await zee({artifacts:s,rootDir:r.rootDir,supportsFileOutput:e.supportsFileOutput,projectRootAbsolutePath:r.rootDir,projectConfigAbsolutePath:r.configFilePath,cwd:process.cwd()});n.addContentParts(l),a.length>0&&n.addContentParts(q({section:"Discovery Errors",text:a.map(c=>`- ${c}`).join(`
7503
- `)}));}}),Ire=Tr({schema:{name:jS,description:"Execute a step without adding it to the test. IMPORTANT: do NOT preview an AI Action (AI_ACTION_DYNAMIC) step with this tool. AI Actions run many sub-steps and routinely take well over 60s, and MCP tool calls are capped at 60s and cancelled regardless of progress \u2014 the step is killed and its work lost. ALWAYS preview an AI Action with the equivalent `momentic preview-step` CLI command in your terminal, which has no MCP tool-call timeout. When this server runs with --daemon the CLI shares this session, so pass the same sessionId; otherwise drive the whole flow over the CLI.",inputSchema:{sessionId:z.string(),step:z.string().describe(wre)}},handle:async(e,t,n,o)=>{let{sessionId:r,step:i}=t,s=jp({response:n,sessionId:r,toolName:jS});if(!s)return;s.controller.setOpen();let a;try{a=await l_({project:s.storage.getProject(),step:i,logger:e.logger,storage:s.storage,controller:s.controller,codeEvalTools:s.codeEvalTools,orgId:s.orgId,sessionId:s.sessionId,testContext:s.context,supportsFileOutput:e.supportsFileOutput,tempCaches:s.tempCaches,usageTracker:s.usageTracker,apiClient:rr()});}finally{await s.usageTracker.flush(e.logger);}n.addContentParts(a);}}),xre=Tr({schema:{name:Sm,description:"Insert, delete, or replace steps in the active session's test by index. Use parentStepIdChain to splice into nested steps (e.g. inside a conditional or module). The response includes inserted/deleted step refs with the updated active-session ids; use those ids for later run_step calls. The response always includes a recovery artifact with the full deleted and inserted payloads; only inspect it when you need to undo or inspect a mistaken splice.",inputSchema:{sessionId:z.string(),startIndex:z.number(),deleteCount:z.number().describe("Number of steps to remove. Use 0 to insert without deleting, 1 to replace a single step, or N to delete N steps."),steps:z.array(z.string()).describe(wre),targetSection:bm.default("main"),parentStepIdChain:z.array(z.string()).optional().describe("When splicing into a nested step (e.g. conditional or module), the chain of parent step ids from root to the container. Empty or omit for top-level."),returnTest:z.boolean().default(false).describe("Return the full post-splice test snapshot. Avoid this by default. Use true only when you truly need the full updated test; the normal response already includes inserted/deleted step references plus a recovery artifact for mistaken-splice recovery.")}},handle:async(e,t,n,o)=>{let r=jp({response:n,sessionId:t.sessionId,toolName:Sm});if(!r)return;let i=await c_({project:r.storage.getProject(),storage:r.storage,orgId:r.orgId,logger:e.logger,testPath:r.relativeTestPath,envName:r.envName,saveChangesToDisk:e.saveChangesToDisk,supportsFileOutput:e.supportsFileOutput,tempCaches:r.tempCaches,mutableStepState:r.mutableStepState,params:{startIndex:t.startIndex,deleteCount:t.deleteCount,steps:t.steps,targetSection:t.targetSection,parentStepIdChain:t.parentStepIdChain,returnTest:t.returnTest}});t.steps.length>0&&ia({type:"mcp:step_added",test_platform:"web",step_count:t.steps.length});let s=i.value.map(a=>a.type==="media"?{type:"media",data:a.data,mediaType:"image/jpeg"}:a);n.addContentParts(s);}}),_re=Tr({schema:{name:hg,description:`${gC} Use step ids from the active session: the Test Content section returned by ${gd}, or the inserted/deleted refs returned by ${Sm}. If you need a full updated post-splice view, set returnTest on the splice call. Do not parse the raw YAML at testFileAbsolutePath for step ids; v2 simplified test files do not store step ids on disk. IMPORTANT: do NOT run a range containing an AI Action (AI_ACTION_DYNAMIC) with this tool. AI Actions run many sub-steps and routinely take well over 60s, and MCP tool calls are capped at 60s and cancelled regardless of progress \u2014 the run is killed and its work lost. ALWAYS execute such a range with the equivalent \`momentic run-step\` CLI command in your terminal, which has no MCP tool-call timeout. When this server runs with --daemon the CLI shares this session, so pass the same sessionId; otherwise drive the whole flow over the CLI.`,inputSchema:{sessionId:z.string(),fromStep:_C,toStep:PC.optional(),targetSection:bm.default("main"),resetSession:z.boolean().default(false).describe("Whether to reset the browser session before running the steps."),disableCache:z.boolean().default(false).describe("Run this invocation without reading or writing step caches.")}},handle:async(e,t,n,o)=>{let r=jp({response:n,sessionId:t.sessionId,toolName:hg});if(!r)return;r.controller.setOpen(),t.resetSession&&await o_({project:r.storage.getProject(),logger:e.logger,relativeTestPath:r.relativeTestPath,orgId:r.orgId,storage:r.storage,apiKey:Xs(),baseUrl:Xr(),controller:r.controller,testContext:r.context,supportsFileOutput:e.supportsFileOutput});let i=vre(o,e.logger,n,()=>{aa.touchSession(r.sessionId);}),s=await d_({project:r.storage.getProject(),logger:e.logger,testPath:r.relativeTestPath,storage:r.storage,controller:r.controller,codeEvalTools:r.codeEvalTools,orgId:r.orgId,sessionId:r.sessionId,testContext:r.context,tracer:i,params:{fromStep:t.fromStep,toStep:t.toStep,targetSection:t.targetSection},supportsFileOutput:e.supportsFileOutput,envName:r.envName,usageTracker:r.usageTracker,mutableStepState:r.mutableStepState,apiClient:rr(),disableCache:t.disableCache});ia({type:"mcp:run_step_completed",test_platform:"web",status:"completed"});let a=s.value.map(l=>l.type==="media"?{type:"media",data:l.data,mediaType:"image/jpeg"}:l);n.addContentParts(a);}}),Pre=[xWe,RWe,wWe,IWe];var Ore=[Sre,bre,Tre,Are,Ire,_re,xre];async function OWe({testPath:e,logger:t,project:n,storage:o,orgId:r,mutableStepState:i}){let s=await o.getTestByPath({relativeTestPath:e,logger:t}),a=s.envs?.find(u=>u.default)?.name;if(i&&i.testId!==s.id)throw new Error(`Cannot extract a module from test ${s.id} with mutable state for ${i.testId}.`);let l=i?.stepLists??{steps:s.steps,beforeSteps:s.beforeSteps??void 0,afterSteps:s.afterSteps??void 0},c=await Cs({logger:t,orgId:r,project:n}),d=await Rc({cacheStorage:c,logger:t,schemaVersion:s.schemaVersion,stepLists:l,testId:s.id,environment:a,useSnapshotIdentityCache:n.config.fileFormat==="v2"});return {availableSteps:d.steps,baseState:{steps:d.steps,beforeSteps:d.beforeSteps??[],afterSteps:d.afterSteps??[]},cacheSaveContext:{testId:s.id,environment:a,stepCacheStorage:c}}}async function p_({project:e,storage:t,logger:n,relativeTestPath:o,saveChangesToDisk:r,mutableStepState:i,params:s}){let a=io();tc(s.name);let l=await t.scanEntities(),c;s.startIndex!==void 0&&o!==void 0&&(c=await OWe({testPath:o,logger:n,project:e,storage:t,orgId:a,mutableStepState:i}));let{stepsToExtract:d,startIndex:u,endIndex:p}=xne({moduleName:s.name,existingModuleNames:Object.values(l.modules).map(v=>v.name),...s,parameterNames:s.parameters,testPath:o,availableSteps:c?.availableSteps,containsNestedModuleStep:AX}),{module:m}=await t.createModule({name:s.name,description:s.description??"",enabled:s.enabled??true,parameters:s.parameters,defaultParameters:s.defaultParameters,parameterEnums:s.parameterEnums,steps:d,subDir:s.subDir,momenticFiles:l});if(s.startIndex===void 0)return {module:m};if(!o||!c)throw new Error("Failed to initialize extraction state for module create");let h=Object.keys(s.moduleInputs??{}).length>0,g=(m.parameters?.length??0)>0,f;h?f=s.moduleInputs:g?f={}:f=void 0;let y={...m,type:"RESOLVED_MODULE",id:randomUUID(),steps:m.steps,inputs:f},S=cloneDeep(c.baseState);S.steps.splice(u,p-u,y),i&&(i.stepLists=S);let{environment:b,stepCacheStorage:E,testId:C}=c.cacheSaveContext,w=e.config.fileFormat==="v2",{cachesToSave:I,snapshotCachesToSave:P}=await Jn({stepLists:S,useSnapshotIdentityCache:w,cacheCreationParams:{orgId:a,testId:C,environment:b}});return w&&await E.saveSnapshotCacheEntries({logger:n,entries:P}),await E.saveStepCacheEntries({logger:n,entries:I}),r&&await t.updateTestByPath({logger:n,relativeTestPath:o,stepLists:S,schemaVersion:at}),{module:m}}var Mre=Tr({schema:{name:p$,description:"Create a module. The name must satisfy Momentic entity naming rules or the tool will fail. If startIndex is provided, testPath is required and the specified test range is extracted into the module, then replaced with a module invocation in that test. endIndex may only be provided when startIndex is set.",inputSchema:{name:z.string().describe(Im),description:z.string(),enabled:z.boolean().default(true),parameters:z.string().array().optional().describe("Array of parameter names for the module, e.g., ['apiKey', 'userId']."),defaultParameters:z.record(z.string(),z.string()).optional().describe("Default values for parameters, e.g., { 'apiKey': 'default123' }. Keys must match parameters."),parameterEnums:z.record(z.string(),z.string().array()).optional().describe("Enum options for parameters, e.g., { 'role': ['admin', 'user'] }. Keys must match parameters."),moduleInputs:z.record(z.string(),z.string()).optional().describe("Input parameters to pass to the new module when it's inserted into the test. Keys must match the module's defined parameters. Only relevant when extracting from a test."),subDir:z.string().optional().describe("Subdirectory to create the module in. If not provided, the module is created in the project root."),testPath:z.string().optional().describe("Relative path to the test to extract steps from. Required when startIndex is provided."),startIndex:z.number().optional().describe("Start index of steps to extract from the target test (0-based)."),endIndex:z.number().optional().describe("End index of steps to extract from the target test (exclusive). Only valid when startIndex is provided. If not provided, extracts just startIndex.")}},handle:async(e,t,n,o)=>{let{testPath:r,...i}=t;try{let s=y7({projectRoot:e.project.rootDir,filePath:r,pathLabel:"testPath"}),a=await p_({project:e.project,storage:e.storage,logger:e.logger,relativeTestPath:s,saveChangesToDisk:e.saveChangesToDisk,params:i});n.addPartFromText(JSON.stringify(a.module,null,2));}catch(s){n.addError(ee(s));}}});var Dy=[...Pre,...a_,...Ore,Mre,ate,gte,Tte,dte];var Nre=Dy.map(e=>e.tool),m_=new Map(Nre.map(e=>[e.schema.name,e]));async function Lre(e){let{project:t,applicationName:n,daemonPort:o,daemonToken:r,daemonSessionId:i,logger:s,cliVersion:a}=e,l=t.configFilePath;await r_(e);let{context:c}=i_({...e,logger:s.child({daemonSessionId:i}),applicationName:`${n}-daemon`,serverId:i});await Tne({adapter:{getTool:d=>{let u=m_.get(d);if(!u)throw new Error(`Unknown web MCP tool '${d}'. Known tools: ${Array.from(m_.keys()).join(", ")}`);return {name:u.schema.name,execute:async({input:p,extra:m})=>await yne({context:c,tool:u,input:p,extra:m})}}},sessionManager:aa,daemonPort:o,daemonToken:r,daemonId:i,cliVersion:a,workerType:"momentic-web-mcp",configPath:l,inactivityTimeoutMsOverride:V0(e)*2,onShutdown:()=>{lu();}});}async function Y0(e){let{project:t,logger:n,apiKey:o,serverUrl:r,cliVersion:i,alwaysSaveCache:s,noCache:a,videoDefault:l,headfulDefault:c,devicePixelRatio:d,sessionIdleTimeoutMinutes:u}=e,p=t.configFilePath;return une({workerType:"momentic-web-mcp",configPath:p,apiKey:o,serverUrl:r,cliVersion:i,logger:n,buildDaemonArgs:({entryScript:m})=>LWe({entryScript:m,serverUrl:r,configPath:p,alwaysSaveCache:s,noCache:a,videoDefault:l,headfulDefault:c,devicePixelRatio:d,sessionIdleTimeoutMinutes:u})})}async function kre(e){let{logger:t,applicationName:n,cliVersion:o,serverUrl:r}=e;su(r),await Y0(e);let{info:i,mcpLogger:s}=$0({logger:t,applicationName:`${n}-daemon-proxy`,cliVersion:o});return Ox({context:{logger:s},info:i,tools:Sne({tools:Nre,resolveDaemonStateForCall:()=>Y0(e),logger:s})})}var NWe=30*6e4;async function J0({options:e,toolName:t,input:n,timeoutMs:o=NWe}){su(e.serverUrl);let r=m_.get(t);if(!r)throw new Error(`Unknown web MCP tool '${t}'. Known tools: ${Array.from(m_.keys()).join(", ")}`);let i=r.schema.inputSchema.parse(n),s=await Y0(e);return b0({state:s,toolName:t,input:i,timeoutMs:o})}function LWe({entryScript:e,serverUrl:t,configPath:n,alwaysSaveCache:o,noCache:r,videoDefault:i,headfulDefault:s,devicePixelRatio:a,sessionIdleTimeoutMinutes:l}){let c=[e,"mcp","--server",t,"--daemon","--config",n,"--headful-browser",s?"true":"false","--video",i?"true":"false"];return o&&c.push("--save-cache"),r&&c.push("--disable-cache"),c.push("--pixel-ratio",String(a)),l!==void 0&&c.push("--session-idle-timeout-minutes",String(l)),c}var X0=async(e,t)=>{try{let{killed:n,failed:o}=await aa.killAllSessions(e);o.length>0?t.warn({failed:o,reason:e},"Some browser sessions failed to terminate on shutdown"):n.length>0&&t.info({killedCount:n.length,reason:e},"Terminated browser sessions on shutdown");}catch(n){t.warn({err:n,reason:e},"Failed to terminate browser sessions on shutdown");}};async function Q0(e){let{daemon:t,logger:n}=e,o=dne.safeParse(process.env);if(t&&o.success&&o.data[_x]==="momentic-web-mcp")return Lre({...e,daemonPort:o.data[Ix],daemonToken:o.data[xx],daemonSessionId:o.data[Px]});if(Qu(n,true),t)return await kre(e);await r_(e);let{context:r,info:i}=i_(e);return Ox({context:r,info:i,tools:Dy,shutdownHandlers:[X0,lu,async()=>{await e_();}]})}var QA="3.10.2",Cn=Qg({app:"desktop-server",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:QA});(async()=>{try{let e=await _a(Cn);e.gitBranchName&&Cn.addBinding("branch",e.gitBranchName);}catch{}})();var Vp=Router();async function g_(e){return (await Df(e,Cn)).map(o=>{let r=e.modules[o.moduleId];if(!r){R.warn(`Found a dangling module with ID ${o.moduleId} that could not be found on disk.`);return}return {...r,content:o}}).filter(o=>o!==void 0)}Vp.get("/",St(async(e,t)=>{let n=st(),o=await Ws(n),r=await g_(o);t.status(200).json(r);}));Vp.post("/",St(async(e,t)=>{let n;try{n=JW.parse(e.body);}catch(l){t.status(400).json({error:`Invalid request body: ${l}`});return}try{tc(n.name);}catch(l){t.status(400).json({error:`Invalid module name: ${l}`});return}let o=st(),r=await Ve(o),i=r.modules;if(Object.values(i).find(l=>l.name===n.name)){t.status(400).send(`A module with the name "${n.name}" already exists. Please choose a different name.`);return}let s=Xn__default.join(o.rootDir,n.folderPath??Xn__default.dirname(n.testFilePath));if(!Sr__default.existsSync(s)||!Sr__default.statSync(s).isDirectory()){t.status(400).json({error:`The folder configured for module creation '${s}' does not exist.`});return}let a=await yw({...n,folder:s,project:o,momenticFiles:r});t.status(201).json(a);}));Vp.get("/:moduleId/tests",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n=st(),o=await Ve(n),r=e.params.moduleId;if(!o.modules[r]){t.status(404).json({error:"Module not found."});return}let i=[];for(let a of Object.values(o.tests))oQ(a.fullFilePath,o).has(r)&&i.push({id:a.id,name:a.name,relativePath:a.relativePath});let s={tests:i};t.status(200).json(s);}));Vp.get("/:moduleId",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n=await Ws(st()),o=n.modules[e.params.moduleId];if(!o){t.status(404).json({error:"Module not found."});return}try{let r=await Nc({modHandle:o,momenticFiles:n,logger:R});t.json(r);}catch(r){t.status(400).json({err:r});}}));Vp.post("/:moduleId/duplicate",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=YW.parse(e.body);}catch(h){t.status(400).json({error:`Invalid request body: ${h}`});return}try{tc(n.name);}catch(h){t.status(400).json({error:h.message});return}let o=st(),r=await Ve(o),i=r.modules[e.params.moduleId];if(!i){t.status(404).json({error:"Module not found."});return}if(Object.values(r.modules).find(h=>h.name===n.name)){t.status(400).send(`A module with the name "${n.name}" already exists. Please choose a different name.`);return}let s=n.sourceModuleContent;if(s.moduleId!==e.params.moduleId){t.status(400).json({error:"Duplicate source module content does not match moduleId."});return}let a=Xn__default.join(o.rootDir,Xn__default.dirname(i.relativePath));if(!Sr__default.existsSync(a)||!Sr__default.statSync(a).isDirectory()){t.status(400).json({error:`The folder configured for module creation '${a}' does not exist.`});return}let l=xn(n.name),c=Xn__default.join(a,`${l}.module.yaml`),d=Oc({projectConfig:o.config,momenticFiles:r,entityType:"module"}),{stepsToSave:u}=await Jn({stepLists:{steps:s.steps},createNewCacheIds:true}),p={fileType:ke.MODULE,schemaVersion:at,moduleId:d,name:n.name,description:"",enabled:true,steps:u.steps,parameters:s.parameters,defaultParameters:s.defaultParameters,parameterEnums:s.parameterEnums,defaultCacheKey:s.defaultCacheKey,defaultCacheTtl:s.defaultCacheTtl,defaultCacheAllInvocations:s.defaultCacheAllInvocations,autoAuth:s.autoAuth,advanced:s.advanced,defaultRetries:s.defaultRetries};Ra({module:p,filePath:c,projectConfig:o.config,momenticFiles:r});let m={relativeFilePath:Xn__default.relative(o.rootDir,c)};t.status(201).json(m);}));Vp.patch("/:moduleId/move",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=QW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${ee(i)}`});return}let o=st();if(!(await Ws(o)).modules[e.params.moduleId]){t.status(404).json({error:"Module not found."});return}await aQ({moduleId:e.params.moduleId,targetFolderRelativePath:n.folderPath,project:o}),t.status(200).json({message:"ok"});}));Vp.patch("/:moduleId/metadata",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=XW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${i}`});return}let o=st(),r=await Ws(o);await lQ({moduleId:e.params.moduleId,content:n,momenticFiles:r,logger:R,project:o}),t.status(201).json({message:"ok"});}));var Dre=Vp;var ZA=Router();ZA.get("/",St(async(e,t)=>{let n=st(),o=await Ve(n),r=new Set;o?.tests&&Object.values(o.tests).forEach(c=>{c.labels?.forEach(d=>r.add(d));});let i=Array.from(r).sort(),s=Object.values(o.tests),a=await g_(o),l={labels:i,tests:s,modules:a};t.status(200).json(l);}));ZA.get("/folders",St(async(e,t)=>{let n=st(),o=await Y4(n);t.status(200).json(o);}));ZA.get("/labels",St(async(e,t)=>{let n=st(),o=await Ve(n),r=new Set;for(let s of Object.values(o.tests))s.labels?.forEach(a=>r.add(a));let i=Array.from(r).sort();t.status(200).json(i);}));ZA.post("/in-folder",St(async(e,t)=>{let n=VW.safeParse(e.body);if(!n.success){t.status(400).json({error:`Failed to parse entities-in-folder body: ${n.error.message}`});return}let{pathSegments:o}=n.data,r=st(),[i,s]=await Promise.all([K4(r,o),Ws(r)]),a=Object.values(i.tests),l=await g_(s),c=new Set(Object.keys(i.modules)),d=l.filter(p=>c.has(p.id)),u={tests:a,modules:d};t.status(200).json(u);}));var Fre=ZA;var Z0=Router();Z0.get("/",St((e,t)=>{let n=Cw(st(),Cn);t.status(200).json(n);}));Z0.get("/names",St((e,t)=>{let o=st().config.environments?.map(r=>r.name)??[];t.status(200).json(o);}));var Bre=Z0;var Ure=Router();Ure.get("/",St((e,t)=>{let n={userId:Bc(),orgId:io(),email:ry(),name:R6(),pylonEmailHash:w6(),cliVersion:QA};t.status(200).json(n);}));var Hre=Ure;var eU="mcp-session-id",Gre="MOMENTIC_SESSION_IDLE_TIMEOUT_MINUTES",f_=Router();function $We(){let e=process.env[Gre];if(!e)return yu*60*1e3;let t=Number.parseInt(e,10);return Number.isNaN(t)||t<1?(Cn.warn({envVar:Gre,rawValue:e,fallback:yu},"Invalid MCP session idle timeout env var; falling back to default"),yu*60*1e3):t*60*1e3}function VWe(e){let{headfulDefault:t,supportsFileOutput:n}={},o={serverId:randomUUID(),applicationName:"momentic-mcp-desktop-server",cliVersion:QA},r=st(),i=Xs(),s=Xr(),a=Cn.child({orgId:io(),userId:Bc(),...o}),l=new Ft({baseUrl:s,apiKey:i,logger:a,mode:"interactive",runner:"mcp"}),c=xb(process.env.MOMENTIC_HEADFUL_BROWSER),d=new yr(r.config.ai?.agentConfig,{baseUrl:s,apiKey:i,logger:a,mode:"interactive",runner:"mcp"}),u=io(),p=new la(l,u,r);return {context:{project:r,orgId:u,logger:a,generator:d,apiClient:l,storage:p,serverId:o.serverId,extractBaseDir:ea(r.rootDir),saveChangesToDisk:true,supportsFileOutput:n??true,knowledgeRetrievalResults:Jt,knowledgeCitations:[],sessionIdleTimeoutMs:$We(),headfulDefault:t??c??true,categoryDefinitions:r.config.ai?.classification?.categories??ts},info:o}}var Su={};f_.post("/",async(e,t)=>{let n=String(e.headers[eU]??"");try{if(n&&Su[n]){await Su[n].handleRequest(e,t,e.body);return}if(!n&&isInitializeRequest(e.body)){let{context:o,info:r}=VWe(),i=T0(o,r,Dy),s=new StreamableHTTPServerTransport({sessionIdGenerator:()=>randomUUID(),enableDnsRebindingProtection:!1,onsessioninitialized:a=>{Su[a]=s;}});s.onclose=()=>{let a=s.sessionId;a&&Su[a]&&delete Su[a],i.close().catch(()=>{});},await i.connect(s),await s.handleRequest(e,t,e.body);return}t.status(400).json({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: No valid session ID provided"},id:null});}catch{t.headersSent||t.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null});}});f_.get("/",async(e,t)=>{let n=String(e.headers[eU]??"");if(!n||!Su[n]){t.status(400).send("Invalid or missing session ID");return}await Su[n].handleRequest(e,t);});f_.delete("/",async(e,t)=>{let n=String(e.headers[eU]??"");if(!n||!Su[n]){t.status(400).send("Invalid or missing session ID");return}let o=Su[n];try{await o.handleRequest(e,t);}catch{t.headersSent||t.status(500).send("Error processing session termination");}});var $re=f_;var Vre=Router();Vre.get("/:id",St(async(e,t)=>{let{id:n}=e.params;if(!n){t.status(400).json({error:"Missing ID"});return}let o=rr();if(!o){t.status(500).json({error:"API client not initialized"});return}try{let{data:r,contentType:i}=await o.fetchOnDemandScreenshot(n);t.setHeader("Content-Type",i),t.status(200).send(r);}catch(r){Cn.error({err:r,screenshotId:n},"Failed to proxy on-demand screenshot"),t.status(404).json({error:"Screenshot not found"});}}));var zre=Vre;var y_=Router();y_.get("/",St(async(e,t)=>{let n=new Map;for(let i of await dD())n.set(i.configFilePath,i);let o=st();n.set(o.configFilePath,o);let r=[...n.values()].map(i=>({name:i.config.name,configFilePath:i.configFilePath,fileFormat:i.config.fileFormat}));t.status(200).json(r);}));y_.get("/current",St((e,t)=>{let n=st();if(!n){t.status(404).json({error:"No project found."});return}let o={name:n.config.name,configFilePath:n.configFilePath,fileFormat:n.config.fileFormat};t.status(200).json(o);}));y_.post("/set",St(async(e,t)=>{let n;try{n=t1.parse(e.body);}catch(o){t.status(400).json({error:`Invalid request body: ${o}`});return}Cn.info("Setting local project");try{let o=await on({configFilePath:n.configFilePath}),r=rr();if(!r)throw new Error("API client is not initialized.");await sy({project:o,apiClient:r});}catch(o){t.status(400).json({error:`Error setting project: ${o}`});return}t.sendStatus(204);}));var Wre=y_;var qre=Router();qre.get("/",St((e,t)=>{let n=st(),o={ai:n.config.ai,browser:n.config.browser,displayRoot:n.config.displayRoot};t.status(200).json(o);}));var Kre=qre;var Zc=Router();Zc.post("/",St(async(e,t)=>{let n;try{n=qW.parse(e.body);}catch(o){t.status(400).json({error:`Invalid request body: ${o}`});return}try{let o=st(),r=await JA({project:o,input:n});ia({type:"test_editor:test_create",test_platform:"web"}),t.status(201).json(r);}catch(o){if(o instanceof mt){t.status(400).json({error:o.message});return}throw o}}));Zc.get("/:testPath",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=await Ws(o),i;try{i=await us(Xn__default.join(o.rootDir,n),Cn,r),await(await Cs({logger:Cn,orgId:io(),project:o})).resolveStepCacheEntries({schemaVersion:i.schemaVersion,testId:i.id,environment:i.envs?.find(a=>a.default)?.name,stepLists:{beforeSteps:i.beforeSteps,steps:i.steps,afterSteps:i.afterSteps},logger:Cn,useSnapshotIdentityCache:o.config.fileFormat==="v2"}),t.status(200).json(i);}catch(s){t.status(400).send({error:s.message});return}(async()=>{try{await Aw({relativeTestPath:n,stepLists:{steps:i.steps,beforeSteps:i.beforeSteps,afterSteps:i.afterSteps},schemaVersion:at,momenticFiles:r,project:o});}catch(s){Cn.error({err:s},"Failed to save migrated test to disk after initial fetch");}})();}));Zc.get("/:testPath/metadata",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=Xn__default.join(o.rootDir,n);if(!Sr__default.existsSync(r)){t.status(404).json({error:"Test file not found."});return}let i=Sr__default.statSync(r),s=await _a(Cn),a={gitBranch:s.gitBranchName??"unknown",fileMtime:i.mtime,gitCommitSha:s.gitCommitSha??"unknown"};t.status(200).json(a);}));Zc.patch("/:testPath/metadata",St(async(e,t)=>{if(!e.params.testPath){t.status(400).json({error:"Missing testPath in url path."});return}let n;try{n=WW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${i}`});return}let r={message:"ok",newRelativeTestPath:HT(e.params.testPath,n,st()).newRelativeTestPath};t.status(200).json(r);}));Zc.patch("/:testPath",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=zW.parse(e.body);}catch(m){Cn.warn({err:m},"Invalid save request"),t.status(400).json({error:`Invalid request body: ${m}`});return}Cn.info({testPath:n},"Save received");let r=st(),i=await Ws(r),s;try{s=jd(n,r);}catch(m){t.status(400).json({error:`Existing test file on disk is invalid: ${m}`});return}let a=r.config.fileFormat==="v2",{stepsToSave:l,moduleUpdates:c,cachesToSave:d,snapshotCachesToSave:u}=await Jn({stepLists:o.stepLists,useSnapshotIdentityCache:a,cacheCreationParams:{orgId:io(),testId:s.id,environment:s.envs?.find(m=>m.default)?.name}}),p=await Cs({logger:Cn,orgId:io(),project:r});a&&await p.saveSnapshotCacheEntries({logger:Cn,entries:u}),await p.saveStepCacheEntries({logger:Cn,entries:d}),sD({relativeTestPath:n,stepsToSave:l,moduleUpdates:c,schemaVersion:o.schemaVersion,momenticFiles:i,project:r}),t.status(201).json({message:"ok"});}));Zc.patch("/:testPath/environments",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=e1.parse(e.body);}catch(r){t.status(400).json({error:`Invalid request body: ${r}`});return}HT(n,{envs:o.defaultEnv?[{name:o.defaultEnv,default:true}]:[]},st()),t.status(201).json({message:"ok"});}));Zc.patch("/:testPath/move",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=ZW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${ee(i)}`});return}let r=st();if(!Sr__default.existsSync(Xn__default.join(r.rootDir,n))){t.status(404).json({error:"Test not found."});return}await cQ({relativeTestPath:n,targetFolderRelativePath:o.folderPath,project:r}),t.status(200).json({message:"ok"});}));Zc.delete("/:testPath",St((e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=Xn__default.join(o.rootDir,n);if(!Sr__default.existsSync(r)){t.status(404).json({error:"Test not found."});return}Sr__default.unlinkSync(r),t.status(200).json({message:"ok"});}));Zc.post("/:testPath/duplicate",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=KW.parse(e.body);}catch(h){t.status(400).json({error:`Invalid request body: ${h}`});return}try{tc(o.name);}catch(h){t.status(400).json({error:h.message});return}let r=st(),i=Xn__default.join(r.rootDir,n);if(!Sr__default.existsSync(i)){t.status(404).json({error:"Test not found."});return}let s=await Ve(r),a;try{a=await us(i,Cn,s);}catch(h){t.status(400).send({error:h.message});return}let l=Oc({projectConfig:r.config,momenticFiles:s,entityType:"test"}),c=to.parse({...a,name:o.name,id:l}),{stepsToSave:d}=await Jn({stepLists:{steps:a.steps,beforeSteps:a.beforeSteps,afterSteps:a.afterSteps},createNewCacheIds:true}),u=Xn__default.dirname(i),p=Xn__default.join(u,`${o.name}.test.yaml`);wa({test:{fileType:ke.TEST,...c,...d},filePath:p,projectConfig:r.config,momenticFiles:s});let m={relativeFilePath:Xn__default.relative(r.rootDir,p)};ia({type:"test_editor:test_duplicated"}),t.status(201).json(m);}));var Yre=Zc;var Jre=z.object({name:z.string().min(1).describe("Short, human-readable name for the slice you are delegating (used as a label)."),instructions:z.string().min(1).describe("Focused, self-contained instructions for the child: which area it should own and what to cover. The child inherits the same input you received but cannot see your conversation, so these instructions must stand alone."),budget:z.number().int().positive().optional().describe("Maximum number of test plans this child should produce. Allocate a portion of your remaining budget to each child. Omit to let the child use its own judgement.")});function Xre(e){return e.kind==="diff"?e.diffSummary:yt`
7503
+ `)}));}}),Ire=Tr({schema:{name:jS,description:"Execute a step without adding it to the test. IMPORTANT: do NOT preview an AI Action (AI_ACTION_DYNAMIC) step with this tool. AI Actions run many sub-steps and routinely take well over 60s, and MCP tool calls are capped at 60s and cancelled regardless of progress \u2014 the step is killed and its work lost. ALWAYS preview an AI Action with the equivalent `momentic preview-step` CLI command in your terminal, which has no MCP tool-call timeout. When this server runs with --daemon the CLI shares this session, so pass the same sessionId; otherwise drive the whole flow over the CLI.",inputSchema:{sessionId:z.string(),step:z.string().describe(wre)}},handle:async(e,t,n,o)=>{let{sessionId:r,step:i}=t,s=jp({response:n,sessionId:r,toolName:jS});if(!s)return;s.controller.setOpen();let a;try{a=await l_({project:s.storage.getProject(),step:i,logger:e.logger,storage:s.storage,controller:s.controller,codeEvalTools:s.codeEvalTools,orgId:s.orgId,sessionId:s.sessionId,testContext:s.context,supportsFileOutput:e.supportsFileOutput,tempCaches:s.tempCaches,usageTracker:s.usageTracker,apiClient:rr()});}finally{await s.usageTracker.flush(e.logger);}n.addContentParts(a);}}),xre=Tr({schema:{name:Sm,description:"Insert, delete, or replace steps in the active session's test by index. Use parentStepIdChain to splice into nested steps (e.g. inside a conditional or module). The response includes inserted/deleted step refs with the updated active-session ids; use those ids for later run_step calls. The response always includes a recovery artifact with the full deleted and inserted payloads; only inspect it when you need to undo or inspect a mistaken splice.",inputSchema:{sessionId:z.string(),startIndex:z.number(),deleteCount:z.number().describe("Number of steps to remove. Use 0 to insert without deleting, 1 to replace a single step, or N to delete N steps."),steps:z.array(z.string()).describe(wre),targetSection:bm.default("main"),parentStepIdChain:z.array(z.string()).optional().describe("When splicing into a nested step (e.g. conditional or module), the chain of parent step ids from root to the container. Empty or omit for top-level."),returnTest:z.boolean().default(false).describe("Return the full post-splice test snapshot. Avoid this by default. Use true only when you truly need the full updated test; the normal response already includes inserted/deleted step references plus a recovery artifact for mistaken-splice recovery.")}},handle:async(e,t,n,o)=>{let r=jp({response:n,sessionId:t.sessionId,toolName:Sm});if(!r)return;let i=await c_({project:r.storage.getProject(),storage:r.storage,orgId:r.orgId,logger:e.logger,testPath:r.relativeTestPath,envName:r.envName,saveChangesToDisk:e.saveChangesToDisk,supportsFileOutput:e.supportsFileOutput,tempCaches:r.tempCaches,mutableStepState:r.mutableStepState,params:{startIndex:t.startIndex,deleteCount:t.deleteCount,steps:t.steps,targetSection:t.targetSection,parentStepIdChain:t.parentStepIdChain,returnTest:t.returnTest}});t.steps.length>0&&ia({type:"mcp:step_added",test_platform:"web",step_count:t.steps.length});let s=i.value.map(a=>a.type==="media"?{type:"media",data:a.data,mediaType:"image/jpeg"}:a);n.addContentParts(s);}}),_re=Tr({schema:{name:hg,description:`${gC} Use step ids from the active session: the Test Content section returned by ${gd}, or the inserted/deleted refs returned by ${Sm}. If you need a full updated post-splice view, set returnTest on the splice call. Do not parse the raw YAML at testFileAbsolutePath for step ids; v2 simplified test files do not store step ids on disk. IMPORTANT: do NOT run a range containing an AI Action (AI_ACTION_DYNAMIC) with this tool. AI Actions run many sub-steps and routinely take well over 60s, and MCP tool calls are capped at 60s and cancelled regardless of progress \u2014 the run is killed and its work lost. ALWAYS execute such a range with the equivalent \`momentic run-step\` CLI command in your terminal, which has no MCP tool-call timeout. When this server runs with --daemon the CLI shares this session, so pass the same sessionId; otherwise drive the whole flow over the CLI.`,inputSchema:{sessionId:z.string(),fromStep:_C,toStep:PC.optional(),targetSection:bm.default("main"),resetSession:z.boolean().default(false).describe("Whether to reset the browser session before running the steps."),disableCache:z.boolean().default(false).describe("Run this invocation without reading or writing step caches.")}},handle:async(e,t,n,o)=>{let r=jp({response:n,sessionId:t.sessionId,toolName:hg});if(!r)return;r.controller.setOpen(),t.resetSession&&await o_({project:r.storage.getProject(),logger:e.logger,relativeTestPath:r.relativeTestPath,orgId:r.orgId,storage:r.storage,apiKey:Xs(),baseUrl:Xr(),controller:r.controller,testContext:r.context,supportsFileOutput:e.supportsFileOutput});let i=vre(o,e.logger,n,()=>{aa.touchSession(r.sessionId);}),s=await d_({project:r.storage.getProject(),logger:e.logger,testPath:r.relativeTestPath,storage:r.storage,controller:r.controller,codeEvalTools:r.codeEvalTools,orgId:r.orgId,sessionId:r.sessionId,testContext:r.context,tracer:i,params:{fromStep:t.fromStep,toStep:t.toStep,targetSection:t.targetSection},supportsFileOutput:e.supportsFileOutput,envName:r.envName,usageTracker:r.usageTracker,mutableStepState:r.mutableStepState,apiClient:rr(),disableCache:t.disableCache});ia({type:"mcp:run_step_completed",test_platform:"web",status:"completed"});let a=s.value.map(l=>l.type==="media"?{type:"media",data:l.data,mediaType:"image/jpeg"}:l);n.addContentParts(a);}}),Pre=[xWe,RWe,wWe,IWe];var Ore=[Sre,bre,Tre,Are,Ire,_re,xre];async function OWe({testPath:e,logger:t,project:n,storage:o,orgId:r,mutableStepState:i}){let s=await o.getTestByPath({relativeTestPath:e,logger:t}),a=s.envs?.find(u=>u.default)?.name;if(i&&i.testId!==s.id)throw new Error(`Cannot extract a module from test ${s.id} with mutable state for ${i.testId}.`);let l=i?.stepLists??{steps:s.steps,beforeSteps:s.beforeSteps??void 0,afterSteps:s.afterSteps??void 0},c=await Cs({logger:t,orgId:r,project:n}),d=await Rc({cacheStorage:c,logger:t,schemaVersion:s.schemaVersion,stepLists:l,testId:s.id,environment:a,useSnapshotIdentityCache:n.config.fileFormat==="v2"});return {availableSteps:d.steps,baseState:{steps:d.steps,beforeSteps:d.beforeSteps??[],afterSteps:d.afterSteps??[]},cacheSaveContext:{testId:s.id,environment:a,stepCacheStorage:c}}}async function p_({project:e,storage:t,logger:n,relativeTestPath:o,saveChangesToDisk:r,mutableStepState:i,params:s}){let a=io();tc(s.name);let l=await t.scanEntities(),c;s.startIndex!==void 0&&o!==void 0&&(c=await OWe({testPath:o,logger:n,project:e,storage:t,orgId:a,mutableStepState:i}));let{stepsToExtract:d,startIndex:u,endIndex:p}=xne({moduleName:s.name,existingModuleNames:Object.values(l.modules).map(v=>v.name),...s,parameterNames:s.parameters,testPath:o,availableSteps:c?.availableSteps,containsNestedModuleStep:AX}),{module:m}=await t.createModule({name:s.name,description:s.description??"",enabled:s.enabled??true,parameters:s.parameters,defaultParameters:s.defaultParameters,parameterEnums:s.parameterEnums,steps:d,subDir:s.subDir,momenticFiles:l});if(s.startIndex===void 0)return {module:m};if(!o||!c)throw new Error("Failed to initialize extraction state for module create");let h=Object.keys(s.moduleInputs??{}).length>0,g=(m.parameters?.length??0)>0,f;h?f=s.moduleInputs:g?f={}:f=void 0;let y={...m,type:"RESOLVED_MODULE",id:randomUUID(),steps:m.steps,inputs:f},S=cloneDeep(c.baseState);S.steps.splice(u,p-u,y),i&&(i.stepLists=S);let{environment:b,stepCacheStorage:E,testId:C}=c.cacheSaveContext,w=e.config.fileFormat==="v2",{cachesToSave:I,snapshotCachesToSave:P}=await Jn({stepLists:S,useSnapshotIdentityCache:w,cacheCreationParams:{orgId:a,testId:C,environment:b}});return w&&await E.saveSnapshotCacheEntries({logger:n,entries:P}),await E.saveStepCacheEntries({logger:n,entries:I}),r&&await t.updateTestByPath({logger:n,relativeTestPath:o,stepLists:S,schemaVersion:at}),{module:m}}var Mre=Tr({schema:{name:p$,description:"Create a module. The name must satisfy Momentic entity naming rules or the tool will fail. If startIndex is provided, testPath is required and the specified test range is extracted into the module, then replaced with a module invocation in that test. endIndex may only be provided when startIndex is set.",inputSchema:{name:z.string().describe(Im),description:z.string(),enabled:z.boolean().default(true),parameters:z.string().array().optional().describe("Array of parameter names for the module, e.g., ['apiKey', 'userId']."),defaultParameters:z.record(z.string(),z.string()).optional().describe("Default values for parameters, e.g., { 'apiKey': 'default123' }. Keys must match parameters."),parameterEnums:z.record(z.string(),z.string().array()).optional().describe("Enum options for parameters, e.g., { 'role': ['admin', 'user'] }. Keys must match parameters."),moduleInputs:z.record(z.string(),z.string()).optional().describe("Input parameters to pass to the new module when it's inserted into the test. Keys must match the module's defined parameters. Only relevant when extracting from a test."),subDir:z.string().optional().describe("Subdirectory to create the module in. If not provided, the module is created in the project root."),testPath:z.string().optional().describe("Relative path to the test to extract steps from. Required when startIndex is provided."),startIndex:z.number().optional().describe("Start index of steps to extract from the target test (0-based)."),endIndex:z.number().optional().describe("End index of steps to extract from the target test (exclusive). Only valid when startIndex is provided. If not provided, extracts just startIndex.")}},handle:async(e,t,n,o)=>{let{testPath:r,...i}=t;try{let s=y7({projectRoot:e.project.rootDir,filePath:r,pathLabel:"testPath"}),a=await p_({project:e.project,storage:e.storage,logger:e.logger,relativeTestPath:s,saveChangesToDisk:e.saveChangesToDisk,params:i});n.addPartFromText(JSON.stringify(a.module,null,2));}catch(s){n.addError(ee(s));}}});var Dy=[...Pre,...a_,...Ore,Mre,ate,gte,Tte,dte];var Nre=Dy.map(e=>e.tool),m_=new Map(Nre.map(e=>[e.schema.name,e]));async function Lre(e){let{project:t,applicationName:n,daemonPort:o,daemonToken:r,daemonSessionId:i,logger:s,cliVersion:a}=e,l=t.configFilePath;await r_(e);let{context:c}=i_({...e,logger:s.child({daemonSessionId:i}),applicationName:`${n}-daemon`,serverId:i});await Tne({adapter:{getTool:d=>{let u=m_.get(d);if(!u)throw new Error(`Unknown web MCP tool '${d}'. Known tools: ${Array.from(m_.keys()).join(", ")}`);return {name:u.schema.name,execute:async({input:p,extra:m})=>await yne({context:c,tool:u,input:p,extra:m})}}},sessionManager:aa,daemonPort:o,daemonToken:r,daemonId:i,cliVersion:a,workerType:"momentic-web-mcp",configPath:l,inactivityTimeoutMsOverride:V0(e)*2,onShutdown:()=>{lu();}});}async function Y0(e){let{project:t,logger:n,apiKey:o,serverUrl:r,cliVersion:i,alwaysSaveCache:s,noCache:a,videoDefault:l,headfulDefault:c,devicePixelRatio:d,sessionIdleTimeoutMinutes:u}=e,p=t.configFilePath;return une({workerType:"momentic-web-mcp",configPath:p,apiKey:o,serverUrl:r,cliVersion:i,logger:n,buildDaemonArgs:({entryScript:m})=>LWe({entryScript:m,serverUrl:r,configPath:p,alwaysSaveCache:s,noCache:a,videoDefault:l,headfulDefault:c,devicePixelRatio:d,sessionIdleTimeoutMinutes:u})})}async function kre(e){let{logger:t,applicationName:n,cliVersion:o,serverUrl:r}=e;su(r),await Y0(e);let{info:i,mcpLogger:s}=$0({logger:t,applicationName:`${n}-daemon-proxy`,cliVersion:o});return Ox({context:{logger:s},info:i,tools:Sne({tools:Nre,resolveDaemonStateForCall:()=>Y0(e),logger:s})})}var NWe=30*6e4;async function J0({options:e,toolName:t,input:n,timeoutMs:o=NWe}){su(e.serverUrl);let r=m_.get(t);if(!r)throw new Error(`Unknown web MCP tool '${t}'. Known tools: ${Array.from(m_.keys()).join(", ")}`);let i=r.schema.inputSchema.parse(n),s=await Y0(e);return b0({state:s,toolName:t,input:i,timeoutMs:o})}function LWe({entryScript:e,serverUrl:t,configPath:n,alwaysSaveCache:o,noCache:r,videoDefault:i,headfulDefault:s,devicePixelRatio:a,sessionIdleTimeoutMinutes:l}){let c=[e,"mcp","--server",t,"--daemon","--config",n,"--headful-browser",s?"true":"false","--video",i?"true":"false"];return o&&c.push("--save-cache"),r&&c.push("--disable-cache"),c.push("--pixel-ratio",String(a)),l!==void 0&&c.push("--session-idle-timeout-minutes",String(l)),c}var X0=async(e,t)=>{try{let{killed:n,failed:o}=await aa.killAllSessions(e);o.length>0?t.warn({failed:o,reason:e},"Some browser sessions failed to terminate on shutdown"):n.length>0&&t.info({killedCount:n.length,reason:e},"Terminated browser sessions on shutdown");}catch(n){t.warn({err:n,reason:e},"Failed to terminate browser sessions on shutdown");}};async function Q0(e){let{daemon:t,logger:n}=e,o=dne.safeParse(process.env);if(t&&o.success&&o.data[_x]==="momentic-web-mcp")return Lre({...e,daemonPort:o.data[Ix],daemonToken:o.data[xx],daemonSessionId:o.data[Px]});if(Qu(n,true),t)return await kre(e);await r_(e);let{context:r,info:i}=i_(e);return Ox({context:r,info:i,tools:Dy,shutdownHandlers:[X0,lu,async()=>{await e_();}]})}var QA="3.10.3",Cn=Qg({app:"desktop-server",hostname:hostname(),disableConsoleLogs:true}).child({cliVersion:QA});(async()=>{try{let e=await _a(Cn);e.gitBranchName&&Cn.addBinding("branch",e.gitBranchName);}catch{}})();var Vp=Router();async function g_(e){return (await Df(e,Cn)).map(o=>{let r=e.modules[o.moduleId];if(!r){R.warn(`Found a dangling module with ID ${o.moduleId} that could not be found on disk.`);return}return {...r,content:o}}).filter(o=>o!==void 0)}Vp.get("/",St(async(e,t)=>{let n=st(),o=await Ws(n),r=await g_(o);t.status(200).json(r);}));Vp.post("/",St(async(e,t)=>{let n;try{n=JW.parse(e.body);}catch(l){t.status(400).json({error:`Invalid request body: ${l}`});return}try{tc(n.name);}catch(l){t.status(400).json({error:`Invalid module name: ${l}`});return}let o=st(),r=await Ve(o),i=r.modules;if(Object.values(i).find(l=>l.name===n.name)){t.status(400).send(`A module with the name "${n.name}" already exists. Please choose a different name.`);return}let s=Xn__default.join(o.rootDir,n.folderPath??Xn__default.dirname(n.testFilePath));if(!Sr__default.existsSync(s)||!Sr__default.statSync(s).isDirectory()){t.status(400).json({error:`The folder configured for module creation '${s}' does not exist.`});return}let a=await yw({...n,folder:s,project:o,momenticFiles:r});t.status(201).json(a);}));Vp.get("/:moduleId/tests",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n=st(),o=await Ve(n),r=e.params.moduleId;if(!o.modules[r]){t.status(404).json({error:"Module not found."});return}let i=[];for(let a of Object.values(o.tests))oQ(a.fullFilePath,o).has(r)&&i.push({id:a.id,name:a.name,relativePath:a.relativePath});let s={tests:i};t.status(200).json(s);}));Vp.get("/:moduleId",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n=await Ws(st()),o=n.modules[e.params.moduleId];if(!o){t.status(404).json({error:"Module not found."});return}try{let r=await Nc({modHandle:o,momenticFiles:n,logger:R});t.json(r);}catch(r){t.status(400).json({err:r});}}));Vp.post("/:moduleId/duplicate",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=YW.parse(e.body);}catch(h){t.status(400).json({error:`Invalid request body: ${h}`});return}try{tc(n.name);}catch(h){t.status(400).json({error:h.message});return}let o=st(),r=await Ve(o),i=r.modules[e.params.moduleId];if(!i){t.status(404).json({error:"Module not found."});return}if(Object.values(r.modules).find(h=>h.name===n.name)){t.status(400).send(`A module with the name "${n.name}" already exists. Please choose a different name.`);return}let s=n.sourceModuleContent;if(s.moduleId!==e.params.moduleId){t.status(400).json({error:"Duplicate source module content does not match moduleId."});return}let a=Xn__default.join(o.rootDir,Xn__default.dirname(i.relativePath));if(!Sr__default.existsSync(a)||!Sr__default.statSync(a).isDirectory()){t.status(400).json({error:`The folder configured for module creation '${a}' does not exist.`});return}let l=xn(n.name),c=Xn__default.join(a,`${l}.module.yaml`),d=Oc({projectConfig:o.config,momenticFiles:r,entityType:"module"}),{stepsToSave:u}=await Jn({stepLists:{steps:s.steps},createNewCacheIds:true}),p={fileType:ke.MODULE,schemaVersion:at,moduleId:d,name:n.name,description:"",enabled:true,steps:u.steps,parameters:s.parameters,defaultParameters:s.defaultParameters,parameterEnums:s.parameterEnums,defaultCacheKey:s.defaultCacheKey,defaultCacheTtl:s.defaultCacheTtl,defaultCacheAllInvocations:s.defaultCacheAllInvocations,autoAuth:s.autoAuth,advanced:s.advanced,defaultRetries:s.defaultRetries};Ra({module:p,filePath:c,projectConfig:o.config,momenticFiles:r});let m={relativeFilePath:Xn__default.relative(o.rootDir,c)};t.status(201).json(m);}));Vp.patch("/:moduleId/move",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=QW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${ee(i)}`});return}let o=st();if(!(await Ws(o)).modules[e.params.moduleId]){t.status(404).json({error:"Module not found."});return}await aQ({moduleId:e.params.moduleId,targetFolderRelativePath:n.folderPath,project:o}),t.status(200).json({message:"ok"});}));Vp.patch("/:moduleId/metadata",St(async(e,t)=>{if(!e.params.moduleId){t.status(400).json({error:"Missing moduleId in url path."});return}let n;try{n=XW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${i}`});return}let o=st(),r=await Ws(o);await lQ({moduleId:e.params.moduleId,content:n,momenticFiles:r,logger:R,project:o}),t.status(201).json({message:"ok"});}));var Dre=Vp;var ZA=Router();ZA.get("/",St(async(e,t)=>{let n=st(),o=await Ve(n),r=new Set;o?.tests&&Object.values(o.tests).forEach(c=>{c.labels?.forEach(d=>r.add(d));});let i=Array.from(r).sort(),s=Object.values(o.tests),a=await g_(o),l={labels:i,tests:s,modules:a};t.status(200).json(l);}));ZA.get("/folders",St(async(e,t)=>{let n=st(),o=await Y4(n);t.status(200).json(o);}));ZA.get("/labels",St(async(e,t)=>{let n=st(),o=await Ve(n),r=new Set;for(let s of Object.values(o.tests))s.labels?.forEach(a=>r.add(a));let i=Array.from(r).sort();t.status(200).json(i);}));ZA.post("/in-folder",St(async(e,t)=>{let n=VW.safeParse(e.body);if(!n.success){t.status(400).json({error:`Failed to parse entities-in-folder body: ${n.error.message}`});return}let{pathSegments:o}=n.data,r=st(),[i,s]=await Promise.all([K4(r,o),Ws(r)]),a=Object.values(i.tests),l=await g_(s),c=new Set(Object.keys(i.modules)),d=l.filter(p=>c.has(p.id)),u={tests:a,modules:d};t.status(200).json(u);}));var Fre=ZA;var Z0=Router();Z0.get("/",St((e,t)=>{let n=Cw(st(),Cn);t.status(200).json(n);}));Z0.get("/names",St((e,t)=>{let o=st().config.environments?.map(r=>r.name)??[];t.status(200).json(o);}));var Bre=Z0;var Ure=Router();Ure.get("/",St((e,t)=>{let n={userId:Bc(),orgId:io(),email:ry(),name:R6(),pylonEmailHash:w6(),cliVersion:QA};t.status(200).json(n);}));var Hre=Ure;var eU="mcp-session-id",Gre="MOMENTIC_SESSION_IDLE_TIMEOUT_MINUTES",f_=Router();function $We(){let e=process.env[Gre];if(!e)return yu*60*1e3;let t=Number.parseInt(e,10);return Number.isNaN(t)||t<1?(Cn.warn({envVar:Gre,rawValue:e,fallback:yu},"Invalid MCP session idle timeout env var; falling back to default"),yu*60*1e3):t*60*1e3}function VWe(e){let{headfulDefault:t,supportsFileOutput:n}={},o={serverId:randomUUID(),applicationName:"momentic-mcp-desktop-server",cliVersion:QA},r=st(),i=Xs(),s=Xr(),a=Cn.child({orgId:io(),userId:Bc(),...o}),l=new Ft({baseUrl:s,apiKey:i,logger:a,mode:"interactive",runner:"mcp"}),c=xb(process.env.MOMENTIC_HEADFUL_BROWSER),d=new yr(r.config.ai?.agentConfig,{baseUrl:s,apiKey:i,logger:a,mode:"interactive",runner:"mcp"}),u=io(),p=new la(l,u,r);return {context:{project:r,orgId:u,logger:a,generator:d,apiClient:l,storage:p,serverId:o.serverId,extractBaseDir:ea(r.rootDir),saveChangesToDisk:true,supportsFileOutput:n??true,knowledgeRetrievalResults:Jt,knowledgeCitations:[],sessionIdleTimeoutMs:$We(),headfulDefault:t??c??true,categoryDefinitions:r.config.ai?.classification?.categories??ts},info:o}}var Su={};f_.post("/",async(e,t)=>{let n=String(e.headers[eU]??"");try{if(n&&Su[n]){await Su[n].handleRequest(e,t,e.body);return}if(!n&&isInitializeRequest(e.body)){let{context:o,info:r}=VWe(),i=T0(o,r,Dy),s=new StreamableHTTPServerTransport({sessionIdGenerator:()=>randomUUID(),enableDnsRebindingProtection:!1,onsessioninitialized:a=>{Su[a]=s;}});s.onclose=()=>{let a=s.sessionId;a&&Su[a]&&delete Su[a],i.close().catch(()=>{});},await i.connect(s),await s.handleRequest(e,t,e.body);return}t.status(400).json({jsonrpc:"2.0",error:{code:-32e3,message:"Bad Request: No valid session ID provided"},id:null});}catch{t.headersSent||t.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null});}});f_.get("/",async(e,t)=>{let n=String(e.headers[eU]??"");if(!n||!Su[n]){t.status(400).send("Invalid or missing session ID");return}await Su[n].handleRequest(e,t);});f_.delete("/",async(e,t)=>{let n=String(e.headers[eU]??"");if(!n||!Su[n]){t.status(400).send("Invalid or missing session ID");return}let o=Su[n];try{await o.handleRequest(e,t);}catch{t.headersSent||t.status(500).send("Error processing session termination");}});var $re=f_;var Vre=Router();Vre.get("/:id",St(async(e,t)=>{let{id:n}=e.params;if(!n){t.status(400).json({error:"Missing ID"});return}let o=rr();if(!o){t.status(500).json({error:"API client not initialized"});return}try{let{data:r,contentType:i}=await o.fetchOnDemandScreenshot(n);t.setHeader("Content-Type",i),t.status(200).send(r);}catch(r){Cn.error({err:r,screenshotId:n},"Failed to proxy on-demand screenshot"),t.status(404).json({error:"Screenshot not found"});}}));var zre=Vre;var y_=Router();y_.get("/",St(async(e,t)=>{let n=new Map;for(let i of await dD())n.set(i.configFilePath,i);let o=st();n.set(o.configFilePath,o);let r=[...n.values()].map(i=>({name:i.config.name,configFilePath:i.configFilePath,fileFormat:i.config.fileFormat}));t.status(200).json(r);}));y_.get("/current",St((e,t)=>{let n=st();if(!n){t.status(404).json({error:"No project found."});return}let o={name:n.config.name,configFilePath:n.configFilePath,fileFormat:n.config.fileFormat};t.status(200).json(o);}));y_.post("/set",St(async(e,t)=>{let n;try{n=t1.parse(e.body);}catch(o){t.status(400).json({error:`Invalid request body: ${o}`});return}Cn.info("Setting local project");try{let o=await on({configFilePath:n.configFilePath}),r=rr();if(!r)throw new Error("API client is not initialized.");await sy({project:o,apiClient:r});}catch(o){t.status(400).json({error:`Error setting project: ${o}`});return}t.sendStatus(204);}));var Wre=y_;var qre=Router();qre.get("/",St((e,t)=>{let n=st(),o={ai:n.config.ai,browser:n.config.browser,displayRoot:n.config.displayRoot};t.status(200).json(o);}));var Kre=qre;var Zc=Router();Zc.post("/",St(async(e,t)=>{let n;try{n=qW.parse(e.body);}catch(o){t.status(400).json({error:`Invalid request body: ${o}`});return}try{let o=st(),r=await JA({project:o,input:n});ia({type:"test_editor:test_create",test_platform:"web"}),t.status(201).json(r);}catch(o){if(o instanceof mt){t.status(400).json({error:o.message});return}throw o}}));Zc.get("/:testPath",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=await Ws(o),i;try{i=await us(Xn__default.join(o.rootDir,n),Cn,r),await(await Cs({logger:Cn,orgId:io(),project:o})).resolveStepCacheEntries({schemaVersion:i.schemaVersion,testId:i.id,environment:i.envs?.find(a=>a.default)?.name,stepLists:{beforeSteps:i.beforeSteps,steps:i.steps,afterSteps:i.afterSteps},logger:Cn,useSnapshotIdentityCache:o.config.fileFormat==="v2"}),t.status(200).json(i);}catch(s){t.status(400).send({error:s.message});return}(async()=>{try{await Aw({relativeTestPath:n,stepLists:{steps:i.steps,beforeSteps:i.beforeSteps,afterSteps:i.afterSteps},schemaVersion:at,momenticFiles:r,project:o});}catch(s){Cn.error({err:s},"Failed to save migrated test to disk after initial fetch");}})();}));Zc.get("/:testPath/metadata",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=Xn__default.join(o.rootDir,n);if(!Sr__default.existsSync(r)){t.status(404).json({error:"Test file not found."});return}let i=Sr__default.statSync(r),s=await _a(Cn),a={gitBranch:s.gitBranchName??"unknown",fileMtime:i.mtime,gitCommitSha:s.gitCommitSha??"unknown"};t.status(200).json(a);}));Zc.patch("/:testPath/metadata",St(async(e,t)=>{if(!e.params.testPath){t.status(400).json({error:"Missing testPath in url path."});return}let n;try{n=WW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${i}`});return}let r={message:"ok",newRelativeTestPath:HT(e.params.testPath,n,st()).newRelativeTestPath};t.status(200).json(r);}));Zc.patch("/:testPath",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=zW.parse(e.body);}catch(m){Cn.warn({err:m},"Invalid save request"),t.status(400).json({error:`Invalid request body: ${m}`});return}Cn.info({testPath:n},"Save received");let r=st(),i=await Ws(r),s;try{s=jd(n,r);}catch(m){t.status(400).json({error:`Existing test file on disk is invalid: ${m}`});return}let a=r.config.fileFormat==="v2",{stepsToSave:l,moduleUpdates:c,cachesToSave:d,snapshotCachesToSave:u}=await Jn({stepLists:o.stepLists,useSnapshotIdentityCache:a,cacheCreationParams:{orgId:io(),testId:s.id,environment:s.envs?.find(m=>m.default)?.name}}),p=await Cs({logger:Cn,orgId:io(),project:r});a&&await p.saveSnapshotCacheEntries({logger:Cn,entries:u}),await p.saveStepCacheEntries({logger:Cn,entries:d}),sD({relativeTestPath:n,stepsToSave:l,moduleUpdates:c,schemaVersion:o.schemaVersion,momenticFiles:i,project:r}),t.status(201).json({message:"ok"});}));Zc.patch("/:testPath/environments",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=e1.parse(e.body);}catch(r){t.status(400).json({error:`Invalid request body: ${r}`});return}HT(n,{envs:o.defaultEnv?[{name:o.defaultEnv,default:true}]:[]},st()),t.status(201).json({message:"ok"});}));Zc.patch("/:testPath/move",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=ZW.parse(e.body);}catch(i){t.status(400).json({error:`Invalid request body: ${ee(i)}`});return}let r=st();if(!Sr__default.existsSync(Xn__default.join(r.rootDir,n))){t.status(404).json({error:"Test not found."});return}await cQ({relativeTestPath:n,targetFolderRelativePath:o.folderPath,project:r}),t.status(200).json({message:"ok"});}));Zc.delete("/:testPath",St((e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o=st(),r=Xn__default.join(o.rootDir,n);if(!Sr__default.existsSync(r)){t.status(404).json({error:"Test not found."});return}Sr__default.unlinkSync(r),t.status(200).json({message:"ok"});}));Zc.post("/:testPath/duplicate",St(async(e,t)=>{let{testPath:n}=e.params;if(!n){t.status(400).json({error:"Missing testPath in url path."});return}let o;try{o=KW.parse(e.body);}catch(h){t.status(400).json({error:`Invalid request body: ${h}`});return}try{tc(o.name);}catch(h){t.status(400).json({error:h.message});return}let r=st(),i=Xn__default.join(r.rootDir,n);if(!Sr__default.existsSync(i)){t.status(404).json({error:"Test not found."});return}let s=await Ve(r),a;try{a=await us(i,Cn,s);}catch(h){t.status(400).send({error:h.message});return}let l=Oc({projectConfig:r.config,momenticFiles:s,entityType:"test"}),c=to.parse({...a,name:o.name,id:l}),{stepsToSave:d}=await Jn({stepLists:{steps:a.steps,beforeSteps:a.beforeSteps,afterSteps:a.afterSteps},createNewCacheIds:true}),u=Xn__default.dirname(i),p=Xn__default.join(u,`${o.name}.test.yaml`);wa({test:{fileType:ke.TEST,...c,...d},filePath:p,projectConfig:r.config,momenticFiles:s});let m={relativeFilePath:Xn__default.relative(r.rootDir,p)};ia({type:"test_editor:test_duplicated"}),t.status(201).json(m);}));var Yre=Zc;var Jre=z.object({name:z.string().min(1).describe("Short, human-readable name for the slice you are delegating (used as a label)."),instructions:z.string().min(1).describe("Focused, self-contained instructions for the child: which area it should own and what to cover. The child inherits the same input you received but cannot see your conversation, so these instructions must stand alone."),budget:z.number().int().positive().optional().describe("Maximum number of test plans this child should produce. Allocate a portion of your remaining budget to each child. Omit to let the child use its own judgement.")});function Xre(e){return e.kind==="diff"?e.diffSummary:yt`
7504
7504
  You are seeding end-to-end test coverage for this entire application from scratch. There is no diff and no single assigned surface — the whole product is in scope.
7505
7505
 
7506
7506
  Map the application's user-facing surfaces from the codebase, then cover them. Whenever you identify a self-contained area that warrants its own focused pass, delegate it to a child explorer with ${sc} as described in your instructions, and explore the rest yourself. Fold the children's findings into your final submission so it reflects the whole app.
@@ -8895,7 +8895,7 @@ ${i.length===0?"(none)":l}
8895
8895
  `);for(let l of e){let c=l.files.map(h=>t.get(h)).filter(h=>h!==void 0),d=l.files.map(h=>n.get(h)).filter(h=>h!==void 0),u=hE({bfsSummaries:d}),p=nP({fileSummaries:c,bfsSummaries:u,candidateTestsBlock:a,tokenBudget:r});if(!sle({estimatedTokens:p.estimatedTokens,tokenBudget:r,fileCount:l.files.length})){s.push(l);continue}i.debug({folder:l.folder,files:l.files.length},"Splitting oversized folder group");let m=Math.ceil(l.files.length/2);s.push({folder:`${l.folder} (1/2)`,files:l.files.slice(0,m)},{folder:`${l.folder} (2/2)`,files:l.files.slice(m)});}return s}async function QXe({groups:e,logger:t,insightStore:n}){let o=new Set,r=new Map;for(let d of e){let u=d.folder.split("/").filter(m=>m.length>0),p=[d.folder];for(let m=u.length-1;m>0;m--)p.push(u.slice(0,m).join("/"));r.set(d.folder,p);for(let m of p)o.add(m);}let i=[...o];if(i.length===0)return new Map;let s=50,a=[];try{for(let d=0;d<i.length;d+=s){let u=i.slice(d,d+s),p=await n.getInsightsForFolders(u);a.push(...p);}}catch(d){return t.warn({err:d},"Code insights prefetch failed, continuing without KB context"),new Map}t.info({folderCount:i.length,insightCount:a.length},"Code insights prefetch complete");let l=new Map;for(let d of a){let u=l.get(d.folderPath)??[];u.push(d),l.set(d.folderPath,u);}let c=new Map;for(let d of e){let u=r.get(d.folder)??[d.folder],p=[];for(let m of u){let h=l.get(m);h&&p.push(...h);}c.set(d.folder,p);}return c}function ZXe(e,t){e?.write(`${t}
8896
8896
  `);}var Dl="/v1/app-graph",aP=class{constructor(t,n){this.apiClient=t;this.logger=n;}async claim(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/claim`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return z$.parse(n)}async getPlan(t){let n=new URLSearchParams({repository:t.repository,headSha:t.headSha}),o=await this.apiClient.sendRequest(`${Dl}/ai-select/plan?${n.toString()}`,{method:"GET",retries:1,requestTimeoutMs:1e4});return q$.parse(o)}async finalize(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/finalize`,{method:"POST",body:t,retries:2,requestTimeoutMs:3e4});return W$.parse(n)}async release(t){await this.apiClient.sendRequest(`${Dl}/ai-select/release`,{method:"POST",body:{selectionPlanKey:t},retries:1,requestTimeoutMs:5e3}).catch(n=>{this.logger.warn({err:n,selectionPlanKey:t},"Failed to release ai-select lock");});}async searchObservedTests(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/search/observed-tests`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return sM.parse(n)}async searchSegments(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/search/segments`,{method:"POST",body:t,retries:2,requestTimeoutMs:15e3});return sM.parse(n)}async getObservedTest(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/observed-tests/${encodeURIComponent(t)}`,{method:"GET",retries:2,requestTimeoutMs:1e4});return K$.parse(n)}async getSegment(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/segments/${encodeURIComponent(t)}`,{method:"GET",retries:2,requestTimeoutMs:1e4});return Y$.parse(n)}async listObservedTestsForSegment(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/segments/${encodeURIComponent(t)}/observed-tests`,{method:"GET",retries:2,requestTimeoutMs:1e4});return J$.parse(n)}async getCodeInsights(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/code-insights`,{method:"POST",body:{repository:t.repository,folderPaths:t.folderPaths},retries:1,requestTimeoutMs:1e4});return X$.parse(n).insights}async createCodeInsight(t){let n=await this.apiClient.sendRequest(`${Dl}/ai-select/code-insight`,{method:"POST",body:t,retries:1,requestTimeoutMs:15e3});return Q$.parse(n)}},e3e=2e3,Ple=12e4;async function Ole(e){let t=Date.now()+(e.timeoutMs??Ple),n=0;for(;;){n+=1;let o=await e.client.claim(e.claim);if(o.status==="claimed")return {kind:"claimed",selectionPlanKey:o.selectionPlanKey,trackId:o.trackId};if(o.status==="ready")return {kind:"ready",plan:o.plan,planId:o.planId};if(Date.now()>=t)throw new Error(`ai-select: timed out waiting for plan after ${e.timeoutMs??Ple}ms`);e.logger.info({attempt:n,claimedBy:o.claimedBy},"ai-select plan computing on another shard; polling"),await ot(o.retryAfterMs??e3e);}}async function n3e(e){try{return await X_({repoRoot:e.repoRoot,explicitBase:"HEAD~1",logger:e.logger})}catch{return $U({repoRoot:e.repoRoot,client:e.apiClient,repository:e.repository,base:null,logger:e.logger})}}async function mH(e){return Ge({name:"ai_select.resolve_plan",root:true,attributes:{"momentic.repository":e.repository},fn:()=>o3e(e)})}async function o3e(e){let t=new aP(e.apiClient,e.logger),n=e.agentOutputStream?vt(e.agentOutputStream):vt();e.agentOutputStream!==void 0&&!!e.agentOutputStream.isTTY;e.agentOutputStream&&e.agentOutputStream.write(`Selecting tests to run with AI:
8897
8897
  `);let r;try{r=await Ge({name:"ai_select.assemble_diff",attributes:{"momentic.explicit_base":e.explicitBase??"auto"},fn:()=>xo({text:"Analyzing code changes...",screen:n},()=>X_({repoRoot:e.repoRoot,explicitBase:e.explicitBase,configBase:e.config?.baseRef,mainBranch:e.mainBranch,logger:e.logger}))});}catch(p){let m=p instanceof Mh?p.message:`Could not assemble diff against base ref: ${ee(p)}.`,h=Dae({explicitBase:e.explicitBase,configBase:e.config?.baseRef,mainBranch:e.mainBranch}),g=h?await $U({repoRoot:e.repoRoot,client:e.apiClient,repository:e.repository,base:h,logger:e.logger}):null;if(g)r=g;else {let f=e.config?.onBaseUnavailable??"use-head";switch(f){case "fail":throw new Mh(`AI selection base unavailable and ai.select.onBaseUnavailable is "fail": ${m}`);case "run-all":return {kind:"run-all",reason:m,diff:null};case "use-head":{let y=await n3e(e);if(y===null)return {kind:"run-all",reason:`Could not assemble diff against the HEAD commit's parent: ${m}`,diff:null};r=y;break}default:return tt(f)}}}if(e.logger.info({changedFiles:r.changedFiles.length},"Diff assembled"),r.changedFiles.length===0)return {kind:"run-none",reason:"No source-code changes detected between base and head.",diff:r};let i=createHash("sha256").update(e.candidateTests.map(p=>p.testPath).sort().join(`
8898
- `)).digest("hex").slice(0,12),s=`${r.headSha}:${i}`,a=r.repoRoot,l=Xn__default.relative(a,e.repoRoot),c=l?e.candidateTests.map(p=>({...p,testPath:Xn__default.posix.join(l.split(Xn__default.sep).join("/"),p.testPath)})):e.candidateTests;if(e.dryRun){let p=await uH({apiClient:t,generator:e.generator,logger:e.logger,repository:e.repository,repoRoot:a,projectRoot:e.repoRoot,diff:r,candidateTests:c,allTestDefinitions:e.allTestDefinitions,importIndexCachePath:eP(a),agentOutputStream:e.agentOutputStream});return p.fallbackToRunAll?{kind:"run-all",reason:p.userSummary,diff:r}:{kind:"ready",plan:{version:2,userSummary:p.userSummary,toolCallCount:p.toolCallCount,selectedTests:p.selectedTests,anchorSegmentIds:p.anchorSegmentIds,budget:{source:e.budgetSource,cap:e.budgetCap??null},generatedAt:new Date().toISOString()},planId:`dry-run-${s}`,mode:"SELECTED",diff:r}}let d=await Ole({client:t,claim:{repository:e.repository,headSha:s,baseRef:r.baseRef,changedFiles:r.changedFiles.map(p=>p.path),diffSummary:null,budgetCap:e.budgetCap,dryRun:e.dryRun},logger:e.logger});if(d.kind==="ready")return e.logger.info({planId:d.planId,planSize:d.plan.selectedTests.length,suiteHash:i},"ai-select: reusing cached plan from server"),{kind:"ready",plan:d.plan,planId:d.planId,mode:"SELECTED",diff:r};let u=await uH({apiClient:t,generator:e.generator,logger:e.logger,repository:e.repository,repoRoot:a,projectRoot:e.repoRoot,diff:r,candidateTests:c,allTestDefinitions:e.allTestDefinitions,importIndexCachePath:eP(a),agentOutputStream:e.agentOutputStream});if(u.fallbackToRunAll)return await t.release(d.selectionPlanKey),{kind:"run-all",reason:u.userSummary,diff:r};try{e.logger.info({selectedCount:u.selectedTests.length,durationMs:u.totalDurationMs,suiteHash:i},"ai-select: computed fresh plan");let p=await t.finalize({selectionPlanKey:d.selectionPlanKey,repository:e.repository,headSha:s,mode:"SELECTED",userSummary:u.userSummary,toolCallCount:u.toolCallCount,selectedTests:u.selectedTests,anchorSegmentIds:u.anchorSegmentIds,budget:{source:e.budgetSource,cap:e.budgetCap}});return {kind:"ready",plan:p.plan,planId:p.planId,mode:"SELECTED",diff:r}}catch(p){return e.logger.error({err:p},"ai-select finalize failed; falling back to run-all"),await t.release(d.selectionPlanKey),{kind:"run-all",reason:`Could not record selection plan: ${ee(p)}.`,diff:r}}}function kh(e){let t=e??a3e();return Mle()&&t===1&&R.warn("Running with --pixel-ratio=1 on a Retina screen. Viewport calculations may be incorrect; omit the flag to auto-detect."),t}function a3e(){let e=Mle(),t=e?2:1;return R.debug(`Auto-detected device pixel ratio ${t} (Mac OS Retina: ${e}).`),t}var Mle=once(()=>{if(platform()!=="darwin")return false;try{return execSync("system_profiler SPDisplaysDataType").toString().includes("Retina")}catch{return false}});async function lP(e,t=true,n=false){let o=u3e(e),r=await c3e.which(o[0],true),i=o.slice(1),s=l3e.exec(d3e(r),i,{delay:100,silent:n});if(t)return s}var Nle="the Momentic GitHub app is missing permission to create pull requests or write branches for this repository";function p3e(e,{context:t}){return e instanceof ro?e.rawError.includes("Resource not accessible by integration")?`Cannot create ${t} because ${Nle}.`:e.status>=400&&e.status<500?e.rawError:`Could not create ${t} due to a GitHub error.`:`Could not create ${t}: ${ee(e)}`}function Lle(e){return e instanceof ro?e.rawError.includes("Resource not accessible by integration")?Nle:e.status>=400&&e.status<500?e.rawError:"a GitHub error occurred":ee(e)}function kle(e,t){R.error(p3e(e,t));}function cP(e){return Dle(e,"runs","run")}function hH(e){return Dle(e,"run-groups","run group")}function Dle(e,t,n){let o=e.trim(),r=/^https?:\/\//i.test(o)?h3e(o,t,n):o;if(!z.guid().safeParse(r).success)throw new Error(`Invalid ${n} ID: ${e}. Expected a UUID or a URL like https://app.momentic.ai/${t}/<id>.`);return r}function h3e(e,t,n){let o;try{o=new URL(e);}catch{throw new Error(`Invalid ${n} URL: ${e}`)}let r=o.pathname.split("/").filter(i=>i.length>0);if(r.length!==2||r[0]!==t)throw new Error(`Could not extract ${n} ID from URL: ${e}. Expected a URL like https://app.momentic.ai/${t}/<id>.`);return r[1]}function dP(e){return new Promise((t,n)=>{let o=[];createReadStream(e).pipe(g3e()).on("data",r=>o.push(r)).on("end",()=>t(o)).on("error",r=>n(r));})}var ln="3.10.2",{checkCLIVersion:Hr,getLatestCLIVersion:Fle}=c6({packageName:"momentic",currentVersion:ln,changelogUrl:"https://github.com/momentic-ai/cli/releases",updateCommand:"npx momentic@latest upgrade"});lke("phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI","POSTHOG_WEB_WRITE_KEY is not set");var{captureEvent:Au,setAnalyticsIdentity:uP,shutdownAnalytics:Ble}=Lv({writeKey:"phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI",host:"https://p.momentic.ai",platform:"cli",identity:"stashed",flushImmediately:true,onIdentify:g6});async function lt(){try{await Ie(Promise.all([Mv(),Tt.flush(),Ble(),Vv()]),{milliseconds:5e3});}catch{}}async function Dh({tests:e,momenticFiles:t,project:n,yes:o,include:r,exclude:i,labels:s,logger:a}){let l=new Set;if(e&&e.length>0){let d=e.some(p=>Sr__default.existsSync(p)),u=cwd();d?(u!==n.rootDir&&a.warn(`Test paths resolve against the current directory ('${u}'), not the project root ('${n.rootDir}'). Run from the project root or use substring filters to avoid surprises.`),e.forEach(p=>{if(!Sr__default.existsSync(p))throw new Error(`Path '${p}' does not exist.`);let m;try{m=Sr__default.statSync(p).isDirectory();}catch(g){a.warn({err:g},`Skipping path ${p} because it cannot be read`);return}let h=Xn__default.resolve(p);Object.values(t.tests).filter(g=>m?g.fullFilePath.startsWith(h):g.fullFilePath===h).forEach(g=>{l.add(g.fullFilePath);});})):Object.values(t.tests).forEach(p=>{e.some(m=>p.relativePath.includes(m))&&l.add(p.fullFilePath);});}else !o&&!await gr("No test paths or substrings were provided. Do you want to run all tests?")&&(a.error("Cancelled by user."),process.exit(1)),Object.values(t.tests).forEach(u=>{l.add(u.fullFilePath);});for(let d of l){let u=Xn__default.relative(n.rootDir,d);r&&!r.some(p=>new RegExp(p).test(u))&&l.delete(d),i&&i.some(p=>new RegExp(p).test(u))&&l.delete(d);}let c=Array.from(l).map(async d=>{try{let u=await us(d,Ee,t);if(iu.gt(u.schemaVersion,at)&&a.warn(`Test ${d} has schema version ${u.schemaVersion}, which is greater than what is currently supported by this SDK. Please update your momentic package version to avoid unexpected behavior.`),s&&s.length>0){let p=u.labels||[];if(!s.some(h=>p.includes(h)))return null}return {...u,fullFilePath:d,relativeFilePath:Xn__default.relative(n.rootDir,d)}}catch(u){a.error(`Failed to read and resolve test at '${d}': ${ee(u)}`),process.exit(1);}});return compact(await Promise.all(c))}function Hle({testDefinitions:e,quarantinedTestsMetadata:t,onlyQuarantined:n=false,skipQuarantined:o=false}){let[r,i]=partition(e,l=>l.disabled),[s,a]=partition(i,l=>l.id in t);return {testsToSkip:r,quarantinedTestsToSkip:o?s:[],testsToRun:n?[]:a,quarantinedTestsToRun:o?[]:s}}function Gle({testsToRun:e,quarantinedTestsToRun:t,quarantinedTestsMetadata:n,testInputMatrix:o}){let r=[],i=(s,a,l)=>{o?o.forEach((c,d)=>{r.push({inputs:c,inputIndex:d,testDefinition:s,quarantined:a,quarantinedMetadata:l});}):r.push({inputs:void 0,testDefinition:s,quarantined:a,quarantinedMetadata:l});};return e.forEach(s=>i(s,false)),t.forEach(s=>i(s,true,n[s.id])),r}var jle=()=>process.exit(130),$le=()=>process.exit(143);process.on("SIGINT",jle);process.on("SIGTERM",$le);function gE(){process.off("SIGINT",jle),process.off("SIGTERM",$le);}async function Vle({orgId:e,codeEvalTools:t,logger:n,outputDefinitions:o,testContext:r}){let i={};for(let s of o){let{name:a,value:l}=s;i[a]=await fi({orgId:e,s:l,localTools:t,logger:n,context:r});}return i}var zle=new Set;async function Wle({baseUrl:e,envName:t,devicePixelRatio:n,apiClient:o,test:r,storageClient:i,codeEvalTools:s,generator:a,orgId:l,variables:c,logger:d,customHeaders:u,testInputs:p,localBrowserConfig:m,aiSettings:h,visualDiffScreenshotStorage:g,tracer:f,runId:y,browserTypeOverride:S,attemptedRemoteBrowserProviders:b}){let E={baseUrl:o.baseUrl,apiKey:o.apiKey,logger:Ee,mode:o.mode,runner:o.runner},{controller:C,context:w}=await VA({baseUrl:e,envName:t,test:r,variables:c,logger:d,orgId:l,localBrowserConfig:m,aiSettings:h,customHeaders:u,codeEvalTools:s,storage:i,enricher:new Xd(E,a),generator:a,visualDiffScreenshotStorage:g,devicePixelRatio:n,browserTypeOverride:S,callbacks:{onNetworkPage:I=>f.onNetworkPage(I),onNetworkLogs:I=>f.onNetworkLogs(I)},videoOptions:f.videoOutputPath?{videoOutputPath:f.videoOutputPath,onVideoPageChange:({videoName:I,timestamp:P})=>{f.setActiveVideo(I,P);}}:void 0,validateBrowserType:I=>{cT(I)||(Ee.warn({browserType:I,testName:r.name},"Browser required by test does not appear to be installed"),!zle.has(I)&&(zle.add(I),R.warn(`Browser ${I} does not appear to be installed. Run '${Pu(I)}' if you hit launch errors.`)));},createRemoteBrowserConnection:m.remoteBrowser?async()=>{let I=await o.createRemoteBrowserConnection({runId:y,attemptedProviders:b});return I.provider&&b?.push(I.provider),I}:void 0});try{await Jx({orgId:l,test:r,testInputs:p,localTools:s,logger:d,context:w});}catch(I){try{await C.browser.cleanup();}catch(P){d.error({err:P},"Failed to clean up browser after test input resolution failed");}throw I instanceof zA&&(R.error(I.message),process.exit(1)),I}return {controller:C,context:w}}function qle({testAdvancedSettings:e,orgSettings:t,logger:n}){if(e.failureRecovery===false||e.failureRecovery===void 0&&!t?.failureRecovery)return false;if(!Mm){let o="This test is ineligible for failure recovery since this does not appear to be a CI environment";return n.warn(o),R.debug(o),false}return true}async function Kle({attemptInputs:e,attemptFixtures:t,attemptMetadata:n,runFixtures:o,recordVideo:r,stepCallbacks:i}){let{orgId:s,userId:a,runId:l}=n,{runTracer:c,runGroupTracer:d,project:u,apiClient:p}=o,{controller:m,context:h,codeEvalTools:g,storageClient:f,logger:y,usageTracker:S,tracer:b}=t,{test:E,orgSettings:C}=e;y.info(`Running test '${E.name}' locally (run link: https://app.momentic.ai/runs/${l})`);let w={controller:m,storage:f,usageTracker:S,context:h,logger:y,codeEvalTools:g},I={orgId:s,userId:a,runId:l,testMetadata:E,steps:E.steps,beforeSteps:E.beforeSteps,afterSteps:E.afterSteps,orgSettings:C},P={collectDebugData:true,reinitializeBrowser:true,disableHealing:!await qle({testAdvancedSettings:E.advanced,orgSettings:C.ai,logger:y})};return Hoe({fixtures:w,inputs:I,options:P,callbacks:{step:i??{},test:{onTestComplete:async _=>{await m.browser.cleanup({saveRemoteVideos:r!=="on-fail"||_?.status!=="PASSED"}),await g.dispose();}}},testParams:{attemptTracer:b},runParams:{runTracer:c,runGroupTracer:d,project:u,apiClient:p,captureEvent:Au,abortSignal:o.abortSignal}})}async function Yle(e){let{testDefinition:t,logger:n}=e,o=new Date;try{return await C3e(e)}catch(r){qu(r);let{customHeaders:i,envName:s,testInputs:a,urlOverride:l}=e,c={customHeaders:i,envName:s,testInputs:a,urlOverride:l},d="Fatal error running test";return n.error({err:r},d),R.error({err:r},d),Jle({err:pm(r),parameters:c,test:t,failureReason:ne.reasonFor(r,"UnknownError"),startedAt:o,lastAttemptStartedAt:o,attempts:0,quarantined:e.quarantined,quarantinedMetadata:e.quarantinedMetadata})}}async function C3e(e){let{testDefinition:t,snapshot:n,project:o,apiClient:r,orgId:i,userId:s,urlOverride:a,runGroupTracer:l,logger:c,gitMetadata:d,cacheOptions:u,runId:p,testInputs:m,quarantined:h,quarantinedMetadata:g,usageTracker:f}=e,y=n?{...o.config,...n.metadata.config}:o.config,S=new Jf(r,i),b=eu({logger:c,orgId:i,client:r,gitMetadata:d,regenerateCache:u.regenerateCache,alwaysSaveCache:u.alwaysSaveCache,noCache:n?true:u.noCache,isolateCachesByEnvironment:o.config?.advanced?.isolateCachesByEnvironment,bustOldestCachePercentage:u.bustOldestCachePercentage}),E,C;n?(E={envName:n.metadata.environment.envName,resolvedEnv:n.metadata.environment.resolvedEnv,environmentVariables:{...n.metadata.environment.variables},baseUrl:n.metadata.environment.baseUrl},C={steps:t.steps,beforeSteps:t.beforeSteps,afterSteps:t.afterSteps}):(E=Xf({test:t,envNameOverride:e.envName,urlOverride:a,resolveEnv:re=>Vd(re,o,c)}),C=await Rc({cacheStorage:b,logger:c,schemaVersion:t.schemaVersion,stepLists:{steps:t.steps,beforeSteps:t.beforeSteps,afterSteps:t.afterSteps},testId:t.id,environment:E.envName,useSnapshotIdentityCache:o.config.fileFormat==="v2"}));let{envName:w,resolvedEnv:I,environmentVariables:P,baseUrl:v}=E,_=C.steps,x=C.beforeSteps??void 0,D=C.afterSteps??void 0,U=await l.startRun({logger:c,runId:p,originalSteps:{beforeSteps:t.beforeSteps,steps:t.steps,afterSteps:t.afterSteps},testId:t.id,testName:t.name,directory:dirname(t.relativeFilePath),testDescription:t.description??void 0,testLabels:t.labels,baseUrl:v,environmentName:w,schemaVersion:t.schemaVersion,resolvedInputs:m,quarantined:h,quarantinedReason:g?.quarantinedReason,aiSettings:y.ai}),V=c.child(U.loggerBindings||{});Object.entries(U.envVarBindings||{}).forEach(([re,H])=>{P[re]=H;});let te=await v3e({...e,effectiveConfig:y,variables:P,envName:w,resolvedEnv:I,baseUrl:v,storageClient:S,tracer:U,runGroupTracer:l,logger:V,cacheStorage:b,stepsWithCaches:_,beforeStepsWithCaches:x,afterStepsWithCaches:D,usageTracker:f});return await U.finish({logger:c,status:te.status,finishedAt:te.finishedAt,failureDetails:te.failureDetails,failureReason:te.failureReason,isFlake:te.isFlake,failureRecoveryDetails:te.failureRecoveryDetails}),{runId:U.runId,...te}}async function v3e(e){let{testDefinition:t,effectiveConfig:n,stepsWithCaches:o,beforeStepsWithCaches:r,afterStepsWithCaches:i,project:s,regenerateGoldenFiles:a,apiClient:l,generator:c,baseUrl:d,storageClient:u,orgId:p,userId:m,envName:h,urlOverride:g,customHeaders:f,testInputs:y,variables:S,resolvedEnv:b,retriesOverride:E,devicePixelRatio:C,logUpdate:w,tracer:I,runGroupTracer:P,logger:v,cacheStorage:_,gitMetadata:x,quarantined:D,quarantinedMetadata:U,usageTracker:V}=e,te=n,re=te.ai?.aiFailureAnalysis??false,H=new Date,z=new Bf(s,l,a),M={envName:h,urlOverride:g,customHeaders:f,testInputs:y},K={...te.browser||{},...b?.browser||{},...t.advanced||{},...e.remoteBrowserOverride?{remoteBrowser:true}:{}},j=K.remoteBrowser===true,F=[],J,X=Math.abs(E??t.retries??n.retries??1),ue=[];v.info({...x,labels:t.labels,name:t.name,cwd:process.cwd()},"Starting test run using CLI");for(let xe=0;xe<=X;xe++){let Oe=randomUUID(),Ye=await I.startAttempt(Oe),me=v.child(Ye.loggerBindings||{}),ie={...t,steps:cloneDeep(o),beforeSteps:cloneDeep(r),afterSteps:cloneDeep(i)};xe!==0&&w("RETRY",`attempt ${xe+1}/${X+1}`);let Re=new Date,Ke=new Zd({httpClient:new qi({baseUrl:l.baseUrl,apiKey:l.apiKey,logger:me,mode:l.mode,runner:l.runner}),fakerSeed:te.advanced?.fakerConstantSeed?_b:void 0});try{let{controller:$e,context:He}=await Wle({tracer:Ye,runId:I.runId,baseUrl:d,envName:h,apiClient:l,devicePixelRatio:C,logger:me,storageClient:u,codeEvalTools:Ke,test:ie,generator:c,orgId:p,variables:S,customHeaders:f,testInputs:y,localBrowserConfig:K,browserTypeOverride:e.browserTypeOverride,attemptedRemoteBrowserProviders:F,aiSettings:{...te.ai||{},...ie.advanced||{}},visualDiffScreenshotStorage:z});e.abortSignal&&(e.abortSignal.aborted?$e.executeAbortController.abort():e.abortSignal.addEventListener("abort",()=>{$e.executeAbortController.abort();},{once:!0})),J=await Kle({attemptMetadata:{attemptNumber:xe+1,orgId:p,userId:m,runId:I.runId},attemptFixtures:{logger:me,storageClient:u,usageTracker:V,codeEvalTools:Ke,context:He,controller:$e,tracer:Ye},attemptInputs:{test:ie,orgSettings:te},runFixtures:{runTracer:I,runGroupTracer:P,project:s,apiClient:l,abortSignal:e.abortSignal},recordVideo:e.recordVideo??!1,stepCallbacks:{onStepStart:e.onStepStart}});let It=new Date,cn={logger:v,cacheStorage:_,orgId:p,testId:t.id,environment:h,originalStepsWithCaches:{steps:cloneDeep(o),beforeSteps:cloneDeep(r),afterSteps:cloneDeep(i)},updatedStepsWithCaches:{steps:ie.steps,beforeSteps:ie.beforeSteps,afterSteps:ie.afterSteps}};await Gm({logger:v,cacheStorage:_,orgId:p,testId:t.id,environment:h,stepLists:cn.updatedStepsWithCaches,useSnapshotIdentityCache:s.config.fileFormat==="v2"}),J?.status==="PASSED"?await jm(cn):J?.status==="FAILED"&&xe===X&&await gf(cn),await Ye.finish({logger:me,result:J}),ue.unshift(J.status);let To=await Vle({orgId:p,codeEvalTools:Ke,logger:me,outputDefinitions:t.outputs??[],testContext:He}),ca=pV(ue),xi=xe+1;if(J.status!=="FAILED")return {...J,runAttemptId:Oe,parameters:M,test:ie,filePath:ie.relativeFilePath,startedAt:H,lastAttemptStartedAt:Re,finishedAt:It,attempts:xi,baseUrl:d,outputs:To,isFlake:ca,quarantined:D,quarantinedMetadata:U,usedRemoteBrowser:j};let es=J.failedStepResult,$o=es?.message||"Unknown failure",jn=es?.failureReason??Vj($o)??"UnknownError",_i=me.child({failureReason:jn,errorMessage:$o,numAttempts:(X+1).toString(),name:ie.name});if(xe<X){_i.warn(`Retrying failed execution attempt for run: ${$o}`);continue}_i.error(`Test failed after all exhausting attempts: ${$o}`);let Qo=new Error($o),Cr={errorMessage:$o,errorStack:Qo.stack},Pi;if(te.ai?.classification?.enabled===!0){let $n=es?.failureClassification;$n||(e.onStepStart?.(am),$n=await Nx({runTracer:I,runGroupTracer:P,outputDir:e.outputDir,orgId:p,project:s,generator:c,apiClient:l,logger:v,testPlatform:"web",aiSettings:te.ai,captureEvent:Au,abortSignal:e.abortSignal,failedStepMessage:es?.message})),$n&&(Pi=$n.classification.category,jn=$n.classification.category,Cr.classification={reason:$n.classification.category,secondaryCategories:$n.classification.secondaryCategories,summary:$n.classification.reasoning,recoverable:$n.classification.recoverable,confidence:$n.classification.confidence,action:$n.action,citations:$n.classification.citations,source:"v2"});}else if(re){let $n;try{if(J.results&&J.results.length>0){e.onStepStart?.(am);let{classification:k,aiFailureReason:fe}=await k3({logger:me,browserStateStorage:Ye,generator:c,fullResults:J,failureReason:jn,error:Qo,maxItemsFromEnd:void 0,numStepsWithScreenshots:void 0,disableCache:!1});$n=k,Pi=fe;}}catch(k){me.warn({err:k},"Failed to classify test results");}$n&&(Cr.classification=$n,jn=Pi??jn,Cr.classification.source="v1");}return {...J,runAttemptId:Oe,parameters:M,failureDetails:Cr,failureReason:jn,test:ie,filePath:ie.relativeFilePath,startedAt:H,lastAttemptStartedAt:Re,finishedAt:It,attempts:xe+1,baseUrl:d,outputs:To,quarantined:D,quarantinedMetadata:U,usedRemoteBrowser:j}}catch($e){let He=`Encountered fatal platform error while running test '${ie.name}'`;return me.error({err:$e},He),R.error({err:$e},He),await Ye.finish({logger:me,result:{status:"FAILED"}}),Jle({err:pm($e),parameters:M,test:ie,failureReason:ne.reasonFor($e,"InternalPlatformError"),startedAt:H,lastAttemptStartedAt:Re,attempts:xe+1,quarantined:D,quarantinedMetadata:U,runAttemptId:Oe,baseUrl:d,usedRemoteBrowser:j})}}throw new Error("This code should not be reachable")}function Jle({err:e,parameters:t,test:n,failureReason:o,startedAt:r,lastAttemptStartedAt:i,attempts:s,quarantined:a,quarantinedMetadata:l,runAttemptId:c,baseUrl:d,usedRemoteBrowser:u}){return {status:"FAILED",results:[],parameters:t,test:n,filePath:n.relativeFilePath,failureReason:o,failureDetails:{errorMessage:e.message,errorStack:e.stack},startedAt:r,lastAttemptStartedAt:i,finishedAt:new Date,attempts:s,outputs:{},quarantined:a,quarantinedMetadata:l,runAttemptId:c,baseUrl:d,usedRemoteBrowser:u}}var Xle=3e4;async function oS({timeoutMinutes:e,cancel:t,run:n}){let o=()=>void t("SIGINT received"),r=()=>void t("SIGTERM received");gE(),process.once("SIGINT",o),process.once("SIGTERM",r);let i;e!==void 0&&e>0&&(i=setTimeout(()=>void t(`Timeout of ${e} minute(s) reached`),e*60*1e3));try{return await n()}finally{process.off("SIGINT",o),process.off("SIGTERM",r),clearTimeout(i);}}var nS=class{constructor(t){this.params=t;}runQueue={};runResults=[];cancelledRunsById=new Map;cancelled=false;cancellationReason;async cancel(t,n=true){if(this.cancelled)return;this.cancelled=true,this.cancellationReason=t;for(let r of Object.values(this.runQueue))r.done||r.abortController.abort();n&&await Ie(Promise.allSettled(Object.values(this.runQueue).map(r=>r.promise)),{milliseconds:Xle}).catch(()=>{this.params.runGroupLogger.warn(`Graceful shutdown timeout of ${Xle}ms reached while waiting for running tests to settle.`);});let o=new Set(this.runResults.map(r=>r.runId).filter(r=>!!r));for(let r of Object.values(this.runQueue)){if(r.done||o.has(r.activeRun.runId))continue;let{activeRun:i}=r,s={results:[],beforeResults:[],afterResults:[],test:i.testDefinition,filePath:i.testDefinition.relativeFilePath,startedAt:i.startedAt,lastAttemptStartedAt:i.startedAt,finishedAt:new Date,status:"CANCELLED",attempts:0,runId:i.runId,cancellationReason:t,quarantined:i.quarantined,quarantinedMetadata:i.quarantinedMetadata,parameters:{testInputs:i.inputs,envName:this.params.envName,urlOverride:this.params.urlOverride,customHeaders:this.params.customHeaders},outputs:{}};this.cancelledRunsById.set(i.runId,s);}}resolveNext(){if(this.params.next)return this.params.next;let t=[...this.params.testsToRun??[]];return ()=>Promise.resolve(t.shift())}async run(){let t=this.resolveNext(),{parallel:n,reporter:o,runGroupTracer:r,runGroupLogger:i,logger:s,project:a,client:l,generator:c,orgId:d,userId:u,devicePixelRatio:p,outputDir:m,retriesOverride:h,urlOverride:g,envName:f,customHeaders:y,regenerateGoldenFiles:S,gitMetadata:b,cacheOptions:E,browserTypeOverride:C,remoteBrowserOverride:w,onResult:I,onFatal:P}=this.params,v=0,_=true;for(;_;){let x=Object.values(this.runQueue);if(x.length===n&&await Promise.race(x.map(re=>re.promise)),this.cancelled){_=false;continue}let D=await t();if(D===void 0){_=false;continue}let U=`test-${v++}`,V={...D,startedAt:new Date},te=new AbortController;this.runQueue[U]={done:false,activeRun:V,abortController:te,promise:(async({inputs:re,quarantined:H,quarantinedMetadata:z,testDefinition:M,snapshot:K,runId:j})=>{let F=M.relativeFilePath.includes("..")?M.fullFilePath:M.relativeFilePath;o.onTestBegin(F);let J=i.child({testId:M.id,runId:j}),X=new Bd({logger:J,reporter:new Jd(l),runType:"test-run",runId:j,testMetadata:M,suiteMetadata:void 0,runner:"test-runner"});try{let ue=await Yle({testDefinition:M,snapshot:K,project:a,testInputs:re,quarantined:H,quarantinedMetadata:z,orgId:d,userId:u,runId:j,devicePixelRatio:p,apiClient:l,runGroupTracer:r,outputDir:m,generator:c,retriesOverride:h,urlOverride:g,envName:f,customHeaders:y,regenerateGoldenFiles:S,logUpdate:(xe,Oe)=>o.onTestStatus(F,xe,Oe),...qZ(o,F),logger:J,gitMetadata:b,cacheOptions:E,usageTracker:X,browserTypeOverride:C,remoteBrowserOverride:w,recordVideo:this.params.recordVideo,abortSignal:te.signal});o.onTestEnd(F,ue.status,{recovered:ue.status==="PASSED"&&!!ue.failureRecoveryDetails?.attempts}),this.runResults.push(ue),I?.(ue);}catch(ue){let xe=`Encountered unexpected fatal error when running test '${M.name}'`;J.error({err:ue},xe),R.error({err:ue},xe),qu(ue),P?.(ue),await this.cancel("Fatal error occurred",false);}finally{let ue=this.runQueue[U];ue&&(ue.done=true),await X.flush(s),delete this.runQueue[U];}})(V)};}return await Promise.allSettled(Object.values(this.runQueue).map(x=>x.promise)),{runResults:this.runResults,cancelledRunsById:this.cancelledRunsById,cancelled:this.cancelled,cancellationReason:this.cancellationReason}}};var w3e=200,I3e=new Set(Fj),x3e=new Set(["PASSED","FAILED","CANCELLED"]);function Zle(e){return e.length}function mP(e){return e.filter(t=>I3e.has(t.status)).length}var fE=class{constructor(t,n){this.sink=t;this.runId=n;}reportCompletedSteps(t){this.sink.updateRun(this.runId,{completedSteps:t});}setStatus(t){this.sink.updateRun(this.runId,{status:t});}},pP=class{constructor(t,n,o){this.runGroupId=n;this.logger=o;this.filePath=Xn__default.join(t,BK);}filePath;runs=new Map;startedAt=new Date;runGroupStatus="RUNNING";lastWriteMs=0;registerRun(t){let n=new Date;return this.runs.set(t.runId,{runId:t.runId,testId:t.testId,testName:t.testName,directory:t.directory,status:"RUNNING",completedSteps:0,totalSteps:t.totalSteps,startedAt:n,updatedAt:n}),this.write(true),new fE(this,t.runId)}updateRun(t,n){let o=this.runs.get(t);o&&(n.completedSteps!==void 0&&(o.completedSteps=n.completedSteps,o.completedSteps>o.totalSteps&&(o.totalSteps=o.completedSteps)),n.status!==void 0&&(o.status=n.status),o.updatedAt=new Date,this.write(n.status!==void 0));}finish(t){this.runGroupStatus=t,this.write(true);}write(t){let n=Date.now();if(!t&&n-this.lastWriteMs<w3e)return;this.lastWriteMs=n;let o=[...this.runs.values()],r={schemaVersion:UK,runGroupId:this.runGroupId,status:this.runGroupStatus,totalRuns:o.length,completedRuns:o.filter(s=>x3e.has(s.status)).length,completedSteps:o.reduce((s,a)=>s+a.completedSteps,0),totalSteps:o.reduce((s,a)=>s+a.totalSteps,0),startedAt:this.startedAt,updatedAt:new Date,runs:o},i=`${this.filePath}.tmp`;try{Sr__default.writeFileSync(i,JSON.stringify(r,null,2)),Sr__default.renameSync(i,this.filePath);}catch(s){this.logger.warn({err:s},"Failed to write run progress file");}}};function yH(e){return createHash("sha1").update(e).digest("hex")}var P3e=["tab","view","mode","step"],O3e=[/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i,/^(?=.*\d)[A-Za-z0-9_-]{16,256}$/,/^\d{3,32}$/,/^[0-9A-HJKMNP-TV-Z]{26}$/];function M3e(e){return O3e.some(t=>t.test(e))}function ece(e,t={}){let n;try{n=new URL(e);}catch{return e}let o=new Set(t.queryAllowlist??P3e),i=n.pathname.split("/").map(c=>c.length>0&&M3e(c)?"{id}":c).join("/"),s=[],a=Array.from(n.searchParams.keys()).sort();for(let c of a){if(!o.has(c))continue;let d=n.searchParams.getAll(c).sort();for(let u of d)s.push(`${encodeURIComponent(c)}=${encodeURIComponent(u)}`);}let l=s.length>0?`?${s.join("&")}`:"";return `${n.protocol}//${n.host}${i}${l}`}var N3e=new Set(["id","name","role","type","href","for","placeholder","aria-label","data-testid"]),L3e=/^[A-Za-z0-9_-]{16,256}$|^:r[0-9a-z]{1,32}:$/,k3e=[/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,/\b[0-9a-f]{12,64}\b/gi,/\b[0-9A-HJKMNP-TV-Z]{26}\b/g,/\b\d{5,}\b/g,/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,16}\b/g],tce=new Set(["h1","h2","h3","h4","h5","h6"]),D3e=new Set(["input","select","textarea"]);function F3e(e){let t=e;for(let n of k3e)t=t.replace(n,"{id}");return t}function nce(e){return F3e(e).toLowerCase().replace(/\s+/g," ").trim().replace(/[.,:;!?]+$/u,"").replace(/\s*\d+\s*$/u,"").trim()}function B3e(e){let t=e.length;return t<=4?"txt:xs":t<=16?"txt:s":t<=64?"txt:m":t<=256?"txt:l":"txt:xl"}function U3e(e,t){return e==="href"?t.startsWith("#")?"href:hash":t.startsWith("/")?"href:rel":/^https?:\/\//.test(t)?"href:abs":/^(mailto|tel):/.test(t)?`href:${t.split(":")[0]}`:"href:other":L3e.test(t)?"@gen":nce(t)}function oce(e,t,n){let o=e.tag.toLowerCase(),r=(e.role??e.attributes?.role)?.toLowerCase(),i=Math.min(Math.floor(t/4),6),s=`<${o}@${i}`;if(r!==void 0&&(s+=` role=${r}`),e.attributes!==void 0){let l=Object.keys(e.attributes).filter(c=>N3e.has(c.toLowerCase())).sort();for(let c of l){let d=c.toLowerCase();if(d==="role")continue;let u=e.attributes[c];if(u===void 0)continue;let p=U3e(d,u);s+=` ${d}=${p}`;}}n.tokens.push(s);let a=e.text?.trim();a!==void 0&&a.length>0&&(r==="button"||r==="link"||r==="heading"||o==="button"||o==="a"||o==="label"||tce.has(o)?n.tokens.push(`label=${nce(a)}`):n.tokens.push(B3e(a))),(o==="button"||r==="button")&&(n.counts.buttons+=1),(o==="a"||r==="link")&&(n.counts.links+=1),(D3e.has(o)||r==="textbox"||r==="combobox")&&(n.counts.formFields+=1),(tce.has(o)||r==="heading")&&(n.counts.headings+=1);for(let l of e.children??[])oce(l,t+1,n);}function rce(e){let t={tokens:[],counts:{buttons:0,links:0,formFields:0,headings:0}};return oce(e,0,t),{tokens:t.tokens,counts:t.counts}}function ice(e,t){let n=new TextEncoder().encode(e),o=n.length,r=Math.floor(o/4),i=t>>>0,s=3432918353,a=461845907;for(let u=0;u<r;u++){let p=u*4,m=n[p]|n[p+1]<<8|n[p+2]<<16|n[p+3]<<24;m=Math.imul(m,s),m=m<<15|m>>>17,m=Math.imul(m,a),i^=m,i=i<<13|i>>>19,i=Math.imul(i,5)+3864292196;}let l=0,c=o&3,d=r*4;return c===3&&(l^=n[d+2]<<16),c>=2&&(l^=n[d+1]<<8),c>=1&&(l^=n[d],l=Math.imul(l,s),l=l<<15|l>>>17,l=Math.imul(l,a),i^=l),i^=o,i^=i>>>16,i=Math.imul(i,2246822507),i^=i>>>13,i=Math.imul(i,3266489909),i^=i>>>16,i>>>0}var hP=128,H3e=4294967295,G3e=(()=>{let e=[];for(let t=0;t<hP;t++)e.push(ice(`perm:${t}`,0));return e})();function sce(e){let t=new Uint32Array(hP);for(let o=0;o<hP;o++)t[o]=H3e;let n=new Set(e);for(let o of n)for(let r=0;r<hP;r++){let i=ice(o,G3e[r]);i<t[r]&&(t[r]=i);}return t}var $3e=32;function SH(e){let t=ece(e.url,{queryAllowlist:e.queryAllowlist}),{tokens:n,counts:o}=rce(e.dom),r=[`url:${t}`,`counts:buttons=${o.buttons}`,`counts:links=${o.links}`,`counts:formFields=${o.formFields}`,`counts:headings=${o.headings}`,...n],i=sce(r),s=Buffer.from(i.buffer,i.byteOffset,i.byteLength);return {fingerprintHash:createHash$1("sha256").update(s).digest("hex").slice(0,$3e),minhash:Array.from(i),canonicalUrl:t}}var V3e=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),Gn="\uFFFD",N;(function(e){e[e.EOF=-1]="EOF",e[e.NULL=0]="NULL",e[e.TABULATION=9]="TABULATION",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.LINE_FEED=10]="LINE_FEED",e[e.FORM_FEED=12]="FORM_FEED",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_0=48]="DIGIT_0",e[e.DIGIT_9=57]="DIGIT_9",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",e[e.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_A=97]="LATIN_SMALL_A",e[e.LATIN_SMALL_Z=122]="LATIN_SMALL_Z";})(N||(N={}));var Xi={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function gP(e){return e>=55296&&e<=57343}function ace(e){return e>=56320&&e<=57343}function lce(e,t){return (e-55296)*1024+9216+t}function fP(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function yP(e){return e>=64976&&e<=65007||V3e.has(e)}var ce;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text";})(ce||(ce={}));var W3e=65536,SP=class{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=false,this.lastChunkWritten=false,this.endOfChunkHit=false,this.bufferWaterline=W3e,this.isEol=false,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1;}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,n){let{line:o,col:r,offset:i}=this,s=r+n,a=i+n;return {code:t,startLine:o,endLine:o,startCol:s,endCol:s,startOffset:a,endOffset:a}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)));}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos;}_processSurrogate(t){if(this.pos!==this.html.length-1){let n=this.html.charCodeAt(this.pos+1);if(ace(n))return this.pos++,this._addGap(),lce(t,n)}else if(!this.lastChunkWritten)return this.endOfChunkHit=true,N.EOF;return this._err(ce.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0);}write(t,n){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=false,this.lastChunkWritten=n;}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=false;}startsWith(t,n){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,false;if(n)return this.html.startsWith(t,this.pos);for(let o=0;o<t.length;o++)if((this.html.charCodeAt(this.pos+o)|32)!==t.charCodeAt(o))return false;return true}peek(t){let n=this.pos+t;if(n>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,N.EOF;let o=this.html.charCodeAt(n);return o===N.CARRIAGE_RETURN?N.LINE_FEED:o}advance(){if(this.pos++,this.isEol&&(this.isEol=false,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,N.EOF;let t=this.html.charCodeAt(this.pos);return t===N.CARRIAGE_RETURN?(this.isEol=true,this.skipNextNewLine=true,N.LINE_FEED):t===N.LINE_FEED&&(this.isEol=true,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=false,this._addGap(),this.advance()):(this.skipNextNewLine=false,gP(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===N.LINE_FEED||t===N.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){fP(t)?this._err(ce.controlCharacterInInputStream):yP(t)&&this._err(ce.noncharacterInInputStream);}retreat(t){for(this.pos-=t;this.pos<this.lastGapPos;)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=false;}};var Kt;(function(e){e[e.CHARACTER=0]="CHARACTER",e[e.NULL_CHARACTER=1]="NULL_CHARACTER",e[e.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",e[e.START_TAG=3]="START_TAG",e[e.END_TAG=4]="END_TAG",e[e.COMMENT=5]="COMMENT",e[e.DOCTYPE=6]="DOCTYPE",e[e.EOF=7]="EOF",e[e.HIBERNATION=8]="HIBERNATION";})(Kt||(Kt={}));function bP(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null}var K3e=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function cce(e){return e>=55296&&e<=57343||e>1114111?65533:K3e.get(e)??e}function dce(e){let t=atob(e),n=t.length&-2,o=new Uint16Array(n/2);for(let r=0,i=0;r<n;r+=2){let s=t.charCodeAt(r),a=t.charCodeAt(r+1);o[i++]=s|a<<8;}return o}var bH=dce("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var Ri;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.FLAG13=8192]="FLAG13",e[e.BRANCH_LENGTH=8064]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE";})(Ri||(Ri={}));var No;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z";})(No||(No={}));var uce=32;function TH(e){return e>=No.ZERO&&e<=No.NINE}function Y3e(e){return e>=No.UPPER_A&&e<=No.UPPER_F||e>=No.LOWER_A&&e<=No.LOWER_F}function J3e(e){return e>=No.UPPER_A&&e<=No.UPPER_Z||e>=No.LOWER_A&&e<=No.LOWER_Z||TH(e)}function X3e(e){return e===No.EQUALS||J3e(e)}var Gr;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity";})(Gr||(Gr={}));var ad;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute";})(ad||(ad={}));var TP=class{decodeTree;emitCodePoint;errors;constructor(t,n,o){this.decodeTree=t,this.emitCodePoint=n,this.errors=o;}state=Gr.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=ad.Strict;runConsumed=0;startEntity(t){this.decodeMode=t,this.state=Gr.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0;}write(t,n){switch(this.state){case Gr.EntityStart:return t.charCodeAt(n)===No.NUM?(this.state=Gr.NumericStart,this.consumed+=1,this.stateNumericStart(t,n+1)):(this.state=Gr.NamedEntity,this.stateNamedEntity(t,n));case Gr.NumericStart:return this.stateNumericStart(t,n);case Gr.NumericDecimal:return this.stateNumericDecimal(t,n);case Gr.NumericHex:return this.stateNumericHex(t,n);case Gr.NamedEntity:return this.stateNamedEntity(t,n)}}stateNumericStart(t,n){return n>=t.length?-1:(t.charCodeAt(n)|uce)===No.LOWER_X?(this.state=Gr.NumericHex,this.consumed+=1,this.stateNumericHex(t,n+1)):(this.state=Gr.NumericDecimal,this.stateNumericDecimal(t,n))}stateNumericHex(t,n){for(;n<t.length;){let o=t.charCodeAt(n);if(TH(o)||Y3e(o)){let r=o<=No.NINE?o-No.ZERO:(o|uce)-No.LOWER_A+10;this.result=this.result*16+r,this.consumed++,n++;}else return this.emitNumericEntity(o,3)}return -1}stateNumericDecimal(t,n){for(;n<t.length;){let o=t.charCodeAt(n);if(TH(o))this.result=this.result*10+(o-No.ZERO),this.consumed++,n++;else return this.emitNumericEntity(o,2)}return -1}emitNumericEntity(t,n){if(this.consumed<=n)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===No.SEMI)this.consumed+=1;else if(this.decodeMode===ad.Strict)return 0;return this.emitCodePoint(cce(this.result),this.consumed),this.errors&&(t!==No.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,n){let{decodeTree:o}=this,r=o[this.treeIndex],i=(r&Ri.VALUE_LENGTH)>>14;for(;n<t.length;){if(i===0&&r&Ri.FLAG13){let a=(r&Ri.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let l=r&Ri.JUMP_TABLE;if(t.charCodeAt(n)!==l)return this.result===0?0:this.emitNotTerminatedNamedEntity();n++,this.excess++,this.runConsumed++;}for(;this.runConsumed<a;){if(n>=t.length)return -1;let l=this.runConsumed-1,c=o[this.treeIndex+1+(l>>1)],d=l%2===0?c&255:c>>8&255;if(t.charCodeAt(n)!==d)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();n++,this.excess++,this.runConsumed++;}this.runConsumed=0,this.treeIndex+=1+(a>>1),r=o[this.treeIndex],i=(r&Ri.VALUE_LENGTH)>>14;}if(n>=t.length)break;let s=t.charCodeAt(n);if(s===No.SEMI&&i!==0&&r&Ri.FLAG13)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=Q3e(o,r,this.treeIndex+Math.max(1,i),s),this.treeIndex<0)return this.result===0||this.decodeMode===ad.Attribute&&(i===0||X3e(s))?0:this.emitNotTerminatedNamedEntity();if(r=o[this.treeIndex],i=(r&Ri.VALUE_LENGTH)>>14,i!==0){if(s===No.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==ad.Strict&&!(r&Ri.FLAG13)&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0);}n++,this.excess++;}return -1}emitNotTerminatedNamedEntity(){let{result:t,decodeTree:n}=this,o=(n[t]&Ri.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,o,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,n,o){let{decodeTree:r}=this;return this.emitCodePoint(n===1?r[t]&~(Ri.VALUE_LENGTH|Ri.FLAG13):r[t+1],o),n===3&&this.emitCodePoint(r[t+2],o),o}end(){switch(this.state){case Gr.NamedEntity:return this.result!==0&&(this.decodeMode!==ad.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Gr.NumericDecimal:return this.emitNumericEntity(0,2);case Gr.NumericHex:return this.emitNumericEntity(0,3);case Gr.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Gr.EntityStart:return 0}}};function Q3e(e,t,n,o){let r=(t&Ri.BRANCH_LENGTH)>>7,i=t&Ri.JUMP_TABLE;if(r===0)return i!==0&&o===i?n:-1;if(i){let c=o-i;return c<0||c>=r?-1:e[n+c]-1}let s=r+1>>1,a=0,l=r-1;for(;a<=l;){let c=a+l>>>1,d=c>>1,p=e[n+d]>>(c&1)*8&255;if(p<o)a=c+1;else if(p>o)l=c-1;else return e[n+s+c]}return -1}var Te;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/";})(Te||(Te={}));var Eu;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size";})(Eu||(Eu={}));var Qi;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks";})(Qi||(Qi={}));var oe;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp";})(oe||(oe={}));var T;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP";})(T||(T={}));var Z3e=new Map([[oe.A,T.A],[oe.ADDRESS,T.ADDRESS],[oe.ANNOTATION_XML,T.ANNOTATION_XML],[oe.APPLET,T.APPLET],[oe.AREA,T.AREA],[oe.ARTICLE,T.ARTICLE],[oe.ASIDE,T.ASIDE],[oe.B,T.B],[oe.BASE,T.BASE],[oe.BASEFONT,T.BASEFONT],[oe.BGSOUND,T.BGSOUND],[oe.BIG,T.BIG],[oe.BLOCKQUOTE,T.BLOCKQUOTE],[oe.BODY,T.BODY],[oe.BR,T.BR],[oe.BUTTON,T.BUTTON],[oe.CAPTION,T.CAPTION],[oe.CENTER,T.CENTER],[oe.CODE,T.CODE],[oe.COL,T.COL],[oe.COLGROUP,T.COLGROUP],[oe.DD,T.DD],[oe.DESC,T.DESC],[oe.DETAILS,T.DETAILS],[oe.DIALOG,T.DIALOG],[oe.DIR,T.DIR],[oe.DIV,T.DIV],[oe.DL,T.DL],[oe.DT,T.DT],[oe.EM,T.EM],[oe.EMBED,T.EMBED],[oe.FIELDSET,T.FIELDSET],[oe.FIGCAPTION,T.FIGCAPTION],[oe.FIGURE,T.FIGURE],[oe.FONT,T.FONT],[oe.FOOTER,T.FOOTER],[oe.FOREIGN_OBJECT,T.FOREIGN_OBJECT],[oe.FORM,T.FORM],[oe.FRAME,T.FRAME],[oe.FRAMESET,T.FRAMESET],[oe.H1,T.H1],[oe.H2,T.H2],[oe.H3,T.H3],[oe.H4,T.H4],[oe.H5,T.H5],[oe.H6,T.H6],[oe.HEAD,T.HEAD],[oe.HEADER,T.HEADER],[oe.HGROUP,T.HGROUP],[oe.HR,T.HR],[oe.HTML,T.HTML],[oe.I,T.I],[oe.IMG,T.IMG],[oe.IMAGE,T.IMAGE],[oe.INPUT,T.INPUT],[oe.IFRAME,T.IFRAME],[oe.KEYGEN,T.KEYGEN],[oe.LABEL,T.LABEL],[oe.LI,T.LI],[oe.LINK,T.LINK],[oe.LISTING,T.LISTING],[oe.MAIN,T.MAIN],[oe.MALIGNMARK,T.MALIGNMARK],[oe.MARQUEE,T.MARQUEE],[oe.MATH,T.MATH],[oe.MENU,T.MENU],[oe.META,T.META],[oe.MGLYPH,T.MGLYPH],[oe.MI,T.MI],[oe.MO,T.MO],[oe.MN,T.MN],[oe.MS,T.MS],[oe.MTEXT,T.MTEXT],[oe.NAV,T.NAV],[oe.NOBR,T.NOBR],[oe.NOFRAMES,T.NOFRAMES],[oe.NOEMBED,T.NOEMBED],[oe.NOSCRIPT,T.NOSCRIPT],[oe.OBJECT,T.OBJECT],[oe.OL,T.OL],[oe.OPTGROUP,T.OPTGROUP],[oe.OPTION,T.OPTION],[oe.P,T.P],[oe.PARAM,T.PARAM],[oe.PLAINTEXT,T.PLAINTEXT],[oe.PRE,T.PRE],[oe.RB,T.RB],[oe.RP,T.RP],[oe.RT,T.RT],[oe.RTC,T.RTC],[oe.RUBY,T.RUBY],[oe.S,T.S],[oe.SCRIPT,T.SCRIPT],[oe.SEARCH,T.SEARCH],[oe.SECTION,T.SECTION],[oe.SELECT,T.SELECT],[oe.SOURCE,T.SOURCE],[oe.SMALL,T.SMALL],[oe.SPAN,T.SPAN],[oe.STRIKE,T.STRIKE],[oe.STRONG,T.STRONG],[oe.STYLE,T.STYLE],[oe.SUB,T.SUB],[oe.SUMMARY,T.SUMMARY],[oe.SUP,T.SUP],[oe.TABLE,T.TABLE],[oe.TBODY,T.TBODY],[oe.TEMPLATE,T.TEMPLATE],[oe.TEXTAREA,T.TEXTAREA],[oe.TFOOT,T.TFOOT],[oe.TD,T.TD],[oe.TH,T.TH],[oe.THEAD,T.THEAD],[oe.TITLE,T.TITLE],[oe.TR,T.TR],[oe.TRACK,T.TRACK],[oe.TT,T.TT],[oe.U,T.U],[oe.UL,T.UL],[oe.SVG,T.SVG],[oe.VAR,T.VAR],[oe.WBR,T.WBR],[oe.XMP,T.XMP]]);function Fh(e){var t;return (t=Z3e.get(e))!==null&&t!==void 0?t:T.UNKNOWN}var _e=T,pce={[Te.HTML]:new Set([_e.ADDRESS,_e.APPLET,_e.AREA,_e.ARTICLE,_e.ASIDE,_e.BASE,_e.BASEFONT,_e.BGSOUND,_e.BLOCKQUOTE,_e.BODY,_e.BR,_e.BUTTON,_e.CAPTION,_e.CENTER,_e.COL,_e.COLGROUP,_e.DD,_e.DETAILS,_e.DIR,_e.DIV,_e.DL,_e.DT,_e.EMBED,_e.FIELDSET,_e.FIGCAPTION,_e.FIGURE,_e.FOOTER,_e.FORM,_e.FRAME,_e.FRAMESET,_e.H1,_e.H2,_e.H3,_e.H4,_e.H5,_e.H6,_e.HEAD,_e.HEADER,_e.HGROUP,_e.HR,_e.HTML,_e.IFRAME,_e.IMG,_e.INPUT,_e.LI,_e.LINK,_e.LISTING,_e.MAIN,_e.MARQUEE,_e.MENU,_e.META,_e.NAV,_e.NOEMBED,_e.NOFRAMES,_e.NOSCRIPT,_e.OBJECT,_e.OL,_e.P,_e.PARAM,_e.PLAINTEXT,_e.PRE,_e.SCRIPT,_e.SECTION,_e.SELECT,_e.SOURCE,_e.STYLE,_e.SUMMARY,_e.TABLE,_e.TBODY,_e.TD,_e.TEMPLATE,_e.TEXTAREA,_e.TFOOT,_e.TH,_e.THEAD,_e.TITLE,_e.TR,_e.TRACK,_e.UL,_e.WBR,_e.XMP]),[Te.MATHML]:new Set([_e.MI,_e.MO,_e.MN,_e.MS,_e.MTEXT,_e.ANNOTATION_XML]),[Te.SVG]:new Set([_e.TITLE,_e.FOREIGN_OBJECT,_e.DESC]),[Te.XLINK]:new Set,[Te.XML]:new Set,[Te.XMLNS]:new Set},yE=new Set([_e.H1,_e.H2,_e.H3,_e.H4,_e.H5,_e.H6]);new Set([oe.STYLE,oe.SCRIPT,oe.XMP,oe.IFRAME,oe.NOEMBED,oe.NOFRAMES,oe.PLAINTEXT]);var B;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND";})(B||(B={}));var wi={DATA:B.DATA,RCDATA:B.RCDATA,RAWTEXT:B.RAWTEXT,SCRIPT_DATA:B.SCRIPT_DATA,PLAINTEXT:B.PLAINTEXT,CDATA_SECTION:B.CDATA_SECTION};function t4e(e){return e>=N.DIGIT_0&&e<=N.DIGIT_9}function SE(e){return e>=N.LATIN_CAPITAL_A&&e<=N.LATIN_CAPITAL_Z}function n4e(e){return e>=N.LATIN_SMALL_A&&e<=N.LATIN_SMALL_Z}function nm(e){return n4e(e)||SE(e)}function mce(e){return nm(e)||t4e(e)}function AP(e){return e+32}function gce(e){return e===N.SPACE||e===N.LINE_FEED||e===N.TABULATION||e===N.FORM_FEED}function hce(e){return gce(e)||e===N.SOLIDUS||e===N.GREATER_THAN_SIGN}function o4e(e){return e===N.NULL?ce.nullCharacterReference:e>1114111?ce.characterReferenceOutsideUnicodeRange:gP(e)?ce.surrogateCharacterReference:yP(e)?ce.noncharacterCharacterReference:fP(e)||e===N.CARRIAGE_RETURN?ce.controlCharacterReference:null}var bE=class{constructor(t,n){this.options=t,this.handler=n,this.paused=false,this.inLoop=false,this.inForeignNode=false,this.lastStartTagName="",this.active=false,this.state=B.DATA,this.returnState=B.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new SP(n),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new TP(bH,(o,r)=>{this.preprocessor.pos=this.entityStartPos+r-1,this._flushCodePointConsumedAsCharacterReference(o);},n.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(ce.missingSemicolonAfterCharacterReference,1);},absenceOfDigitsInNumericCharacterReference:o=>{this._err(ce.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+o);},validateNumericCharacterReference:o=>{let r=o4e(o);r&&this._err(r,1);}}:void 0);}_err(t,n=0){var o,r;(r=(o=this.handler).onParseError)===null||r===void 0||r.call(o,this.preprocessor.getError(t,n));}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=true;this.active&&!this.paused;){this.consumedAfterSnapshot=0;let t=this._consume();this._ensureHibernation()||this._callState(t);}this.inLoop=false;}}pause(){this.paused=true;}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=false,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.());}write(t,n,o){this.active=true,this.preprocessor.write(t,n),this._runParsingLoop(),this.paused||o?.();}insertHtmlAtCurrentPos(t){this.active=true,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop();}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=false,true):false}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let n=0;n<t;n++)this.preprocessor.advance();}_consumeSequenceIfMatch(t,n){return this.preprocessor.startsWith(t,n)?(this._advanceBy(t.length-1),true):false}_createStartTagToken(){this.currentToken={type:Kt.START_TAG,tagName:"",tagID:T.UNKNOWN,selfClosing:false,ackSelfClosing:false,attrs:[],location:this.getCurrentLocation(1)};}_createEndTagToken(){this.currentToken={type:Kt.END_TAG,tagName:"",tagID:T.UNKNOWN,selfClosing:false,ackSelfClosing:false,attrs:[],location:this.getCurrentLocation(2)};}_createCommentToken(t){this.currentToken={type:Kt.COMMENT,data:"",location:this.getCurrentLocation(t)};}_createDoctypeToken(t){this.currentToken={type:Kt.DOCTYPE,name:t,forceQuirks:false,publicId:null,systemId:null,location:this.currentLocation};}_createCharacterToken(t,n){this.currentCharacterToken={type:t,chars:n,location:this.currentLocation};}_createAttr(t){this.currentAttr={name:t,value:""},this.currentLocation=this.getCurrentLocation(0);}_leaveAttrName(){var t,n;let o=this.currentToken;if(bP(o,this.currentAttr.name)===null){if(o.attrs.push(this.currentAttr),o.location&&this.currentLocation){let r=(t=(n=o.location).attrs)!==null&&t!==void 0?t:n.attrs=Object.create(null);r[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue();}}else this._err(ce.duplicateAttribute);}_leaveAttrValue(){this.currentLocation&&(this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset);}prepareToken(t){this._emitCurrentCharacterToken(t.location),this.currentToken=null,t.location&&(t.location.endLine=this.preprocessor.line,t.location.endCol=this.preprocessor.col+1,t.location.endOffset=this.preprocessor.offset+1),this.currentLocation=this.getCurrentLocation(-1);}emitCurrentTagToken(){let t=this.currentToken;this.prepareToken(t),t.tagID=Fh(t.tagName),t.type===Kt.START_TAG?(this.lastStartTagName=t.tagName,this.handler.onStartTag(t)):(t.attrs.length>0&&this._err(ce.endTagWithAttributes),t.selfClosing&&this._err(ce.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk();}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk();}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk();}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case Kt.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case Kt.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case Kt.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null;}}_emitEOFToken(){let t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:Kt.EOF,location:t}),this.active=false;}_appendCharToCurrentCharacterToken(t,n){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=n;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,n);}_emitCodePoint(t){let n=gce(t)?Kt.WHITESPACE_CHARACTER:t===N.NULL?Kt.NULL_CHARACTER:Kt.CHARACTER;this._appendCharToCurrentCharacterToken(n,t<65536?String.fromCharCode(t):String.fromCodePoint(t));}_emitChars(t){this._appendCharToCurrentCharacterToken(Kt.CHARACTER,t);}_startCharacterReference(){this.returnState=this.state,this.state=B.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?ad.Attribute:ad.Legacy);}_isCharacterReferenceInAttribute(){return this.returnState===B.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===B.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===B.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t);}_callState(t){switch(this.state){case B.DATA:{this._stateData(t);break}case B.RCDATA:{this._stateRcdata(t);break}case B.RAWTEXT:{this._stateRawtext(t);break}case B.SCRIPT_DATA:{this._stateScriptData(t);break}case B.PLAINTEXT:{this._statePlaintext(t);break}case B.TAG_OPEN:{this._stateTagOpen(t);break}case B.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case B.TAG_NAME:{this._stateTagName(t);break}case B.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case B.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case B.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case B.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case B.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case B.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case B.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case B.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case B.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case B.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case B.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case B.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case B.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case B.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case B.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case B.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case B.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case B.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case B.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case B.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case B.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case B.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case B.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case B.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case B.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case B.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case B.BOGUS_COMMENT:{this._stateBogusComment(t);break}case B.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case B.COMMENT_START:{this._stateCommentStart(t);break}case B.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case B.COMMENT:{this._stateComment(t);break}case B.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case B.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case B.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case B.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case B.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case B.COMMENT_END:{this._stateCommentEnd(t);break}case B.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case B.DOCTYPE:{this._stateDoctype(t);break}case B.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case B.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case B.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case B.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case B.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case B.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case B.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case B.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case B.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case B.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case B.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case B.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case B.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case B.CDATA_SECTION:{this._stateCdataSection(t);break}case B.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case B.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case B.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case B.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case N.LESS_THAN_SIGN:{this.state=B.TAG_OPEN;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitCodePoint(t);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateRcdata(t){switch(t){case N.AMPERSAND:{this._startCharacterReference();break}case N.LESS_THAN_SIGN:{this.state=B.RCDATA_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateRawtext(t){switch(t){case N.LESS_THAN_SIGN:{this.state=B.RAWTEXT_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptData(t){switch(t){case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_statePlaintext(t){switch(t){case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateTagOpen(t){if(nm(t))this._createStartTagToken(),this.state=B.TAG_NAME,this._stateTagName(t);else switch(t){case N.EXCLAMATION_MARK:{this.state=B.MARKUP_DECLARATION_OPEN;break}case N.SOLIDUS:{this.state=B.END_TAG_OPEN;break}case N.QUESTION_MARK:{this._err(ce.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=B.BOGUS_COMMENT,this._stateBogusComment(t);break}case N.EOF:{this._err(ce.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(ce.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=B.DATA,this._stateData(t);}}_stateEndTagOpen(t){if(nm(t))this._createEndTagToken(),this.state=B.TAG_NAME,this._stateTagName(t);else switch(t){case N.GREATER_THAN_SIGN:{this._err(ce.missingEndTagName),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(ce.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=B.BOGUS_COMMENT,this._stateBogusComment(t);}}_stateTagName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BEFORE_ATTRIBUTE_NAME;break}case N.SOLIDUS:{this.state=B.SELF_CLOSING_START_TAG;break}case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentTagToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.tagName+=Gn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:n.tagName+=String.fromCodePoint(SE(t)?AP(t):t);}}_stateRcdataLessThanSign(t){t===N.SOLIDUS?this.state=B.RCDATA_END_TAG_OPEN:(this._emitChars("<"),this.state=B.RCDATA,this._stateRcdata(t));}_stateRcdataEndTagOpen(t){nm(t)?(this.state=B.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(t)):(this._emitChars("</"),this.state=B.RCDATA,this._stateRcdata(t));}handleSpecialEndTag(t){if(!this.preprocessor.startsWith(this.lastStartTagName,false))return !this._ensureHibernation();this._createEndTagToken();let n=this.currentToken;switch(n.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=B.BEFORE_ATTRIBUTE_NAME,false;case N.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=B.SELF_CLOSING_START_TAG,false;case N.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=B.DATA,false;default:return !this._ensureHibernation()}}_stateRcdataEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=B.RCDATA,this._stateRcdata(t));}_stateRawtextLessThanSign(t){t===N.SOLIDUS?this.state=B.RAWTEXT_END_TAG_OPEN:(this._emitChars("<"),this.state=B.RAWTEXT,this._stateRawtext(t));}_stateRawtextEndTagOpen(t){nm(t)?(this.state=B.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(t)):(this._emitChars("</"),this.state=B.RAWTEXT,this._stateRawtext(t));}_stateRawtextEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=B.RAWTEXT,this._stateRawtext(t));}_stateScriptDataLessThanSign(t){switch(t){case N.SOLIDUS:{this.state=B.SCRIPT_DATA_END_TAG_OPEN;break}case N.EXCLAMATION_MARK:{this.state=B.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=B.SCRIPT_DATA,this._stateScriptData(t);}}_stateScriptDataEndTagOpen(t){nm(t)?(this.state=B.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(t)):(this._emitChars("</"),this.state=B.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=B.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscapeStart(t){t===N.HYPHEN_MINUS?(this.state=B.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-")):(this.state=B.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscapeStartDash(t){t===N.HYPHEN_MINUS?(this.state=B.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-")):(this.state=B.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscaped(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptDataEscapedDash(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=B.SCRIPT_DATA_ESCAPED,this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=B.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataEscapedDashDash(t){switch(t){case N.HYPHEN_MINUS:{this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.GREATER_THAN_SIGN:{this.state=B.SCRIPT_DATA,this._emitChars(">");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=B.SCRIPT_DATA_ESCAPED,this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=B.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataEscapedLessThanSign(t){t===N.SOLIDUS?this.state=B.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:nm(t)?(this._emitChars("<"),this.state=B.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=B.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataEscapedEndTagOpen(t){nm(t)?(this.state=B.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("</"),this.state=B.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataEscapedEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=B.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataDoubleEscapeStart(t){if(this.preprocessor.startsWith(Xi.SCRIPT,false)&&hce(this.preprocessor.peek(Xi.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n<Xi.SCRIPT.length;n++)this._emitCodePoint(this._consume());this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED;}else this._ensureHibernation()||(this.state=B.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataDoubleEscaped(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedDash(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedDashDash(t){switch(t){case N.HYPHEN_MINUS:{this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.GREATER_THAN_SIGN:{this.state=B.SCRIPT_DATA,this._emitChars(">");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedLessThanSign(t){t===N.SOLIDUS?(this.state=B.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t));}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(Xi.SCRIPT,false)&&hce(this.preprocessor.peek(Xi.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n<Xi.SCRIPT.length;n++)this._emitCodePoint(this._consume());this.state=B.SCRIPT_DATA_ESCAPED;}else this._ensureHibernation()||(this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t));}_stateBeforeAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.SOLIDUS:case N.GREATER_THAN_SIGN:case N.EOF:{this.state=B.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(t);break}case N.EQUALS_SIGN:{this._err(ce.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=B.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=B.ATTRIBUTE_NAME,this._stateAttributeName(t);}}_stateAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:case N.SOLIDUS:case N.GREATER_THAN_SIGN:case N.EOF:{this._leaveAttrName(),this.state=B.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(t);break}case N.EQUALS_SIGN:{this._leaveAttrName(),this.state=B.BEFORE_ATTRIBUTE_VALUE;break}case N.QUOTATION_MARK:case N.APOSTROPHE:case N.LESS_THAN_SIGN:{this._err(ce.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(t);break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.name+=Gn;break}default:this.currentAttr.name+=String.fromCodePoint(SE(t)?AP(t):t);}}_stateAfterAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.SOLIDUS:{this.state=B.SELF_CLOSING_START_TAG;break}case N.EQUALS_SIGN:{this.state=B.BEFORE_ATTRIBUTE_VALUE;break}case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=B.ATTRIBUTE_NAME,this._stateAttributeName(t);}}_stateBeforeAttributeValue(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{this.state=B.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this.state=B.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingAttributeValue),this.state=B.DATA,this.emitCurrentTagToken();break}default:this.state=B.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(t);}}_stateAttributeValueDoubleQuoted(t){switch(t){case N.QUOTATION_MARK:{this.state=B.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Gn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAttributeValueSingleQuoted(t){switch(t){case N.APOSTROPHE:{this.state=B.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Gn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAttributeValueUnquoted(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this._leaveAttrValue(),this.state=B.BEFORE_ATTRIBUTE_NAME;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=B.DATA,this.emitCurrentTagToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Gn;break}case N.QUOTATION_MARK:case N.APOSTROPHE:case N.LESS_THAN_SIGN:case N.EQUALS_SIGN:case N.GRAVE_ACCENT:{this._err(ce.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(t);break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAfterAttributeValueQuoted(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this._leaveAttrValue(),this.state=B.BEFORE_ATTRIBUTE_NAME;break}case N.SOLIDUS:{this._leaveAttrValue(),this.state=B.SELF_CLOSING_START_TAG;break}case N.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=B.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._err(ce.missingWhitespaceBetweenAttributes),this.state=B.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(t);}}_stateSelfClosingStartTag(t){switch(t){case N.GREATER_THAN_SIGN:{let n=this.currentToken;n.selfClosing=true,this.state=B.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._err(ce.unexpectedSolidusInTag),this.state=B.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(t);}}_stateBogusComment(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentComment(n);break}case N.EOF:{this.emitCurrentComment(n),this._emitEOFToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.data+=Gn;break}default:n.data+=String.fromCodePoint(t);}}_stateMarkupDeclarationOpen(t){this._consumeSequenceIfMatch(Xi.DASH_DASH,true)?(this._createCommentToken(Xi.DASH_DASH.length+1),this.state=B.COMMENT_START):this._consumeSequenceIfMatch(Xi.DOCTYPE,false)?(this.currentLocation=this.getCurrentLocation(Xi.DOCTYPE.length+1),this.state=B.DOCTYPE):this._consumeSequenceIfMatch(Xi.CDATA_START,true)?this.inForeignNode?this.state=B.CDATA_SECTION:(this._err(ce.cdataInHtmlContent),this._createCommentToken(Xi.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=B.BOGUS_COMMENT):this._ensureHibernation()||(this._err(ce.incorrectlyOpenedComment),this._createCommentToken(2),this.state=B.BOGUS_COMMENT,this._stateBogusComment(t));}_stateCommentStart(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.COMMENT_START_DASH;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptClosingOfEmptyComment),this.state=B.DATA;let n=this.currentToken;this.emitCurrentComment(n);break}default:this.state=B.COMMENT,this._stateComment(t);}}_stateCommentStartDash(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=B.COMMENT_END;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptClosingOfEmptyComment),this.state=B.DATA,this.emitCurrentComment(n);break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="-",this.state=B.COMMENT,this._stateComment(t);}}_stateComment(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=B.COMMENT_END_DASH;break}case N.LESS_THAN_SIGN:{n.data+="<",this.state=B.COMMENT_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.data+=Gn;break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+=String.fromCodePoint(t);}}_stateCommentLessThanSign(t){let n=this.currentToken;switch(t){case N.EXCLAMATION_MARK:{n.data+="!",this.state=B.COMMENT_LESS_THAN_SIGN_BANG;break}case N.LESS_THAN_SIGN:{n.data+="<";break}default:this.state=B.COMMENT,this._stateComment(t);}}_stateCommentLessThanSignBang(t){t===N.HYPHEN_MINUS?this.state=B.COMMENT_LESS_THAN_SIGN_BANG_DASH:(this.state=B.COMMENT,this._stateComment(t));}_stateCommentLessThanSignBangDash(t){t===N.HYPHEN_MINUS?this.state=B.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:(this.state=B.COMMENT_END_DASH,this._stateCommentEndDash(t));}_stateCommentLessThanSignBangDashDash(t){t!==N.GREATER_THAN_SIGN&&t!==N.EOF&&this._err(ce.nestedComment),this.state=B.COMMENT_END,this._stateCommentEnd(t);}_stateCommentEndDash(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=B.COMMENT_END;break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="-",this.state=B.COMMENT,this._stateComment(t);}}_stateCommentEnd(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentComment(n);break}case N.EXCLAMATION_MARK:{this.state=B.COMMENT_END_BANG;break}case N.HYPHEN_MINUS:{n.data+="-";break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="--",this.state=B.COMMENT,this._stateComment(t);}}_stateCommentEndBang(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{n.data+="--!",this.state=B.COMMENT_END_DASH;break}case N.GREATER_THAN_SIGN:{this._err(ce.incorrectlyClosedComment),this.state=B.DATA,this.emitCurrentComment(n);break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="--!",this.state=B.COMMENT,this._stateComment(t);}}_stateDoctype(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BEFORE_DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this.state=B.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(t);break}case N.EOF:{this._err(ce.eofInDoctype),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingWhitespaceBeforeDoctypeName),this.state=B.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(t);}}_stateBeforeDoctypeName(t){if(SE(t))this._createDoctypeToken(String.fromCharCode(AP(t))),this.state=B.DOCTYPE_NAME;else switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.NULL:{this._err(ce.unexpectedNullCharacter),this._createDoctypeToken(Gn),this.state=B.DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeName),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(t)),this.state=B.DOCTYPE_NAME;}}_stateDoctypeName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.AFTER_DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.name+=Gn;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.name+=String.fromCodePoint(SE(t)?AP(t):t);}}_stateAfterDoctypeName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._consumeSequenceIfMatch(Xi.PUBLIC,false)?this.state=B.AFTER_DOCTYPE_PUBLIC_KEYWORD:this._consumeSequenceIfMatch(Xi.SYSTEM,false)?this.state=B.AFTER_DOCTYPE_SYSTEM_KEYWORD:this._ensureHibernation()||(this._err(ce.invalidCharacterSequenceAfterDoctypeName),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t));}}_stateAfterDoctypePublicKeyword(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceAfterDoctypePublicKeyword),n.publicId="",this.state=B.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceAfterDoctypePublicKeyword),n.publicId="",this.state=B.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypePublicIdentifier),n.forceQuirks=true,this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypePublicIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBeforeDoctypePublicIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{n.publicId="",this.state=B.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.publicId="",this.state=B.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypePublicIdentifier),n.forceQuirks=true,this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypePublicIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateDoctypePublicIdentifierDoubleQuoted(t){let n=this.currentToken;switch(t){case N.QUOTATION_MARK:{this.state=B.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.publicId+=Gn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypePublicIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.publicId+=String.fromCodePoint(t);}}_stateDoctypePublicIdentifierSingleQuoted(t){let n=this.currentToken;switch(t){case N.APOSTROPHE:{this.state=B.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.publicId+=Gn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypePublicIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.publicId+=String.fromCodePoint(t);}}_stateAfterDoctypePublicIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBetweenDoctypePublicAndSystemIdentifiers(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.QUOTATION_MARK:{n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateAfterDoctypeSystemKeyword(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceAfterDoctypeSystemKeyword),n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceAfterDoctypeSystemKeyword),n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBeforeDoctypeSystemIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateDoctypeSystemIdentifierDoubleQuoted(t){let n=this.currentToken;switch(t){case N.QUOTATION_MARK:{this.state=B.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.systemId+=Gn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypeSystemIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.systemId+=String.fromCodePoint(t);}}_stateDoctypeSystemIdentifierSingleQuoted(t){let n=this.currentToken;switch(t){case N.APOSTROPHE:{this.state=B.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.systemId+=Gn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypeSystemIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.systemId+=String.fromCodePoint(t);}}_stateAfterDoctypeSystemIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBogusDoctype(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.NULL:{this._err(ce.unexpectedNullCharacter);break}case N.EOF:{this.emitCurrentDoctype(n),this._emitEOFToken();break}}}_stateCdataSection(t){switch(t){case N.RIGHT_SQUARE_BRACKET:{this.state=B.CDATA_SECTION_BRACKET;break}case N.EOF:{this._err(ce.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateCdataSectionBracket(t){t===N.RIGHT_SQUARE_BRACKET?this.state=B.CDATA_SECTION_END:(this._emitChars("]"),this.state=B.CDATA_SECTION,this._stateCdataSection(t));}_stateCdataSectionEnd(t){switch(t){case N.GREATER_THAN_SIGN:{this.state=B.DATA;break}case N.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=B.CDATA_SECTION,this._stateCdataSection(t);}}_stateCharacterReference(){let t=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(t<0)if(this.preprocessor.lastChunkWritten)t=this.entityDecoder.end();else {this.active=false,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=true;return}t===0?(this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(N.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&mce(this.preprocessor.peek(1))?B.AMBIGUOUS_AMPERSAND:this.returnState):this.state=this.returnState;}_stateAmbiguousAmpersand(t){mce(t)?this._flushCodePointConsumedAsCharacterReference(t):(t===N.SEMICOLON&&this._err(ce.unknownNamedCharacterReference),this.state=this.returnState,this._callState(t));}};var bce=new Set([T.DD,T.DT,T.LI,T.OPTGROUP,T.OPTION,T.P,T.RB,T.RP,T.RT,T.RTC]),fce=new Set([...bce,T.CAPTION,T.COLGROUP,T.TBODY,T.TD,T.TFOOT,T.TH,T.THEAD,T.TR]),EP=new Set([T.APPLET,T.CAPTION,T.HTML,T.MARQUEE,T.OBJECT,T.TABLE,T.TD,T.TEMPLATE,T.TH]),r4e=new Set([...EP,T.OL,T.UL]),i4e=new Set([...EP,T.BUTTON]),yce=new Set([T.ANNOTATION_XML,T.MI,T.MN,T.MO,T.MS,T.MTEXT]),Sce=new Set([T.DESC,T.FOREIGN_OBJECT,T.TITLE]),s4e=new Set([T.TR,T.TEMPLATE,T.HTML]),a4e=new Set([T.TBODY,T.TFOOT,T.THEAD,T.TEMPLATE,T.HTML]),l4e=new Set([T.TABLE,T.TEMPLATE,T.HTML]),c4e=new Set([T.TD,T.TH]),CP=class{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(t,n,o){this.treeAdapter=n,this.handler=o,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=T.UNKNOWN,this.current=t;}_indexOf(t){return this.items.lastIndexOf(t,this.stackTop)}_isInTemplate(){return this.currentTagId===T.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===Te.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop];}push(t,n){this.stackTop++,this.items[this.stackTop]=t,this.current=t,this.tagIDs[this.stackTop]=n,this.currentTagId=n,this._isInTemplate()&&this.tmplCount++,this.handler.onItemPush(t,n,true);}pop(){let t=this.current;this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,true);}replace(t,n){let o=this._indexOf(t);this.items[o]=n,o===this.stackTop&&(this.current=n);}insertAfter(t,n,o){let r=this._indexOf(t)+1;this.items.splice(r,0,n),this.tagIDs.splice(r,0,o),this.stackTop++,r===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,r===this.stackTop);}popUntilTagNamePopped(t){let n=this.stackTop+1;do n=this.tagIDs.lastIndexOf(t,n-1);while(n>0&&this.treeAdapter.getNamespaceURI(this.items[n])!==Te.HTML);this.shortenToLength(Math.max(n,0));}shortenToLength(t){for(;this.stackTop>=t;){let n=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(n,this.stackTop<t);}}popUntilElementPopped(t){let n=this._indexOf(t);this.shortenToLength(Math.max(n,0));}popUntilPopped(t,n){let o=this._indexOfTagNames(t,n);this.shortenToLength(Math.max(o,0));}popUntilNumberedHeaderPopped(){this.popUntilPopped(yE,Te.HTML);}popUntilTableCellPopped(){this.popUntilPopped(c4e,Te.HTML);}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1);}_indexOfTagNames(t,n){for(let o=this.stackTop;o>=0;o--)if(t.has(this.tagIDs[o])&&this.treeAdapter.getNamespaceURI(this.items[o])===n)return o;return -1}clearBackTo(t,n){let o=this._indexOfTagNames(t,n);this.shortenToLength(o+1);}clearBackToTableContext(){this.clearBackTo(l4e,Te.HTML);}clearBackToTableBodyContext(){this.clearBackTo(a4e,Te.HTML);}clearBackToTableRowContext(){this.clearBackTo(s4e,Te.HTML);}remove(t){let n=this._indexOf(t);n>=0&&(n===this.stackTop?this.pop():(this.items.splice(n,1),this.tagIDs.splice(n,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,false)));}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===T.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){let n=this._indexOf(t)-1;return n>=0?this.items[n]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===T.HTML}hasInDynamicScope(t,n){for(let o=this.stackTop;o>=0;o--){let r=this.tagIDs[o];switch(this.treeAdapter.getNamespaceURI(this.items[o])){case Te.HTML:{if(r===t)return true;if(n.has(r))return false;break}case Te.SVG:{if(Sce.has(r))return false;break}case Te.MATHML:{if(yce.has(r))return false;break}}}return true}hasInScope(t){return this.hasInDynamicScope(t,EP)}hasInListItemScope(t){return this.hasInDynamicScope(t,r4e)}hasInButtonScope(t){return this.hasInDynamicScope(t,i4e)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){let n=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case Te.HTML:{if(yE.has(n))return true;if(EP.has(n))return false;break}case Te.SVG:{if(Sce.has(n))return false;break}case Te.MATHML:{if(yce.has(n))return false;break}}}return true}hasInTableScope(t){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===Te.HTML)switch(this.tagIDs[n]){case t:return true;case T.TABLE:case T.HTML:return false}return true}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===Te.HTML)switch(this.tagIDs[t]){case T.TBODY:case T.THEAD:case T.TFOOT:return true;case T.TABLE:case T.HTML:return false}return true}hasInSelectScope(t){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===Te.HTML)switch(this.tagIDs[n]){case t:return true;case T.OPTION:case T.OPTGROUP:break;default:return false}return true}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&bce.has(this.currentTagId);)this.pop();}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&fce.has(this.currentTagId);)this.pop();}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&fce.has(this.currentTagId);)this.pop();}};var Fl;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element";})(Fl||(Fl={}));var Tce={type:Fl.Marker},vP=class{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null;}_getNoahArkConditionCandidates(t,n){let o=[],r=n.length,i=this.treeAdapter.getTagName(t),s=this.treeAdapter.getNamespaceURI(t);for(let a=0;a<this.entries.length;a++){let l=this.entries[a];if(l.type===Fl.Marker)break;let{element:c}=l;if(this.treeAdapter.getTagName(c)===i&&this.treeAdapter.getNamespaceURI(c)===s){let d=this.treeAdapter.getAttrList(c);d.length===r&&o.push({idx:a,attrs:d});}}return o}_ensureNoahArkCondition(t){if(this.entries.length<3)return;let n=this.treeAdapter.getAttrList(t),o=this._getNoahArkConditionCandidates(t,n);if(o.length<3)return;let r=new Map(n.map(s=>[s.name,s.value])),i=0;for(let s=0;s<o.length;s++){let a=o[s];a.attrs.every(l=>r.get(l.name)===l.value)&&(i+=1,i>=3&&this.entries.splice(a.idx,1));}}insertMarker(){this.entries.unshift(Tce);}pushElement(t,n){this._ensureNoahArkCondition(t),this.entries.unshift({type:Fl.Element,element:t,token:n});}insertElementAfterBookmark(t,n){let o=this.entries.indexOf(this.bookmark);this.entries.splice(o,0,{type:Fl.Element,element:t,token:n});}removeEntry(t){let n=this.entries.indexOf(t);n!==-1&&this.entries.splice(n,1);}clearToLastMarker(){let t=this.entries.indexOf(Tce);t===-1?this.entries.length=0:this.entries.splice(0,t+1);}getElementEntryInScopeWithTagName(t){let n=this.entries.find(o=>o.type===Fl.Marker||this.treeAdapter.getTagName(o.element)===t);return n&&n.type===Fl.Element?n:null}getElementEntry(t){return this.entries.find(n=>n.type===Fl.Element&&n.element===t)}};var Bl={createDocument(){return {nodeName:"#document",mode:Qi.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return {nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,n){return {nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return {nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return {nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e;},insertBefore(e,t,n){let o=e.childNodes.indexOf(n);e.childNodes.splice(o,0,t),t.parentNode=e;},setTemplateContent(e,t){e.content=t;},getTemplateContent(e){return e.content},setDocumentType(e,t,n,o){let r=e.childNodes.find(i=>i.nodeName==="#documentType");if(r)r.name=t,r.publicId=n,r.systemId=o;else {let i={nodeName:"#documentType",name:t,publicId:n,systemId:o,parentNode:null};Bl.appendChild(e,i);}},setDocumentMode(e,t){e.mode=t;},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){let t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null;}},insertText(e,t){if(e.childNodes.length>0){let n=e.childNodes[e.childNodes.length-1];if(Bl.isTextNode(n)){n.value+=t;return}}Bl.appendChild(e,Bl.createTextNode(t));},insertTextBefore(e,t,n){let o=e.childNodes[e.childNodes.indexOf(n)-1];o&&Bl.isTextNode(o)?o.value+=t:Bl.insertBefore(e,Bl.createTextNode(t),n);},adoptAttributes(e,t){let n=new Set(e.attrs.map(o=>o.name));for(let o=0;o<t.length;o++)n.has(t[o].name)||e.attrs.push(t[o]);},getFirstChild(e){return e.childNodes[0]},getChildNodes(e){return e.childNodes},getParentNode(e){return e.parentNode},getAttrList(e){return e.attrs},getTagName(e){return e.tagName},getNamespaceURI(e){return e.namespaceURI},getTextNodeContent(e){return e.value},getCommentNodeContent(e){return e.data},getDocumentTypeNodeName(e){return e.name},getDocumentTypeNodePublicId(e){return e.publicId},getDocumentTypeNodeSystemId(e){return e.systemId},isTextNode(e){return e.nodeName==="#text"},isCommentNode(e){return e.nodeName==="#comment"},isDocumentTypeNode(e){return e.nodeName==="#documentType"},isElementNode(e){return Object.prototype.hasOwnProperty.call(e,"tagName")},setNodeSourceCodeLocation(e,t){e.sourceCodeLocation=t;},getNodeSourceCodeLocation(e){return e.sourceCodeLocation},updateNodeSourceCodeLocation(e,t){e.sourceCodeLocation={...e.sourceCodeLocation,...t};}};var Ece="html",d4e="about:legacy-compat",u4e="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",Cce=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],p4e=[...Cce,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],m4e=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),vce=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],h4e=[...vce,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function Ace(e,t){return t.some(n=>e.startsWith(n))}function Rce(e){return e.name===Ece&&e.publicId===null&&(e.systemId===null||e.systemId===d4e)}function wce(e){if(e.name!==Ece)return Qi.QUIRKS;let{systemId:t}=e;if(t&&t.toLowerCase()===u4e)return Qi.QUIRKS;let{publicId:n}=e;if(n!==null){if(n=n.toLowerCase(),m4e.has(n))return Qi.QUIRKS;let o=t===null?p4e:Cce;if(Ace(n,o))return Qi.QUIRKS;if(o=t===null?vce:h4e,Ace(n,o))return Qi.LIMITED_QUIRKS}return Qi.NO_QUIRKS}var Ice={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},f4e="definitionurl",y4e="definitionURL",S4e=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),b4e=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:Te.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:Te.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:Te.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:Te.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:Te.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:Te.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:Te.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:Te.XML}],["xml:space",{prefix:"xml",name:"space",namespace:Te.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:Te.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:Te.XMLNS}]]),T4e=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),A4e=new Set([T.B,T.BIG,T.BLOCKQUOTE,T.BODY,T.BR,T.CENTER,T.CODE,T.DD,T.DIV,T.DL,T.DT,T.EM,T.EMBED,T.H1,T.H2,T.H3,T.H4,T.H5,T.H6,T.HEAD,T.HR,T.I,T.IMG,T.LI,T.LISTING,T.MENU,T.META,T.NOBR,T.OL,T.P,T.PRE,T.RUBY,T.S,T.SMALL,T.SPAN,T.STRONG,T.STRIKE,T.SUB,T.SUP,T.TABLE,T.TT,T.U,T.UL,T.VAR]);function xce(e){let t=e.tagID;return t===T.FONT&&e.attrs.some(({name:o})=>o===Eu.COLOR||o===Eu.SIZE||o===Eu.FACE)||A4e.has(t)}function AH(e){for(let t=0;t<e.attrs.length;t++)if(e.attrs[t].name===f4e){e.attrs[t].name=y4e;break}}function EH(e){for(let t=0;t<e.attrs.length;t++){let n=S4e.get(e.attrs[t].name);n!=null&&(e.attrs[t].name=n);}}function RP(e){for(let t=0;t<e.attrs.length;t++){let n=b4e.get(e.attrs[t].name);n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace);}}function _ce(e){let t=T4e.get(e.tagName);t!=null&&(e.tagName=t,e.tagID=Fh(e.tagName));}function E4e(e,t){return t===Te.MATHML&&(e===T.MI||e===T.MO||e===T.MN||e===T.MS||e===T.MTEXT)}function C4e(e,t,n){if(t===Te.MATHML&&e===T.ANNOTATION_XML){for(let o=0;o<n.length;o++)if(n[o].name===Eu.ENCODING){let r=n[o].value.toLowerCase();return r===Ice.TEXT_HTML||r===Ice.APPLICATION_XML}}return t===Te.SVG&&(e===T.FOREIGN_OBJECT||e===T.DESC||e===T.TITLE)}function Pce(e,t,n,o){return (!o||o===Te.HTML)&&C4e(e,t,n)||(!o||o===Te.MATHML)&&E4e(e,t)}var v4e="hidden",R4e=8,w4e=3,$;(function(e){e[e.INITIAL=0]="INITIAL",e[e.BEFORE_HTML=1]="BEFORE_HTML",e[e.BEFORE_HEAD=2]="BEFORE_HEAD",e[e.IN_HEAD=3]="IN_HEAD",e[e.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",e[e.AFTER_HEAD=5]="AFTER_HEAD",e[e.IN_BODY=6]="IN_BODY",e[e.TEXT=7]="TEXT",e[e.IN_TABLE=8]="IN_TABLE",e[e.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",e[e.IN_CAPTION=10]="IN_CAPTION",e[e.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",e[e.IN_TABLE_BODY=12]="IN_TABLE_BODY",e[e.IN_ROW=13]="IN_ROW",e[e.IN_CELL=14]="IN_CELL",e[e.IN_SELECT=15]="IN_SELECT",e[e.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",e[e.IN_TEMPLATE=17]="IN_TEMPLATE",e[e.AFTER_BODY=18]="AFTER_BODY",e[e.IN_FRAMESET=19]="IN_FRAMESET",e[e.AFTER_FRAMESET=20]="AFTER_FRAMESET",e[e.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",e[e.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET";})($||($={}));var I4e={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},kce=new Set([T.TABLE,T.TBODY,T.TFOOT,T.THEAD,T.TR]),Mce={scriptingEnabled:true,sourceCodeLocationInfo:false,treeAdapter:Bl,onParseError:null},IE=class{constructor(t,n,o=null,r=null){this.fragmentContext=o,this.scriptHandler=r,this.currentToken=null,this.stopped=false,this.insertionMode=$.INITIAL,this.originalInsertionMode=$.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=false,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=false,this.framesetOk=true,this.skipNextNewLine=false,this.fosterParentingEnabled=false,this.options={...Mce,...t},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError&&(this.options.sourceCodeLocationInfo=true),this.document=n??this.treeAdapter.createDocument(),this.tokenizer=new bE(this.options,this),this.activeFormattingElements=new vP(this.treeAdapter),this.fragmentContextID=o?Fh(this.treeAdapter.getTagName(o)):T.UNKNOWN,this._setContextModes(o??this.document,this.fragmentContextID),this.openElements=new CP(this.document,this.treeAdapter,this);}static parse(t,n){let o=new this(n);return o.tokenizer.write(t,true),o.document}static getFragmentParser(t,n){let o={...Mce,...n};t??(t=o.treeAdapter.createElement(oe.TEMPLATE,Te.HTML,[]));let r=o.treeAdapter.createElement("documentmock",Te.HTML,[]),i=new this(o,r,t);return i.fragmentContextID===T.TEMPLATE&&i.tmplInsertionModeStack.unshift($.IN_TEMPLATE),i._initTokenizerForFragmentParsing(),i._insertFakeRootElement(),i._resetInsertionMode(),i._findFormInFragmentContext(),i}getFragment(){let t=this.treeAdapter.getFirstChild(this.document),n=this.treeAdapter.createDocumentFragment();return this._adoptNodes(t,n),n}_err(t,n,o){var r;if(!this.onParseError)return;let i=(r=t.location)!==null&&r!==void 0?r:I4e,s={code:n,startLine:i.startLine,startCol:i.startCol,startOffset:i.startOffset,endLine:o?i.startLine:i.endLine,endCol:o?i.startCol:i.endCol,endOffset:o?i.startOffset:i.endOffset};this.onParseError(s);}onItemPush(t,n,o){var r,i;(i=(r=this.treeAdapter).onItemPush)===null||i===void 0||i.call(r,t),o&&this.openElements.stackTop>0&&this._setContextModes(t,n);}onItemPop(t,n){var o,r;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(r=(o=this.treeAdapter).onItemPop)===null||r===void 0||r.call(o,t,this.openElements.current),n){let i,s;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,s=this.fragmentContextID):{current:i,currentTagId:s}=this.openElements,this._setContextModes(i,s);}}_setContextModes(t,n){let o=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===Te.HTML;this.currentNotInHTML=!o,this.tokenizer.inForeignNode=!o&&t!==void 0&&n!==void 0&&!this._isIntegrationPoint(n,t);}_switchToTextParsing(t,n){this._insertElement(t,Te.HTML),this.tokenizer.state=n,this.originalInsertionMode=this.insertionMode,this.insertionMode=$.TEXT;}switchToPlaintextParsing(){this.insertionMode=$.TEXT,this.originalInsertionMode=$.IN_BODY,this.tokenizer.state=wi.PLAINTEXT;}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===oe.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t);}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==Te.HTML))switch(this.fragmentContextID){case T.TITLE:case T.TEXTAREA:{this.tokenizer.state=wi.RCDATA;break}case T.STYLE:case T.XMP:case T.IFRAME:case T.NOEMBED:case T.NOFRAMES:case T.NOSCRIPT:{this.tokenizer.state=wi.RAWTEXT;break}case T.SCRIPT:{this.tokenizer.state=wi.SCRIPT_DATA;break}case T.PLAINTEXT:{this.tokenizer.state=wi.PLAINTEXT;break}}}_setDocumentType(t){let n=t.name||"",o=t.publicId||"",r=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,n,o,r),t.location){let s=this.treeAdapter.getChildNodes(this.document).find(a=>this.treeAdapter.isDocumentTypeNode(a));s&&this.treeAdapter.setNodeSourceCodeLocation(s,t.location);}}_attachElementToTree(t,n){if(this.options.sourceCodeLocationInfo){let o=n&&{...n,startTag:n};this.treeAdapter.setNodeSourceCodeLocation(t,o);}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else {let o=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(o??this.document,t);}}_appendElement(t,n){let o=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(o,t.location);}_insertElement(t,n){let o=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(o,t.location),this.openElements.push(o,t.tagID);}_insertFakeElement(t,n){let o=this.treeAdapter.createElement(t,Te.HTML,[]);this._attachElementToTree(o,null),this.openElements.push(o,n);}_insertTemplate(t){let n=this.treeAdapter.createElement(t.tagName,Te.HTML,t.attrs),o=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(n,o),this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,null);}_insertFakeRootElement(){let t=this.treeAdapter.createElement(oe.HTML,Te.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,T.HTML);}_appendCommentNode(t,n){let o=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(n,o),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,t.location);}_insertCharacters(t){let n,o;if(this._shouldFosterParentOnInsertion()?({parent:n,beforeElement:o}=this._findFosterParentingLocation(),o?this.treeAdapter.insertTextBefore(n,t.chars,o):this.treeAdapter.insertText(n,t.chars)):(n=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(n,t.chars)),!t.location)return;let r=this.treeAdapter.getChildNodes(n),i=o?r.lastIndexOf(o):r.length,s=r[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(s)){let{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(s,{endLine:l,endCol:c,endOffset:d});}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(s,t.location);}_adoptNodes(t,n){for(let o=this.treeAdapter.getFirstChild(t);o;o=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(o),this.treeAdapter.appendChild(n,o);}_setEndLocation(t,n){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&n.location){let o=n.location,r=this.treeAdapter.getTagName(t),i=n.type===Kt.END_TAG&&r===n.tagName?{endTag:{...o},endLine:o.endLine,endCol:o.endCol,endOffset:o.endOffset}:{endLine:o.startLine,endCol:o.startCol,endOffset:o.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i);}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return false;let n,o;return this.openElements.stackTop===0&&this.fragmentContext?(n=this.fragmentContext,o=this.fragmentContextID):{current:n,currentTagId:o}=this.openElements,t.tagID===T.SVG&&this.treeAdapter.getTagName(n)===oe.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(n)===Te.MATHML?false:this.tokenizer.inForeignNode||(t.tagID===T.MGLYPH||t.tagID===T.MALIGNMARK)&&o!==void 0&&!this._isIntegrationPoint(o,n,Te.HTML)}_processToken(t){switch(t.type){case Kt.CHARACTER:{this.onCharacter(t);break}case Kt.NULL_CHARACTER:{this.onNullCharacter(t);break}case Kt.COMMENT:{this.onComment(t);break}case Kt.DOCTYPE:{this.onDoctype(t);break}case Kt.START_TAG:{this._processStartTag(t);break}case Kt.END_TAG:{this.onEndTag(t);break}case Kt.EOF:{this.onEof(t);break}case Kt.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,n,o){let r=this.treeAdapter.getNamespaceURI(n),i=this.treeAdapter.getAttrList(n);return Pce(t,r,i,o)}_reconstructActiveFormattingElements(){let t=this.activeFormattingElements.entries.length;if(t){let n=this.activeFormattingElements.entries.findIndex(r=>r.type===Fl.Marker||this.openElements.contains(r.element)),o=n===-1?t-1:n-1;for(let r=o;r>=0;r--){let i=this.activeFormattingElements.entries[r];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current;}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=$.IN_ROW;}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(T.P),this.openElements.popUntilTagNamePopped(T.P);}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case T.TR:{this.insertionMode=$.IN_ROW;return}case T.TBODY:case T.THEAD:case T.TFOOT:{this.insertionMode=$.IN_TABLE_BODY;return}case T.CAPTION:{this.insertionMode=$.IN_CAPTION;return}case T.COLGROUP:{this.insertionMode=$.IN_COLUMN_GROUP;return}case T.TABLE:{this.insertionMode=$.IN_TABLE;return}case T.BODY:{this.insertionMode=$.IN_BODY;return}case T.FRAMESET:{this.insertionMode=$.IN_FRAMESET;return}case T.SELECT:{this._resetInsertionModeForSelect(t);return}case T.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case T.HTML:{this.insertionMode=this.headElement?$.AFTER_HEAD:$.BEFORE_HEAD;return}case T.TD:case T.TH:{if(t>0){this.insertionMode=$.IN_CELL;return}break}case T.HEAD:{if(t>0){this.insertionMode=$.IN_HEAD;return}break}}this.insertionMode=$.IN_BODY;}_resetInsertionModeForSelect(t){if(t>0)for(let n=t-1;n>0;n--){let o=this.openElements.tagIDs[n];if(o===T.TEMPLATE)break;if(o===T.TABLE){this.insertionMode=$.IN_SELECT_IN_TABLE;return}}this.insertionMode=$.IN_SELECT;}_isElementCausesFosterParenting(t){return kce.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){let n=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case T.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(n)===Te.HTML)return {parent:this.treeAdapter.getTemplateContent(n),beforeElement:null};break}case T.TABLE:{let o=this.treeAdapter.getParentNode(n);return o?{parent:o,beforeElement:n}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return {parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){let n=this._findFosterParentingLocation();n.beforeElement?this.treeAdapter.insertBefore(n.parent,t,n.beforeElement):this.treeAdapter.appendChild(n.parent,t);}_isSpecialElement(t,n){let o=this.treeAdapter.getNamespaceURI(t);return pce[o].has(n)}onCharacter(t){if(this.skipNextNewLine=false,this.tokenizer.inForeignNode){o5e(this,t);return}switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{EE(this,t);break}case $.BEFORE_HEAD:{CE(this,t);break}case $.IN_HEAD:{vE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{RE(this,t);break}case $.AFTER_HEAD:{wE(this,t);break}case $.IN_BODY:case $.IN_CAPTION:case $.IN_CELL:case $.IN_TEMPLATE:{Fce(this,t);break}case $.TEXT:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_TABLE_TEXT:{$ce(this,t);break}case $.IN_COLUMN_GROUP:{IP(this,t);break}case $.AFTER_BODY:{xP(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=false,this.tokenizer.inForeignNode){n5e(this,t);return}switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{EE(this,t);break}case $.BEFORE_HEAD:{CE(this,t);break}case $.IN_HEAD:{vE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{RE(this,t);break}case $.AFTER_HEAD:{wE(this,t);break}case $.TEXT:{this._insertCharacters(t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_COLUMN_GROUP:{IP(this,t);break}case $.AFTER_BODY:{xP(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onComment(t){if(this.skipNextNewLine=false,this.currentNotInHTML){vH(this,t);return}switch(this.insertionMode){case $.INITIAL:case $.BEFORE_HTML:case $.BEFORE_HEAD:case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:case $.IN_BODY:case $.IN_TABLE:case $.IN_CAPTION:case $.IN_COLUMN_GROUP:case $.IN_TABLE_BODY:case $.IN_ROW:case $.IN_CELL:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:case $.IN_TEMPLATE:case $.IN_FRAMESET:case $.AFTER_FRAMESET:{vH(this,t);break}case $.IN_TABLE_TEXT:{AE(this,t);break}case $.AFTER_BODY:{L4e(this,t);break}case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{k4e(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=false,this.insertionMode){case $.INITIAL:{D4e(this,t);break}case $.BEFORE_HEAD:case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:{this._err(t,ce.misplacedDoctype);break}case $.IN_TABLE_TEXT:{AE(this,t);break}}}onStartTag(t){this.skipNextNewLine=false,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,ce.nonVoidHtmlElementStartTagWithTrailingSolidus);}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?r5e(this,t):this._startTagOutsideForeignContent(t);}_startTagOutsideForeignContent(t){switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{F4e(this,t);break}case $.BEFORE_HEAD:{U4e(this,t);break}case $.IN_HEAD:{Ul(this,t);break}case $.IN_HEAD_NO_SCRIPT:{j4e(this,t);break}case $.AFTER_HEAD:{V4e(this,t);break}case $.IN_BODY:{Ii(this,t);break}case $.IN_TABLE:{rS(this,t);break}case $.IN_TABLE_TEXT:{AE(this,t);break}case $.IN_CAPTION:{HQe(this,t);break}case $.IN_COLUMN_GROUP:{xH(this,t);break}case $.IN_TABLE_BODY:{OP(this,t);break}case $.IN_ROW:{MP(this,t);break}case $.IN_CELL:{$Qe(this,t);break}case $.IN_SELECT:{Wce(this,t);break}case $.IN_SELECT_IN_TABLE:{zQe(this,t);break}case $.IN_TEMPLATE:{qQe(this,t);break}case $.AFTER_BODY:{YQe(this,t);break}case $.IN_FRAMESET:{JQe(this,t);break}case $.AFTER_FRAMESET:{QQe(this,t);break}case $.AFTER_AFTER_BODY:{e5e(this,t);break}case $.AFTER_AFTER_FRAMESET:{t5e(this,t);break}}}onEndTag(t){this.skipNextNewLine=false,this.currentToken=t,this.currentNotInHTML?i5e(this,t):this._endTagOutsideForeignContent(t);}_endTagOutsideForeignContent(t){switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{B4e(this,t);break}case $.BEFORE_HEAD:{H4e(this,t);break}case $.IN_HEAD:{G4e(this,t);break}case $.IN_HEAD_NO_SCRIPT:{$4e(this,t);break}case $.AFTER_HEAD:{z4e(this,t);break}case $.IN_BODY:{PP(this,t);break}case $.TEXT:{PQe(this,t);break}case $.IN_TABLE:{xE(this,t);break}case $.IN_TABLE_TEXT:{AE(this,t);break}case $.IN_CAPTION:{GQe(this,t);break}case $.IN_COLUMN_GROUP:{jQe(this,t);break}case $.IN_TABLE_BODY:{RH(this,t);break}case $.IN_ROW:{zce(this,t);break}case $.IN_CELL:{VQe(this,t);break}case $.IN_SELECT:{qce(this,t);break}case $.IN_SELECT_IN_TABLE:{WQe(this,t);break}case $.IN_TEMPLATE:{KQe(this,t);break}case $.AFTER_BODY:{Yce(this,t);break}case $.IN_FRAMESET:{XQe(this,t);break}case $.AFTER_FRAMESET:{ZQe(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onEof(t){switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{EE(this,t);break}case $.BEFORE_HEAD:{CE(this,t);break}case $.IN_HEAD:{vE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{RE(this,t);break}case $.AFTER_HEAD:{wE(this,t);break}case $.IN_BODY:case $.IN_TABLE:case $.IN_CAPTION:case $.IN_COLUMN_GROUP:case $.IN_TABLE_BODY:case $.IN_ROW:case $.IN_CELL:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:{Gce(this,t);break}case $.TEXT:{OQe(this,t);break}case $.IN_TABLE_TEXT:{AE(this,t);break}case $.IN_TEMPLATE:{Kce(this,t);break}case $.AFTER_BODY:case $.IN_FRAMESET:case $.AFTER_FRAMESET:case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{IH(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=false,t.chars.charCodeAt(0)===N.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1);}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:case $.TEXT:case $.IN_COLUMN_GROUP:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:case $.IN_FRAMESET:case $.AFTER_FRAMESET:{this._insertCharacters(t);break}case $.IN_BODY:case $.IN_CAPTION:case $.IN_CELL:case $.IN_TEMPLATE:case $.AFTER_BODY:case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{Dce(this,t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_TABLE_TEXT:{jce(this,t);break}}}};function x4e(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagID)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Hce(e,t),n}function _4e(e,t){let n=null,o=e.openElements.stackTop;for(;o>=0;o--){let r=e.openElements.items[o];if(r===t.element)break;e._isSpecialElement(r,e.openElements.tagIDs[o])&&(n=r);}return n||(e.openElements.shortenToLength(Math.max(o,0)),e.activeFormattingElements.removeEntry(t)),n}function P4e(e,t,n){let o=t,r=e.openElements.getCommonAncestor(t);for(let i=0,s=r;s!==n;i++,s=r){r=e.openElements.getCommonAncestor(s);let a=e.activeFormattingElements.getElementEntry(s),l=a&&i>=w4e;!a||l?(l&&e.activeFormattingElements.removeEntry(a),e.openElements.remove(s)):(s=O4e(e,a),o===t&&(e.activeFormattingElements.bookmark=a),e.treeAdapter.detachNode(o),e.treeAdapter.appendChild(s,o),o=s);}return o}function O4e(e,t){let n=e.treeAdapter.getNamespaceURI(t.element),o=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,o),t.element=o,o}function M4e(e,t,n){let o=e.treeAdapter.getTagName(t),r=Fh(o);if(e._isElementCausesFosterParenting(r))e._fosterParentElement(n);else {let i=e.treeAdapter.getNamespaceURI(t);r===T.TEMPLATE&&i===Te.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n);}}function N4e(e,t,n){let o=e.treeAdapter.getNamespaceURI(n.element),{token:r}=n,i=e.treeAdapter.createElement(r.tagName,o,r.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,r),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i,r.tagID);}function wH(e,t){for(let n=0;n<R4e;n++){let o=x4e(e,t);if(!o)break;let r=_4e(e,o);if(!r)break;e.activeFormattingElements.bookmark=o;let i=P4e(e,r,o.element),s=e.openElements.getCommonAncestor(o.element);e.treeAdapter.detachNode(i),s&&M4e(e,s,i),N4e(e,r,o);}}function vH(e,t){e._appendCommentNode(t,e.openElements.currentTmplContentOrNode);}function L4e(e,t){e._appendCommentNode(t,e.openElements.items[0]);}function k4e(e,t){e._appendCommentNode(t,e.document);}function IH(e,t){if(e.stopped=true,t.location){let n=e.fragmentContext?0:2;for(let o=e.openElements.stackTop;o>=n;o--)e._setEndLocation(e.openElements.items[o],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){let o=e.openElements.items[0],r=e.treeAdapter.getNodeSourceCodeLocation(o);if(r&&!r.endTag&&(e._setEndLocation(o,t),e.openElements.stackTop>=1)){let i=e.openElements.items[1],s=e.treeAdapter.getNodeSourceCodeLocation(i);s&&!s.endTag&&e._setEndLocation(i,t);}}}}function D4e(e,t){e._setDocumentType(t);let n=t.forceQuirks?Qi.QUIRKS:wce(t);Rce(t)||e._err(t,ce.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=$.BEFORE_HTML;}function TE(e,t){e._err(t,ce.missingDoctype,true),e.treeAdapter.setDocumentMode(e.document,Qi.QUIRKS),e.insertionMode=$.BEFORE_HTML,e._processToken(t);}function F4e(e,t){t.tagID===T.HTML?(e._insertElement(t,Te.HTML),e.insertionMode=$.BEFORE_HEAD):EE(e,t);}function B4e(e,t){let n=t.tagID;(n===T.HTML||n===T.HEAD||n===T.BODY||n===T.BR)&&EE(e,t);}function EE(e,t){e._insertFakeRootElement(),e.insertionMode=$.BEFORE_HEAD,e._processToken(t);}function U4e(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.HEAD:{e._insertElement(t,Te.HTML),e.headElement=e.openElements.current,e.insertionMode=$.IN_HEAD;break}default:CE(e,t);}}function H4e(e,t){let n=t.tagID;n===T.HEAD||n===T.BODY||n===T.HTML||n===T.BR?CE(e,t):e._err(t,ce.endTagWithoutMatchingOpenElement);}function CE(e,t){e._insertFakeElement(oe.HEAD,T.HEAD),e.headElement=e.openElements.current,e.insertionMode=$.IN_HEAD,e._processToken(t);}function Ul(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.TITLE:{e._switchToTextParsing(t,wi.RCDATA);break}case T.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,wi.RAWTEXT):(e._insertElement(t,Te.HTML),e.insertionMode=$.IN_HEAD_NO_SCRIPT);break}case T.NOFRAMES:case T.STYLE:{e._switchToTextParsing(t,wi.RAWTEXT);break}case T.SCRIPT:{e._switchToTextParsing(t,wi.SCRIPT_DATA);break}case T.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=false,e.insertionMode=$.IN_TEMPLATE,e.tmplInsertionModeStack.unshift($.IN_TEMPLATE);break}case T.HEAD:{e._err(t,ce.misplacedStartTagForHeadElement);break}default:vE(e,t);}}function G4e(e,t){switch(t.tagID){case T.HEAD:{e.openElements.pop(),e.insertionMode=$.AFTER_HEAD;break}case T.BODY:case T.BR:case T.HTML:{vE(e,t);break}case T.TEMPLATE:{Bh(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function Bh(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==T.TEMPLATE&&e._err(t,ce.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,ce.endTagWithoutMatchingOpenElement);}function vE(e,t){e.openElements.pop(),e.insertionMode=$.AFTER_HEAD,e._processToken(t);}function j4e(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.BASEFONT:case T.BGSOUND:case T.HEAD:case T.LINK:case T.META:case T.NOFRAMES:case T.STYLE:{Ul(e,t);break}case T.NOSCRIPT:{e._err(t,ce.nestedNoscriptInHead);break}default:RE(e,t);}}function $4e(e,t){switch(t.tagID){case T.NOSCRIPT:{e.openElements.pop(),e.insertionMode=$.IN_HEAD;break}case T.BR:{RE(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function RE(e,t){let n=t.type===Kt.EOF?ce.openElementsLeftAfterEof:ce.disallowedContentInNoscriptInHead;e._err(t,n),e.openElements.pop(),e.insertionMode=$.IN_HEAD,e._processToken(t);}function V4e(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.BODY:{e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=$.IN_BODY;break}case T.FRAMESET:{e._insertElement(t,Te.HTML),e.insertionMode=$.IN_FRAMESET;break}case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:case T.NOFRAMES:case T.SCRIPT:case T.STYLE:case T.TEMPLATE:case T.TITLE:{e._err(t,ce.abandonedHeadElementChild),e.openElements.push(e.headElement,T.HEAD),Ul(e,t),e.openElements.remove(e.headElement);break}case T.HEAD:{e._err(t,ce.misplacedStartTagForHeadElement);break}default:wE(e,t);}}function z4e(e,t){switch(t.tagID){case T.BODY:case T.HTML:case T.BR:{wE(e,t);break}case T.TEMPLATE:{Bh(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function wE(e,t){e._insertFakeElement(oe.BODY,T.BODY),e.insertionMode=$.IN_BODY,_P(e,t);}function _P(e,t){switch(t.type){case Kt.CHARACTER:{Fce(e,t);break}case Kt.WHITESPACE_CHARACTER:{Dce(e,t);break}case Kt.COMMENT:{vH(e,t);break}case Kt.START_TAG:{Ii(e,t);break}case Kt.END_TAG:{PP(e,t);break}case Kt.EOF:{Gce(e,t);break}}}function Dce(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t);}function Fce(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=false;}function W4e(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs);}function q4e(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e.openElements.tmplCount===0&&(e.framesetOk=false,e.treeAdapter.adoptAttributes(n,t.attrs));}function K4e(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_FRAMESET);}function Y4e(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML);}function J4e(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&yE.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,Te.HTML);}function X4e(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.skipNextNewLine=true,e.framesetOk=false;}function Q4e(e,t){let n=e.openElements.tmplCount>0;(!e.formElement||n)&&(e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),n||(e.formElement=e.openElements.current));}function Z4e(e,t){e.framesetOk=false;let n=t.tagID;for(let o=e.openElements.stackTop;o>=0;o--){let r=e.openElements.tagIDs[o];if(n===T.LI&&r===T.LI||(n===T.DD||n===T.DT)&&(r===T.DD||r===T.DT)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r);break}if(r!==T.ADDRESS&&r!==T.DIV&&r!==T.P&&e._isSpecialElement(e.openElements.items[o],r))break}e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML);}function eQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.tokenizer.state=wi.PLAINTEXT;}function tQe(e,t){e.openElements.hasInScope(T.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.framesetOk=false;}function nQe(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(oe.A);n&&(wH(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function oQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function rQe(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(T.NOBR)&&(wH(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function iQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=false;}function sQe(e,t){e.treeAdapter.getDocumentMode(e.document)!==Qi.QUIRKS&&e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=$.IN_TABLE;}function Bce(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Te.HTML),e.framesetOk=false,t.ackSelfClosing=true;}function Uce(e){let t=bP(e,Eu.TYPE);return t!=null&&t.toLowerCase()===v4e}function aQe(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Te.HTML),Uce(t)||(e.framesetOk=false),t.ackSelfClosing=true;}function lQe(e,t){e._appendElement(t,Te.HTML),t.ackSelfClosing=true;}function cQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._appendElement(t,Te.HTML),e.framesetOk=false,t.ackSelfClosing=true;}function dQe(e,t){t.tagName=oe.IMG,t.tagID=T.IMG,Bce(e,t);}function uQe(e,t){e._insertElement(t,Te.HTML),e.skipNextNewLine=true,e.tokenizer.state=wi.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=false,e.insertionMode=$.TEXT;}function pQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=false,e._switchToTextParsing(t,wi.RAWTEXT);}function mQe(e,t){e.framesetOk=false,e._switchToTextParsing(t,wi.RAWTEXT);}function Nce(e,t){e._switchToTextParsing(t,wi.RAWTEXT);}function hQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=e.insertionMode===$.IN_TABLE||e.insertionMode===$.IN_CAPTION||e.insertionMode===$.IN_TABLE_BODY||e.insertionMode===$.IN_ROW||e.insertionMode===$.IN_CELL?$.IN_SELECT_IN_TABLE:$.IN_SELECT;}function gQe(e,t){e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML);}function fQe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,Te.HTML);}function yQe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(T.RTC),e._insertElement(t,Te.HTML);}function SQe(e,t){e._reconstructActiveFormattingElements(),AH(t),RP(t),t.selfClosing?e._appendElement(t,Te.MATHML):e._insertElement(t,Te.MATHML),t.ackSelfClosing=true;}function bQe(e,t){e._reconstructActiveFormattingElements(),EH(t),RP(t),t.selfClosing?e._appendElement(t,Te.SVG):e._insertElement(t,Te.SVG),t.ackSelfClosing=true;}function Lce(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML);}function Ii(e,t){switch(t.tagID){case T.I:case T.S:case T.B:case T.U:case T.EM:case T.TT:case T.BIG:case T.CODE:case T.FONT:case T.SMALL:case T.STRIKE:case T.STRONG:{oQe(e,t);break}case T.A:{nQe(e,t);break}case T.H1:case T.H2:case T.H3:case T.H4:case T.H5:case T.H6:{J4e(e,t);break}case T.P:case T.DL:case T.OL:case T.UL:case T.DIV:case T.DIR:case T.NAV:case T.MAIN:case T.MENU:case T.ASIDE:case T.CENTER:case T.FIGURE:case T.FOOTER:case T.HEADER:case T.HGROUP:case T.DIALOG:case T.DETAILS:case T.ADDRESS:case T.ARTICLE:case T.SEARCH:case T.SECTION:case T.SUMMARY:case T.FIELDSET:case T.BLOCKQUOTE:case T.FIGCAPTION:{Y4e(e,t);break}case T.LI:case T.DD:case T.DT:{Z4e(e,t);break}case T.BR:case T.IMG:case T.WBR:case T.AREA:case T.EMBED:case T.KEYGEN:{Bce(e,t);break}case T.HR:{cQe(e,t);break}case T.RB:case T.RTC:{fQe(e,t);break}case T.RT:case T.RP:{yQe(e,t);break}case T.PRE:case T.LISTING:{X4e(e,t);break}case T.XMP:{pQe(e,t);break}case T.SVG:{bQe(e,t);break}case T.HTML:{W4e(e,t);break}case T.BASE:case T.LINK:case T.META:case T.STYLE:case T.TITLE:case T.SCRIPT:case T.BGSOUND:case T.BASEFONT:case T.TEMPLATE:{Ul(e,t);break}case T.BODY:{q4e(e,t);break}case T.FORM:{Q4e(e,t);break}case T.NOBR:{rQe(e,t);break}case T.MATH:{SQe(e,t);break}case T.TABLE:{sQe(e,t);break}case T.INPUT:{aQe(e,t);break}case T.PARAM:case T.TRACK:case T.SOURCE:{lQe(e,t);break}case T.IMAGE:{dQe(e,t);break}case T.BUTTON:{tQe(e,t);break}case T.APPLET:case T.OBJECT:case T.MARQUEE:{iQe(e,t);break}case T.IFRAME:{mQe(e,t);break}case T.SELECT:{hQe(e,t);break}case T.OPTION:case T.OPTGROUP:{gQe(e,t);break}case T.NOEMBED:case T.NOFRAMES:{Nce(e,t);break}case T.FRAMESET:{K4e(e,t);break}case T.TEXTAREA:{uQe(e,t);break}case T.NOSCRIPT:{e.options.scriptingEnabled?Nce(e,t):Lce(e,t);break}case T.PLAINTEXT:{eQe(e,t);break}case T.COL:case T.TH:case T.TD:case T.TR:case T.HEAD:case T.FRAME:case T.TBODY:case T.TFOOT:case T.THEAD:case T.CAPTION:case T.COLGROUP:break;default:Lce(e,t);}}function TQe(e,t){if(e.openElements.hasInScope(T.BODY)&&(e.insertionMode=$.AFTER_BODY,e.options.sourceCodeLocationInfo)){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e._setEndLocation(n,t);}}function AQe(e,t){e.openElements.hasInScope(T.BODY)&&(e.insertionMode=$.AFTER_BODY,Yce(e,t));}function EQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n));}function CQe(e){let t=e.openElements.tmplCount>0,{formElement:n}=e;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(T.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(T.FORM):n&&e.openElements.remove(n));}function vQe(e){e.openElements.hasInButtonScope(T.P)||e._insertFakeElement(oe.P,T.P),e._closePElement();}function RQe(e){e.openElements.hasInListItemScope(T.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(T.LI),e.openElements.popUntilTagNamePopped(T.LI));}function wQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n));}function IQe(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped());}function xQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker());}function _Qe(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(oe.BR,T.BR),e.openElements.pop(),e.framesetOk=false;}function Hce(e,t){let n=t.tagName,o=t.tagID;for(let r=e.openElements.stackTop;r>0;r--){let i=e.openElements.items[r],s=e.openElements.tagIDs[r];if(o===s&&(o!==T.UNKNOWN||e.treeAdapter.getTagName(i)===n)){e.openElements.generateImpliedEndTagsWithExclusion(o),e.openElements.stackTop>=r&&e.openElements.shortenToLength(r);break}if(e._isSpecialElement(i,s))break}}function PP(e,t){switch(t.tagID){case T.A:case T.B:case T.I:case T.S:case T.U:case T.EM:case T.TT:case T.BIG:case T.CODE:case T.FONT:case T.NOBR:case T.SMALL:case T.STRIKE:case T.STRONG:{wH(e,t);break}case T.P:{vQe(e);break}case T.DL:case T.UL:case T.OL:case T.DIR:case T.DIV:case T.NAV:case T.PRE:case T.MAIN:case T.MENU:case T.ASIDE:case T.BUTTON:case T.CENTER:case T.FIGURE:case T.FOOTER:case T.HEADER:case T.HGROUP:case T.DIALOG:case T.ADDRESS:case T.ARTICLE:case T.DETAILS:case T.SEARCH:case T.SECTION:case T.SUMMARY:case T.LISTING:case T.FIELDSET:case T.BLOCKQUOTE:case T.FIGCAPTION:{EQe(e,t);break}case T.LI:{RQe(e);break}case T.DD:case T.DT:{wQe(e,t);break}case T.H1:case T.H2:case T.H3:case T.H4:case T.H5:case T.H6:{IQe(e);break}case T.BR:{_Qe(e);break}case T.BODY:{TQe(e,t);break}case T.HTML:{AQe(e,t);break}case T.FORM:{CQe(e);break}case T.APPLET:case T.OBJECT:case T.MARQUEE:{xQe(e,t);break}case T.TEMPLATE:{Bh(e,t);break}default:Hce(e,t);}}function Gce(e,t){e.tmplInsertionModeStack.length>0?Kce(e,t):IH(e,t);}function PQe(e,t){var n;t.tagID===T.SCRIPT&&((n=e.scriptHandler)===null||n===void 0||n.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode;}function OQe(e,t){e._err(t,ce.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t);}function CH(e,t){if(e.openElements.currentTagId!==void 0&&kce.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=false,e.originalInsertionMode=e.insertionMode,e.insertionMode=$.IN_TABLE_TEXT,t.type){case Kt.CHARACTER:{$ce(e,t);break}case Kt.WHITESPACE_CHARACTER:{jce(e,t);break}}else _E(e,t);}function MQe(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_CAPTION;}function NQe(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_COLUMN_GROUP;}function LQe(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(oe.COLGROUP,T.COLGROUP),e.insertionMode=$.IN_COLUMN_GROUP,xH(e,t);}function kQe(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_TABLE_BODY;}function DQe(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(oe.TBODY,T.TBODY),e.insertionMode=$.IN_TABLE_BODY,OP(e,t);}function FQe(e,t){e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode(),e._processStartTag(t));}function BQe(e,t){Uce(t)?e._appendElement(t,Te.HTML):_E(e,t),t.ackSelfClosing=true;}function UQe(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,Te.HTML),e.formElement=e.openElements.current,e.openElements.pop());}function rS(e,t){switch(t.tagID){case T.TD:case T.TH:case T.TR:{DQe(e,t);break}case T.STYLE:case T.SCRIPT:case T.TEMPLATE:{Ul(e,t);break}case T.COL:{LQe(e,t);break}case T.FORM:{UQe(e,t);break}case T.TABLE:{FQe(e,t);break}case T.TBODY:case T.TFOOT:case T.THEAD:{kQe(e,t);break}case T.INPUT:{BQe(e,t);break}case T.CAPTION:{MQe(e,t);break}case T.COLGROUP:{NQe(e,t);break}default:_E(e,t);}}function xE(e,t){switch(t.tagID){case T.TABLE:{e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode());break}case T.TEMPLATE:{Bh(e,t);break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TBODY:case T.TD:case T.TFOOT:case T.TH:case T.THEAD:case T.TR:break;default:_E(e,t);}}function _E(e,t){let n=e.fosterParentingEnabled;e.fosterParentingEnabled=true,_P(e,t),e.fosterParentingEnabled=n;}function jce(e,t){e.pendingCharacterTokens.push(t);}function $ce(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=true;}function AE(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)_E(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t);}var Vce=new Set([T.CAPTION,T.COL,T.COLGROUP,T.TBODY,T.TD,T.TFOOT,T.TH,T.THEAD,T.TR]);function HQe(e,t){let n=t.tagID;Vce.has(n)?e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_TABLE,rS(e,t)):Ii(e,t);}function GQe(e,t){let n=t.tagID;switch(n){case T.CAPTION:case T.TABLE:{e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_TABLE,n===T.TABLE&&xE(e,t));break}case T.BODY:case T.COL:case T.COLGROUP:case T.HTML:case T.TBODY:case T.TD:case T.TFOOT:case T.TH:case T.THEAD:case T.TR:break;default:PP(e,t);}}function xH(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.COL:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.TEMPLATE:{Ul(e,t);break}default:IP(e,t);}}function jQe(e,t){switch(t.tagID){case T.COLGROUP:{e.openElements.currentTagId===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=$.IN_TABLE);break}case T.TEMPLATE:{Bh(e,t);break}case T.COL:break;default:IP(e,t);}}function IP(e,t){e.openElements.currentTagId===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=$.IN_TABLE,e._processToken(t));}function OP(e,t){switch(t.tagID){case T.TR:{e.openElements.clearBackToTableBodyContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_ROW;break}case T.TH:case T.TD:{e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(oe.TR,T.TR),e.insertionMode=$.IN_ROW,MP(e,t);break}case T.CAPTION:case T.COL:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE,rS(e,t));break}default:rS(e,t);}}function RH(e,t){let n=t.tagID;switch(t.tagID){case T.TBODY:case T.TFOOT:case T.THEAD:{e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE);break}case T.TABLE:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE,xE(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TD:case T.TH:case T.TR:break;default:xE(e,t);}}function MP(e,t){switch(t.tagID){case T.TH:case T.TD:{e.openElements.clearBackToTableRowContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_CELL,e.activeFormattingElements.insertMarker();break}case T.CAPTION:case T.COL:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:case T.TR:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,OP(e,t));break}default:rS(e,t);}}function zce(e,t){switch(t.tagID){case T.TR:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY);break}case T.TABLE:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,RH(e,t));break}case T.TBODY:case T.TFOOT:case T.THEAD:{(e.openElements.hasInTableScope(t.tagID)||e.openElements.hasInTableScope(T.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,RH(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TD:case T.TH:break;default:xE(e,t);}}function $Qe(e,t){let n=t.tagID;Vce.has(n)?(e.openElements.hasInTableScope(T.TD)||e.openElements.hasInTableScope(T.TH))&&(e._closeTableCell(),MP(e,t)):Ii(e,t);}function VQe(e,t){let n=t.tagID;switch(n){case T.TD:case T.TH:{e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_ROW);break}case T.TABLE:case T.TBODY:case T.TFOOT:case T.THEAD:case T.TR:{e.openElements.hasInTableScope(n)&&(e._closeTableCell(),zce(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:break;default:PP(e,t);}}function Wce(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.OPTION:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e._insertElement(t,Te.HTML);break}case T.OPTGROUP:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop(),e._insertElement(t,Te.HTML);break}case T.HR:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop(),e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.INPUT:case T.KEYGEN:case T.TEXTAREA:case T.SELECT:{e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),t.tagID!==T.SELECT&&e._processStartTag(t));break}case T.SCRIPT:case T.TEMPLATE:{Ul(e,t);break}}}function qce(e,t){switch(t.tagID){case T.OPTGROUP:{e.openElements.stackTop>0&&e.openElements.currentTagId===T.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===T.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop();break}case T.OPTION:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop();break}case T.SELECT:{e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode());break}case T.TEMPLATE:{Bh(e,t);break}}}function zQe(e,t){let n=t.tagID;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e._processStartTag(t)):Wce(e,t);}function WQe(e,t){let n=t.tagID;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e.onEndTag(t)):qce(e,t);}function qQe(e,t){switch(t.tagID){case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:case T.NOFRAMES:case T.SCRIPT:case T.STYLE:case T.TEMPLATE:case T.TITLE:{Ul(e,t);break}case T.CAPTION:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:{e.tmplInsertionModeStack[0]=$.IN_TABLE,e.insertionMode=$.IN_TABLE,rS(e,t);break}case T.COL:{e.tmplInsertionModeStack[0]=$.IN_COLUMN_GROUP,e.insertionMode=$.IN_COLUMN_GROUP,xH(e,t);break}case T.TR:{e.tmplInsertionModeStack[0]=$.IN_TABLE_BODY,e.insertionMode=$.IN_TABLE_BODY,OP(e,t);break}case T.TD:case T.TH:{e.tmplInsertionModeStack[0]=$.IN_ROW,e.insertionMode=$.IN_ROW,MP(e,t);break}default:e.tmplInsertionModeStack[0]=$.IN_BODY,e.insertionMode=$.IN_BODY,Ii(e,t);}}function KQe(e,t){t.tagID===T.TEMPLATE&&Bh(e,t);}function Kce(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):IH(e,t);}function YQe(e,t){t.tagID===T.HTML?Ii(e,t):xP(e,t);}function Yce(e,t){var n;if(t.tagID===T.HTML){if(e.fragmentContext||(e.insertionMode=$.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===T.HTML){e._setEndLocation(e.openElements.items[0],t);let o=e.openElements.items[1];o&&!(!((n=e.treeAdapter.getNodeSourceCodeLocation(o))===null||n===void 0)&&n.endTag)&&e._setEndLocation(o,t);}}else xP(e,t);}function xP(e,t){e.insertionMode=$.IN_BODY,_P(e,t);}function JQe(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.FRAMESET:{e._insertElement(t,Te.HTML);break}case T.FRAME:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.NOFRAMES:{Ul(e,t);break}}}function XQe(e,t){t.tagID===T.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==T.FRAMESET&&(e.insertionMode=$.AFTER_FRAMESET));}function QQe(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.NOFRAMES:{Ul(e,t);break}}}function ZQe(e,t){t.tagID===T.HTML&&(e.insertionMode=$.AFTER_AFTER_FRAMESET);}function e5e(e,t){t.tagID===T.HTML?Ii(e,t):wP(e,t);}function wP(e,t){e.insertionMode=$.IN_BODY,_P(e,t);}function t5e(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.NOFRAMES:{Ul(e,t);break}}}function n5e(e,t){t.chars=Gn,e._insertCharacters(t);}function o5e(e,t){e._insertCharacters(t),e.framesetOk=false;}function Jce(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==Te.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop();}function r5e(e,t){if(xce(t))Jce(e),e._startTagOutsideForeignContent(t);else {let n=e._getAdjustedCurrentElement(),o=e.treeAdapter.getNamespaceURI(n);o===Te.MATHML?AH(t):o===Te.SVG&&(_ce(t),EH(t)),RP(t),t.selfClosing?e._appendElement(t,o):e._insertElement(t,o),t.ackSelfClosing=true;}}function i5e(e,t){if(t.tagID===T.P||t.tagID===T.BR){Jce(e),e._endTagOutsideForeignContent(t);return}for(let n=e.openElements.stackTop;n>0;n--){let o=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(o)===Te.HTML){e._endTagOutsideForeignContent(t);break}let r=e.treeAdapter.getTagName(o);if(r.toLowerCase()===t.tagName){t.tagName=r,e.openElements.shortenToLength(n);break}}}new Set([oe.AREA,oe.BASE,oe.BASEFONT,oe.BGSOUND,oe.BR,oe.COL,oe.EMBED,oe.FRAME,oe.HR,oe.IMG,oe.INPUT,oe.KEYGEN,oe.LINK,oe.META,oe.PARAM,oe.SOURCE,oe.TRACK,oe.WBR]);function Xce(e,t,n){typeof e=="string"&&(n=t,t=e,e=null);let o=IE.getFragmentParser(e,n);return o.tokenizer.write(t,true),o.getFragment()}var s5e=5e3,Qce=1024;function _H(e){return typeof e.tagName=="string"&&Array.isArray(e.attrs)}function a5e(e){return e.nodeName==="#text"}function PH(e,t){if(t.nodesLeft<=0)return;t.nodesLeft-=1;let n=e.tagName.toLowerCase(),o,r;for(let{name:l,value:c}of e.attrs){let d=l.toLowerCase();if(d==="role"){r=c;continue}o===void 0&&(o={}),o[d]=c;}let i,s=[];for(let l of e.childNodes){if(t.nodesLeft<=0)break;if(a5e(l)){let c=l.value;if(c&&c.trim().length>0){let d=c.length>Qce?c.slice(0,Qce):c;i=i===void 0?d:`${i} ${d}`;}}else if(_H(l)){let c=PH(l,t);c!==void 0&&s.push(c);}}let a={tag:n};return r!==void 0&&(a.role=r),o!==void 0&&(a.attributes=o),i!==void 0&&(a.text=i),s.length>0&&(a.children=s),a}function OH(e){let t=Xce(e),n={nodesLeft:s5e};for(let i of t.childNodes)if(_H(i)&&i.tagName.toLowerCase()==="body"){let s=PH(i,n);if(s!==void 0)return s}let o=[];for(let i of t.childNodes){if(n.nodesLeft<=0)break;if(_H(i)){let s=PH(i,n);s!==void 0&&o.push(s);}}let r={tag:"body"};return o.length>0&&(r.children=o),r}var l5e=new Set(["PRESET_ACTION","AI_ACTION_DYNAMIC"]),Uh=class{constructor(t,n,o,r,i,s){this.orgId=t;this.testId=n;this.testName=o;this.diskStorage=r;this.parentFlushResults=i;this.appGraphSink=s;}children=[];finished=false;stepFrequenciesByType={};currentResults=[];async getScreenshot(t,n){return this.diskStorage.readFile(`${Wr}/${n}.jpeg`)}async getHtmlSnapshot(t,n){return this.diskStorage.readFile(`${Wr}/${n}.html`)?.toString()}recordStepStat(t){t.type!=="PRESET_ACTION"?this.stepFrequenciesByType[t.type]=(this.stepFrequenciesByType[t.type]||0)+1:this.stepFrequenciesByType[t.command.type]=(this.stepFrequenciesByType[t.command.type]||0)+1;}sendFinalizedStepStats(){for(let[t,n]of Object.entries(this.stepFrequenciesByType))Tt.increment("test_step_execution",n,[`type:${t}`,"platform:browser","executor:cli",`orgId:${this.orgId}`]);}flushResults(t){this.currentResults=t,this.parentFlushResults(t);}async startStep(t,n){let{step:o,parentStepIdChain:r}=t;this.recordStepStat(o);let i={step:o,status:"RUNNING",startedAt:new Date},s=[...n];this.currentResults=s;let a=new MH(this.orgId,this.testId,this.testName,i,this.diskStorage,l=>{this.flushResults([...s,l]);},r??[],this.appGraphSink);return this.children.push(a),a}async finish(t){this.finished||(this.finished=true,await Promise.all(this.children.map(n=>n.finishInternal({status:RV(t.status),finishedAt:t.finishedAt}))),this.sendFinalizedStepStats());}};function c5e(e){switch(e){case "SUCCESS":return "PASSED";case "FAILED":return "FAILED";case "CANCELLED":return "CANCELLED";case "RUNNING":return "RUNNING";case "IDLE":return "PENDING";default:return tt(e)}}function NP(e){return e.some(t=>t.status==="FAILED")?"FAILED":e.some(t=>t.status==="CANCELLED")?"CANCELLED":"RUNNING"}var MH=class{constructor(t,n,o,r,i,s,a,l){this.orgId=t;this.testId=n;this.testName=o;this.metadata=r;this.diskStorage=i;this.parentFlushResults=s;this.parentStepIdChain=a;this.appGraphSink=l;this.interactionTracer=new vp(void 0,c=>this.storeTraceAsset(c)),Cp.initializeRootTracerContext(this.interactionTracer);}children=[];finished=false;interactionTracer;attachBeforeScreenshot(t){let{snapshotId:n,screenshot:o}=t;this.metadata.beforeSnapshotId=n,this.diskStorage.storeFile({name:`${Wr}/${n}.jpeg`,contents:o});}attachAfterScreenshot(t){let{snapshotId:n,screenshot:o}=t;this.metadata.afterSnapshotId=n,this.diskStorage.storeFile({name:`${Wr}/${n}.jpeg`,contents:o});}attachBeforeHtmlSnapshot(t){let{snapshotId:n,html:o}=t;this.metadata.beforeSnapshotId=n,this.diskStorage.storeFile({name:`${Wr}/${n}.html`,contents:o});}attachAfterHtmlSnapshot(t){let{snapshotId:n,html:o,url:r,logger:i}=t;this.metadata.afterSnapshotId=n,this.diskStorage.storeFile({name:`${Wr}/${n}.html`,contents:o}),this.appGraphSink&&l5e.has(this.metadata.step.type)&&this.appGraphSink({html:o,url:r,stepId:this.metadata.step.id,parentStepIdChain:[...this.parentStepIdChain],logger:i});}recordTargetAutoHeal(t){let{healType:n}=t,o=n==="AI"?"ai-target-heal":"cache-heal";Tt.increment("test_event",1,[`name:${o}`,`orgId:${this.orgId}`]),this.metadata.healMetadata={healType:n,healedAt:new Date};}storeTraceAsset(t){this.diskStorage.storeFile({name:`${Wr}/${t.snapshotId}.${t.extension??"jpeg"}`,contents:t.data});}async finishInternal(t){this.finished||(this.finished=true,this.interactionTracer.finish(),await Promise.all(this.children.map(n=>n.finish({status:c5e(t.status),finishedAt:t.finishedAt}))));}recordStepDuration(t,n){if(!Ov(t))return;let o=Pv(t);Tt.distribution("test_step_duration",n,[`type:${o}`,"platform:browser","executor:cli",`orgId:${this.orgId}`]);}async finish(t){!this.finished&&t.resolvedStep!==void 0&&t.durationMs!==void 0&&this.recordStepDuration(t.resolvedStep,t.durationMs),await this.finishInternal(t.step),t.step.trace=this.interactionTracer.getRootSpan();}getResultBuilderForCurrentStep(){let t=this.metadata.step;switch(t.type){case "RESOLVED_MODULE":return n=>({...t,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n,type:"MODULE"});case "CONDITIONAL":return n=>({...t,blocks:t.blocks.map(r=>({assertion:r.assertion,steps:Fd(r.steps)})),elseSteps:t.elseSteps?Fd(t.elseSteps):void 0,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});case "WHILE_LOOP":return n=>({...t,steps:Fd(t.steps),status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});case "AI_ACTION":case "AI_ACTION_DYNAMIC":case "PRESET_ACTION":case "SECTION":return n=>({...t,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});default:return tt(t)}}async startSubSteps(){let t=this.getResultBuilderForCurrentStep(),n=new Uh(this.orgId,this.testId,this.testName,this.diskStorage,o=>{let r=t(o);this.parentFlushResults(r);});return this.children.push(n),n}};var LP=class{constructor(t,n,o,r,i,s,a,l){this.orgId=t;this.testId=n;this.testName=o;this.runAttemptId=r;this.metadata=i;this.diskStorage=s;this.recordVideo=a;this.progressHandle=l;this.diskStorage.mkdir(Wr),this.harPagesStream=this.diskStorage.createFileStream(`${Wr}/har-pages.log`),this.inProgressHarEntries={},this.harEntriesStream=this.diskStorage.createFileStream(`${Wr}/har-entries.log`),this.resourceUsageStream=this.diskStorage.createFileStream(`${Wr}/resource-usage.ndjson`),this.resourceUsageSampler=nY({keepSamples:false,onSample:c=>{this.resourceUsageStream.write(`${JSON.stringify(c)}
8898
+ `)).digest("hex").slice(0,12),s=`${r.headSha}:${i}`,a=r.repoRoot,l=Xn__default.relative(a,e.repoRoot),c=l?e.candidateTests.map(p=>({...p,testPath:Xn__default.posix.join(l.split(Xn__default.sep).join("/"),p.testPath)})):e.candidateTests;if(e.dryRun){let p=await uH({apiClient:t,generator:e.generator,logger:e.logger,repository:e.repository,repoRoot:a,projectRoot:e.repoRoot,diff:r,candidateTests:c,allTestDefinitions:e.allTestDefinitions,importIndexCachePath:eP(a),agentOutputStream:e.agentOutputStream});return p.fallbackToRunAll?{kind:"run-all",reason:p.userSummary,diff:r}:{kind:"ready",plan:{version:2,userSummary:p.userSummary,toolCallCount:p.toolCallCount,selectedTests:p.selectedTests,anchorSegmentIds:p.anchorSegmentIds,budget:{source:e.budgetSource,cap:e.budgetCap??null},generatedAt:new Date().toISOString()},planId:`dry-run-${s}`,mode:"SELECTED",diff:r}}let d=await Ole({client:t,claim:{repository:e.repository,headSha:s,baseRef:r.baseRef,changedFiles:r.changedFiles.map(p=>p.path),diffSummary:null,budgetCap:e.budgetCap,dryRun:e.dryRun},logger:e.logger});if(d.kind==="ready")return e.logger.info({planId:d.planId,planSize:d.plan.selectedTests.length,suiteHash:i},"ai-select: reusing cached plan from server"),{kind:"ready",plan:d.plan,planId:d.planId,mode:"SELECTED",diff:r};let u=await uH({apiClient:t,generator:e.generator,logger:e.logger,repository:e.repository,repoRoot:a,projectRoot:e.repoRoot,diff:r,candidateTests:c,allTestDefinitions:e.allTestDefinitions,importIndexCachePath:eP(a),agentOutputStream:e.agentOutputStream});if(u.fallbackToRunAll)return await t.release(d.selectionPlanKey),{kind:"run-all",reason:u.userSummary,diff:r};try{e.logger.info({selectedCount:u.selectedTests.length,durationMs:u.totalDurationMs,suiteHash:i},"ai-select: computed fresh plan");let p=await t.finalize({selectionPlanKey:d.selectionPlanKey,repository:e.repository,headSha:s,mode:"SELECTED",userSummary:u.userSummary,toolCallCount:u.toolCallCount,selectedTests:u.selectedTests,anchorSegmentIds:u.anchorSegmentIds,budget:{source:e.budgetSource,cap:e.budgetCap}});return {kind:"ready",plan:p.plan,planId:p.planId,mode:"SELECTED",diff:r}}catch(p){return e.logger.error({err:p},"ai-select finalize failed; falling back to run-all"),await t.release(d.selectionPlanKey),{kind:"run-all",reason:`Could not record selection plan: ${ee(p)}.`,diff:r}}}function kh(e){let t=e??a3e();return Mle()&&t===1&&R.warn("Running with --pixel-ratio=1 on a Retina screen. Viewport calculations may be incorrect; omit the flag to auto-detect."),t}function a3e(){let e=Mle(),t=e?2:1;return R.debug(`Auto-detected device pixel ratio ${t} (Mac OS Retina: ${e}).`),t}var Mle=once(()=>{if(platform()!=="darwin")return false;try{return execSync("system_profiler SPDisplaysDataType").toString().includes("Retina")}catch{return false}});async function lP(e,t=true,n=false){let o=u3e(e),r=await c3e.which(o[0],true),i=o.slice(1),s=l3e.exec(d3e(r),i,{delay:100,silent:n});if(t)return s}var Nle="the Momentic GitHub app is missing permission to create pull requests or write branches for this repository";function p3e(e,{context:t}){return e instanceof ro?e.rawError.includes("Resource not accessible by integration")?`Cannot create ${t} because ${Nle}.`:e.status>=400&&e.status<500?e.rawError:`Could not create ${t} due to a GitHub error.`:`Could not create ${t}: ${ee(e)}`}function Lle(e){return e instanceof ro?e.rawError.includes("Resource not accessible by integration")?Nle:e.status>=400&&e.status<500?e.rawError:"a GitHub error occurred":ee(e)}function kle(e,t){R.error(p3e(e,t));}function cP(e){return Dle(e,"runs","run")}function hH(e){return Dle(e,"run-groups","run group")}function Dle(e,t,n){let o=e.trim(),r=/^https?:\/\//i.test(o)?h3e(o,t,n):o;if(!z.guid().safeParse(r).success)throw new Error(`Invalid ${n} ID: ${e}. Expected a UUID or a URL like https://app.momentic.ai/${t}/<id>.`);return r}function h3e(e,t,n){let o;try{o=new URL(e);}catch{throw new Error(`Invalid ${n} URL: ${e}`)}let r=o.pathname.split("/").filter(i=>i.length>0);if(r.length!==2||r[0]!==t)throw new Error(`Could not extract ${n} ID from URL: ${e}. Expected a URL like https://app.momentic.ai/${t}/<id>.`);return r[1]}function dP(e){return new Promise((t,n)=>{let o=[];createReadStream(e).pipe(g3e()).on("data",r=>o.push(r)).on("end",()=>t(o)).on("error",r=>n(r));})}var ln="3.10.3",{checkCLIVersion:Hr,getLatestCLIVersion:Fle}=c6({packageName:"momentic",currentVersion:ln,changelogUrl:"https://github.com/momentic-ai/cli/releases",updateCommand:"npx momentic@latest upgrade"});lke("phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI","POSTHOG_WEB_WRITE_KEY is not set");var{captureEvent:Au,setAnalyticsIdentity:uP,shutdownAnalytics:Ble}=Lv({writeKey:"phc_WRWd8LYIv6rolgDsyCdrPpxtZhsu6qXAkEwPicl44bI",host:"https://p.momentic.ai",platform:"cli",identity:"stashed",flushImmediately:true,onIdentify:g6});async function lt(){try{await Ie(Promise.all([Mv(),Tt.flush(),Ble(),Vv()]),{milliseconds:5e3});}catch{}}async function Dh({tests:e,momenticFiles:t,project:n,yes:o,include:r,exclude:i,labels:s,logger:a}){let l=new Set;if(e&&e.length>0){let d=e.some(p=>Sr__default.existsSync(p)),u=cwd();d?(u!==n.rootDir&&a.warn(`Test paths resolve against the current directory ('${u}'), not the project root ('${n.rootDir}'). Run from the project root or use substring filters to avoid surprises.`),e.forEach(p=>{if(!Sr__default.existsSync(p))throw new Error(`Path '${p}' does not exist.`);let m;try{m=Sr__default.statSync(p).isDirectory();}catch(g){a.warn({err:g},`Skipping path ${p} because it cannot be read`);return}let h=Xn__default.resolve(p);Object.values(t.tests).filter(g=>m?g.fullFilePath.startsWith(h):g.fullFilePath===h).forEach(g=>{l.add(g.fullFilePath);});})):Object.values(t.tests).forEach(p=>{e.some(m=>p.relativePath.includes(m))&&l.add(p.fullFilePath);});}else !o&&!await gr("No test paths or substrings were provided. Do you want to run all tests?")&&(a.error("Cancelled by user."),process.exit(1)),Object.values(t.tests).forEach(u=>{l.add(u.fullFilePath);});for(let d of l){let u=Xn__default.relative(n.rootDir,d);r&&!r.some(p=>new RegExp(p).test(u))&&l.delete(d),i&&i.some(p=>new RegExp(p).test(u))&&l.delete(d);}let c=Array.from(l).map(async d=>{try{let u=await us(d,Ee,t);if(iu.gt(u.schemaVersion,at)&&a.warn(`Test ${d} has schema version ${u.schemaVersion}, which is greater than what is currently supported by this SDK. Please update your momentic package version to avoid unexpected behavior.`),s&&s.length>0){let p=u.labels||[];if(!s.some(h=>p.includes(h)))return null}return {...u,fullFilePath:d,relativeFilePath:Xn__default.relative(n.rootDir,d)}}catch(u){a.error(`Failed to read and resolve test at '${d}': ${ee(u)}`),process.exit(1);}});return compact(await Promise.all(c))}function Hle({testDefinitions:e,quarantinedTestsMetadata:t,onlyQuarantined:n=false,skipQuarantined:o=false}){let[r,i]=partition(e,l=>l.disabled),[s,a]=partition(i,l=>l.id in t);return {testsToSkip:r,quarantinedTestsToSkip:o?s:[],testsToRun:n?[]:a,quarantinedTestsToRun:o?[]:s}}function Gle({testsToRun:e,quarantinedTestsToRun:t,quarantinedTestsMetadata:n,testInputMatrix:o}){let r=[],i=(s,a,l)=>{o?o.forEach((c,d)=>{r.push({inputs:c,inputIndex:d,testDefinition:s,quarantined:a,quarantinedMetadata:l});}):r.push({inputs:void 0,testDefinition:s,quarantined:a,quarantinedMetadata:l});};return e.forEach(s=>i(s,false)),t.forEach(s=>i(s,true,n[s.id])),r}var jle=()=>process.exit(130),$le=()=>process.exit(143);process.on("SIGINT",jle);process.on("SIGTERM",$le);function gE(){process.off("SIGINT",jle),process.off("SIGTERM",$le);}async function Vle({orgId:e,codeEvalTools:t,logger:n,outputDefinitions:o,testContext:r}){let i={};for(let s of o){let{name:a,value:l}=s;i[a]=await fi({orgId:e,s:l,localTools:t,logger:n,context:r});}return i}var zle=new Set;async function Wle({baseUrl:e,envName:t,devicePixelRatio:n,apiClient:o,test:r,storageClient:i,codeEvalTools:s,generator:a,orgId:l,variables:c,logger:d,customHeaders:u,testInputs:p,localBrowserConfig:m,aiSettings:h,visualDiffScreenshotStorage:g,tracer:f,runId:y,browserTypeOverride:S,attemptedRemoteBrowserProviders:b}){let E={baseUrl:o.baseUrl,apiKey:o.apiKey,logger:Ee,mode:o.mode,runner:o.runner},{controller:C,context:w}=await VA({baseUrl:e,envName:t,test:r,variables:c,logger:d,orgId:l,localBrowserConfig:m,aiSettings:h,customHeaders:u,codeEvalTools:s,storage:i,enricher:new Xd(E,a),generator:a,visualDiffScreenshotStorage:g,devicePixelRatio:n,browserTypeOverride:S,callbacks:{onNetworkPage:I=>f.onNetworkPage(I),onNetworkLogs:I=>f.onNetworkLogs(I)},videoOptions:f.videoOutputPath?{videoOutputPath:f.videoOutputPath,onVideoPageChange:({videoName:I,timestamp:P})=>{f.setActiveVideo(I,P);}}:void 0,validateBrowserType:I=>{cT(I)||(Ee.warn({browserType:I,testName:r.name},"Browser required by test does not appear to be installed"),!zle.has(I)&&(zle.add(I),R.warn(`Browser ${I} does not appear to be installed. Run '${Pu(I)}' if you hit launch errors.`)));},createRemoteBrowserConnection:m.remoteBrowser?async()=>{let I=await o.createRemoteBrowserConnection({runId:y,attemptedProviders:b});return I.provider&&b?.push(I.provider),I}:void 0});try{await Jx({orgId:l,test:r,testInputs:p,localTools:s,logger:d,context:w});}catch(I){try{await C.browser.cleanup();}catch(P){d.error({err:P},"Failed to clean up browser after test input resolution failed");}throw I instanceof zA&&(R.error(I.message),process.exit(1)),I}return {controller:C,context:w}}function qle({testAdvancedSettings:e,orgSettings:t,logger:n}){if(e.failureRecovery===false||e.failureRecovery===void 0&&!t?.failureRecovery)return false;if(!Mm){let o="This test is ineligible for failure recovery since this does not appear to be a CI environment";return n.warn(o),R.debug(o),false}return true}async function Kle({attemptInputs:e,attemptFixtures:t,attemptMetadata:n,runFixtures:o,recordVideo:r,stepCallbacks:i}){let{orgId:s,userId:a,runId:l}=n,{runTracer:c,runGroupTracer:d,project:u,apiClient:p}=o,{controller:m,context:h,codeEvalTools:g,storageClient:f,logger:y,usageTracker:S,tracer:b}=t,{test:E,orgSettings:C}=e;y.info(`Running test '${E.name}' locally (run link: https://app.momentic.ai/runs/${l})`);let w={controller:m,storage:f,usageTracker:S,context:h,logger:y,codeEvalTools:g},I={orgId:s,userId:a,runId:l,testMetadata:E,steps:E.steps,beforeSteps:E.beforeSteps,afterSteps:E.afterSteps,orgSettings:C},P={collectDebugData:true,reinitializeBrowser:true,disableHealing:!await qle({testAdvancedSettings:E.advanced,orgSettings:C.ai,logger:y})};return Hoe({fixtures:w,inputs:I,options:P,callbacks:{step:i??{},test:{onTestComplete:async _=>{await m.browser.cleanup({saveRemoteVideos:r!=="on-fail"||_?.status!=="PASSED"}),await g.dispose();}}},testParams:{attemptTracer:b},runParams:{runTracer:c,runGroupTracer:d,project:u,apiClient:p,captureEvent:Au,abortSignal:o.abortSignal}})}async function Yle(e){let{testDefinition:t,logger:n}=e,o=new Date;try{return await C3e(e)}catch(r){qu(r);let{customHeaders:i,envName:s,testInputs:a,urlOverride:l}=e,c={customHeaders:i,envName:s,testInputs:a,urlOverride:l},d="Fatal error running test";return n.error({err:r},d),R.error({err:r},d),Jle({err:pm(r),parameters:c,test:t,failureReason:ne.reasonFor(r,"UnknownError"),startedAt:o,lastAttemptStartedAt:o,attempts:0,quarantined:e.quarantined,quarantinedMetadata:e.quarantinedMetadata})}}async function C3e(e){let{testDefinition:t,snapshot:n,project:o,apiClient:r,orgId:i,userId:s,urlOverride:a,runGroupTracer:l,logger:c,gitMetadata:d,cacheOptions:u,runId:p,testInputs:m,quarantined:h,quarantinedMetadata:g,usageTracker:f}=e,y=n?{...o.config,...n.metadata.config}:o.config,S=new Jf(r,i),b=eu({logger:c,orgId:i,client:r,gitMetadata:d,regenerateCache:u.regenerateCache,alwaysSaveCache:u.alwaysSaveCache,noCache:n?true:u.noCache,isolateCachesByEnvironment:o.config?.advanced?.isolateCachesByEnvironment,bustOldestCachePercentage:u.bustOldestCachePercentage}),E,C;n?(E={envName:n.metadata.environment.envName,resolvedEnv:n.metadata.environment.resolvedEnv,environmentVariables:{...n.metadata.environment.variables},baseUrl:n.metadata.environment.baseUrl},C={steps:t.steps,beforeSteps:t.beforeSteps,afterSteps:t.afterSteps}):(E=Xf({test:t,envNameOverride:e.envName,urlOverride:a,resolveEnv:re=>Vd(re,o,c)}),C=await Rc({cacheStorage:b,logger:c,schemaVersion:t.schemaVersion,stepLists:{steps:t.steps,beforeSteps:t.beforeSteps,afterSteps:t.afterSteps},testId:t.id,environment:E.envName,useSnapshotIdentityCache:o.config.fileFormat==="v2"}));let{envName:w,resolvedEnv:I,environmentVariables:P,baseUrl:v}=E,_=C.steps,x=C.beforeSteps??void 0,D=C.afterSteps??void 0,U=await l.startRun({logger:c,runId:p,originalSteps:{beforeSteps:t.beforeSteps,steps:t.steps,afterSteps:t.afterSteps},testId:t.id,testName:t.name,directory:dirname(t.relativeFilePath),testDescription:t.description??void 0,testLabels:t.labels,baseUrl:v,environmentName:w,schemaVersion:t.schemaVersion,resolvedInputs:m,quarantined:h,quarantinedReason:g?.quarantinedReason,aiSettings:y.ai}),V=c.child(U.loggerBindings||{});Object.entries(U.envVarBindings||{}).forEach(([re,H])=>{P[re]=H;});let te=await v3e({...e,effectiveConfig:y,variables:P,envName:w,resolvedEnv:I,baseUrl:v,storageClient:S,tracer:U,runGroupTracer:l,logger:V,cacheStorage:b,stepsWithCaches:_,beforeStepsWithCaches:x,afterStepsWithCaches:D,usageTracker:f});return await U.finish({logger:c,status:te.status,finishedAt:te.finishedAt,failureDetails:te.failureDetails,failureReason:te.failureReason,isFlake:te.isFlake,failureRecoveryDetails:te.failureRecoveryDetails}),{runId:U.runId,...te}}async function v3e(e){let{testDefinition:t,effectiveConfig:n,stepsWithCaches:o,beforeStepsWithCaches:r,afterStepsWithCaches:i,project:s,regenerateGoldenFiles:a,apiClient:l,generator:c,baseUrl:d,storageClient:u,orgId:p,userId:m,envName:h,urlOverride:g,customHeaders:f,testInputs:y,variables:S,resolvedEnv:b,retriesOverride:E,devicePixelRatio:C,logUpdate:w,tracer:I,runGroupTracer:P,logger:v,cacheStorage:_,gitMetadata:x,quarantined:D,quarantinedMetadata:U,usageTracker:V}=e,te=n,re=te.ai?.aiFailureAnalysis??false,H=new Date,z=new Bf(s,l,a),M={envName:h,urlOverride:g,customHeaders:f,testInputs:y},K={...te.browser||{},...b?.browser||{},...t.advanced||{},...e.remoteBrowserOverride?{remoteBrowser:true}:{}},j=K.remoteBrowser===true,F=[],J,X=Math.abs(E??t.retries??n.retries??1),ue=[];v.info({...x,labels:t.labels,name:t.name,cwd:process.cwd()},"Starting test run using CLI");for(let xe=0;xe<=X;xe++){let Oe=randomUUID(),Ye=await I.startAttempt(Oe),me=v.child(Ye.loggerBindings||{}),ie={...t,steps:cloneDeep(o),beforeSteps:cloneDeep(r),afterSteps:cloneDeep(i)};xe!==0&&w("RETRY",`attempt ${xe+1}/${X+1}`);let Re=new Date,Ke=new Zd({httpClient:new qi({baseUrl:l.baseUrl,apiKey:l.apiKey,logger:me,mode:l.mode,runner:l.runner}),fakerSeed:te.advanced?.fakerConstantSeed?_b:void 0});try{let{controller:$e,context:He}=await Wle({tracer:Ye,runId:I.runId,baseUrl:d,envName:h,apiClient:l,devicePixelRatio:C,logger:me,storageClient:u,codeEvalTools:Ke,test:ie,generator:c,orgId:p,variables:S,customHeaders:f,testInputs:y,localBrowserConfig:K,browserTypeOverride:e.browserTypeOverride,attemptedRemoteBrowserProviders:F,aiSettings:{...te.ai||{},...ie.advanced||{}},visualDiffScreenshotStorage:z});e.abortSignal&&(e.abortSignal.aborted?$e.executeAbortController.abort():e.abortSignal.addEventListener("abort",()=>{$e.executeAbortController.abort();},{once:!0})),J=await Kle({attemptMetadata:{attemptNumber:xe+1,orgId:p,userId:m,runId:I.runId},attemptFixtures:{logger:me,storageClient:u,usageTracker:V,codeEvalTools:Ke,context:He,controller:$e,tracer:Ye},attemptInputs:{test:ie,orgSettings:te},runFixtures:{runTracer:I,runGroupTracer:P,project:s,apiClient:l,abortSignal:e.abortSignal},recordVideo:e.recordVideo??!1,stepCallbacks:{onStepStart:e.onStepStart}});let It=new Date,cn={logger:v,cacheStorage:_,orgId:p,testId:t.id,environment:h,originalStepsWithCaches:{steps:cloneDeep(o),beforeSteps:cloneDeep(r),afterSteps:cloneDeep(i)},updatedStepsWithCaches:{steps:ie.steps,beforeSteps:ie.beforeSteps,afterSteps:ie.afterSteps}};await Gm({logger:v,cacheStorage:_,orgId:p,testId:t.id,environment:h,stepLists:cn.updatedStepsWithCaches,useSnapshotIdentityCache:s.config.fileFormat==="v2"}),J?.status==="PASSED"?await jm(cn):J?.status==="FAILED"&&xe===X&&await gf(cn),await Ye.finish({logger:me,result:J}),ue.unshift(J.status);let To=await Vle({orgId:p,codeEvalTools:Ke,logger:me,outputDefinitions:t.outputs??[],testContext:He}),ca=pV(ue),xi=xe+1;if(J.status!=="FAILED")return {...J,runAttemptId:Oe,parameters:M,test:ie,filePath:ie.relativeFilePath,startedAt:H,lastAttemptStartedAt:Re,finishedAt:It,attempts:xi,baseUrl:d,outputs:To,isFlake:ca,quarantined:D,quarantinedMetadata:U,usedRemoteBrowser:j};let es=J.failedStepResult,$o=es?.message||"Unknown failure",jn=es?.failureReason??Vj($o)??"UnknownError",_i=me.child({failureReason:jn,errorMessage:$o,numAttempts:(X+1).toString(),name:ie.name});if(xe<X){_i.warn(`Retrying failed execution attempt for run: ${$o}`);continue}_i.error(`Test failed after all exhausting attempts: ${$o}`);let Qo=new Error($o),Cr={errorMessage:$o,errorStack:Qo.stack},Pi;if(te.ai?.classification?.enabled===!0){let $n=es?.failureClassification;$n||(e.onStepStart?.(am),$n=await Nx({runTracer:I,runGroupTracer:P,outputDir:e.outputDir,orgId:p,project:s,generator:c,apiClient:l,logger:v,testPlatform:"web",aiSettings:te.ai,captureEvent:Au,abortSignal:e.abortSignal,failedStepMessage:es?.message})),$n&&(Pi=$n.classification.category,jn=$n.classification.category,Cr.classification={reason:$n.classification.category,secondaryCategories:$n.classification.secondaryCategories,summary:$n.classification.reasoning,recoverable:$n.classification.recoverable,confidence:$n.classification.confidence,action:$n.action,citations:$n.classification.citations,source:"v2"});}else if(re){let $n;try{if(J.results&&J.results.length>0){e.onStepStart?.(am);let{classification:k,aiFailureReason:fe}=await k3({logger:me,browserStateStorage:Ye,generator:c,fullResults:J,failureReason:jn,error:Qo,maxItemsFromEnd:void 0,numStepsWithScreenshots:void 0,disableCache:!1});$n=k,Pi=fe;}}catch(k){me.warn({err:k},"Failed to classify test results");}$n&&(Cr.classification=$n,jn=Pi??jn,Cr.classification.source="v1");}return {...J,runAttemptId:Oe,parameters:M,failureDetails:Cr,failureReason:jn,test:ie,filePath:ie.relativeFilePath,startedAt:H,lastAttemptStartedAt:Re,finishedAt:It,attempts:xe+1,baseUrl:d,outputs:To,quarantined:D,quarantinedMetadata:U,usedRemoteBrowser:j}}catch($e){let He=`Encountered fatal platform error while running test '${ie.name}'`;return me.error({err:$e},He),R.error({err:$e},He),await Ye.finish({logger:me,result:{status:"FAILED"}}),Jle({err:pm($e),parameters:M,test:ie,failureReason:ne.reasonFor($e,"InternalPlatformError"),startedAt:H,lastAttemptStartedAt:Re,attempts:xe+1,quarantined:D,quarantinedMetadata:U,runAttemptId:Oe,baseUrl:d,usedRemoteBrowser:j})}}throw new Error("This code should not be reachable")}function Jle({err:e,parameters:t,test:n,failureReason:o,startedAt:r,lastAttemptStartedAt:i,attempts:s,quarantined:a,quarantinedMetadata:l,runAttemptId:c,baseUrl:d,usedRemoteBrowser:u}){return {status:"FAILED",results:[],parameters:t,test:n,filePath:n.relativeFilePath,failureReason:o,failureDetails:{errorMessage:e.message,errorStack:e.stack},startedAt:r,lastAttemptStartedAt:i,finishedAt:new Date,attempts:s,outputs:{},quarantined:a,quarantinedMetadata:l,runAttemptId:c,baseUrl:d,usedRemoteBrowser:u}}var Xle=3e4;async function oS({timeoutMinutes:e,cancel:t,run:n}){let o=()=>void t("SIGINT received"),r=()=>void t("SIGTERM received");gE(),process.once("SIGINT",o),process.once("SIGTERM",r);let i;e!==void 0&&e>0&&(i=setTimeout(()=>void t(`Timeout of ${e} minute(s) reached`),e*60*1e3));try{return await n()}finally{process.off("SIGINT",o),process.off("SIGTERM",r),clearTimeout(i);}}var nS=class{constructor(t){this.params=t;}runQueue={};runResults=[];cancelledRunsById=new Map;cancelled=false;cancellationReason;async cancel(t,n=true){if(this.cancelled)return;this.cancelled=true,this.cancellationReason=t;for(let r of Object.values(this.runQueue))r.done||r.abortController.abort();n&&await Ie(Promise.allSettled(Object.values(this.runQueue).map(r=>r.promise)),{milliseconds:Xle}).catch(()=>{this.params.runGroupLogger.warn(`Graceful shutdown timeout of ${Xle}ms reached while waiting for running tests to settle.`);});let o=new Set(this.runResults.map(r=>r.runId).filter(r=>!!r));for(let r of Object.values(this.runQueue)){if(r.done||o.has(r.activeRun.runId))continue;let{activeRun:i}=r,s={results:[],beforeResults:[],afterResults:[],test:i.testDefinition,filePath:i.testDefinition.relativeFilePath,startedAt:i.startedAt,lastAttemptStartedAt:i.startedAt,finishedAt:new Date,status:"CANCELLED",attempts:0,runId:i.runId,cancellationReason:t,quarantined:i.quarantined,quarantinedMetadata:i.quarantinedMetadata,parameters:{testInputs:i.inputs,envName:this.params.envName,urlOverride:this.params.urlOverride,customHeaders:this.params.customHeaders},outputs:{}};this.cancelledRunsById.set(i.runId,s);}}resolveNext(){if(this.params.next)return this.params.next;let t=[...this.params.testsToRun??[]];return ()=>Promise.resolve(t.shift())}async run(){let t=this.resolveNext(),{parallel:n,reporter:o,runGroupTracer:r,runGroupLogger:i,logger:s,project:a,client:l,generator:c,orgId:d,userId:u,devicePixelRatio:p,outputDir:m,retriesOverride:h,urlOverride:g,envName:f,customHeaders:y,regenerateGoldenFiles:S,gitMetadata:b,cacheOptions:E,browserTypeOverride:C,remoteBrowserOverride:w,onResult:I,onFatal:P}=this.params,v=0,_=true;for(;_;){let x=Object.values(this.runQueue);if(x.length===n&&await Promise.race(x.map(re=>re.promise)),this.cancelled){_=false;continue}let D=await t();if(D===void 0){_=false;continue}let U=`test-${v++}`,V={...D,startedAt:new Date},te=new AbortController;this.runQueue[U]={done:false,activeRun:V,abortController:te,promise:(async({inputs:re,quarantined:H,quarantinedMetadata:z,testDefinition:M,snapshot:K,runId:j})=>{let F=M.relativeFilePath.includes("..")?M.fullFilePath:M.relativeFilePath;o.onTestBegin(F);let J=i.child({testId:M.id,runId:j}),X=new Bd({logger:J,reporter:new Jd(l),runType:"test-run",runId:j,testMetadata:M,suiteMetadata:void 0,runner:"test-runner"});try{let ue=await Yle({testDefinition:M,snapshot:K,project:a,testInputs:re,quarantined:H,quarantinedMetadata:z,orgId:d,userId:u,runId:j,devicePixelRatio:p,apiClient:l,runGroupTracer:r,outputDir:m,generator:c,retriesOverride:h,urlOverride:g,envName:f,customHeaders:y,regenerateGoldenFiles:S,logUpdate:(xe,Oe)=>o.onTestStatus(F,xe,Oe),...qZ(o,F),logger:J,gitMetadata:b,cacheOptions:E,usageTracker:X,browserTypeOverride:C,remoteBrowserOverride:w,recordVideo:this.params.recordVideo,abortSignal:te.signal});o.onTestEnd(F,ue.status,{recovered:ue.status==="PASSED"&&!!ue.failureRecoveryDetails?.attempts}),this.runResults.push(ue),I?.(ue);}catch(ue){let xe=`Encountered unexpected fatal error when running test '${M.name}'`;J.error({err:ue},xe),R.error({err:ue},xe),qu(ue),P?.(ue),await this.cancel("Fatal error occurred",false);}finally{let ue=this.runQueue[U];ue&&(ue.done=true),await X.flush(s),delete this.runQueue[U];}})(V)};}return await Promise.allSettled(Object.values(this.runQueue).map(x=>x.promise)),{runResults:this.runResults,cancelledRunsById:this.cancelledRunsById,cancelled:this.cancelled,cancellationReason:this.cancellationReason}}};var w3e=200,I3e=new Set(Fj),x3e=new Set(["PASSED","FAILED","CANCELLED"]);function Zle(e){return e.length}function mP(e){return e.filter(t=>I3e.has(t.status)).length}var fE=class{constructor(t,n){this.sink=t;this.runId=n;}reportCompletedSteps(t){this.sink.updateRun(this.runId,{completedSteps:t});}setStatus(t){this.sink.updateRun(this.runId,{status:t});}},pP=class{constructor(t,n,o){this.runGroupId=n;this.logger=o;this.filePath=Xn__default.join(t,BK);}filePath;runs=new Map;startedAt=new Date;runGroupStatus="RUNNING";lastWriteMs=0;registerRun(t){let n=new Date;return this.runs.set(t.runId,{runId:t.runId,testId:t.testId,testName:t.testName,directory:t.directory,status:"RUNNING",completedSteps:0,totalSteps:t.totalSteps,startedAt:n,updatedAt:n}),this.write(true),new fE(this,t.runId)}updateRun(t,n){let o=this.runs.get(t);o&&(n.completedSteps!==void 0&&(o.completedSteps=n.completedSteps,o.completedSteps>o.totalSteps&&(o.totalSteps=o.completedSteps)),n.status!==void 0&&(o.status=n.status),o.updatedAt=new Date,this.write(n.status!==void 0));}finish(t){this.runGroupStatus=t,this.write(true);}write(t){let n=Date.now();if(!t&&n-this.lastWriteMs<w3e)return;this.lastWriteMs=n;let o=[...this.runs.values()],r={schemaVersion:UK,runGroupId:this.runGroupId,status:this.runGroupStatus,totalRuns:o.length,completedRuns:o.filter(s=>x3e.has(s.status)).length,completedSteps:o.reduce((s,a)=>s+a.completedSteps,0),totalSteps:o.reduce((s,a)=>s+a.totalSteps,0),startedAt:this.startedAt,updatedAt:new Date,runs:o},i=`${this.filePath}.tmp`;try{Sr__default.writeFileSync(i,JSON.stringify(r,null,2)),Sr__default.renameSync(i,this.filePath);}catch(s){this.logger.warn({err:s},"Failed to write run progress file");}}};function yH(e){return createHash("sha1").update(e).digest("hex")}var P3e=["tab","view","mode","step"],O3e=[/^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$/i,/^(?=.*\d)[A-Za-z0-9_-]{16,256}$/,/^\d{3,32}$/,/^[0-9A-HJKMNP-TV-Z]{26}$/];function M3e(e){return O3e.some(t=>t.test(e))}function ece(e,t={}){let n;try{n=new URL(e);}catch{return e}let o=new Set(t.queryAllowlist??P3e),i=n.pathname.split("/").map(c=>c.length>0&&M3e(c)?"{id}":c).join("/"),s=[],a=Array.from(n.searchParams.keys()).sort();for(let c of a){if(!o.has(c))continue;let d=n.searchParams.getAll(c).sort();for(let u of d)s.push(`${encodeURIComponent(c)}=${encodeURIComponent(u)}`);}let l=s.length>0?`?${s.join("&")}`:"";return `${n.protocol}//${n.host}${i}${l}`}var N3e=new Set(["id","name","role","type","href","for","placeholder","aria-label","data-testid"]),L3e=/^[A-Za-z0-9_-]{16,256}$|^:r[0-9a-z]{1,32}:$/,k3e=[/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,/\b[0-9a-f]{12,64}\b/gi,/\b[0-9A-HJKMNP-TV-Z]{26}\b/g,/\b\d{5,}\b/g,/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,16}\b/g],tce=new Set(["h1","h2","h3","h4","h5","h6"]),D3e=new Set(["input","select","textarea"]);function F3e(e){let t=e;for(let n of k3e)t=t.replace(n,"{id}");return t}function nce(e){return F3e(e).toLowerCase().replace(/\s+/g," ").trim().replace(/[.,:;!?]+$/u,"").replace(/\s*\d+\s*$/u,"").trim()}function B3e(e){let t=e.length;return t<=4?"txt:xs":t<=16?"txt:s":t<=64?"txt:m":t<=256?"txt:l":"txt:xl"}function U3e(e,t){return e==="href"?t.startsWith("#")?"href:hash":t.startsWith("/")?"href:rel":/^https?:\/\//.test(t)?"href:abs":/^(mailto|tel):/.test(t)?`href:${t.split(":")[0]}`:"href:other":L3e.test(t)?"@gen":nce(t)}function oce(e,t,n){let o=e.tag.toLowerCase(),r=(e.role??e.attributes?.role)?.toLowerCase(),i=Math.min(Math.floor(t/4),6),s=`<${o}@${i}`;if(r!==void 0&&(s+=` role=${r}`),e.attributes!==void 0){let l=Object.keys(e.attributes).filter(c=>N3e.has(c.toLowerCase())).sort();for(let c of l){let d=c.toLowerCase();if(d==="role")continue;let u=e.attributes[c];if(u===void 0)continue;let p=U3e(d,u);s+=` ${d}=${p}`;}}n.tokens.push(s);let a=e.text?.trim();a!==void 0&&a.length>0&&(r==="button"||r==="link"||r==="heading"||o==="button"||o==="a"||o==="label"||tce.has(o)?n.tokens.push(`label=${nce(a)}`):n.tokens.push(B3e(a))),(o==="button"||r==="button")&&(n.counts.buttons+=1),(o==="a"||r==="link")&&(n.counts.links+=1),(D3e.has(o)||r==="textbox"||r==="combobox")&&(n.counts.formFields+=1),(tce.has(o)||r==="heading")&&(n.counts.headings+=1);for(let l of e.children??[])oce(l,t+1,n);}function rce(e){let t={tokens:[],counts:{buttons:0,links:0,formFields:0,headings:0}};return oce(e,0,t),{tokens:t.tokens,counts:t.counts}}function ice(e,t){let n=new TextEncoder().encode(e),o=n.length,r=Math.floor(o/4),i=t>>>0,s=3432918353,a=461845907;for(let u=0;u<r;u++){let p=u*4,m=n[p]|n[p+1]<<8|n[p+2]<<16|n[p+3]<<24;m=Math.imul(m,s),m=m<<15|m>>>17,m=Math.imul(m,a),i^=m,i=i<<13|i>>>19,i=Math.imul(i,5)+3864292196;}let l=0,c=o&3,d=r*4;return c===3&&(l^=n[d+2]<<16),c>=2&&(l^=n[d+1]<<8),c>=1&&(l^=n[d],l=Math.imul(l,s),l=l<<15|l>>>17,l=Math.imul(l,a),i^=l),i^=o,i^=i>>>16,i=Math.imul(i,2246822507),i^=i>>>13,i=Math.imul(i,3266489909),i^=i>>>16,i>>>0}var hP=128,H3e=4294967295,G3e=(()=>{let e=[];for(let t=0;t<hP;t++)e.push(ice(`perm:${t}`,0));return e})();function sce(e){let t=new Uint32Array(hP);for(let o=0;o<hP;o++)t[o]=H3e;let n=new Set(e);for(let o of n)for(let r=0;r<hP;r++){let i=ice(o,G3e[r]);i<t[r]&&(t[r]=i);}return t}var $3e=32;function SH(e){let t=ece(e.url,{queryAllowlist:e.queryAllowlist}),{tokens:n,counts:o}=rce(e.dom),r=[`url:${t}`,`counts:buttons=${o.buttons}`,`counts:links=${o.links}`,`counts:formFields=${o.formFields}`,`counts:headings=${o.headings}`,...n],i=sce(r),s=Buffer.from(i.buffer,i.byteOffset,i.byteLength);return {fingerprintHash:createHash$1("sha256").update(s).digest("hex").slice(0,$3e),minhash:Array.from(i),canonicalUrl:t}}var V3e=new Set([65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]),Gn="\uFFFD",N;(function(e){e[e.EOF=-1]="EOF",e[e.NULL=0]="NULL",e[e.TABULATION=9]="TABULATION",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.LINE_FEED=10]="LINE_FEED",e[e.FORM_FEED=12]="FORM_FEED",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_0=48]="DIGIT_0",e[e.DIGIT_9=57]="DIGIT_9",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.LATIN_CAPITAL_A=65]="LATIN_CAPITAL_A",e[e.LATIN_CAPITAL_Z=90]="LATIN_CAPITAL_Z",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_A=97]="LATIN_SMALL_A",e[e.LATIN_SMALL_Z=122]="LATIN_SMALL_Z";})(N||(N={}));var Xi={DASH_DASH:"--",CDATA_START:"[CDATA[",DOCTYPE:"doctype",SCRIPT:"script",PUBLIC:"public",SYSTEM:"system"};function gP(e){return e>=55296&&e<=57343}function ace(e){return e>=56320&&e<=57343}function lce(e,t){return (e-55296)*1024+9216+t}function fP(e){return e!==32&&e!==10&&e!==13&&e!==9&&e!==12&&e>=1&&e<=31||e>=127&&e<=159}function yP(e){return e>=64976&&e<=65007||V3e.has(e)}var ce;(function(e){e.controlCharacterInInputStream="control-character-in-input-stream",e.noncharacterInInputStream="noncharacter-in-input-stream",e.surrogateInInputStream="surrogate-in-input-stream",e.nonVoidHtmlElementStartTagWithTrailingSolidus="non-void-html-element-start-tag-with-trailing-solidus",e.endTagWithAttributes="end-tag-with-attributes",e.endTagWithTrailingSolidus="end-tag-with-trailing-solidus",e.unexpectedSolidusInTag="unexpected-solidus-in-tag",e.unexpectedNullCharacter="unexpected-null-character",e.unexpectedQuestionMarkInsteadOfTagName="unexpected-question-mark-instead-of-tag-name",e.invalidFirstCharacterOfTagName="invalid-first-character-of-tag-name",e.unexpectedEqualsSignBeforeAttributeName="unexpected-equals-sign-before-attribute-name",e.missingEndTagName="missing-end-tag-name",e.unexpectedCharacterInAttributeName="unexpected-character-in-attribute-name",e.unknownNamedCharacterReference="unknown-named-character-reference",e.missingSemicolonAfterCharacterReference="missing-semicolon-after-character-reference",e.unexpectedCharacterAfterDoctypeSystemIdentifier="unexpected-character-after-doctype-system-identifier",e.unexpectedCharacterInUnquotedAttributeValue="unexpected-character-in-unquoted-attribute-value",e.eofBeforeTagName="eof-before-tag-name",e.eofInTag="eof-in-tag",e.missingAttributeValue="missing-attribute-value",e.missingWhitespaceBetweenAttributes="missing-whitespace-between-attributes",e.missingWhitespaceAfterDoctypePublicKeyword="missing-whitespace-after-doctype-public-keyword",e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers="missing-whitespace-between-doctype-public-and-system-identifiers",e.missingWhitespaceAfterDoctypeSystemKeyword="missing-whitespace-after-doctype-system-keyword",e.missingQuoteBeforeDoctypePublicIdentifier="missing-quote-before-doctype-public-identifier",e.missingQuoteBeforeDoctypeSystemIdentifier="missing-quote-before-doctype-system-identifier",e.missingDoctypePublicIdentifier="missing-doctype-public-identifier",e.missingDoctypeSystemIdentifier="missing-doctype-system-identifier",e.abruptDoctypePublicIdentifier="abrupt-doctype-public-identifier",e.abruptDoctypeSystemIdentifier="abrupt-doctype-system-identifier",e.cdataInHtmlContent="cdata-in-html-content",e.incorrectlyOpenedComment="incorrectly-opened-comment",e.eofInScriptHtmlCommentLikeText="eof-in-script-html-comment-like-text",e.eofInDoctype="eof-in-doctype",e.nestedComment="nested-comment",e.abruptClosingOfEmptyComment="abrupt-closing-of-empty-comment",e.eofInComment="eof-in-comment",e.incorrectlyClosedComment="incorrectly-closed-comment",e.eofInCdata="eof-in-cdata",e.absenceOfDigitsInNumericCharacterReference="absence-of-digits-in-numeric-character-reference",e.nullCharacterReference="null-character-reference",e.surrogateCharacterReference="surrogate-character-reference",e.characterReferenceOutsideUnicodeRange="character-reference-outside-unicode-range",e.controlCharacterReference="control-character-reference",e.noncharacterCharacterReference="noncharacter-character-reference",e.missingWhitespaceBeforeDoctypeName="missing-whitespace-before-doctype-name",e.missingDoctypeName="missing-doctype-name",e.invalidCharacterSequenceAfterDoctypeName="invalid-character-sequence-after-doctype-name",e.duplicateAttribute="duplicate-attribute",e.nonConformingDoctype="non-conforming-doctype",e.missingDoctype="missing-doctype",e.misplacedDoctype="misplaced-doctype",e.endTagWithoutMatchingOpenElement="end-tag-without-matching-open-element",e.closingOfElementWithOpenChildElements="closing-of-element-with-open-child-elements",e.disallowedContentInNoscriptInHead="disallowed-content-in-noscript-in-head",e.openElementsLeftAfterEof="open-elements-left-after-eof",e.abandonedHeadElementChild="abandoned-head-element-child",e.misplacedStartTagForHeadElement="misplaced-start-tag-for-head-element",e.nestedNoscriptInHead="nested-noscript-in-head",e.eofInElementThatCanContainOnlyText="eof-in-element-that-can-contain-only-text";})(ce||(ce={}));var W3e=65536,SP=class{constructor(t){this.handler=t,this.html="",this.pos=-1,this.lastGapPos=-2,this.gapStack=[],this.skipNextNewLine=false,this.lastChunkWritten=false,this.endOfChunkHit=false,this.bufferWaterline=W3e,this.isEol=false,this.lineStartPos=0,this.droppedBufferSize=0,this.line=1,this.lastErrOffset=-1;}get col(){return this.pos-this.lineStartPos+ +(this.lastGapPos!==this.pos)}get offset(){return this.droppedBufferSize+this.pos}getError(t,n){let{line:o,col:r,offset:i}=this,s=r+n,a=i+n;return {code:t,startLine:o,endLine:o,startCol:s,endCol:s,startOffset:a,endOffset:a}}_err(t){this.handler.onParseError&&this.lastErrOffset!==this.offset&&(this.lastErrOffset=this.offset,this.handler.onParseError(this.getError(t,0)));}_addGap(){this.gapStack.push(this.lastGapPos),this.lastGapPos=this.pos;}_processSurrogate(t){if(this.pos!==this.html.length-1){let n=this.html.charCodeAt(this.pos+1);if(ace(n))return this.pos++,this._addGap(),lce(t,n)}else if(!this.lastChunkWritten)return this.endOfChunkHit=true,N.EOF;return this._err(ce.surrogateInInputStream),t}willDropParsedChunk(){return this.pos>this.bufferWaterline}dropParsedChunk(){this.willDropParsedChunk()&&(this.html=this.html.substring(this.pos),this.lineStartPos-=this.pos,this.droppedBufferSize+=this.pos,this.pos=0,this.lastGapPos=-2,this.gapStack.length=0);}write(t,n){this.html.length>0?this.html+=t:this.html=t,this.endOfChunkHit=false,this.lastChunkWritten=n;}insertHtmlAtCurrentPos(t){this.html=this.html.substring(0,this.pos+1)+t+this.html.substring(this.pos+1),this.endOfChunkHit=false;}startsWith(t,n){if(this.pos+t.length>this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,false;if(n)return this.html.startsWith(t,this.pos);for(let o=0;o<t.length;o++)if((this.html.charCodeAt(this.pos+o)|32)!==t.charCodeAt(o))return false;return true}peek(t){let n=this.pos+t;if(n>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,N.EOF;let o=this.html.charCodeAt(n);return o===N.CARRIAGE_RETURN?N.LINE_FEED:o}advance(){if(this.pos++,this.isEol&&(this.isEol=false,this.line++,this.lineStartPos=this.pos),this.pos>=this.html.length)return this.endOfChunkHit=!this.lastChunkWritten,N.EOF;let t=this.html.charCodeAt(this.pos);return t===N.CARRIAGE_RETURN?(this.isEol=true,this.skipNextNewLine=true,N.LINE_FEED):t===N.LINE_FEED&&(this.isEol=true,this.skipNextNewLine)?(this.line--,this.skipNextNewLine=false,this._addGap(),this.advance()):(this.skipNextNewLine=false,gP(t)&&(t=this._processSurrogate(t)),this.handler.onParseError===null||t>31&&t<127||t===N.LINE_FEED||t===N.CARRIAGE_RETURN||t>159&&t<64976||this._checkForProblematicCharacters(t),t)}_checkForProblematicCharacters(t){fP(t)?this._err(ce.controlCharacterInInputStream):yP(t)&&this._err(ce.noncharacterInInputStream);}retreat(t){for(this.pos-=t;this.pos<this.lastGapPos;)this.lastGapPos=this.gapStack.pop(),this.pos--;this.isEol=false;}};var Kt;(function(e){e[e.CHARACTER=0]="CHARACTER",e[e.NULL_CHARACTER=1]="NULL_CHARACTER",e[e.WHITESPACE_CHARACTER=2]="WHITESPACE_CHARACTER",e[e.START_TAG=3]="START_TAG",e[e.END_TAG=4]="END_TAG",e[e.COMMENT=5]="COMMENT",e[e.DOCTYPE=6]="DOCTYPE",e[e.EOF=7]="EOF",e[e.HIBERNATION=8]="HIBERNATION";})(Kt||(Kt={}));function bP(e,t){for(let n=e.attrs.length-1;n>=0;n--)if(e.attrs[n].name===t)return e.attrs[n].value;return null}var K3e=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function cce(e){return e>=55296&&e<=57343||e>1114111?65533:K3e.get(e)??e}function dce(e){let t=atob(e),n=t.length&-2,o=new Uint16Array(n/2);for(let r=0,i=0;r<n;r+=2){let s=t.charCodeAt(r),a=t.charCodeAt(r+1);o[i++]=s|a<<8;}return o}var bH=dce("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");var Ri;(function(e){e[e.VALUE_LENGTH=49152]="VALUE_LENGTH",e[e.FLAG13=8192]="FLAG13",e[e.BRANCH_LENGTH=8064]="BRANCH_LENGTH",e[e.JUMP_TABLE=127]="JUMP_TABLE";})(Ri||(Ri={}));var No;(function(e){e[e.NUM=35]="NUM",e[e.SEMI=59]="SEMI",e[e.EQUALS=61]="EQUALS",e[e.ZERO=48]="ZERO",e[e.NINE=57]="NINE",e[e.LOWER_A=97]="LOWER_A",e[e.LOWER_F=102]="LOWER_F",e[e.LOWER_X=120]="LOWER_X",e[e.LOWER_Z=122]="LOWER_Z",e[e.UPPER_A=65]="UPPER_A",e[e.UPPER_F=70]="UPPER_F",e[e.UPPER_Z=90]="UPPER_Z";})(No||(No={}));var uce=32;function TH(e){return e>=No.ZERO&&e<=No.NINE}function Y3e(e){return e>=No.UPPER_A&&e<=No.UPPER_F||e>=No.LOWER_A&&e<=No.LOWER_F}function J3e(e){return e>=No.UPPER_A&&e<=No.UPPER_Z||e>=No.LOWER_A&&e<=No.LOWER_Z||TH(e)}function X3e(e){return e===No.EQUALS||J3e(e)}var Gr;(function(e){e[e.EntityStart=0]="EntityStart",e[e.NumericStart=1]="NumericStart",e[e.NumericDecimal=2]="NumericDecimal",e[e.NumericHex=3]="NumericHex",e[e.NamedEntity=4]="NamedEntity";})(Gr||(Gr={}));var ad;(function(e){e[e.Legacy=0]="Legacy",e[e.Strict=1]="Strict",e[e.Attribute=2]="Attribute";})(ad||(ad={}));var TP=class{decodeTree;emitCodePoint;errors;constructor(t,n,o){this.decodeTree=t,this.emitCodePoint=n,this.errors=o;}state=Gr.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=ad.Strict;runConsumed=0;startEntity(t){this.decodeMode=t,this.state=Gr.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0;}write(t,n){switch(this.state){case Gr.EntityStart:return t.charCodeAt(n)===No.NUM?(this.state=Gr.NumericStart,this.consumed+=1,this.stateNumericStart(t,n+1)):(this.state=Gr.NamedEntity,this.stateNamedEntity(t,n));case Gr.NumericStart:return this.stateNumericStart(t,n);case Gr.NumericDecimal:return this.stateNumericDecimal(t,n);case Gr.NumericHex:return this.stateNumericHex(t,n);case Gr.NamedEntity:return this.stateNamedEntity(t,n)}}stateNumericStart(t,n){return n>=t.length?-1:(t.charCodeAt(n)|uce)===No.LOWER_X?(this.state=Gr.NumericHex,this.consumed+=1,this.stateNumericHex(t,n+1)):(this.state=Gr.NumericDecimal,this.stateNumericDecimal(t,n))}stateNumericHex(t,n){for(;n<t.length;){let o=t.charCodeAt(n);if(TH(o)||Y3e(o)){let r=o<=No.NINE?o-No.ZERO:(o|uce)-No.LOWER_A+10;this.result=this.result*16+r,this.consumed++,n++;}else return this.emitNumericEntity(o,3)}return -1}stateNumericDecimal(t,n){for(;n<t.length;){let o=t.charCodeAt(n);if(TH(o))this.result=this.result*10+(o-No.ZERO),this.consumed++,n++;else return this.emitNumericEntity(o,2)}return -1}emitNumericEntity(t,n){if(this.consumed<=n)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(t===No.SEMI)this.consumed+=1;else if(this.decodeMode===ad.Strict)return 0;return this.emitCodePoint(cce(this.result),this.consumed),this.errors&&(t!==No.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,n){let{decodeTree:o}=this,r=o[this.treeIndex],i=(r&Ri.VALUE_LENGTH)>>14;for(;n<t.length;){if(i===0&&r&Ri.FLAG13){let a=(r&Ri.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let l=r&Ri.JUMP_TABLE;if(t.charCodeAt(n)!==l)return this.result===0?0:this.emitNotTerminatedNamedEntity();n++,this.excess++,this.runConsumed++;}for(;this.runConsumed<a;){if(n>=t.length)return -1;let l=this.runConsumed-1,c=o[this.treeIndex+1+(l>>1)],d=l%2===0?c&255:c>>8&255;if(t.charCodeAt(n)!==d)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();n++,this.excess++,this.runConsumed++;}this.runConsumed=0,this.treeIndex+=1+(a>>1),r=o[this.treeIndex],i=(r&Ri.VALUE_LENGTH)>>14;}if(n>=t.length)break;let s=t.charCodeAt(n);if(s===No.SEMI&&i!==0&&r&Ri.FLAG13)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=Q3e(o,r,this.treeIndex+Math.max(1,i),s),this.treeIndex<0)return this.result===0||this.decodeMode===ad.Attribute&&(i===0||X3e(s))?0:this.emitNotTerminatedNamedEntity();if(r=o[this.treeIndex],i=(r&Ri.VALUE_LENGTH)>>14,i!==0){if(s===No.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==ad.Strict&&!(r&Ri.FLAG13)&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0);}n++,this.excess++;}return -1}emitNotTerminatedNamedEntity(){let{result:t,decodeTree:n}=this,o=(n[t]&Ri.VALUE_LENGTH)>>14;return this.emitNamedEntityData(t,o,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,n,o){let{decodeTree:r}=this;return this.emitCodePoint(n===1?r[t]&~(Ri.VALUE_LENGTH|Ri.FLAG13):r[t+1],o),n===3&&this.emitCodePoint(r[t+2],o),o}end(){switch(this.state){case Gr.NamedEntity:return this.result!==0&&(this.decodeMode!==ad.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case Gr.NumericDecimal:return this.emitNumericEntity(0,2);case Gr.NumericHex:return this.emitNumericEntity(0,3);case Gr.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case Gr.EntityStart:return 0}}};function Q3e(e,t,n,o){let r=(t&Ri.BRANCH_LENGTH)>>7,i=t&Ri.JUMP_TABLE;if(r===0)return i!==0&&o===i?n:-1;if(i){let c=o-i;return c<0||c>=r?-1:e[n+c]-1}let s=r+1>>1,a=0,l=r-1;for(;a<=l;){let c=a+l>>>1,d=c>>1,p=e[n+d]>>(c&1)*8&255;if(p<o)a=c+1;else if(p>o)l=c-1;else return e[n+s+c]}return -1}var Te;(function(e){e.HTML="http://www.w3.org/1999/xhtml",e.MATHML="http://www.w3.org/1998/Math/MathML",e.SVG="http://www.w3.org/2000/svg",e.XLINK="http://www.w3.org/1999/xlink",e.XML="http://www.w3.org/XML/1998/namespace",e.XMLNS="http://www.w3.org/2000/xmlns/";})(Te||(Te={}));var Eu;(function(e){e.TYPE="type",e.ACTION="action",e.ENCODING="encoding",e.PROMPT="prompt",e.NAME="name",e.COLOR="color",e.FACE="face",e.SIZE="size";})(Eu||(Eu={}));var Qi;(function(e){e.NO_QUIRKS="no-quirks",e.QUIRKS="quirks",e.LIMITED_QUIRKS="limited-quirks";})(Qi||(Qi={}));var oe;(function(e){e.A="a",e.ADDRESS="address",e.ANNOTATION_XML="annotation-xml",e.APPLET="applet",e.AREA="area",e.ARTICLE="article",e.ASIDE="aside",e.B="b",e.BASE="base",e.BASEFONT="basefont",e.BGSOUND="bgsound",e.BIG="big",e.BLOCKQUOTE="blockquote",e.BODY="body",e.BR="br",e.BUTTON="button",e.CAPTION="caption",e.CENTER="center",e.CODE="code",e.COL="col",e.COLGROUP="colgroup",e.DD="dd",e.DESC="desc",e.DETAILS="details",e.DIALOG="dialog",e.DIR="dir",e.DIV="div",e.DL="dl",e.DT="dt",e.EM="em",e.EMBED="embed",e.FIELDSET="fieldset",e.FIGCAPTION="figcaption",e.FIGURE="figure",e.FONT="font",e.FOOTER="footer",e.FOREIGN_OBJECT="foreignObject",e.FORM="form",e.FRAME="frame",e.FRAMESET="frameset",e.H1="h1",e.H2="h2",e.H3="h3",e.H4="h4",e.H5="h5",e.H6="h6",e.HEAD="head",e.HEADER="header",e.HGROUP="hgroup",e.HR="hr",e.HTML="html",e.I="i",e.IMG="img",e.IMAGE="image",e.INPUT="input",e.IFRAME="iframe",e.KEYGEN="keygen",e.LABEL="label",e.LI="li",e.LINK="link",e.LISTING="listing",e.MAIN="main",e.MALIGNMARK="malignmark",e.MARQUEE="marquee",e.MATH="math",e.MENU="menu",e.META="meta",e.MGLYPH="mglyph",e.MI="mi",e.MO="mo",e.MN="mn",e.MS="ms",e.MTEXT="mtext",e.NAV="nav",e.NOBR="nobr",e.NOFRAMES="noframes",e.NOEMBED="noembed",e.NOSCRIPT="noscript",e.OBJECT="object",e.OL="ol",e.OPTGROUP="optgroup",e.OPTION="option",e.P="p",e.PARAM="param",e.PLAINTEXT="plaintext",e.PRE="pre",e.RB="rb",e.RP="rp",e.RT="rt",e.RTC="rtc",e.RUBY="ruby",e.S="s",e.SCRIPT="script",e.SEARCH="search",e.SECTION="section",e.SELECT="select",e.SOURCE="source",e.SMALL="small",e.SPAN="span",e.STRIKE="strike",e.STRONG="strong",e.STYLE="style",e.SUB="sub",e.SUMMARY="summary",e.SUP="sup",e.TABLE="table",e.TBODY="tbody",e.TEMPLATE="template",e.TEXTAREA="textarea",e.TFOOT="tfoot",e.TD="td",e.TH="th",e.THEAD="thead",e.TITLE="title",e.TR="tr",e.TRACK="track",e.TT="tt",e.U="u",e.UL="ul",e.SVG="svg",e.VAR="var",e.WBR="wbr",e.XMP="xmp";})(oe||(oe={}));var T;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.A=1]="A",e[e.ADDRESS=2]="ADDRESS",e[e.ANNOTATION_XML=3]="ANNOTATION_XML",e[e.APPLET=4]="APPLET",e[e.AREA=5]="AREA",e[e.ARTICLE=6]="ARTICLE",e[e.ASIDE=7]="ASIDE",e[e.B=8]="B",e[e.BASE=9]="BASE",e[e.BASEFONT=10]="BASEFONT",e[e.BGSOUND=11]="BGSOUND",e[e.BIG=12]="BIG",e[e.BLOCKQUOTE=13]="BLOCKQUOTE",e[e.BODY=14]="BODY",e[e.BR=15]="BR",e[e.BUTTON=16]="BUTTON",e[e.CAPTION=17]="CAPTION",e[e.CENTER=18]="CENTER",e[e.CODE=19]="CODE",e[e.COL=20]="COL",e[e.COLGROUP=21]="COLGROUP",e[e.DD=22]="DD",e[e.DESC=23]="DESC",e[e.DETAILS=24]="DETAILS",e[e.DIALOG=25]="DIALOG",e[e.DIR=26]="DIR",e[e.DIV=27]="DIV",e[e.DL=28]="DL",e[e.DT=29]="DT",e[e.EM=30]="EM",e[e.EMBED=31]="EMBED",e[e.FIELDSET=32]="FIELDSET",e[e.FIGCAPTION=33]="FIGCAPTION",e[e.FIGURE=34]="FIGURE",e[e.FONT=35]="FONT",e[e.FOOTER=36]="FOOTER",e[e.FOREIGN_OBJECT=37]="FOREIGN_OBJECT",e[e.FORM=38]="FORM",e[e.FRAME=39]="FRAME",e[e.FRAMESET=40]="FRAMESET",e[e.H1=41]="H1",e[e.H2=42]="H2",e[e.H3=43]="H3",e[e.H4=44]="H4",e[e.H5=45]="H5",e[e.H6=46]="H6",e[e.HEAD=47]="HEAD",e[e.HEADER=48]="HEADER",e[e.HGROUP=49]="HGROUP",e[e.HR=50]="HR",e[e.HTML=51]="HTML",e[e.I=52]="I",e[e.IMG=53]="IMG",e[e.IMAGE=54]="IMAGE",e[e.INPUT=55]="INPUT",e[e.IFRAME=56]="IFRAME",e[e.KEYGEN=57]="KEYGEN",e[e.LABEL=58]="LABEL",e[e.LI=59]="LI",e[e.LINK=60]="LINK",e[e.LISTING=61]="LISTING",e[e.MAIN=62]="MAIN",e[e.MALIGNMARK=63]="MALIGNMARK",e[e.MARQUEE=64]="MARQUEE",e[e.MATH=65]="MATH",e[e.MENU=66]="MENU",e[e.META=67]="META",e[e.MGLYPH=68]="MGLYPH",e[e.MI=69]="MI",e[e.MO=70]="MO",e[e.MN=71]="MN",e[e.MS=72]="MS",e[e.MTEXT=73]="MTEXT",e[e.NAV=74]="NAV",e[e.NOBR=75]="NOBR",e[e.NOFRAMES=76]="NOFRAMES",e[e.NOEMBED=77]="NOEMBED",e[e.NOSCRIPT=78]="NOSCRIPT",e[e.OBJECT=79]="OBJECT",e[e.OL=80]="OL",e[e.OPTGROUP=81]="OPTGROUP",e[e.OPTION=82]="OPTION",e[e.P=83]="P",e[e.PARAM=84]="PARAM",e[e.PLAINTEXT=85]="PLAINTEXT",e[e.PRE=86]="PRE",e[e.RB=87]="RB",e[e.RP=88]="RP",e[e.RT=89]="RT",e[e.RTC=90]="RTC",e[e.RUBY=91]="RUBY",e[e.S=92]="S",e[e.SCRIPT=93]="SCRIPT",e[e.SEARCH=94]="SEARCH",e[e.SECTION=95]="SECTION",e[e.SELECT=96]="SELECT",e[e.SOURCE=97]="SOURCE",e[e.SMALL=98]="SMALL",e[e.SPAN=99]="SPAN",e[e.STRIKE=100]="STRIKE",e[e.STRONG=101]="STRONG",e[e.STYLE=102]="STYLE",e[e.SUB=103]="SUB",e[e.SUMMARY=104]="SUMMARY",e[e.SUP=105]="SUP",e[e.TABLE=106]="TABLE",e[e.TBODY=107]="TBODY",e[e.TEMPLATE=108]="TEMPLATE",e[e.TEXTAREA=109]="TEXTAREA",e[e.TFOOT=110]="TFOOT",e[e.TD=111]="TD",e[e.TH=112]="TH",e[e.THEAD=113]="THEAD",e[e.TITLE=114]="TITLE",e[e.TR=115]="TR",e[e.TRACK=116]="TRACK",e[e.TT=117]="TT",e[e.U=118]="U",e[e.UL=119]="UL",e[e.SVG=120]="SVG",e[e.VAR=121]="VAR",e[e.WBR=122]="WBR",e[e.XMP=123]="XMP";})(T||(T={}));var Z3e=new Map([[oe.A,T.A],[oe.ADDRESS,T.ADDRESS],[oe.ANNOTATION_XML,T.ANNOTATION_XML],[oe.APPLET,T.APPLET],[oe.AREA,T.AREA],[oe.ARTICLE,T.ARTICLE],[oe.ASIDE,T.ASIDE],[oe.B,T.B],[oe.BASE,T.BASE],[oe.BASEFONT,T.BASEFONT],[oe.BGSOUND,T.BGSOUND],[oe.BIG,T.BIG],[oe.BLOCKQUOTE,T.BLOCKQUOTE],[oe.BODY,T.BODY],[oe.BR,T.BR],[oe.BUTTON,T.BUTTON],[oe.CAPTION,T.CAPTION],[oe.CENTER,T.CENTER],[oe.CODE,T.CODE],[oe.COL,T.COL],[oe.COLGROUP,T.COLGROUP],[oe.DD,T.DD],[oe.DESC,T.DESC],[oe.DETAILS,T.DETAILS],[oe.DIALOG,T.DIALOG],[oe.DIR,T.DIR],[oe.DIV,T.DIV],[oe.DL,T.DL],[oe.DT,T.DT],[oe.EM,T.EM],[oe.EMBED,T.EMBED],[oe.FIELDSET,T.FIELDSET],[oe.FIGCAPTION,T.FIGCAPTION],[oe.FIGURE,T.FIGURE],[oe.FONT,T.FONT],[oe.FOOTER,T.FOOTER],[oe.FOREIGN_OBJECT,T.FOREIGN_OBJECT],[oe.FORM,T.FORM],[oe.FRAME,T.FRAME],[oe.FRAMESET,T.FRAMESET],[oe.H1,T.H1],[oe.H2,T.H2],[oe.H3,T.H3],[oe.H4,T.H4],[oe.H5,T.H5],[oe.H6,T.H6],[oe.HEAD,T.HEAD],[oe.HEADER,T.HEADER],[oe.HGROUP,T.HGROUP],[oe.HR,T.HR],[oe.HTML,T.HTML],[oe.I,T.I],[oe.IMG,T.IMG],[oe.IMAGE,T.IMAGE],[oe.INPUT,T.INPUT],[oe.IFRAME,T.IFRAME],[oe.KEYGEN,T.KEYGEN],[oe.LABEL,T.LABEL],[oe.LI,T.LI],[oe.LINK,T.LINK],[oe.LISTING,T.LISTING],[oe.MAIN,T.MAIN],[oe.MALIGNMARK,T.MALIGNMARK],[oe.MARQUEE,T.MARQUEE],[oe.MATH,T.MATH],[oe.MENU,T.MENU],[oe.META,T.META],[oe.MGLYPH,T.MGLYPH],[oe.MI,T.MI],[oe.MO,T.MO],[oe.MN,T.MN],[oe.MS,T.MS],[oe.MTEXT,T.MTEXT],[oe.NAV,T.NAV],[oe.NOBR,T.NOBR],[oe.NOFRAMES,T.NOFRAMES],[oe.NOEMBED,T.NOEMBED],[oe.NOSCRIPT,T.NOSCRIPT],[oe.OBJECT,T.OBJECT],[oe.OL,T.OL],[oe.OPTGROUP,T.OPTGROUP],[oe.OPTION,T.OPTION],[oe.P,T.P],[oe.PARAM,T.PARAM],[oe.PLAINTEXT,T.PLAINTEXT],[oe.PRE,T.PRE],[oe.RB,T.RB],[oe.RP,T.RP],[oe.RT,T.RT],[oe.RTC,T.RTC],[oe.RUBY,T.RUBY],[oe.S,T.S],[oe.SCRIPT,T.SCRIPT],[oe.SEARCH,T.SEARCH],[oe.SECTION,T.SECTION],[oe.SELECT,T.SELECT],[oe.SOURCE,T.SOURCE],[oe.SMALL,T.SMALL],[oe.SPAN,T.SPAN],[oe.STRIKE,T.STRIKE],[oe.STRONG,T.STRONG],[oe.STYLE,T.STYLE],[oe.SUB,T.SUB],[oe.SUMMARY,T.SUMMARY],[oe.SUP,T.SUP],[oe.TABLE,T.TABLE],[oe.TBODY,T.TBODY],[oe.TEMPLATE,T.TEMPLATE],[oe.TEXTAREA,T.TEXTAREA],[oe.TFOOT,T.TFOOT],[oe.TD,T.TD],[oe.TH,T.TH],[oe.THEAD,T.THEAD],[oe.TITLE,T.TITLE],[oe.TR,T.TR],[oe.TRACK,T.TRACK],[oe.TT,T.TT],[oe.U,T.U],[oe.UL,T.UL],[oe.SVG,T.SVG],[oe.VAR,T.VAR],[oe.WBR,T.WBR],[oe.XMP,T.XMP]]);function Fh(e){var t;return (t=Z3e.get(e))!==null&&t!==void 0?t:T.UNKNOWN}var _e=T,pce={[Te.HTML]:new Set([_e.ADDRESS,_e.APPLET,_e.AREA,_e.ARTICLE,_e.ASIDE,_e.BASE,_e.BASEFONT,_e.BGSOUND,_e.BLOCKQUOTE,_e.BODY,_e.BR,_e.BUTTON,_e.CAPTION,_e.CENTER,_e.COL,_e.COLGROUP,_e.DD,_e.DETAILS,_e.DIR,_e.DIV,_e.DL,_e.DT,_e.EMBED,_e.FIELDSET,_e.FIGCAPTION,_e.FIGURE,_e.FOOTER,_e.FORM,_e.FRAME,_e.FRAMESET,_e.H1,_e.H2,_e.H3,_e.H4,_e.H5,_e.H6,_e.HEAD,_e.HEADER,_e.HGROUP,_e.HR,_e.HTML,_e.IFRAME,_e.IMG,_e.INPUT,_e.LI,_e.LINK,_e.LISTING,_e.MAIN,_e.MARQUEE,_e.MENU,_e.META,_e.NAV,_e.NOEMBED,_e.NOFRAMES,_e.NOSCRIPT,_e.OBJECT,_e.OL,_e.P,_e.PARAM,_e.PLAINTEXT,_e.PRE,_e.SCRIPT,_e.SECTION,_e.SELECT,_e.SOURCE,_e.STYLE,_e.SUMMARY,_e.TABLE,_e.TBODY,_e.TD,_e.TEMPLATE,_e.TEXTAREA,_e.TFOOT,_e.TH,_e.THEAD,_e.TITLE,_e.TR,_e.TRACK,_e.UL,_e.WBR,_e.XMP]),[Te.MATHML]:new Set([_e.MI,_e.MO,_e.MN,_e.MS,_e.MTEXT,_e.ANNOTATION_XML]),[Te.SVG]:new Set([_e.TITLE,_e.FOREIGN_OBJECT,_e.DESC]),[Te.XLINK]:new Set,[Te.XML]:new Set,[Te.XMLNS]:new Set},yE=new Set([_e.H1,_e.H2,_e.H3,_e.H4,_e.H5,_e.H6]);new Set([oe.STYLE,oe.SCRIPT,oe.XMP,oe.IFRAME,oe.NOEMBED,oe.NOFRAMES,oe.PLAINTEXT]);var B;(function(e){e[e.DATA=0]="DATA",e[e.RCDATA=1]="RCDATA",e[e.RAWTEXT=2]="RAWTEXT",e[e.SCRIPT_DATA=3]="SCRIPT_DATA",e[e.PLAINTEXT=4]="PLAINTEXT",e[e.TAG_OPEN=5]="TAG_OPEN",e[e.END_TAG_OPEN=6]="END_TAG_OPEN",e[e.TAG_NAME=7]="TAG_NAME",e[e.RCDATA_LESS_THAN_SIGN=8]="RCDATA_LESS_THAN_SIGN",e[e.RCDATA_END_TAG_OPEN=9]="RCDATA_END_TAG_OPEN",e[e.RCDATA_END_TAG_NAME=10]="RCDATA_END_TAG_NAME",e[e.RAWTEXT_LESS_THAN_SIGN=11]="RAWTEXT_LESS_THAN_SIGN",e[e.RAWTEXT_END_TAG_OPEN=12]="RAWTEXT_END_TAG_OPEN",e[e.RAWTEXT_END_TAG_NAME=13]="RAWTEXT_END_TAG_NAME",e[e.SCRIPT_DATA_LESS_THAN_SIGN=14]="SCRIPT_DATA_LESS_THAN_SIGN",e[e.SCRIPT_DATA_END_TAG_OPEN=15]="SCRIPT_DATA_END_TAG_OPEN",e[e.SCRIPT_DATA_END_TAG_NAME=16]="SCRIPT_DATA_END_TAG_NAME",e[e.SCRIPT_DATA_ESCAPE_START=17]="SCRIPT_DATA_ESCAPE_START",e[e.SCRIPT_DATA_ESCAPE_START_DASH=18]="SCRIPT_DATA_ESCAPE_START_DASH",e[e.SCRIPT_DATA_ESCAPED=19]="SCRIPT_DATA_ESCAPED",e[e.SCRIPT_DATA_ESCAPED_DASH=20]="SCRIPT_DATA_ESCAPED_DASH",e[e.SCRIPT_DATA_ESCAPED_DASH_DASH=21]="SCRIPT_DATA_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN=22]="SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN=23]="SCRIPT_DATA_ESCAPED_END_TAG_OPEN",e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME=24]="SCRIPT_DATA_ESCAPED_END_TAG_NAME",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START=25]="SCRIPT_DATA_DOUBLE_ESCAPE_START",e[e.SCRIPT_DATA_DOUBLE_ESCAPED=26]="SCRIPT_DATA_DOUBLE_ESCAPED",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH=27]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH=28]="SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH",e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN=29]="SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN",e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END=30]="SCRIPT_DATA_DOUBLE_ESCAPE_END",e[e.BEFORE_ATTRIBUTE_NAME=31]="BEFORE_ATTRIBUTE_NAME",e[e.ATTRIBUTE_NAME=32]="ATTRIBUTE_NAME",e[e.AFTER_ATTRIBUTE_NAME=33]="AFTER_ATTRIBUTE_NAME",e[e.BEFORE_ATTRIBUTE_VALUE=34]="BEFORE_ATTRIBUTE_VALUE",e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED=35]="ATTRIBUTE_VALUE_DOUBLE_QUOTED",e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED=36]="ATTRIBUTE_VALUE_SINGLE_QUOTED",e[e.ATTRIBUTE_VALUE_UNQUOTED=37]="ATTRIBUTE_VALUE_UNQUOTED",e[e.AFTER_ATTRIBUTE_VALUE_QUOTED=38]="AFTER_ATTRIBUTE_VALUE_QUOTED",e[e.SELF_CLOSING_START_TAG=39]="SELF_CLOSING_START_TAG",e[e.BOGUS_COMMENT=40]="BOGUS_COMMENT",e[e.MARKUP_DECLARATION_OPEN=41]="MARKUP_DECLARATION_OPEN",e[e.COMMENT_START=42]="COMMENT_START",e[e.COMMENT_START_DASH=43]="COMMENT_START_DASH",e[e.COMMENT=44]="COMMENT",e[e.COMMENT_LESS_THAN_SIGN=45]="COMMENT_LESS_THAN_SIGN",e[e.COMMENT_LESS_THAN_SIGN_BANG=46]="COMMENT_LESS_THAN_SIGN_BANG",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH=47]="COMMENT_LESS_THAN_SIGN_BANG_DASH",e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH=48]="COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH",e[e.COMMENT_END_DASH=49]="COMMENT_END_DASH",e[e.COMMENT_END=50]="COMMENT_END",e[e.COMMENT_END_BANG=51]="COMMENT_END_BANG",e[e.DOCTYPE=52]="DOCTYPE",e[e.BEFORE_DOCTYPE_NAME=53]="BEFORE_DOCTYPE_NAME",e[e.DOCTYPE_NAME=54]="DOCTYPE_NAME",e[e.AFTER_DOCTYPE_NAME=55]="AFTER_DOCTYPE_NAME",e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD=56]="AFTER_DOCTYPE_PUBLIC_KEYWORD",e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER=57]="BEFORE_DOCTYPE_PUBLIC_IDENTIFIER",e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED=58]="DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED=59]="DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER=60]="AFTER_DOCTYPE_PUBLIC_IDENTIFIER",e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS=61]="BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS",e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD=62]="AFTER_DOCTYPE_SYSTEM_KEYWORD",e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER=63]="BEFORE_DOCTYPE_SYSTEM_IDENTIFIER",e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED=64]="DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED",e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED=65]="DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED",e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER=66]="AFTER_DOCTYPE_SYSTEM_IDENTIFIER",e[e.BOGUS_DOCTYPE=67]="BOGUS_DOCTYPE",e[e.CDATA_SECTION=68]="CDATA_SECTION",e[e.CDATA_SECTION_BRACKET=69]="CDATA_SECTION_BRACKET",e[e.CDATA_SECTION_END=70]="CDATA_SECTION_END",e[e.CHARACTER_REFERENCE=71]="CHARACTER_REFERENCE",e[e.AMBIGUOUS_AMPERSAND=72]="AMBIGUOUS_AMPERSAND";})(B||(B={}));var wi={DATA:B.DATA,RCDATA:B.RCDATA,RAWTEXT:B.RAWTEXT,SCRIPT_DATA:B.SCRIPT_DATA,PLAINTEXT:B.PLAINTEXT,CDATA_SECTION:B.CDATA_SECTION};function t4e(e){return e>=N.DIGIT_0&&e<=N.DIGIT_9}function SE(e){return e>=N.LATIN_CAPITAL_A&&e<=N.LATIN_CAPITAL_Z}function n4e(e){return e>=N.LATIN_SMALL_A&&e<=N.LATIN_SMALL_Z}function nm(e){return n4e(e)||SE(e)}function mce(e){return nm(e)||t4e(e)}function AP(e){return e+32}function gce(e){return e===N.SPACE||e===N.LINE_FEED||e===N.TABULATION||e===N.FORM_FEED}function hce(e){return gce(e)||e===N.SOLIDUS||e===N.GREATER_THAN_SIGN}function o4e(e){return e===N.NULL?ce.nullCharacterReference:e>1114111?ce.characterReferenceOutsideUnicodeRange:gP(e)?ce.surrogateCharacterReference:yP(e)?ce.noncharacterCharacterReference:fP(e)||e===N.CARRIAGE_RETURN?ce.controlCharacterReference:null}var bE=class{constructor(t,n){this.options=t,this.handler=n,this.paused=false,this.inLoop=false,this.inForeignNode=false,this.lastStartTagName="",this.active=false,this.state=B.DATA,this.returnState=B.DATA,this.entityStartPos=0,this.consumedAfterSnapshot=-1,this.currentCharacterToken=null,this.currentToken=null,this.currentAttr={name:"",value:""},this.preprocessor=new SP(n),this.currentLocation=this.getCurrentLocation(-1),this.entityDecoder=new TP(bH,(o,r)=>{this.preprocessor.pos=this.entityStartPos+r-1,this._flushCodePointConsumedAsCharacterReference(o);},n.onParseError?{missingSemicolonAfterCharacterReference:()=>{this._err(ce.missingSemicolonAfterCharacterReference,1);},absenceOfDigitsInNumericCharacterReference:o=>{this._err(ce.absenceOfDigitsInNumericCharacterReference,this.entityStartPos-this.preprocessor.pos+o);},validateNumericCharacterReference:o=>{let r=o4e(o);r&&this._err(r,1);}}:void 0);}_err(t,n=0){var o,r;(r=(o=this.handler).onParseError)===null||r===void 0||r.call(o,this.preprocessor.getError(t,n));}getCurrentLocation(t){return this.options.sourceCodeLocationInfo?{startLine:this.preprocessor.line,startCol:this.preprocessor.col-t,startOffset:this.preprocessor.offset-t,endLine:-1,endCol:-1,endOffset:-1}:null}_runParsingLoop(){if(!this.inLoop){for(this.inLoop=true;this.active&&!this.paused;){this.consumedAfterSnapshot=0;let t=this._consume();this._ensureHibernation()||this._callState(t);}this.inLoop=false;}}pause(){this.paused=true;}resume(t){if(!this.paused)throw new Error("Parser was already resumed");this.paused=false,!this.inLoop&&(this._runParsingLoop(),this.paused||t?.());}write(t,n,o){this.active=true,this.preprocessor.write(t,n),this._runParsingLoop(),this.paused||o?.();}insertHtmlAtCurrentPos(t){this.active=true,this.preprocessor.insertHtmlAtCurrentPos(t),this._runParsingLoop();}_ensureHibernation(){return this.preprocessor.endOfChunkHit?(this.preprocessor.retreat(this.consumedAfterSnapshot),this.consumedAfterSnapshot=0,this.active=false,true):false}_consume(){return this.consumedAfterSnapshot++,this.preprocessor.advance()}_advanceBy(t){this.consumedAfterSnapshot+=t;for(let n=0;n<t;n++)this.preprocessor.advance();}_consumeSequenceIfMatch(t,n){return this.preprocessor.startsWith(t,n)?(this._advanceBy(t.length-1),true):false}_createStartTagToken(){this.currentToken={type:Kt.START_TAG,tagName:"",tagID:T.UNKNOWN,selfClosing:false,ackSelfClosing:false,attrs:[],location:this.getCurrentLocation(1)};}_createEndTagToken(){this.currentToken={type:Kt.END_TAG,tagName:"",tagID:T.UNKNOWN,selfClosing:false,ackSelfClosing:false,attrs:[],location:this.getCurrentLocation(2)};}_createCommentToken(t){this.currentToken={type:Kt.COMMENT,data:"",location:this.getCurrentLocation(t)};}_createDoctypeToken(t){this.currentToken={type:Kt.DOCTYPE,name:t,forceQuirks:false,publicId:null,systemId:null,location:this.currentLocation};}_createCharacterToken(t,n){this.currentCharacterToken={type:t,chars:n,location:this.currentLocation};}_createAttr(t){this.currentAttr={name:t,value:""},this.currentLocation=this.getCurrentLocation(0);}_leaveAttrName(){var t,n;let o=this.currentToken;if(bP(o,this.currentAttr.name)===null){if(o.attrs.push(this.currentAttr),o.location&&this.currentLocation){let r=(t=(n=o.location).attrs)!==null&&t!==void 0?t:n.attrs=Object.create(null);r[this.currentAttr.name]=this.currentLocation,this._leaveAttrValue();}}else this._err(ce.duplicateAttribute);}_leaveAttrValue(){this.currentLocation&&(this.currentLocation.endLine=this.preprocessor.line,this.currentLocation.endCol=this.preprocessor.col,this.currentLocation.endOffset=this.preprocessor.offset);}prepareToken(t){this._emitCurrentCharacterToken(t.location),this.currentToken=null,t.location&&(t.location.endLine=this.preprocessor.line,t.location.endCol=this.preprocessor.col+1,t.location.endOffset=this.preprocessor.offset+1),this.currentLocation=this.getCurrentLocation(-1);}emitCurrentTagToken(){let t=this.currentToken;this.prepareToken(t),t.tagID=Fh(t.tagName),t.type===Kt.START_TAG?(this.lastStartTagName=t.tagName,this.handler.onStartTag(t)):(t.attrs.length>0&&this._err(ce.endTagWithAttributes),t.selfClosing&&this._err(ce.endTagWithTrailingSolidus),this.handler.onEndTag(t)),this.preprocessor.dropParsedChunk();}emitCurrentComment(t){this.prepareToken(t),this.handler.onComment(t),this.preprocessor.dropParsedChunk();}emitCurrentDoctype(t){this.prepareToken(t),this.handler.onDoctype(t),this.preprocessor.dropParsedChunk();}_emitCurrentCharacterToken(t){if(this.currentCharacterToken){switch(t&&this.currentCharacterToken.location&&(this.currentCharacterToken.location.endLine=t.startLine,this.currentCharacterToken.location.endCol=t.startCol,this.currentCharacterToken.location.endOffset=t.startOffset),this.currentCharacterToken.type){case Kt.CHARACTER:{this.handler.onCharacter(this.currentCharacterToken);break}case Kt.NULL_CHARACTER:{this.handler.onNullCharacter(this.currentCharacterToken);break}case Kt.WHITESPACE_CHARACTER:{this.handler.onWhitespaceCharacter(this.currentCharacterToken);break}}this.currentCharacterToken=null;}}_emitEOFToken(){let t=this.getCurrentLocation(0);t&&(t.endLine=t.startLine,t.endCol=t.startCol,t.endOffset=t.startOffset),this._emitCurrentCharacterToken(t),this.handler.onEof({type:Kt.EOF,location:t}),this.active=false;}_appendCharToCurrentCharacterToken(t,n){if(this.currentCharacterToken)if(this.currentCharacterToken.type===t){this.currentCharacterToken.chars+=n;return}else this.currentLocation=this.getCurrentLocation(0),this._emitCurrentCharacterToken(this.currentLocation),this.preprocessor.dropParsedChunk();this._createCharacterToken(t,n);}_emitCodePoint(t){let n=gce(t)?Kt.WHITESPACE_CHARACTER:t===N.NULL?Kt.NULL_CHARACTER:Kt.CHARACTER;this._appendCharToCurrentCharacterToken(n,t<65536?String.fromCharCode(t):String.fromCodePoint(t));}_emitChars(t){this._appendCharToCurrentCharacterToken(Kt.CHARACTER,t);}_startCharacterReference(){this.returnState=this.state,this.state=B.CHARACTER_REFERENCE,this.entityStartPos=this.preprocessor.pos,this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute()?ad.Attribute:ad.Legacy);}_isCharacterReferenceInAttribute(){return this.returnState===B.ATTRIBUTE_VALUE_DOUBLE_QUOTED||this.returnState===B.ATTRIBUTE_VALUE_SINGLE_QUOTED||this.returnState===B.ATTRIBUTE_VALUE_UNQUOTED}_flushCodePointConsumedAsCharacterReference(t){this._isCharacterReferenceInAttribute()?this.currentAttr.value+=String.fromCodePoint(t):this._emitCodePoint(t);}_callState(t){switch(this.state){case B.DATA:{this._stateData(t);break}case B.RCDATA:{this._stateRcdata(t);break}case B.RAWTEXT:{this._stateRawtext(t);break}case B.SCRIPT_DATA:{this._stateScriptData(t);break}case B.PLAINTEXT:{this._statePlaintext(t);break}case B.TAG_OPEN:{this._stateTagOpen(t);break}case B.END_TAG_OPEN:{this._stateEndTagOpen(t);break}case B.TAG_NAME:{this._stateTagName(t);break}case B.RCDATA_LESS_THAN_SIGN:{this._stateRcdataLessThanSign(t);break}case B.RCDATA_END_TAG_OPEN:{this._stateRcdataEndTagOpen(t);break}case B.RCDATA_END_TAG_NAME:{this._stateRcdataEndTagName(t);break}case B.RAWTEXT_LESS_THAN_SIGN:{this._stateRawtextLessThanSign(t);break}case B.RAWTEXT_END_TAG_OPEN:{this._stateRawtextEndTagOpen(t);break}case B.RAWTEXT_END_TAG_NAME:{this._stateRawtextEndTagName(t);break}case B.SCRIPT_DATA_LESS_THAN_SIGN:{this._stateScriptDataLessThanSign(t);break}case B.SCRIPT_DATA_END_TAG_OPEN:{this._stateScriptDataEndTagOpen(t);break}case B.SCRIPT_DATA_END_TAG_NAME:{this._stateScriptDataEndTagName(t);break}case B.SCRIPT_DATA_ESCAPE_START:{this._stateScriptDataEscapeStart(t);break}case B.SCRIPT_DATA_ESCAPE_START_DASH:{this._stateScriptDataEscapeStartDash(t);break}case B.SCRIPT_DATA_ESCAPED:{this._stateScriptDataEscaped(t);break}case B.SCRIPT_DATA_ESCAPED_DASH:{this._stateScriptDataEscapedDash(t);break}case B.SCRIPT_DATA_ESCAPED_DASH_DASH:{this._stateScriptDataEscapedDashDash(t);break}case B.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataEscapedLessThanSign(t);break}case B.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:{this._stateScriptDataEscapedEndTagOpen(t);break}case B.SCRIPT_DATA_ESCAPED_END_TAG_NAME:{this._stateScriptDataEscapedEndTagName(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPE_START:{this._stateScriptDataDoubleEscapeStart(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPED:{this._stateScriptDataDoubleEscaped(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPED_DASH:{this._stateScriptDataDoubleEscapedDash(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH:{this._stateScriptDataDoubleEscapedDashDash(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN:{this._stateScriptDataDoubleEscapedLessThanSign(t);break}case B.SCRIPT_DATA_DOUBLE_ESCAPE_END:{this._stateScriptDataDoubleEscapeEnd(t);break}case B.BEFORE_ATTRIBUTE_NAME:{this._stateBeforeAttributeName(t);break}case B.ATTRIBUTE_NAME:{this._stateAttributeName(t);break}case B.AFTER_ATTRIBUTE_NAME:{this._stateAfterAttributeName(t);break}case B.BEFORE_ATTRIBUTE_VALUE:{this._stateBeforeAttributeValue(t);break}case B.ATTRIBUTE_VALUE_DOUBLE_QUOTED:{this._stateAttributeValueDoubleQuoted(t);break}case B.ATTRIBUTE_VALUE_SINGLE_QUOTED:{this._stateAttributeValueSingleQuoted(t);break}case B.ATTRIBUTE_VALUE_UNQUOTED:{this._stateAttributeValueUnquoted(t);break}case B.AFTER_ATTRIBUTE_VALUE_QUOTED:{this._stateAfterAttributeValueQuoted(t);break}case B.SELF_CLOSING_START_TAG:{this._stateSelfClosingStartTag(t);break}case B.BOGUS_COMMENT:{this._stateBogusComment(t);break}case B.MARKUP_DECLARATION_OPEN:{this._stateMarkupDeclarationOpen(t);break}case B.COMMENT_START:{this._stateCommentStart(t);break}case B.COMMENT_START_DASH:{this._stateCommentStartDash(t);break}case B.COMMENT:{this._stateComment(t);break}case B.COMMENT_LESS_THAN_SIGN:{this._stateCommentLessThanSign(t);break}case B.COMMENT_LESS_THAN_SIGN_BANG:{this._stateCommentLessThanSignBang(t);break}case B.COMMENT_LESS_THAN_SIGN_BANG_DASH:{this._stateCommentLessThanSignBangDash(t);break}case B.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:{this._stateCommentLessThanSignBangDashDash(t);break}case B.COMMENT_END_DASH:{this._stateCommentEndDash(t);break}case B.COMMENT_END:{this._stateCommentEnd(t);break}case B.COMMENT_END_BANG:{this._stateCommentEndBang(t);break}case B.DOCTYPE:{this._stateDoctype(t);break}case B.BEFORE_DOCTYPE_NAME:{this._stateBeforeDoctypeName(t);break}case B.DOCTYPE_NAME:{this._stateDoctypeName(t);break}case B.AFTER_DOCTYPE_NAME:{this._stateAfterDoctypeName(t);break}case B.AFTER_DOCTYPE_PUBLIC_KEYWORD:{this._stateAfterDoctypePublicKeyword(t);break}case B.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateBeforeDoctypePublicIdentifier(t);break}case B.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypePublicIdentifierDoubleQuoted(t);break}case B.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypePublicIdentifierSingleQuoted(t);break}case B.AFTER_DOCTYPE_PUBLIC_IDENTIFIER:{this._stateAfterDoctypePublicIdentifier(t);break}case B.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS:{this._stateBetweenDoctypePublicAndSystemIdentifiers(t);break}case B.AFTER_DOCTYPE_SYSTEM_KEYWORD:{this._stateAfterDoctypeSystemKeyword(t);break}case B.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateBeforeDoctypeSystemIdentifier(t);break}case B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED:{this._stateDoctypeSystemIdentifierDoubleQuoted(t);break}case B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED:{this._stateDoctypeSystemIdentifierSingleQuoted(t);break}case B.AFTER_DOCTYPE_SYSTEM_IDENTIFIER:{this._stateAfterDoctypeSystemIdentifier(t);break}case B.BOGUS_DOCTYPE:{this._stateBogusDoctype(t);break}case B.CDATA_SECTION:{this._stateCdataSection(t);break}case B.CDATA_SECTION_BRACKET:{this._stateCdataSectionBracket(t);break}case B.CDATA_SECTION_END:{this._stateCdataSectionEnd(t);break}case B.CHARACTER_REFERENCE:{this._stateCharacterReference();break}case B.AMBIGUOUS_AMPERSAND:{this._stateAmbiguousAmpersand(t);break}default:throw new Error("Unknown state")}}_stateData(t){switch(t){case N.LESS_THAN_SIGN:{this.state=B.TAG_OPEN;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitCodePoint(t);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateRcdata(t){switch(t){case N.AMPERSAND:{this._startCharacterReference();break}case N.LESS_THAN_SIGN:{this.state=B.RCDATA_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateRawtext(t){switch(t){case N.LESS_THAN_SIGN:{this.state=B.RAWTEXT_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptData(t){switch(t){case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_statePlaintext(t){switch(t){case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateTagOpen(t){if(nm(t))this._createStartTagToken(),this.state=B.TAG_NAME,this._stateTagName(t);else switch(t){case N.EXCLAMATION_MARK:{this.state=B.MARKUP_DECLARATION_OPEN;break}case N.SOLIDUS:{this.state=B.END_TAG_OPEN;break}case N.QUESTION_MARK:{this._err(ce.unexpectedQuestionMarkInsteadOfTagName),this._createCommentToken(1),this.state=B.BOGUS_COMMENT,this._stateBogusComment(t);break}case N.EOF:{this._err(ce.eofBeforeTagName),this._emitChars("<"),this._emitEOFToken();break}default:this._err(ce.invalidFirstCharacterOfTagName),this._emitChars("<"),this.state=B.DATA,this._stateData(t);}}_stateEndTagOpen(t){if(nm(t))this._createEndTagToken(),this.state=B.TAG_NAME,this._stateTagName(t);else switch(t){case N.GREATER_THAN_SIGN:{this._err(ce.missingEndTagName),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofBeforeTagName),this._emitChars("</"),this._emitEOFToken();break}default:this._err(ce.invalidFirstCharacterOfTagName),this._createCommentToken(2),this.state=B.BOGUS_COMMENT,this._stateBogusComment(t);}}_stateTagName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BEFORE_ATTRIBUTE_NAME;break}case N.SOLIDUS:{this.state=B.SELF_CLOSING_START_TAG;break}case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentTagToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.tagName+=Gn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:n.tagName+=String.fromCodePoint(SE(t)?AP(t):t);}}_stateRcdataLessThanSign(t){t===N.SOLIDUS?this.state=B.RCDATA_END_TAG_OPEN:(this._emitChars("<"),this.state=B.RCDATA,this._stateRcdata(t));}_stateRcdataEndTagOpen(t){nm(t)?(this.state=B.RCDATA_END_TAG_NAME,this._stateRcdataEndTagName(t)):(this._emitChars("</"),this.state=B.RCDATA,this._stateRcdata(t));}handleSpecialEndTag(t){if(!this.preprocessor.startsWith(this.lastStartTagName,false))return !this._ensureHibernation();this._createEndTagToken();let n=this.currentToken;switch(n.tagName=this.lastStartTagName,this.preprocessor.peek(this.lastStartTagName.length)){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:return this._advanceBy(this.lastStartTagName.length),this.state=B.BEFORE_ATTRIBUTE_NAME,false;case N.SOLIDUS:return this._advanceBy(this.lastStartTagName.length),this.state=B.SELF_CLOSING_START_TAG,false;case N.GREATER_THAN_SIGN:return this._advanceBy(this.lastStartTagName.length),this.emitCurrentTagToken(),this.state=B.DATA,false;default:return !this._ensureHibernation()}}_stateRcdataEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=B.RCDATA,this._stateRcdata(t));}_stateRawtextLessThanSign(t){t===N.SOLIDUS?this.state=B.RAWTEXT_END_TAG_OPEN:(this._emitChars("<"),this.state=B.RAWTEXT,this._stateRawtext(t));}_stateRawtextEndTagOpen(t){nm(t)?(this.state=B.RAWTEXT_END_TAG_NAME,this._stateRawtextEndTagName(t)):(this._emitChars("</"),this.state=B.RAWTEXT,this._stateRawtext(t));}_stateRawtextEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=B.RAWTEXT,this._stateRawtext(t));}_stateScriptDataLessThanSign(t){switch(t){case N.SOLIDUS:{this.state=B.SCRIPT_DATA_END_TAG_OPEN;break}case N.EXCLAMATION_MARK:{this.state=B.SCRIPT_DATA_ESCAPE_START,this._emitChars("<!");break}default:this._emitChars("<"),this.state=B.SCRIPT_DATA,this._stateScriptData(t);}}_stateScriptDataEndTagOpen(t){nm(t)?(this.state=B.SCRIPT_DATA_END_TAG_NAME,this._stateScriptDataEndTagName(t)):(this._emitChars("</"),this.state=B.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=B.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscapeStart(t){t===N.HYPHEN_MINUS?(this.state=B.SCRIPT_DATA_ESCAPE_START_DASH,this._emitChars("-")):(this.state=B.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscapeStartDash(t){t===N.HYPHEN_MINUS?(this.state=B.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-")):(this.state=B.SCRIPT_DATA,this._stateScriptData(t));}_stateScriptDataEscaped(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.SCRIPT_DATA_ESCAPED_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptDataEscapedDash(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.SCRIPT_DATA_ESCAPED_DASH_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=B.SCRIPT_DATA_ESCAPED,this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=B.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataEscapedDashDash(t){switch(t){case N.HYPHEN_MINUS:{this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;break}case N.GREATER_THAN_SIGN:{this.state=B.SCRIPT_DATA,this._emitChars(">");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=B.SCRIPT_DATA_ESCAPED,this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=B.SCRIPT_DATA_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataEscapedLessThanSign(t){t===N.SOLIDUS?this.state=B.SCRIPT_DATA_ESCAPED_END_TAG_OPEN:nm(t)?(this._emitChars("<"),this.state=B.SCRIPT_DATA_DOUBLE_ESCAPE_START,this._stateScriptDataDoubleEscapeStart(t)):(this._emitChars("<"),this.state=B.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataEscapedEndTagOpen(t){nm(t)?(this.state=B.SCRIPT_DATA_ESCAPED_END_TAG_NAME,this._stateScriptDataEscapedEndTagName(t)):(this._emitChars("</"),this.state=B.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataEscapedEndTagName(t){this.handleSpecialEndTag(t)&&(this._emitChars("</"),this.state=B.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataDoubleEscapeStart(t){if(this.preprocessor.startsWith(Xi.SCRIPT,false)&&hce(this.preprocessor.peek(Xi.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n<Xi.SCRIPT.length;n++)this._emitCodePoint(this._consume());this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED;}else this._ensureHibernation()||(this.state=B.SCRIPT_DATA_ESCAPED,this._stateScriptDataEscaped(t));}_stateScriptDataDoubleEscaped(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedDash(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH,this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedDashDash(t){switch(t){case N.HYPHEN_MINUS:{this._emitChars("-");break}case N.LESS_THAN_SIGN:{this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN,this._emitChars("<");break}case N.GREATER_THAN_SIGN:{this.state=B.SCRIPT_DATA,this._emitChars(">");break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitChars(Gn);break}case N.EOF:{this._err(ce.eofInScriptHtmlCommentLikeText),this._emitEOFToken();break}default:this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._emitCodePoint(t);}}_stateScriptDataDoubleEscapedLessThanSign(t){t===N.SOLIDUS?(this.state=B.SCRIPT_DATA_DOUBLE_ESCAPE_END,this._emitChars("/")):(this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t));}_stateScriptDataDoubleEscapeEnd(t){if(this.preprocessor.startsWith(Xi.SCRIPT,false)&&hce(this.preprocessor.peek(Xi.SCRIPT.length))){this._emitCodePoint(t);for(let n=0;n<Xi.SCRIPT.length;n++)this._emitCodePoint(this._consume());this.state=B.SCRIPT_DATA_ESCAPED;}else this._ensureHibernation()||(this.state=B.SCRIPT_DATA_DOUBLE_ESCAPED,this._stateScriptDataDoubleEscaped(t));}_stateBeforeAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.SOLIDUS:case N.GREATER_THAN_SIGN:case N.EOF:{this.state=B.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(t);break}case N.EQUALS_SIGN:{this._err(ce.unexpectedEqualsSignBeforeAttributeName),this._createAttr("="),this.state=B.ATTRIBUTE_NAME;break}default:this._createAttr(""),this.state=B.ATTRIBUTE_NAME,this._stateAttributeName(t);}}_stateAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:case N.SOLIDUS:case N.GREATER_THAN_SIGN:case N.EOF:{this._leaveAttrName(),this.state=B.AFTER_ATTRIBUTE_NAME,this._stateAfterAttributeName(t);break}case N.EQUALS_SIGN:{this._leaveAttrName(),this.state=B.BEFORE_ATTRIBUTE_VALUE;break}case N.QUOTATION_MARK:case N.APOSTROPHE:case N.LESS_THAN_SIGN:{this._err(ce.unexpectedCharacterInAttributeName),this.currentAttr.name+=String.fromCodePoint(t);break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.name+=Gn;break}default:this.currentAttr.name+=String.fromCodePoint(SE(t)?AP(t):t);}}_stateAfterAttributeName(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.SOLIDUS:{this.state=B.SELF_CLOSING_START_TAG;break}case N.EQUALS_SIGN:{this.state=B.BEFORE_ATTRIBUTE_VALUE;break}case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._createAttr(""),this.state=B.ATTRIBUTE_NAME,this._stateAttributeName(t);}}_stateBeforeAttributeValue(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{this.state=B.ATTRIBUTE_VALUE_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this.state=B.ATTRIBUTE_VALUE_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingAttributeValue),this.state=B.DATA,this.emitCurrentTagToken();break}default:this.state=B.ATTRIBUTE_VALUE_UNQUOTED,this._stateAttributeValueUnquoted(t);}}_stateAttributeValueDoubleQuoted(t){switch(t){case N.QUOTATION_MARK:{this.state=B.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Gn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAttributeValueSingleQuoted(t){switch(t){case N.APOSTROPHE:{this.state=B.AFTER_ATTRIBUTE_VALUE_QUOTED;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Gn;break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAttributeValueUnquoted(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this._leaveAttrValue(),this.state=B.BEFORE_ATTRIBUTE_NAME;break}case N.AMPERSAND:{this._startCharacterReference();break}case N.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=B.DATA,this.emitCurrentTagToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),this.currentAttr.value+=Gn;break}case N.QUOTATION_MARK:case N.APOSTROPHE:case N.LESS_THAN_SIGN:case N.EQUALS_SIGN:case N.GRAVE_ACCENT:{this._err(ce.unexpectedCharacterInUnquotedAttributeValue),this.currentAttr.value+=String.fromCodePoint(t);break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this.currentAttr.value+=String.fromCodePoint(t);}}_stateAfterAttributeValueQuoted(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this._leaveAttrValue(),this.state=B.BEFORE_ATTRIBUTE_NAME;break}case N.SOLIDUS:{this._leaveAttrValue(),this.state=B.SELF_CLOSING_START_TAG;break}case N.GREATER_THAN_SIGN:{this._leaveAttrValue(),this.state=B.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._err(ce.missingWhitespaceBetweenAttributes),this.state=B.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(t);}}_stateSelfClosingStartTag(t){switch(t){case N.GREATER_THAN_SIGN:{let n=this.currentToken;n.selfClosing=true,this.state=B.DATA,this.emitCurrentTagToken();break}case N.EOF:{this._err(ce.eofInTag),this._emitEOFToken();break}default:this._err(ce.unexpectedSolidusInTag),this.state=B.BEFORE_ATTRIBUTE_NAME,this._stateBeforeAttributeName(t);}}_stateBogusComment(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentComment(n);break}case N.EOF:{this.emitCurrentComment(n),this._emitEOFToken();break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.data+=Gn;break}default:n.data+=String.fromCodePoint(t);}}_stateMarkupDeclarationOpen(t){this._consumeSequenceIfMatch(Xi.DASH_DASH,true)?(this._createCommentToken(Xi.DASH_DASH.length+1),this.state=B.COMMENT_START):this._consumeSequenceIfMatch(Xi.DOCTYPE,false)?(this.currentLocation=this.getCurrentLocation(Xi.DOCTYPE.length+1),this.state=B.DOCTYPE):this._consumeSequenceIfMatch(Xi.CDATA_START,true)?this.inForeignNode?this.state=B.CDATA_SECTION:(this._err(ce.cdataInHtmlContent),this._createCommentToken(Xi.CDATA_START.length+1),this.currentToken.data="[CDATA[",this.state=B.BOGUS_COMMENT):this._ensureHibernation()||(this._err(ce.incorrectlyOpenedComment),this._createCommentToken(2),this.state=B.BOGUS_COMMENT,this._stateBogusComment(t));}_stateCommentStart(t){switch(t){case N.HYPHEN_MINUS:{this.state=B.COMMENT_START_DASH;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptClosingOfEmptyComment),this.state=B.DATA;let n=this.currentToken;this.emitCurrentComment(n);break}default:this.state=B.COMMENT,this._stateComment(t);}}_stateCommentStartDash(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=B.COMMENT_END;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptClosingOfEmptyComment),this.state=B.DATA,this.emitCurrentComment(n);break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="-",this.state=B.COMMENT,this._stateComment(t);}}_stateComment(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=B.COMMENT_END_DASH;break}case N.LESS_THAN_SIGN:{n.data+="<",this.state=B.COMMENT_LESS_THAN_SIGN;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.data+=Gn;break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+=String.fromCodePoint(t);}}_stateCommentLessThanSign(t){let n=this.currentToken;switch(t){case N.EXCLAMATION_MARK:{n.data+="!",this.state=B.COMMENT_LESS_THAN_SIGN_BANG;break}case N.LESS_THAN_SIGN:{n.data+="<";break}default:this.state=B.COMMENT,this._stateComment(t);}}_stateCommentLessThanSignBang(t){t===N.HYPHEN_MINUS?this.state=B.COMMENT_LESS_THAN_SIGN_BANG_DASH:(this.state=B.COMMENT,this._stateComment(t));}_stateCommentLessThanSignBangDash(t){t===N.HYPHEN_MINUS?this.state=B.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH:(this.state=B.COMMENT_END_DASH,this._stateCommentEndDash(t));}_stateCommentLessThanSignBangDashDash(t){t!==N.GREATER_THAN_SIGN&&t!==N.EOF&&this._err(ce.nestedComment),this.state=B.COMMENT_END,this._stateCommentEnd(t);}_stateCommentEndDash(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{this.state=B.COMMENT_END;break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="-",this.state=B.COMMENT,this._stateComment(t);}}_stateCommentEnd(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentComment(n);break}case N.EXCLAMATION_MARK:{this.state=B.COMMENT_END_BANG;break}case N.HYPHEN_MINUS:{n.data+="-";break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="--",this.state=B.COMMENT,this._stateComment(t);}}_stateCommentEndBang(t){let n=this.currentToken;switch(t){case N.HYPHEN_MINUS:{n.data+="--!",this.state=B.COMMENT_END_DASH;break}case N.GREATER_THAN_SIGN:{this._err(ce.incorrectlyClosedComment),this.state=B.DATA,this.emitCurrentComment(n);break}case N.EOF:{this._err(ce.eofInComment),this.emitCurrentComment(n),this._emitEOFToken();break}default:n.data+="--!",this.state=B.COMMENT,this._stateComment(t);}}_stateDoctype(t){switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BEFORE_DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this.state=B.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(t);break}case N.EOF:{this._err(ce.eofInDoctype),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingWhitespaceBeforeDoctypeName),this.state=B.BEFORE_DOCTYPE_NAME,this._stateBeforeDoctypeName(t);}}_stateBeforeDoctypeName(t){if(SE(t))this._createDoctypeToken(String.fromCharCode(AP(t))),this.state=B.DOCTYPE_NAME;else switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.NULL:{this._err(ce.unexpectedNullCharacter),this._createDoctypeToken(Gn),this.state=B.DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeName),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),this._createDoctypeToken(null);let n=this.currentToken;n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._createDoctypeToken(String.fromCodePoint(t)),this.state=B.DOCTYPE_NAME;}}_stateDoctypeName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.AFTER_DOCTYPE_NAME;break}case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.name+=Gn;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.name+=String.fromCodePoint(SE(t)?AP(t):t);}}_stateAfterDoctypeName(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._consumeSequenceIfMatch(Xi.PUBLIC,false)?this.state=B.AFTER_DOCTYPE_PUBLIC_KEYWORD:this._consumeSequenceIfMatch(Xi.SYSTEM,false)?this.state=B.AFTER_DOCTYPE_SYSTEM_KEYWORD:this._ensureHibernation()||(this._err(ce.invalidCharacterSequenceAfterDoctypeName),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t));}}_stateAfterDoctypePublicKeyword(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceAfterDoctypePublicKeyword),n.publicId="",this.state=B.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceAfterDoctypePublicKeyword),n.publicId="",this.state=B.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypePublicIdentifier),n.forceQuirks=true,this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypePublicIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBeforeDoctypePublicIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{n.publicId="",this.state=B.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.publicId="",this.state=B.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypePublicIdentifier),n.forceQuirks=true,this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypePublicIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateDoctypePublicIdentifierDoubleQuoted(t){let n=this.currentToken;switch(t){case N.QUOTATION_MARK:{this.state=B.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.publicId+=Gn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypePublicIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.publicId+=String.fromCodePoint(t);}}_stateDoctypePublicIdentifierSingleQuoted(t){let n=this.currentToken;switch(t){case N.APOSTROPHE:{this.state=B.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.publicId+=Gn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypePublicIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.publicId+=String.fromCodePoint(t);}}_stateAfterDoctypePublicIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;break}case N.GREATER_THAN_SIGN:{this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers),n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBetweenDoctypePublicAndSystemIdentifiers(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.QUOTATION_MARK:{n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateAfterDoctypeSystemKeyword(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:{this.state=B.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.QUOTATION_MARK:{this._err(ce.missingWhitespaceAfterDoctypeSystemKeyword),n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{this._err(ce.missingWhitespaceAfterDoctypeSystemKeyword),n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBeforeDoctypeSystemIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.QUOTATION_MARK:{n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;break}case N.APOSTROPHE:{n.systemId="",this.state=B.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;break}case N.GREATER_THAN_SIGN:{this._err(ce.missingDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.DATA,this.emitCurrentDoctype(n);break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.missingQuoteBeforeDoctypeSystemIdentifier),n.forceQuirks=true,this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateDoctypeSystemIdentifierDoubleQuoted(t){let n=this.currentToken;switch(t){case N.QUOTATION_MARK:{this.state=B.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.systemId+=Gn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypeSystemIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.systemId+=String.fromCodePoint(t);}}_stateDoctypeSystemIdentifierSingleQuoted(t){let n=this.currentToken;switch(t){case N.APOSTROPHE:{this.state=B.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;break}case N.NULL:{this._err(ce.unexpectedNullCharacter),n.systemId+=Gn;break}case N.GREATER_THAN_SIGN:{this._err(ce.abruptDoctypeSystemIdentifier),n.forceQuirks=true,this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:n.systemId+=String.fromCodePoint(t);}}_stateAfterDoctypeSystemIdentifier(t){let n=this.currentToken;switch(t){case N.SPACE:case N.LINE_FEED:case N.TABULATION:case N.FORM_FEED:break;case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.EOF:{this._err(ce.eofInDoctype),n.forceQuirks=true,this.emitCurrentDoctype(n),this._emitEOFToken();break}default:this._err(ce.unexpectedCharacterAfterDoctypeSystemIdentifier),this.state=B.BOGUS_DOCTYPE,this._stateBogusDoctype(t);}}_stateBogusDoctype(t){let n=this.currentToken;switch(t){case N.GREATER_THAN_SIGN:{this.emitCurrentDoctype(n),this.state=B.DATA;break}case N.NULL:{this._err(ce.unexpectedNullCharacter);break}case N.EOF:{this.emitCurrentDoctype(n),this._emitEOFToken();break}}}_stateCdataSection(t){switch(t){case N.RIGHT_SQUARE_BRACKET:{this.state=B.CDATA_SECTION_BRACKET;break}case N.EOF:{this._err(ce.eofInCdata),this._emitEOFToken();break}default:this._emitCodePoint(t);}}_stateCdataSectionBracket(t){t===N.RIGHT_SQUARE_BRACKET?this.state=B.CDATA_SECTION_END:(this._emitChars("]"),this.state=B.CDATA_SECTION,this._stateCdataSection(t));}_stateCdataSectionEnd(t){switch(t){case N.GREATER_THAN_SIGN:{this.state=B.DATA;break}case N.RIGHT_SQUARE_BRACKET:{this._emitChars("]");break}default:this._emitChars("]]"),this.state=B.CDATA_SECTION,this._stateCdataSection(t);}}_stateCharacterReference(){let t=this.entityDecoder.write(this.preprocessor.html,this.preprocessor.pos);if(t<0)if(this.preprocessor.lastChunkWritten)t=this.entityDecoder.end();else {this.active=false,this.preprocessor.pos=this.preprocessor.html.length-1,this.consumedAfterSnapshot=0,this.preprocessor.endOfChunkHit=true;return}t===0?(this.preprocessor.pos=this.entityStartPos,this._flushCodePointConsumedAsCharacterReference(N.AMPERSAND),this.state=!this._isCharacterReferenceInAttribute()&&mce(this.preprocessor.peek(1))?B.AMBIGUOUS_AMPERSAND:this.returnState):this.state=this.returnState;}_stateAmbiguousAmpersand(t){mce(t)?this._flushCodePointConsumedAsCharacterReference(t):(t===N.SEMICOLON&&this._err(ce.unknownNamedCharacterReference),this.state=this.returnState,this._callState(t));}};var bce=new Set([T.DD,T.DT,T.LI,T.OPTGROUP,T.OPTION,T.P,T.RB,T.RP,T.RT,T.RTC]),fce=new Set([...bce,T.CAPTION,T.COLGROUP,T.TBODY,T.TD,T.TFOOT,T.TH,T.THEAD,T.TR]),EP=new Set([T.APPLET,T.CAPTION,T.HTML,T.MARQUEE,T.OBJECT,T.TABLE,T.TD,T.TEMPLATE,T.TH]),r4e=new Set([...EP,T.OL,T.UL]),i4e=new Set([...EP,T.BUTTON]),yce=new Set([T.ANNOTATION_XML,T.MI,T.MN,T.MO,T.MS,T.MTEXT]),Sce=new Set([T.DESC,T.FOREIGN_OBJECT,T.TITLE]),s4e=new Set([T.TR,T.TEMPLATE,T.HTML]),a4e=new Set([T.TBODY,T.TFOOT,T.THEAD,T.TEMPLATE,T.HTML]),l4e=new Set([T.TABLE,T.TEMPLATE,T.HTML]),c4e=new Set([T.TD,T.TH]),CP=class{get currentTmplContentOrNode(){return this._isInTemplate()?this.treeAdapter.getTemplateContent(this.current):this.current}constructor(t,n,o){this.treeAdapter=n,this.handler=o,this.items=[],this.tagIDs=[],this.stackTop=-1,this.tmplCount=0,this.currentTagId=T.UNKNOWN,this.current=t;}_indexOf(t){return this.items.lastIndexOf(t,this.stackTop)}_isInTemplate(){return this.currentTagId===T.TEMPLATE&&this.treeAdapter.getNamespaceURI(this.current)===Te.HTML}_updateCurrentElement(){this.current=this.items[this.stackTop],this.currentTagId=this.tagIDs[this.stackTop];}push(t,n){this.stackTop++,this.items[this.stackTop]=t,this.current=t,this.tagIDs[this.stackTop]=n,this.currentTagId=n,this._isInTemplate()&&this.tmplCount++,this.handler.onItemPush(t,n,true);}pop(){let t=this.current;this.tmplCount>0&&this._isInTemplate()&&this.tmplCount--,this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,true);}replace(t,n){let o=this._indexOf(t);this.items[o]=n,o===this.stackTop&&(this.current=n);}insertAfter(t,n,o){let r=this._indexOf(t)+1;this.items.splice(r,0,n),this.tagIDs.splice(r,0,o),this.stackTop++,r===this.stackTop&&this._updateCurrentElement(),this.current&&this.currentTagId!==void 0&&this.handler.onItemPush(this.current,this.currentTagId,r===this.stackTop);}popUntilTagNamePopped(t){let n=this.stackTop+1;do n=this.tagIDs.lastIndexOf(t,n-1);while(n>0&&this.treeAdapter.getNamespaceURI(this.items[n])!==Te.HTML);this.shortenToLength(Math.max(n,0));}shortenToLength(t){for(;this.stackTop>=t;){let n=this.current;this.tmplCount>0&&this._isInTemplate()&&(this.tmplCount-=1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(n,this.stackTop<t);}}popUntilElementPopped(t){let n=this._indexOf(t);this.shortenToLength(Math.max(n,0));}popUntilPopped(t,n){let o=this._indexOfTagNames(t,n);this.shortenToLength(Math.max(o,0));}popUntilNumberedHeaderPopped(){this.popUntilPopped(yE,Te.HTML);}popUntilTableCellPopped(){this.popUntilPopped(c4e,Te.HTML);}popAllUpToHtmlElement(){this.tmplCount=0,this.shortenToLength(1);}_indexOfTagNames(t,n){for(let o=this.stackTop;o>=0;o--)if(t.has(this.tagIDs[o])&&this.treeAdapter.getNamespaceURI(this.items[o])===n)return o;return -1}clearBackTo(t,n){let o=this._indexOfTagNames(t,n);this.shortenToLength(o+1);}clearBackToTableContext(){this.clearBackTo(l4e,Te.HTML);}clearBackToTableBodyContext(){this.clearBackTo(a4e,Te.HTML);}clearBackToTableRowContext(){this.clearBackTo(s4e,Te.HTML);}remove(t){let n=this._indexOf(t);n>=0&&(n===this.stackTop?this.pop():(this.items.splice(n,1),this.tagIDs.splice(n,1),this.stackTop--,this._updateCurrentElement(),this.handler.onItemPop(t,false)));}tryPeekProperlyNestedBodyElement(){return this.stackTop>=1&&this.tagIDs[1]===T.BODY?this.items[1]:null}contains(t){return this._indexOf(t)>-1}getCommonAncestor(t){let n=this._indexOf(t)-1;return n>=0?this.items[n]:null}isRootHtmlElementCurrent(){return this.stackTop===0&&this.tagIDs[0]===T.HTML}hasInDynamicScope(t,n){for(let o=this.stackTop;o>=0;o--){let r=this.tagIDs[o];switch(this.treeAdapter.getNamespaceURI(this.items[o])){case Te.HTML:{if(r===t)return true;if(n.has(r))return false;break}case Te.SVG:{if(Sce.has(r))return false;break}case Te.MATHML:{if(yce.has(r))return false;break}}}return true}hasInScope(t){return this.hasInDynamicScope(t,EP)}hasInListItemScope(t){return this.hasInDynamicScope(t,r4e)}hasInButtonScope(t){return this.hasInDynamicScope(t,i4e)}hasNumberedHeaderInScope(){for(let t=this.stackTop;t>=0;t--){let n=this.tagIDs[t];switch(this.treeAdapter.getNamespaceURI(this.items[t])){case Te.HTML:{if(yE.has(n))return true;if(EP.has(n))return false;break}case Te.SVG:{if(Sce.has(n))return false;break}case Te.MATHML:{if(yce.has(n))return false;break}}}return true}hasInTableScope(t){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===Te.HTML)switch(this.tagIDs[n]){case t:return true;case T.TABLE:case T.HTML:return false}return true}hasTableBodyContextInTableScope(){for(let t=this.stackTop;t>=0;t--)if(this.treeAdapter.getNamespaceURI(this.items[t])===Te.HTML)switch(this.tagIDs[t]){case T.TBODY:case T.THEAD:case T.TFOOT:return true;case T.TABLE:case T.HTML:return false}return true}hasInSelectScope(t){for(let n=this.stackTop;n>=0;n--)if(this.treeAdapter.getNamespaceURI(this.items[n])===Te.HTML)switch(this.tagIDs[n]){case t:return true;case T.OPTION:case T.OPTGROUP:break;default:return false}return true}generateImpliedEndTags(){for(;this.currentTagId!==void 0&&bce.has(this.currentTagId);)this.pop();}generateImpliedEndTagsThoroughly(){for(;this.currentTagId!==void 0&&fce.has(this.currentTagId);)this.pop();}generateImpliedEndTagsWithExclusion(t){for(;this.currentTagId!==void 0&&this.currentTagId!==t&&fce.has(this.currentTagId);)this.pop();}};var Fl;(function(e){e[e.Marker=0]="Marker",e[e.Element=1]="Element";})(Fl||(Fl={}));var Tce={type:Fl.Marker},vP=class{constructor(t){this.treeAdapter=t,this.entries=[],this.bookmark=null;}_getNoahArkConditionCandidates(t,n){let o=[],r=n.length,i=this.treeAdapter.getTagName(t),s=this.treeAdapter.getNamespaceURI(t);for(let a=0;a<this.entries.length;a++){let l=this.entries[a];if(l.type===Fl.Marker)break;let{element:c}=l;if(this.treeAdapter.getTagName(c)===i&&this.treeAdapter.getNamespaceURI(c)===s){let d=this.treeAdapter.getAttrList(c);d.length===r&&o.push({idx:a,attrs:d});}}return o}_ensureNoahArkCondition(t){if(this.entries.length<3)return;let n=this.treeAdapter.getAttrList(t),o=this._getNoahArkConditionCandidates(t,n);if(o.length<3)return;let r=new Map(n.map(s=>[s.name,s.value])),i=0;for(let s=0;s<o.length;s++){let a=o[s];a.attrs.every(l=>r.get(l.name)===l.value)&&(i+=1,i>=3&&this.entries.splice(a.idx,1));}}insertMarker(){this.entries.unshift(Tce);}pushElement(t,n){this._ensureNoahArkCondition(t),this.entries.unshift({type:Fl.Element,element:t,token:n});}insertElementAfterBookmark(t,n){let o=this.entries.indexOf(this.bookmark);this.entries.splice(o,0,{type:Fl.Element,element:t,token:n});}removeEntry(t){let n=this.entries.indexOf(t);n!==-1&&this.entries.splice(n,1);}clearToLastMarker(){let t=this.entries.indexOf(Tce);t===-1?this.entries.length=0:this.entries.splice(0,t+1);}getElementEntryInScopeWithTagName(t){let n=this.entries.find(o=>o.type===Fl.Marker||this.treeAdapter.getTagName(o.element)===t);return n&&n.type===Fl.Element?n:null}getElementEntry(t){return this.entries.find(n=>n.type===Fl.Element&&n.element===t)}};var Bl={createDocument(){return {nodeName:"#document",mode:Qi.NO_QUIRKS,childNodes:[]}},createDocumentFragment(){return {nodeName:"#document-fragment",childNodes:[]}},createElement(e,t,n){return {nodeName:e,tagName:e,attrs:n,namespaceURI:t,childNodes:[],parentNode:null}},createCommentNode(e){return {nodeName:"#comment",data:e,parentNode:null}},createTextNode(e){return {nodeName:"#text",value:e,parentNode:null}},appendChild(e,t){e.childNodes.push(t),t.parentNode=e;},insertBefore(e,t,n){let o=e.childNodes.indexOf(n);e.childNodes.splice(o,0,t),t.parentNode=e;},setTemplateContent(e,t){e.content=t;},getTemplateContent(e){return e.content},setDocumentType(e,t,n,o){let r=e.childNodes.find(i=>i.nodeName==="#documentType");if(r)r.name=t,r.publicId=n,r.systemId=o;else {let i={nodeName:"#documentType",name:t,publicId:n,systemId:o,parentNode:null};Bl.appendChild(e,i);}},setDocumentMode(e,t){e.mode=t;},getDocumentMode(e){return e.mode},detachNode(e){if(e.parentNode){let t=e.parentNode.childNodes.indexOf(e);e.parentNode.childNodes.splice(t,1),e.parentNode=null;}},insertText(e,t){if(e.childNodes.length>0){let n=e.childNodes[e.childNodes.length-1];if(Bl.isTextNode(n)){n.value+=t;return}}Bl.appendChild(e,Bl.createTextNode(t));},insertTextBefore(e,t,n){let o=e.childNodes[e.childNodes.indexOf(n)-1];o&&Bl.isTextNode(o)?o.value+=t:Bl.insertBefore(e,Bl.createTextNode(t),n);},adoptAttributes(e,t){let n=new Set(e.attrs.map(o=>o.name));for(let o=0;o<t.length;o++)n.has(t[o].name)||e.attrs.push(t[o]);},getFirstChild(e){return e.childNodes[0]},getChildNodes(e){return e.childNodes},getParentNode(e){return e.parentNode},getAttrList(e){return e.attrs},getTagName(e){return e.tagName},getNamespaceURI(e){return e.namespaceURI},getTextNodeContent(e){return e.value},getCommentNodeContent(e){return e.data},getDocumentTypeNodeName(e){return e.name},getDocumentTypeNodePublicId(e){return e.publicId},getDocumentTypeNodeSystemId(e){return e.systemId},isTextNode(e){return e.nodeName==="#text"},isCommentNode(e){return e.nodeName==="#comment"},isDocumentTypeNode(e){return e.nodeName==="#documentType"},isElementNode(e){return Object.prototype.hasOwnProperty.call(e,"tagName")},setNodeSourceCodeLocation(e,t){e.sourceCodeLocation=t;},getNodeSourceCodeLocation(e){return e.sourceCodeLocation},updateNodeSourceCodeLocation(e,t){e.sourceCodeLocation={...e.sourceCodeLocation,...t};}};var Ece="html",d4e="about:legacy-compat",u4e="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd",Cce=["+//silmaril//dtd html pro v0r11 19970101//","-//as//dtd html 3.0 aswedit + extensions//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//o'reilly and associates//dtd html extended relaxed 1.0//","-//sq//dtd html 2.0 hotmetal + extensions//","-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//","-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//","-//spyglass//dtd html 2.0 extended//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//"],p4e=[...Cce,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"],m4e=new Set(["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"]),vce=["-//w3c//dtd xhtml 1.0 frameset//","-//w3c//dtd xhtml 1.0 transitional//"],h4e=[...vce,"-//w3c//dtd html 4.01 frameset//","-//w3c//dtd html 4.01 transitional//"];function Ace(e,t){return t.some(n=>e.startsWith(n))}function Rce(e){return e.name===Ece&&e.publicId===null&&(e.systemId===null||e.systemId===d4e)}function wce(e){if(e.name!==Ece)return Qi.QUIRKS;let{systemId:t}=e;if(t&&t.toLowerCase()===u4e)return Qi.QUIRKS;let{publicId:n}=e;if(n!==null){if(n=n.toLowerCase(),m4e.has(n))return Qi.QUIRKS;let o=t===null?p4e:Cce;if(Ace(n,o))return Qi.QUIRKS;if(o=t===null?vce:h4e,Ace(n,o))return Qi.LIMITED_QUIRKS}return Qi.NO_QUIRKS}var Ice={TEXT_HTML:"text/html",APPLICATION_XML:"application/xhtml+xml"},f4e="definitionurl",y4e="definitionURL",S4e=new Map(["attributeName","attributeType","baseFrequency","baseProfile","calcMode","clipPathUnits","diffuseConstant","edgeMode","filterUnits","glyphRef","gradientTransform","gradientUnits","kernelMatrix","kernelUnitLength","keyPoints","keySplines","keyTimes","lengthAdjust","limitingConeAngle","markerHeight","markerUnits","markerWidth","maskContentUnits","maskUnits","numOctaves","pathLength","patternContentUnits","patternTransform","patternUnits","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","refX","refY","repeatCount","repeatDur","requiredExtensions","requiredFeatures","specularConstant","specularExponent","spreadMethod","startOffset","stdDeviation","stitchTiles","surfaceScale","systemLanguage","tableValues","targetX","targetY","textLength","viewBox","viewTarget","xChannelSelector","yChannelSelector","zoomAndPan"].map(e=>[e.toLowerCase(),e])),b4e=new Map([["xlink:actuate",{prefix:"xlink",name:"actuate",namespace:Te.XLINK}],["xlink:arcrole",{prefix:"xlink",name:"arcrole",namespace:Te.XLINK}],["xlink:href",{prefix:"xlink",name:"href",namespace:Te.XLINK}],["xlink:role",{prefix:"xlink",name:"role",namespace:Te.XLINK}],["xlink:show",{prefix:"xlink",name:"show",namespace:Te.XLINK}],["xlink:title",{prefix:"xlink",name:"title",namespace:Te.XLINK}],["xlink:type",{prefix:"xlink",name:"type",namespace:Te.XLINK}],["xml:lang",{prefix:"xml",name:"lang",namespace:Te.XML}],["xml:space",{prefix:"xml",name:"space",namespace:Te.XML}],["xmlns",{prefix:"",name:"xmlns",namespace:Te.XMLNS}],["xmlns:xlink",{prefix:"xmlns",name:"xlink",namespace:Te.XMLNS}]]),T4e=new Map(["altGlyph","altGlyphDef","altGlyphItem","animateColor","animateMotion","animateTransform","clipPath","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","foreignObject","glyphRef","linearGradient","radialGradient","textPath"].map(e=>[e.toLowerCase(),e])),A4e=new Set([T.B,T.BIG,T.BLOCKQUOTE,T.BODY,T.BR,T.CENTER,T.CODE,T.DD,T.DIV,T.DL,T.DT,T.EM,T.EMBED,T.H1,T.H2,T.H3,T.H4,T.H5,T.H6,T.HEAD,T.HR,T.I,T.IMG,T.LI,T.LISTING,T.MENU,T.META,T.NOBR,T.OL,T.P,T.PRE,T.RUBY,T.S,T.SMALL,T.SPAN,T.STRONG,T.STRIKE,T.SUB,T.SUP,T.TABLE,T.TT,T.U,T.UL,T.VAR]);function xce(e){let t=e.tagID;return t===T.FONT&&e.attrs.some(({name:o})=>o===Eu.COLOR||o===Eu.SIZE||o===Eu.FACE)||A4e.has(t)}function AH(e){for(let t=0;t<e.attrs.length;t++)if(e.attrs[t].name===f4e){e.attrs[t].name=y4e;break}}function EH(e){for(let t=0;t<e.attrs.length;t++){let n=S4e.get(e.attrs[t].name);n!=null&&(e.attrs[t].name=n);}}function RP(e){for(let t=0;t<e.attrs.length;t++){let n=b4e.get(e.attrs[t].name);n&&(e.attrs[t].prefix=n.prefix,e.attrs[t].name=n.name,e.attrs[t].namespace=n.namespace);}}function _ce(e){let t=T4e.get(e.tagName);t!=null&&(e.tagName=t,e.tagID=Fh(e.tagName));}function E4e(e,t){return t===Te.MATHML&&(e===T.MI||e===T.MO||e===T.MN||e===T.MS||e===T.MTEXT)}function C4e(e,t,n){if(t===Te.MATHML&&e===T.ANNOTATION_XML){for(let o=0;o<n.length;o++)if(n[o].name===Eu.ENCODING){let r=n[o].value.toLowerCase();return r===Ice.TEXT_HTML||r===Ice.APPLICATION_XML}}return t===Te.SVG&&(e===T.FOREIGN_OBJECT||e===T.DESC||e===T.TITLE)}function Pce(e,t,n,o){return (!o||o===Te.HTML)&&C4e(e,t,n)||(!o||o===Te.MATHML)&&E4e(e,t)}var v4e="hidden",R4e=8,w4e=3,$;(function(e){e[e.INITIAL=0]="INITIAL",e[e.BEFORE_HTML=1]="BEFORE_HTML",e[e.BEFORE_HEAD=2]="BEFORE_HEAD",e[e.IN_HEAD=3]="IN_HEAD",e[e.IN_HEAD_NO_SCRIPT=4]="IN_HEAD_NO_SCRIPT",e[e.AFTER_HEAD=5]="AFTER_HEAD",e[e.IN_BODY=6]="IN_BODY",e[e.TEXT=7]="TEXT",e[e.IN_TABLE=8]="IN_TABLE",e[e.IN_TABLE_TEXT=9]="IN_TABLE_TEXT",e[e.IN_CAPTION=10]="IN_CAPTION",e[e.IN_COLUMN_GROUP=11]="IN_COLUMN_GROUP",e[e.IN_TABLE_BODY=12]="IN_TABLE_BODY",e[e.IN_ROW=13]="IN_ROW",e[e.IN_CELL=14]="IN_CELL",e[e.IN_SELECT=15]="IN_SELECT",e[e.IN_SELECT_IN_TABLE=16]="IN_SELECT_IN_TABLE",e[e.IN_TEMPLATE=17]="IN_TEMPLATE",e[e.AFTER_BODY=18]="AFTER_BODY",e[e.IN_FRAMESET=19]="IN_FRAMESET",e[e.AFTER_FRAMESET=20]="AFTER_FRAMESET",e[e.AFTER_AFTER_BODY=21]="AFTER_AFTER_BODY",e[e.AFTER_AFTER_FRAMESET=22]="AFTER_AFTER_FRAMESET";})($||($={}));var I4e={startLine:-1,startCol:-1,startOffset:-1,endLine:-1,endCol:-1,endOffset:-1},kce=new Set([T.TABLE,T.TBODY,T.TFOOT,T.THEAD,T.TR]),Mce={scriptingEnabled:true,sourceCodeLocationInfo:false,treeAdapter:Bl,onParseError:null},IE=class{constructor(t,n,o=null,r=null){this.fragmentContext=o,this.scriptHandler=r,this.currentToken=null,this.stopped=false,this.insertionMode=$.INITIAL,this.originalInsertionMode=$.INITIAL,this.headElement=null,this.formElement=null,this.currentNotInHTML=false,this.tmplInsertionModeStack=[],this.pendingCharacterTokens=[],this.hasNonWhitespacePendingCharacterToken=false,this.framesetOk=true,this.skipNextNewLine=false,this.fosterParentingEnabled=false,this.options={...Mce,...t},this.treeAdapter=this.options.treeAdapter,this.onParseError=this.options.onParseError,this.onParseError&&(this.options.sourceCodeLocationInfo=true),this.document=n??this.treeAdapter.createDocument(),this.tokenizer=new bE(this.options,this),this.activeFormattingElements=new vP(this.treeAdapter),this.fragmentContextID=o?Fh(this.treeAdapter.getTagName(o)):T.UNKNOWN,this._setContextModes(o??this.document,this.fragmentContextID),this.openElements=new CP(this.document,this.treeAdapter,this);}static parse(t,n){let o=new this(n);return o.tokenizer.write(t,true),o.document}static getFragmentParser(t,n){let o={...Mce,...n};t??(t=o.treeAdapter.createElement(oe.TEMPLATE,Te.HTML,[]));let r=o.treeAdapter.createElement("documentmock",Te.HTML,[]),i=new this(o,r,t);return i.fragmentContextID===T.TEMPLATE&&i.tmplInsertionModeStack.unshift($.IN_TEMPLATE),i._initTokenizerForFragmentParsing(),i._insertFakeRootElement(),i._resetInsertionMode(),i._findFormInFragmentContext(),i}getFragment(){let t=this.treeAdapter.getFirstChild(this.document),n=this.treeAdapter.createDocumentFragment();return this._adoptNodes(t,n),n}_err(t,n,o){var r;if(!this.onParseError)return;let i=(r=t.location)!==null&&r!==void 0?r:I4e,s={code:n,startLine:i.startLine,startCol:i.startCol,startOffset:i.startOffset,endLine:o?i.startLine:i.endLine,endCol:o?i.startCol:i.endCol,endOffset:o?i.startOffset:i.endOffset};this.onParseError(s);}onItemPush(t,n,o){var r,i;(i=(r=this.treeAdapter).onItemPush)===null||i===void 0||i.call(r,t),o&&this.openElements.stackTop>0&&this._setContextModes(t,n);}onItemPop(t,n){var o,r;if(this.options.sourceCodeLocationInfo&&this._setEndLocation(t,this.currentToken),(r=(o=this.treeAdapter).onItemPop)===null||r===void 0||r.call(o,t,this.openElements.current),n){let i,s;this.openElements.stackTop===0&&this.fragmentContext?(i=this.fragmentContext,s=this.fragmentContextID):{current:i,currentTagId:s}=this.openElements,this._setContextModes(i,s);}}_setContextModes(t,n){let o=t===this.document||t&&this.treeAdapter.getNamespaceURI(t)===Te.HTML;this.currentNotInHTML=!o,this.tokenizer.inForeignNode=!o&&t!==void 0&&n!==void 0&&!this._isIntegrationPoint(n,t);}_switchToTextParsing(t,n){this._insertElement(t,Te.HTML),this.tokenizer.state=n,this.originalInsertionMode=this.insertionMode,this.insertionMode=$.TEXT;}switchToPlaintextParsing(){this.insertionMode=$.TEXT,this.originalInsertionMode=$.IN_BODY,this.tokenizer.state=wi.PLAINTEXT;}_getAdjustedCurrentElement(){return this.openElements.stackTop===0&&this.fragmentContext?this.fragmentContext:this.openElements.current}_findFormInFragmentContext(){let t=this.fragmentContext;for(;t;){if(this.treeAdapter.getTagName(t)===oe.FORM){this.formElement=t;break}t=this.treeAdapter.getParentNode(t);}}_initTokenizerForFragmentParsing(){if(!(!this.fragmentContext||this.treeAdapter.getNamespaceURI(this.fragmentContext)!==Te.HTML))switch(this.fragmentContextID){case T.TITLE:case T.TEXTAREA:{this.tokenizer.state=wi.RCDATA;break}case T.STYLE:case T.XMP:case T.IFRAME:case T.NOEMBED:case T.NOFRAMES:case T.NOSCRIPT:{this.tokenizer.state=wi.RAWTEXT;break}case T.SCRIPT:{this.tokenizer.state=wi.SCRIPT_DATA;break}case T.PLAINTEXT:{this.tokenizer.state=wi.PLAINTEXT;break}}}_setDocumentType(t){let n=t.name||"",o=t.publicId||"",r=t.systemId||"";if(this.treeAdapter.setDocumentType(this.document,n,o,r),t.location){let s=this.treeAdapter.getChildNodes(this.document).find(a=>this.treeAdapter.isDocumentTypeNode(a));s&&this.treeAdapter.setNodeSourceCodeLocation(s,t.location);}}_attachElementToTree(t,n){if(this.options.sourceCodeLocationInfo){let o=n&&{...n,startTag:n};this.treeAdapter.setNodeSourceCodeLocation(t,o);}if(this._shouldFosterParentOnInsertion())this._fosterParentElement(t);else {let o=this.openElements.currentTmplContentOrNode;this.treeAdapter.appendChild(o??this.document,t);}}_appendElement(t,n){let o=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(o,t.location);}_insertElement(t,n){let o=this.treeAdapter.createElement(t.tagName,n,t.attrs);this._attachElementToTree(o,t.location),this.openElements.push(o,t.tagID);}_insertFakeElement(t,n){let o=this.treeAdapter.createElement(t,Te.HTML,[]);this._attachElementToTree(o,null),this.openElements.push(o,n);}_insertTemplate(t){let n=this.treeAdapter.createElement(t.tagName,Te.HTML,t.attrs),o=this.treeAdapter.createDocumentFragment();this.treeAdapter.setTemplateContent(n,o),this._attachElementToTree(n,t.location),this.openElements.push(n,t.tagID),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,null);}_insertFakeRootElement(){let t=this.treeAdapter.createElement(oe.HTML,Te.HTML,[]);this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(t,null),this.treeAdapter.appendChild(this.openElements.current,t),this.openElements.push(t,T.HTML);}_appendCommentNode(t,n){let o=this.treeAdapter.createCommentNode(t.data);this.treeAdapter.appendChild(n,o),this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(o,t.location);}_insertCharacters(t){let n,o;if(this._shouldFosterParentOnInsertion()?({parent:n,beforeElement:o}=this._findFosterParentingLocation(),o?this.treeAdapter.insertTextBefore(n,t.chars,o):this.treeAdapter.insertText(n,t.chars)):(n=this.openElements.currentTmplContentOrNode,this.treeAdapter.insertText(n,t.chars)),!t.location)return;let r=this.treeAdapter.getChildNodes(n),i=o?r.lastIndexOf(o):r.length,s=r[i-1];if(this.treeAdapter.getNodeSourceCodeLocation(s)){let{endLine:l,endCol:c,endOffset:d}=t.location;this.treeAdapter.updateNodeSourceCodeLocation(s,{endLine:l,endCol:c,endOffset:d});}else this.options.sourceCodeLocationInfo&&this.treeAdapter.setNodeSourceCodeLocation(s,t.location);}_adoptNodes(t,n){for(let o=this.treeAdapter.getFirstChild(t);o;o=this.treeAdapter.getFirstChild(t))this.treeAdapter.detachNode(o),this.treeAdapter.appendChild(n,o);}_setEndLocation(t,n){if(this.treeAdapter.getNodeSourceCodeLocation(t)&&n.location){let o=n.location,r=this.treeAdapter.getTagName(t),i=n.type===Kt.END_TAG&&r===n.tagName?{endTag:{...o},endLine:o.endLine,endCol:o.endCol,endOffset:o.endOffset}:{endLine:o.startLine,endCol:o.startCol,endOffset:o.startOffset};this.treeAdapter.updateNodeSourceCodeLocation(t,i);}}shouldProcessStartTagTokenInForeignContent(t){if(!this.currentNotInHTML)return false;let n,o;return this.openElements.stackTop===0&&this.fragmentContext?(n=this.fragmentContext,o=this.fragmentContextID):{current:n,currentTagId:o}=this.openElements,t.tagID===T.SVG&&this.treeAdapter.getTagName(n)===oe.ANNOTATION_XML&&this.treeAdapter.getNamespaceURI(n)===Te.MATHML?false:this.tokenizer.inForeignNode||(t.tagID===T.MGLYPH||t.tagID===T.MALIGNMARK)&&o!==void 0&&!this._isIntegrationPoint(o,n,Te.HTML)}_processToken(t){switch(t.type){case Kt.CHARACTER:{this.onCharacter(t);break}case Kt.NULL_CHARACTER:{this.onNullCharacter(t);break}case Kt.COMMENT:{this.onComment(t);break}case Kt.DOCTYPE:{this.onDoctype(t);break}case Kt.START_TAG:{this._processStartTag(t);break}case Kt.END_TAG:{this.onEndTag(t);break}case Kt.EOF:{this.onEof(t);break}case Kt.WHITESPACE_CHARACTER:{this.onWhitespaceCharacter(t);break}}}_isIntegrationPoint(t,n,o){let r=this.treeAdapter.getNamespaceURI(n),i=this.treeAdapter.getAttrList(n);return Pce(t,r,i,o)}_reconstructActiveFormattingElements(){let t=this.activeFormattingElements.entries.length;if(t){let n=this.activeFormattingElements.entries.findIndex(r=>r.type===Fl.Marker||this.openElements.contains(r.element)),o=n===-1?t-1:n-1;for(let r=o;r>=0;r--){let i=this.activeFormattingElements.entries[r];this._insertElement(i.token,this.treeAdapter.getNamespaceURI(i.element)),i.element=this.openElements.current;}}}_closeTableCell(){this.openElements.generateImpliedEndTags(),this.openElements.popUntilTableCellPopped(),this.activeFormattingElements.clearToLastMarker(),this.insertionMode=$.IN_ROW;}_closePElement(){this.openElements.generateImpliedEndTagsWithExclusion(T.P),this.openElements.popUntilTagNamePopped(T.P);}_resetInsertionMode(){for(let t=this.openElements.stackTop;t>=0;t--)switch(t===0&&this.fragmentContext?this.fragmentContextID:this.openElements.tagIDs[t]){case T.TR:{this.insertionMode=$.IN_ROW;return}case T.TBODY:case T.THEAD:case T.TFOOT:{this.insertionMode=$.IN_TABLE_BODY;return}case T.CAPTION:{this.insertionMode=$.IN_CAPTION;return}case T.COLGROUP:{this.insertionMode=$.IN_COLUMN_GROUP;return}case T.TABLE:{this.insertionMode=$.IN_TABLE;return}case T.BODY:{this.insertionMode=$.IN_BODY;return}case T.FRAMESET:{this.insertionMode=$.IN_FRAMESET;return}case T.SELECT:{this._resetInsertionModeForSelect(t);return}case T.TEMPLATE:{this.insertionMode=this.tmplInsertionModeStack[0];return}case T.HTML:{this.insertionMode=this.headElement?$.AFTER_HEAD:$.BEFORE_HEAD;return}case T.TD:case T.TH:{if(t>0){this.insertionMode=$.IN_CELL;return}break}case T.HEAD:{if(t>0){this.insertionMode=$.IN_HEAD;return}break}}this.insertionMode=$.IN_BODY;}_resetInsertionModeForSelect(t){if(t>0)for(let n=t-1;n>0;n--){let o=this.openElements.tagIDs[n];if(o===T.TEMPLATE)break;if(o===T.TABLE){this.insertionMode=$.IN_SELECT_IN_TABLE;return}}this.insertionMode=$.IN_SELECT;}_isElementCausesFosterParenting(t){return kce.has(t)}_shouldFosterParentOnInsertion(){return this.fosterParentingEnabled&&this.openElements.currentTagId!==void 0&&this._isElementCausesFosterParenting(this.openElements.currentTagId)}_findFosterParentingLocation(){for(let t=this.openElements.stackTop;t>=0;t--){let n=this.openElements.items[t];switch(this.openElements.tagIDs[t]){case T.TEMPLATE:{if(this.treeAdapter.getNamespaceURI(n)===Te.HTML)return {parent:this.treeAdapter.getTemplateContent(n),beforeElement:null};break}case T.TABLE:{let o=this.treeAdapter.getParentNode(n);return o?{parent:o,beforeElement:n}:{parent:this.openElements.items[t-1],beforeElement:null}}}}return {parent:this.openElements.items[0],beforeElement:null}}_fosterParentElement(t){let n=this._findFosterParentingLocation();n.beforeElement?this.treeAdapter.insertBefore(n.parent,t,n.beforeElement):this.treeAdapter.appendChild(n.parent,t);}_isSpecialElement(t,n){let o=this.treeAdapter.getNamespaceURI(t);return pce[o].has(n)}onCharacter(t){if(this.skipNextNewLine=false,this.tokenizer.inForeignNode){o5e(this,t);return}switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{EE(this,t);break}case $.BEFORE_HEAD:{CE(this,t);break}case $.IN_HEAD:{vE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{RE(this,t);break}case $.AFTER_HEAD:{wE(this,t);break}case $.IN_BODY:case $.IN_CAPTION:case $.IN_CELL:case $.IN_TEMPLATE:{Fce(this,t);break}case $.TEXT:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:{this._insertCharacters(t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_TABLE_TEXT:{$ce(this,t);break}case $.IN_COLUMN_GROUP:{IP(this,t);break}case $.AFTER_BODY:{xP(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onNullCharacter(t){if(this.skipNextNewLine=false,this.tokenizer.inForeignNode){n5e(this,t);return}switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{EE(this,t);break}case $.BEFORE_HEAD:{CE(this,t);break}case $.IN_HEAD:{vE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{RE(this,t);break}case $.AFTER_HEAD:{wE(this,t);break}case $.TEXT:{this._insertCharacters(t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_COLUMN_GROUP:{IP(this,t);break}case $.AFTER_BODY:{xP(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onComment(t){if(this.skipNextNewLine=false,this.currentNotInHTML){vH(this,t);return}switch(this.insertionMode){case $.INITIAL:case $.BEFORE_HTML:case $.BEFORE_HEAD:case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:case $.IN_BODY:case $.IN_TABLE:case $.IN_CAPTION:case $.IN_COLUMN_GROUP:case $.IN_TABLE_BODY:case $.IN_ROW:case $.IN_CELL:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:case $.IN_TEMPLATE:case $.IN_FRAMESET:case $.AFTER_FRAMESET:{vH(this,t);break}case $.IN_TABLE_TEXT:{AE(this,t);break}case $.AFTER_BODY:{L4e(this,t);break}case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{k4e(this,t);break}}}onDoctype(t){switch(this.skipNextNewLine=false,this.insertionMode){case $.INITIAL:{D4e(this,t);break}case $.BEFORE_HEAD:case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:{this._err(t,ce.misplacedDoctype);break}case $.IN_TABLE_TEXT:{AE(this,t);break}}}onStartTag(t){this.skipNextNewLine=false,this.currentToken=t,this._processStartTag(t),t.selfClosing&&!t.ackSelfClosing&&this._err(t,ce.nonVoidHtmlElementStartTagWithTrailingSolidus);}_processStartTag(t){this.shouldProcessStartTagTokenInForeignContent(t)?r5e(this,t):this._startTagOutsideForeignContent(t);}_startTagOutsideForeignContent(t){switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{F4e(this,t);break}case $.BEFORE_HEAD:{U4e(this,t);break}case $.IN_HEAD:{Ul(this,t);break}case $.IN_HEAD_NO_SCRIPT:{j4e(this,t);break}case $.AFTER_HEAD:{V4e(this,t);break}case $.IN_BODY:{Ii(this,t);break}case $.IN_TABLE:{rS(this,t);break}case $.IN_TABLE_TEXT:{AE(this,t);break}case $.IN_CAPTION:{HQe(this,t);break}case $.IN_COLUMN_GROUP:{xH(this,t);break}case $.IN_TABLE_BODY:{OP(this,t);break}case $.IN_ROW:{MP(this,t);break}case $.IN_CELL:{$Qe(this,t);break}case $.IN_SELECT:{Wce(this,t);break}case $.IN_SELECT_IN_TABLE:{zQe(this,t);break}case $.IN_TEMPLATE:{qQe(this,t);break}case $.AFTER_BODY:{YQe(this,t);break}case $.IN_FRAMESET:{JQe(this,t);break}case $.AFTER_FRAMESET:{QQe(this,t);break}case $.AFTER_AFTER_BODY:{e5e(this,t);break}case $.AFTER_AFTER_FRAMESET:{t5e(this,t);break}}}onEndTag(t){this.skipNextNewLine=false,this.currentToken=t,this.currentNotInHTML?i5e(this,t):this._endTagOutsideForeignContent(t);}_endTagOutsideForeignContent(t){switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{B4e(this,t);break}case $.BEFORE_HEAD:{H4e(this,t);break}case $.IN_HEAD:{G4e(this,t);break}case $.IN_HEAD_NO_SCRIPT:{$4e(this,t);break}case $.AFTER_HEAD:{z4e(this,t);break}case $.IN_BODY:{PP(this,t);break}case $.TEXT:{PQe(this,t);break}case $.IN_TABLE:{xE(this,t);break}case $.IN_TABLE_TEXT:{AE(this,t);break}case $.IN_CAPTION:{GQe(this,t);break}case $.IN_COLUMN_GROUP:{jQe(this,t);break}case $.IN_TABLE_BODY:{RH(this,t);break}case $.IN_ROW:{zce(this,t);break}case $.IN_CELL:{VQe(this,t);break}case $.IN_SELECT:{qce(this,t);break}case $.IN_SELECT_IN_TABLE:{WQe(this,t);break}case $.IN_TEMPLATE:{KQe(this,t);break}case $.AFTER_BODY:{Yce(this,t);break}case $.IN_FRAMESET:{XQe(this,t);break}case $.AFTER_FRAMESET:{ZQe(this,t);break}case $.AFTER_AFTER_BODY:{wP(this,t);break}}}onEof(t){switch(this.insertionMode){case $.INITIAL:{TE(this,t);break}case $.BEFORE_HTML:{EE(this,t);break}case $.BEFORE_HEAD:{CE(this,t);break}case $.IN_HEAD:{vE(this,t);break}case $.IN_HEAD_NO_SCRIPT:{RE(this,t);break}case $.AFTER_HEAD:{wE(this,t);break}case $.IN_BODY:case $.IN_TABLE:case $.IN_CAPTION:case $.IN_COLUMN_GROUP:case $.IN_TABLE_BODY:case $.IN_ROW:case $.IN_CELL:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:{Gce(this,t);break}case $.TEXT:{OQe(this,t);break}case $.IN_TABLE_TEXT:{AE(this,t);break}case $.IN_TEMPLATE:{Kce(this,t);break}case $.AFTER_BODY:case $.IN_FRAMESET:case $.AFTER_FRAMESET:case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{IH(this,t);break}}}onWhitespaceCharacter(t){if(this.skipNextNewLine&&(this.skipNextNewLine=false,t.chars.charCodeAt(0)===N.LINE_FEED)){if(t.chars.length===1)return;t.chars=t.chars.substr(1);}if(this.tokenizer.inForeignNode){this._insertCharacters(t);return}switch(this.insertionMode){case $.IN_HEAD:case $.IN_HEAD_NO_SCRIPT:case $.AFTER_HEAD:case $.TEXT:case $.IN_COLUMN_GROUP:case $.IN_SELECT:case $.IN_SELECT_IN_TABLE:case $.IN_FRAMESET:case $.AFTER_FRAMESET:{this._insertCharacters(t);break}case $.IN_BODY:case $.IN_CAPTION:case $.IN_CELL:case $.IN_TEMPLATE:case $.AFTER_BODY:case $.AFTER_AFTER_BODY:case $.AFTER_AFTER_FRAMESET:{Dce(this,t);break}case $.IN_TABLE:case $.IN_TABLE_BODY:case $.IN_ROW:{CH(this,t);break}case $.IN_TABLE_TEXT:{jce(this,t);break}}}};function x4e(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName);return n?e.openElements.contains(n.element)?e.openElements.hasInScope(t.tagID)||(n=null):(e.activeFormattingElements.removeEntry(n),n=null):Hce(e,t),n}function _4e(e,t){let n=null,o=e.openElements.stackTop;for(;o>=0;o--){let r=e.openElements.items[o];if(r===t.element)break;e._isSpecialElement(r,e.openElements.tagIDs[o])&&(n=r);}return n||(e.openElements.shortenToLength(Math.max(o,0)),e.activeFormattingElements.removeEntry(t)),n}function P4e(e,t,n){let o=t,r=e.openElements.getCommonAncestor(t);for(let i=0,s=r;s!==n;i++,s=r){r=e.openElements.getCommonAncestor(s);let a=e.activeFormattingElements.getElementEntry(s),l=a&&i>=w4e;!a||l?(l&&e.activeFormattingElements.removeEntry(a),e.openElements.remove(s)):(s=O4e(e,a),o===t&&(e.activeFormattingElements.bookmark=a),e.treeAdapter.detachNode(o),e.treeAdapter.appendChild(s,o),o=s);}return o}function O4e(e,t){let n=e.treeAdapter.getNamespaceURI(t.element),o=e.treeAdapter.createElement(t.token.tagName,n,t.token.attrs);return e.openElements.replace(t.element,o),t.element=o,o}function M4e(e,t,n){let o=e.treeAdapter.getTagName(t),r=Fh(o);if(e._isElementCausesFosterParenting(r))e._fosterParentElement(n);else {let i=e.treeAdapter.getNamespaceURI(t);r===T.TEMPLATE&&i===Te.HTML&&(t=e.treeAdapter.getTemplateContent(t)),e.treeAdapter.appendChild(t,n);}}function N4e(e,t,n){let o=e.treeAdapter.getNamespaceURI(n.element),{token:r}=n,i=e.treeAdapter.createElement(r.tagName,o,r.attrs);e._adoptNodes(t,i),e.treeAdapter.appendChild(t,i),e.activeFormattingElements.insertElementAfterBookmark(i,r),e.activeFormattingElements.removeEntry(n),e.openElements.remove(n.element),e.openElements.insertAfter(t,i,r.tagID);}function wH(e,t){for(let n=0;n<R4e;n++){let o=x4e(e,t);if(!o)break;let r=_4e(e,o);if(!r)break;e.activeFormattingElements.bookmark=o;let i=P4e(e,r,o.element),s=e.openElements.getCommonAncestor(o.element);e.treeAdapter.detachNode(i),s&&M4e(e,s,i),N4e(e,r,o);}}function vH(e,t){e._appendCommentNode(t,e.openElements.currentTmplContentOrNode);}function L4e(e,t){e._appendCommentNode(t,e.openElements.items[0]);}function k4e(e,t){e._appendCommentNode(t,e.document);}function IH(e,t){if(e.stopped=true,t.location){let n=e.fragmentContext?0:2;for(let o=e.openElements.stackTop;o>=n;o--)e._setEndLocation(e.openElements.items[o],t);if(!e.fragmentContext&&e.openElements.stackTop>=0){let o=e.openElements.items[0],r=e.treeAdapter.getNodeSourceCodeLocation(o);if(r&&!r.endTag&&(e._setEndLocation(o,t),e.openElements.stackTop>=1)){let i=e.openElements.items[1],s=e.treeAdapter.getNodeSourceCodeLocation(i);s&&!s.endTag&&e._setEndLocation(i,t);}}}}function D4e(e,t){e._setDocumentType(t);let n=t.forceQuirks?Qi.QUIRKS:wce(t);Rce(t)||e._err(t,ce.nonConformingDoctype),e.treeAdapter.setDocumentMode(e.document,n),e.insertionMode=$.BEFORE_HTML;}function TE(e,t){e._err(t,ce.missingDoctype,true),e.treeAdapter.setDocumentMode(e.document,Qi.QUIRKS),e.insertionMode=$.BEFORE_HTML,e._processToken(t);}function F4e(e,t){t.tagID===T.HTML?(e._insertElement(t,Te.HTML),e.insertionMode=$.BEFORE_HEAD):EE(e,t);}function B4e(e,t){let n=t.tagID;(n===T.HTML||n===T.HEAD||n===T.BODY||n===T.BR)&&EE(e,t);}function EE(e,t){e._insertFakeRootElement(),e.insertionMode=$.BEFORE_HEAD,e._processToken(t);}function U4e(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.HEAD:{e._insertElement(t,Te.HTML),e.headElement=e.openElements.current,e.insertionMode=$.IN_HEAD;break}default:CE(e,t);}}function H4e(e,t){let n=t.tagID;n===T.HEAD||n===T.BODY||n===T.HTML||n===T.BR?CE(e,t):e._err(t,ce.endTagWithoutMatchingOpenElement);}function CE(e,t){e._insertFakeElement(oe.HEAD,T.HEAD),e.headElement=e.openElements.current,e.insertionMode=$.IN_HEAD,e._processToken(t);}function Ul(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.TITLE:{e._switchToTextParsing(t,wi.RCDATA);break}case T.NOSCRIPT:{e.options.scriptingEnabled?e._switchToTextParsing(t,wi.RAWTEXT):(e._insertElement(t,Te.HTML),e.insertionMode=$.IN_HEAD_NO_SCRIPT);break}case T.NOFRAMES:case T.STYLE:{e._switchToTextParsing(t,wi.RAWTEXT);break}case T.SCRIPT:{e._switchToTextParsing(t,wi.SCRIPT_DATA);break}case T.TEMPLATE:{e._insertTemplate(t),e.activeFormattingElements.insertMarker(),e.framesetOk=false,e.insertionMode=$.IN_TEMPLATE,e.tmplInsertionModeStack.unshift($.IN_TEMPLATE);break}case T.HEAD:{e._err(t,ce.misplacedStartTagForHeadElement);break}default:vE(e,t);}}function G4e(e,t){switch(t.tagID){case T.HEAD:{e.openElements.pop(),e.insertionMode=$.AFTER_HEAD;break}case T.BODY:case T.BR:case T.HTML:{vE(e,t);break}case T.TEMPLATE:{Bh(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function Bh(e,t){e.openElements.tmplCount>0?(e.openElements.generateImpliedEndTagsThoroughly(),e.openElements.currentTagId!==T.TEMPLATE&&e._err(t,ce.closingOfElementWithOpenChildElements),e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode()):e._err(t,ce.endTagWithoutMatchingOpenElement);}function vE(e,t){e.openElements.pop(),e.insertionMode=$.AFTER_HEAD,e._processToken(t);}function j4e(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.BASEFONT:case T.BGSOUND:case T.HEAD:case T.LINK:case T.META:case T.NOFRAMES:case T.STYLE:{Ul(e,t);break}case T.NOSCRIPT:{e._err(t,ce.nestedNoscriptInHead);break}default:RE(e,t);}}function $4e(e,t){switch(t.tagID){case T.NOSCRIPT:{e.openElements.pop(),e.insertionMode=$.IN_HEAD;break}case T.BR:{RE(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function RE(e,t){let n=t.type===Kt.EOF?ce.openElementsLeftAfterEof:ce.disallowedContentInNoscriptInHead;e._err(t,n),e.openElements.pop(),e.insertionMode=$.IN_HEAD,e._processToken(t);}function V4e(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.BODY:{e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=$.IN_BODY;break}case T.FRAMESET:{e._insertElement(t,Te.HTML),e.insertionMode=$.IN_FRAMESET;break}case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:case T.NOFRAMES:case T.SCRIPT:case T.STYLE:case T.TEMPLATE:case T.TITLE:{e._err(t,ce.abandonedHeadElementChild),e.openElements.push(e.headElement,T.HEAD),Ul(e,t),e.openElements.remove(e.headElement);break}case T.HEAD:{e._err(t,ce.misplacedStartTagForHeadElement);break}default:wE(e,t);}}function z4e(e,t){switch(t.tagID){case T.BODY:case T.HTML:case T.BR:{wE(e,t);break}case T.TEMPLATE:{Bh(e,t);break}default:e._err(t,ce.endTagWithoutMatchingOpenElement);}}function wE(e,t){e._insertFakeElement(oe.BODY,T.BODY),e.insertionMode=$.IN_BODY,_P(e,t);}function _P(e,t){switch(t.type){case Kt.CHARACTER:{Fce(e,t);break}case Kt.WHITESPACE_CHARACTER:{Dce(e,t);break}case Kt.COMMENT:{vH(e,t);break}case Kt.START_TAG:{Ii(e,t);break}case Kt.END_TAG:{PP(e,t);break}case Kt.EOF:{Gce(e,t);break}}}function Dce(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t);}function Fce(e,t){e._reconstructActiveFormattingElements(),e._insertCharacters(t),e.framesetOk=false;}function W4e(e,t){e.openElements.tmplCount===0&&e.treeAdapter.adoptAttributes(e.openElements.items[0],t.attrs);}function q4e(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e.openElements.tmplCount===0&&(e.framesetOk=false,e.treeAdapter.adoptAttributes(n,t.attrs));}function K4e(e,t){let n=e.openElements.tryPeekProperlyNestedBodyElement();e.framesetOk&&n&&(e.treeAdapter.detachNode(n),e.openElements.popAllUpToHtmlElement(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_FRAMESET);}function Y4e(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML);}function J4e(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e.openElements.currentTagId!==void 0&&yE.has(e.openElements.currentTagId)&&e.openElements.pop(),e._insertElement(t,Te.HTML);}function X4e(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.skipNextNewLine=true,e.framesetOk=false;}function Q4e(e,t){let n=e.openElements.tmplCount>0;(!e.formElement||n)&&(e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),n||(e.formElement=e.openElements.current));}function Z4e(e,t){e.framesetOk=false;let n=t.tagID;for(let o=e.openElements.stackTop;o>=0;o--){let r=e.openElements.tagIDs[o];if(n===T.LI&&r===T.LI||(n===T.DD||n===T.DT)&&(r===T.DD||r===T.DT)){e.openElements.generateImpliedEndTagsWithExclusion(r),e.openElements.popUntilTagNamePopped(r);break}if(r!==T.ADDRESS&&r!==T.DIV&&r!==T.P&&e._isSpecialElement(e.openElements.items[o],r))break}e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML);}function eQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.tokenizer.state=wi.PLAINTEXT;}function tQe(e,t){e.openElements.hasInScope(T.BUTTON)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.BUTTON)),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.framesetOk=false;}function nQe(e,t){let n=e.activeFormattingElements.getElementEntryInScopeWithTagName(oe.A);n&&(wH(e,t),e.openElements.remove(n.element),e.activeFormattingElements.removeEntry(n)),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function oQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function rQe(e,t){e._reconstructActiveFormattingElements(),e.openElements.hasInScope(T.NOBR)&&(wH(e,t),e._reconstructActiveFormattingElements()),e._insertElement(t,Te.HTML),e.activeFormattingElements.pushElement(e.openElements.current,t);}function iQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.activeFormattingElements.insertMarker(),e.framesetOk=false;}function sQe(e,t){e.treeAdapter.getDocumentMode(e.document)!==Qi.QUIRKS&&e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=$.IN_TABLE;}function Bce(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Te.HTML),e.framesetOk=false,t.ackSelfClosing=true;}function Uce(e){let t=bP(e,Eu.TYPE);return t!=null&&t.toLowerCase()===v4e}function aQe(e,t){e._reconstructActiveFormattingElements(),e._appendElement(t,Te.HTML),Uce(t)||(e.framesetOk=false),t.ackSelfClosing=true;}function lQe(e,t){e._appendElement(t,Te.HTML),t.ackSelfClosing=true;}function cQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._appendElement(t,Te.HTML),e.framesetOk=false,t.ackSelfClosing=true;}function dQe(e,t){t.tagName=oe.IMG,t.tagID=T.IMG,Bce(e,t);}function uQe(e,t){e._insertElement(t,Te.HTML),e.skipNextNewLine=true,e.tokenizer.state=wi.RCDATA,e.originalInsertionMode=e.insertionMode,e.framesetOk=false,e.insertionMode=$.TEXT;}function pQe(e,t){e.openElements.hasInButtonScope(T.P)&&e._closePElement(),e._reconstructActiveFormattingElements(),e.framesetOk=false,e._switchToTextParsing(t,wi.RAWTEXT);}function mQe(e,t){e.framesetOk=false,e._switchToTextParsing(t,wi.RAWTEXT);}function Nce(e,t){e._switchToTextParsing(t,wi.RAWTEXT);}function hQe(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML),e.framesetOk=false,e.insertionMode=e.insertionMode===$.IN_TABLE||e.insertionMode===$.IN_CAPTION||e.insertionMode===$.IN_TABLE_BODY||e.insertionMode===$.IN_ROW||e.insertionMode===$.IN_CELL?$.IN_SELECT_IN_TABLE:$.IN_SELECT;}function gQe(e,t){e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML);}function fQe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTags(),e._insertElement(t,Te.HTML);}function yQe(e,t){e.openElements.hasInScope(T.RUBY)&&e.openElements.generateImpliedEndTagsWithExclusion(T.RTC),e._insertElement(t,Te.HTML);}function SQe(e,t){e._reconstructActiveFormattingElements(),AH(t),RP(t),t.selfClosing?e._appendElement(t,Te.MATHML):e._insertElement(t,Te.MATHML),t.ackSelfClosing=true;}function bQe(e,t){e._reconstructActiveFormattingElements(),EH(t),RP(t),t.selfClosing?e._appendElement(t,Te.SVG):e._insertElement(t,Te.SVG),t.ackSelfClosing=true;}function Lce(e,t){e._reconstructActiveFormattingElements(),e._insertElement(t,Te.HTML);}function Ii(e,t){switch(t.tagID){case T.I:case T.S:case T.B:case T.U:case T.EM:case T.TT:case T.BIG:case T.CODE:case T.FONT:case T.SMALL:case T.STRIKE:case T.STRONG:{oQe(e,t);break}case T.A:{nQe(e,t);break}case T.H1:case T.H2:case T.H3:case T.H4:case T.H5:case T.H6:{J4e(e,t);break}case T.P:case T.DL:case T.OL:case T.UL:case T.DIV:case T.DIR:case T.NAV:case T.MAIN:case T.MENU:case T.ASIDE:case T.CENTER:case T.FIGURE:case T.FOOTER:case T.HEADER:case T.HGROUP:case T.DIALOG:case T.DETAILS:case T.ADDRESS:case T.ARTICLE:case T.SEARCH:case T.SECTION:case T.SUMMARY:case T.FIELDSET:case T.BLOCKQUOTE:case T.FIGCAPTION:{Y4e(e,t);break}case T.LI:case T.DD:case T.DT:{Z4e(e,t);break}case T.BR:case T.IMG:case T.WBR:case T.AREA:case T.EMBED:case T.KEYGEN:{Bce(e,t);break}case T.HR:{cQe(e,t);break}case T.RB:case T.RTC:{fQe(e,t);break}case T.RT:case T.RP:{yQe(e,t);break}case T.PRE:case T.LISTING:{X4e(e,t);break}case T.XMP:{pQe(e,t);break}case T.SVG:{bQe(e,t);break}case T.HTML:{W4e(e,t);break}case T.BASE:case T.LINK:case T.META:case T.STYLE:case T.TITLE:case T.SCRIPT:case T.BGSOUND:case T.BASEFONT:case T.TEMPLATE:{Ul(e,t);break}case T.BODY:{q4e(e,t);break}case T.FORM:{Q4e(e,t);break}case T.NOBR:{rQe(e,t);break}case T.MATH:{SQe(e,t);break}case T.TABLE:{sQe(e,t);break}case T.INPUT:{aQe(e,t);break}case T.PARAM:case T.TRACK:case T.SOURCE:{lQe(e,t);break}case T.IMAGE:{dQe(e,t);break}case T.BUTTON:{tQe(e,t);break}case T.APPLET:case T.OBJECT:case T.MARQUEE:{iQe(e,t);break}case T.IFRAME:{mQe(e,t);break}case T.SELECT:{hQe(e,t);break}case T.OPTION:case T.OPTGROUP:{gQe(e,t);break}case T.NOEMBED:case T.NOFRAMES:{Nce(e,t);break}case T.FRAMESET:{K4e(e,t);break}case T.TEXTAREA:{uQe(e,t);break}case T.NOSCRIPT:{e.options.scriptingEnabled?Nce(e,t):Lce(e,t);break}case T.PLAINTEXT:{eQe(e,t);break}case T.COL:case T.TH:case T.TD:case T.TR:case T.HEAD:case T.FRAME:case T.TBODY:case T.TFOOT:case T.THEAD:case T.CAPTION:case T.COLGROUP:break;default:Lce(e,t);}}function TQe(e,t){if(e.openElements.hasInScope(T.BODY)&&(e.insertionMode=$.AFTER_BODY,e.options.sourceCodeLocationInfo)){let n=e.openElements.tryPeekProperlyNestedBodyElement();n&&e._setEndLocation(n,t);}}function AQe(e,t){e.openElements.hasInScope(T.BODY)&&(e.insertionMode=$.AFTER_BODY,Yce(e,t));}function EQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n));}function CQe(e){let t=e.openElements.tmplCount>0,{formElement:n}=e;t||(e.formElement=null),(n||t)&&e.openElements.hasInScope(T.FORM)&&(e.openElements.generateImpliedEndTags(),t?e.openElements.popUntilTagNamePopped(T.FORM):n&&e.openElements.remove(n));}function vQe(e){e.openElements.hasInButtonScope(T.P)||e._insertFakeElement(oe.P,T.P),e._closePElement();}function RQe(e){e.openElements.hasInListItemScope(T.LI)&&(e.openElements.generateImpliedEndTagsWithExclusion(T.LI),e.openElements.popUntilTagNamePopped(T.LI));}function wQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTagsWithExclusion(n),e.openElements.popUntilTagNamePopped(n));}function IQe(e){e.openElements.hasNumberedHeaderInScope()&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilNumberedHeaderPopped());}function xQe(e,t){let n=t.tagID;e.openElements.hasInScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker());}function _Qe(e){e._reconstructActiveFormattingElements(),e._insertFakeElement(oe.BR,T.BR),e.openElements.pop(),e.framesetOk=false;}function Hce(e,t){let n=t.tagName,o=t.tagID;for(let r=e.openElements.stackTop;r>0;r--){let i=e.openElements.items[r],s=e.openElements.tagIDs[r];if(o===s&&(o!==T.UNKNOWN||e.treeAdapter.getTagName(i)===n)){e.openElements.generateImpliedEndTagsWithExclusion(o),e.openElements.stackTop>=r&&e.openElements.shortenToLength(r);break}if(e._isSpecialElement(i,s))break}}function PP(e,t){switch(t.tagID){case T.A:case T.B:case T.I:case T.S:case T.U:case T.EM:case T.TT:case T.BIG:case T.CODE:case T.FONT:case T.NOBR:case T.SMALL:case T.STRIKE:case T.STRONG:{wH(e,t);break}case T.P:{vQe(e);break}case T.DL:case T.UL:case T.OL:case T.DIR:case T.DIV:case T.NAV:case T.PRE:case T.MAIN:case T.MENU:case T.ASIDE:case T.BUTTON:case T.CENTER:case T.FIGURE:case T.FOOTER:case T.HEADER:case T.HGROUP:case T.DIALOG:case T.ADDRESS:case T.ARTICLE:case T.DETAILS:case T.SEARCH:case T.SECTION:case T.SUMMARY:case T.LISTING:case T.FIELDSET:case T.BLOCKQUOTE:case T.FIGCAPTION:{EQe(e,t);break}case T.LI:{RQe(e);break}case T.DD:case T.DT:{wQe(e,t);break}case T.H1:case T.H2:case T.H3:case T.H4:case T.H5:case T.H6:{IQe(e);break}case T.BR:{_Qe(e);break}case T.BODY:{TQe(e,t);break}case T.HTML:{AQe(e,t);break}case T.FORM:{CQe(e);break}case T.APPLET:case T.OBJECT:case T.MARQUEE:{xQe(e,t);break}case T.TEMPLATE:{Bh(e,t);break}default:Hce(e,t);}}function Gce(e,t){e.tmplInsertionModeStack.length>0?Kce(e,t):IH(e,t);}function PQe(e,t){var n;t.tagID===T.SCRIPT&&((n=e.scriptHandler)===null||n===void 0||n.call(e,e.openElements.current)),e.openElements.pop(),e.insertionMode=e.originalInsertionMode;}function OQe(e,t){e._err(t,ce.eofInElementThatCanContainOnlyText),e.openElements.pop(),e.insertionMode=e.originalInsertionMode,e.onEof(t);}function CH(e,t){if(e.openElements.currentTagId!==void 0&&kce.has(e.openElements.currentTagId))switch(e.pendingCharacterTokens.length=0,e.hasNonWhitespacePendingCharacterToken=false,e.originalInsertionMode=e.insertionMode,e.insertionMode=$.IN_TABLE_TEXT,t.type){case Kt.CHARACTER:{$ce(e,t);break}case Kt.WHITESPACE_CHARACTER:{jce(e,t);break}}else _E(e,t);}function MQe(e,t){e.openElements.clearBackToTableContext(),e.activeFormattingElements.insertMarker(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_CAPTION;}function NQe(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_COLUMN_GROUP;}function LQe(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(oe.COLGROUP,T.COLGROUP),e.insertionMode=$.IN_COLUMN_GROUP,xH(e,t);}function kQe(e,t){e.openElements.clearBackToTableContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_TABLE_BODY;}function DQe(e,t){e.openElements.clearBackToTableContext(),e._insertFakeElement(oe.TBODY,T.TBODY),e.insertionMode=$.IN_TABLE_BODY,OP(e,t);}function FQe(e,t){e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode(),e._processStartTag(t));}function BQe(e,t){Uce(t)?e._appendElement(t,Te.HTML):_E(e,t),t.ackSelfClosing=true;}function UQe(e,t){!e.formElement&&e.openElements.tmplCount===0&&(e._insertElement(t,Te.HTML),e.formElement=e.openElements.current,e.openElements.pop());}function rS(e,t){switch(t.tagID){case T.TD:case T.TH:case T.TR:{DQe(e,t);break}case T.STYLE:case T.SCRIPT:case T.TEMPLATE:{Ul(e,t);break}case T.COL:{LQe(e,t);break}case T.FORM:{UQe(e,t);break}case T.TABLE:{FQe(e,t);break}case T.TBODY:case T.TFOOT:case T.THEAD:{kQe(e,t);break}case T.INPUT:{BQe(e,t);break}case T.CAPTION:{MQe(e,t);break}case T.COLGROUP:{NQe(e,t);break}default:_E(e,t);}}function xE(e,t){switch(t.tagID){case T.TABLE:{e.openElements.hasInTableScope(T.TABLE)&&(e.openElements.popUntilTagNamePopped(T.TABLE),e._resetInsertionMode());break}case T.TEMPLATE:{Bh(e,t);break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TBODY:case T.TD:case T.TFOOT:case T.TH:case T.THEAD:case T.TR:break;default:_E(e,t);}}function _E(e,t){let n=e.fosterParentingEnabled;e.fosterParentingEnabled=true,_P(e,t),e.fosterParentingEnabled=n;}function jce(e,t){e.pendingCharacterTokens.push(t);}function $ce(e,t){e.pendingCharacterTokens.push(t),e.hasNonWhitespacePendingCharacterToken=true;}function AE(e,t){let n=0;if(e.hasNonWhitespacePendingCharacterToken)for(;n<e.pendingCharacterTokens.length;n++)_E(e,e.pendingCharacterTokens[n]);else for(;n<e.pendingCharacterTokens.length;n++)e._insertCharacters(e.pendingCharacterTokens[n]);e.insertionMode=e.originalInsertionMode,e._processToken(t);}var Vce=new Set([T.CAPTION,T.COL,T.COLGROUP,T.TBODY,T.TD,T.TFOOT,T.TH,T.THEAD,T.TR]);function HQe(e,t){let n=t.tagID;Vce.has(n)?e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_TABLE,rS(e,t)):Ii(e,t);}function GQe(e,t){let n=t.tagID;switch(n){case T.CAPTION:case T.TABLE:{e.openElements.hasInTableScope(T.CAPTION)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(T.CAPTION),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_TABLE,n===T.TABLE&&xE(e,t));break}case T.BODY:case T.COL:case T.COLGROUP:case T.HTML:case T.TBODY:case T.TD:case T.TFOOT:case T.TH:case T.THEAD:case T.TR:break;default:PP(e,t);}}function xH(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.COL:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.TEMPLATE:{Ul(e,t);break}default:IP(e,t);}}function jQe(e,t){switch(t.tagID){case T.COLGROUP:{e.openElements.currentTagId===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=$.IN_TABLE);break}case T.TEMPLATE:{Bh(e,t);break}case T.COL:break;default:IP(e,t);}}function IP(e,t){e.openElements.currentTagId===T.COLGROUP&&(e.openElements.pop(),e.insertionMode=$.IN_TABLE,e._processToken(t));}function OP(e,t){switch(t.tagID){case T.TR:{e.openElements.clearBackToTableBodyContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_ROW;break}case T.TH:case T.TD:{e.openElements.clearBackToTableBodyContext(),e._insertFakeElement(oe.TR,T.TR),e.insertionMode=$.IN_ROW,MP(e,t);break}case T.CAPTION:case T.COL:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE,rS(e,t));break}default:rS(e,t);}}function RH(e,t){let n=t.tagID;switch(t.tagID){case T.TBODY:case T.TFOOT:case T.THEAD:{e.openElements.hasInTableScope(n)&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE);break}case T.TABLE:{e.openElements.hasTableBodyContextInTableScope()&&(e.openElements.clearBackToTableBodyContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE,xE(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TD:case T.TH:case T.TR:break;default:xE(e,t);}}function MP(e,t){switch(t.tagID){case T.TH:case T.TD:{e.openElements.clearBackToTableRowContext(),e._insertElement(t,Te.HTML),e.insertionMode=$.IN_CELL,e.activeFormattingElements.insertMarker();break}case T.CAPTION:case T.COL:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:case T.TR:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,OP(e,t));break}default:rS(e,t);}}function zce(e,t){switch(t.tagID){case T.TR:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY);break}case T.TABLE:{e.openElements.hasInTableScope(T.TR)&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,RH(e,t));break}case T.TBODY:case T.TFOOT:case T.THEAD:{(e.openElements.hasInTableScope(t.tagID)||e.openElements.hasInTableScope(T.TR))&&(e.openElements.clearBackToTableRowContext(),e.openElements.pop(),e.insertionMode=$.IN_TABLE_BODY,RH(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:case T.TD:case T.TH:break;default:xE(e,t);}}function $Qe(e,t){let n=t.tagID;Vce.has(n)?(e.openElements.hasInTableScope(T.TD)||e.openElements.hasInTableScope(T.TH))&&(e._closeTableCell(),MP(e,t)):Ii(e,t);}function VQe(e,t){let n=t.tagID;switch(n){case T.TD:case T.TH:{e.openElements.hasInTableScope(n)&&(e.openElements.generateImpliedEndTags(),e.openElements.popUntilTagNamePopped(n),e.activeFormattingElements.clearToLastMarker(),e.insertionMode=$.IN_ROW);break}case T.TABLE:case T.TBODY:case T.TFOOT:case T.THEAD:case T.TR:{e.openElements.hasInTableScope(n)&&(e._closeTableCell(),zce(e,t));break}case T.BODY:case T.CAPTION:case T.COL:case T.COLGROUP:case T.HTML:break;default:PP(e,t);}}function Wce(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.OPTION:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e._insertElement(t,Te.HTML);break}case T.OPTGROUP:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop(),e._insertElement(t,Te.HTML);break}case T.HR:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop(),e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.INPUT:case T.KEYGEN:case T.TEXTAREA:case T.SELECT:{e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),t.tagID!==T.SELECT&&e._processStartTag(t));break}case T.SCRIPT:case T.TEMPLATE:{Ul(e,t);break}}}function qce(e,t){switch(t.tagID){case T.OPTGROUP:{e.openElements.stackTop>0&&e.openElements.currentTagId===T.OPTION&&e.openElements.tagIDs[e.openElements.stackTop-1]===T.OPTGROUP&&e.openElements.pop(),e.openElements.currentTagId===T.OPTGROUP&&e.openElements.pop();break}case T.OPTION:{e.openElements.currentTagId===T.OPTION&&e.openElements.pop();break}case T.SELECT:{e.openElements.hasInSelectScope(T.SELECT)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode());break}case T.TEMPLATE:{Bh(e,t);break}}}function zQe(e,t){let n=t.tagID;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e._processStartTag(t)):Wce(e,t);}function WQe(e,t){let n=t.tagID;n===T.CAPTION||n===T.TABLE||n===T.TBODY||n===T.TFOOT||n===T.THEAD||n===T.TR||n===T.TD||n===T.TH?e.openElements.hasInTableScope(n)&&(e.openElements.popUntilTagNamePopped(T.SELECT),e._resetInsertionMode(),e.onEndTag(t)):qce(e,t);}function qQe(e,t){switch(t.tagID){case T.BASE:case T.BASEFONT:case T.BGSOUND:case T.LINK:case T.META:case T.NOFRAMES:case T.SCRIPT:case T.STYLE:case T.TEMPLATE:case T.TITLE:{Ul(e,t);break}case T.CAPTION:case T.COLGROUP:case T.TBODY:case T.TFOOT:case T.THEAD:{e.tmplInsertionModeStack[0]=$.IN_TABLE,e.insertionMode=$.IN_TABLE,rS(e,t);break}case T.COL:{e.tmplInsertionModeStack[0]=$.IN_COLUMN_GROUP,e.insertionMode=$.IN_COLUMN_GROUP,xH(e,t);break}case T.TR:{e.tmplInsertionModeStack[0]=$.IN_TABLE_BODY,e.insertionMode=$.IN_TABLE_BODY,OP(e,t);break}case T.TD:case T.TH:{e.tmplInsertionModeStack[0]=$.IN_ROW,e.insertionMode=$.IN_ROW,MP(e,t);break}default:e.tmplInsertionModeStack[0]=$.IN_BODY,e.insertionMode=$.IN_BODY,Ii(e,t);}}function KQe(e,t){t.tagID===T.TEMPLATE&&Bh(e,t);}function Kce(e,t){e.openElements.tmplCount>0?(e.openElements.popUntilTagNamePopped(T.TEMPLATE),e.activeFormattingElements.clearToLastMarker(),e.tmplInsertionModeStack.shift(),e._resetInsertionMode(),e.onEof(t)):IH(e,t);}function YQe(e,t){t.tagID===T.HTML?Ii(e,t):xP(e,t);}function Yce(e,t){var n;if(t.tagID===T.HTML){if(e.fragmentContext||(e.insertionMode=$.AFTER_AFTER_BODY),e.options.sourceCodeLocationInfo&&e.openElements.tagIDs[0]===T.HTML){e._setEndLocation(e.openElements.items[0],t);let o=e.openElements.items[1];o&&!(!((n=e.treeAdapter.getNodeSourceCodeLocation(o))===null||n===void 0)&&n.endTag)&&e._setEndLocation(o,t);}}else xP(e,t);}function xP(e,t){e.insertionMode=$.IN_BODY,_P(e,t);}function JQe(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.FRAMESET:{e._insertElement(t,Te.HTML);break}case T.FRAME:{e._appendElement(t,Te.HTML),t.ackSelfClosing=true;break}case T.NOFRAMES:{Ul(e,t);break}}}function XQe(e,t){t.tagID===T.FRAMESET&&!e.openElements.isRootHtmlElementCurrent()&&(e.openElements.pop(),!e.fragmentContext&&e.openElements.currentTagId!==T.FRAMESET&&(e.insertionMode=$.AFTER_FRAMESET));}function QQe(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.NOFRAMES:{Ul(e,t);break}}}function ZQe(e,t){t.tagID===T.HTML&&(e.insertionMode=$.AFTER_AFTER_FRAMESET);}function e5e(e,t){t.tagID===T.HTML?Ii(e,t):wP(e,t);}function wP(e,t){e.insertionMode=$.IN_BODY,_P(e,t);}function t5e(e,t){switch(t.tagID){case T.HTML:{Ii(e,t);break}case T.NOFRAMES:{Ul(e,t);break}}}function n5e(e,t){t.chars=Gn,e._insertCharacters(t);}function o5e(e,t){e._insertCharacters(t),e.framesetOk=false;}function Jce(e){for(;e.treeAdapter.getNamespaceURI(e.openElements.current)!==Te.HTML&&e.openElements.currentTagId!==void 0&&!e._isIntegrationPoint(e.openElements.currentTagId,e.openElements.current);)e.openElements.pop();}function r5e(e,t){if(xce(t))Jce(e),e._startTagOutsideForeignContent(t);else {let n=e._getAdjustedCurrentElement(),o=e.treeAdapter.getNamespaceURI(n);o===Te.MATHML?AH(t):o===Te.SVG&&(_ce(t),EH(t)),RP(t),t.selfClosing?e._appendElement(t,o):e._insertElement(t,o),t.ackSelfClosing=true;}}function i5e(e,t){if(t.tagID===T.P||t.tagID===T.BR){Jce(e),e._endTagOutsideForeignContent(t);return}for(let n=e.openElements.stackTop;n>0;n--){let o=e.openElements.items[n];if(e.treeAdapter.getNamespaceURI(o)===Te.HTML){e._endTagOutsideForeignContent(t);break}let r=e.treeAdapter.getTagName(o);if(r.toLowerCase()===t.tagName){t.tagName=r,e.openElements.shortenToLength(n);break}}}new Set([oe.AREA,oe.BASE,oe.BASEFONT,oe.BGSOUND,oe.BR,oe.COL,oe.EMBED,oe.FRAME,oe.HR,oe.IMG,oe.INPUT,oe.KEYGEN,oe.LINK,oe.META,oe.PARAM,oe.SOURCE,oe.TRACK,oe.WBR]);function Xce(e,t,n){typeof e=="string"&&(n=t,t=e,e=null);let o=IE.getFragmentParser(e,n);return o.tokenizer.write(t,true),o.getFragment()}var s5e=5e3,Qce=1024;function _H(e){return typeof e.tagName=="string"&&Array.isArray(e.attrs)}function a5e(e){return e.nodeName==="#text"}function PH(e,t){if(t.nodesLeft<=0)return;t.nodesLeft-=1;let n=e.tagName.toLowerCase(),o,r;for(let{name:l,value:c}of e.attrs){let d=l.toLowerCase();if(d==="role"){r=c;continue}o===void 0&&(o={}),o[d]=c;}let i,s=[];for(let l of e.childNodes){if(t.nodesLeft<=0)break;if(a5e(l)){let c=l.value;if(c&&c.trim().length>0){let d=c.length>Qce?c.slice(0,Qce):c;i=i===void 0?d:`${i} ${d}`;}}else if(_H(l)){let c=PH(l,t);c!==void 0&&s.push(c);}}let a={tag:n};return r!==void 0&&(a.role=r),o!==void 0&&(a.attributes=o),i!==void 0&&(a.text=i),s.length>0&&(a.children=s),a}function OH(e){let t=Xce(e),n={nodesLeft:s5e};for(let i of t.childNodes)if(_H(i)&&i.tagName.toLowerCase()==="body"){let s=PH(i,n);if(s!==void 0)return s}let o=[];for(let i of t.childNodes){if(n.nodesLeft<=0)break;if(_H(i)){let s=PH(i,n);s!==void 0&&o.push(s);}}let r={tag:"body"};return o.length>0&&(r.children=o),r}var l5e=new Set(["PRESET_ACTION","AI_ACTION_DYNAMIC"]),Uh=class{constructor(t,n,o,r,i,s){this.orgId=t;this.testId=n;this.testName=o;this.diskStorage=r;this.parentFlushResults=i;this.appGraphSink=s;}children=[];finished=false;stepFrequenciesByType={};currentResults=[];async getScreenshot(t,n){return this.diskStorage.readFile(`${Wr}/${n}.jpeg`)}async getHtmlSnapshot(t,n){return this.diskStorage.readFile(`${Wr}/${n}.html`)?.toString()}recordStepStat(t){t.type!=="PRESET_ACTION"?this.stepFrequenciesByType[t.type]=(this.stepFrequenciesByType[t.type]||0)+1:this.stepFrequenciesByType[t.command.type]=(this.stepFrequenciesByType[t.command.type]||0)+1;}sendFinalizedStepStats(){for(let[t,n]of Object.entries(this.stepFrequenciesByType))Tt.increment("test_step_execution",n,[`type:${t}`,"platform:browser","executor:cli",`orgId:${this.orgId}`]);}flushResults(t){this.currentResults=t,this.parentFlushResults(t);}async startStep(t,n){let{step:o,parentStepIdChain:r}=t;this.recordStepStat(o);let i={step:o,status:"RUNNING",startedAt:new Date},s=[...n];this.currentResults=s;let a=new MH(this.orgId,this.testId,this.testName,i,this.diskStorage,l=>{this.flushResults([...s,l]);},r??[],this.appGraphSink);return this.children.push(a),a}async finish(t){this.finished||(this.finished=true,await Promise.all(this.children.map(n=>n.finishInternal({status:RV(t.status),finishedAt:t.finishedAt}))),this.sendFinalizedStepStats());}};function c5e(e){switch(e){case "SUCCESS":return "PASSED";case "FAILED":return "FAILED";case "CANCELLED":return "CANCELLED";case "RUNNING":return "RUNNING";case "IDLE":return "PENDING";default:return tt(e)}}function NP(e){return e.some(t=>t.status==="FAILED")?"FAILED":e.some(t=>t.status==="CANCELLED")?"CANCELLED":"RUNNING"}var MH=class{constructor(t,n,o,r,i,s,a,l){this.orgId=t;this.testId=n;this.testName=o;this.metadata=r;this.diskStorage=i;this.parentFlushResults=s;this.parentStepIdChain=a;this.appGraphSink=l;this.interactionTracer=new vp(void 0,c=>this.storeTraceAsset(c)),Cp.initializeRootTracerContext(this.interactionTracer);}children=[];finished=false;interactionTracer;attachBeforeScreenshot(t){let{snapshotId:n,screenshot:o}=t;this.metadata.beforeSnapshotId=n,this.diskStorage.storeFile({name:`${Wr}/${n}.jpeg`,contents:o});}attachAfterScreenshot(t){let{snapshotId:n,screenshot:o}=t;this.metadata.afterSnapshotId=n,this.diskStorage.storeFile({name:`${Wr}/${n}.jpeg`,contents:o});}attachBeforeHtmlSnapshot(t){let{snapshotId:n,html:o}=t;this.metadata.beforeSnapshotId=n,this.diskStorage.storeFile({name:`${Wr}/${n}.html`,contents:o});}attachAfterHtmlSnapshot(t){let{snapshotId:n,html:o,url:r,logger:i}=t;this.metadata.afterSnapshotId=n,this.diskStorage.storeFile({name:`${Wr}/${n}.html`,contents:o}),this.appGraphSink&&l5e.has(this.metadata.step.type)&&this.appGraphSink({html:o,url:r,stepId:this.metadata.step.id,parentStepIdChain:[...this.parentStepIdChain],logger:i});}recordTargetAutoHeal(t){let{healType:n}=t,o=n==="AI"?"ai-target-heal":"cache-heal";Tt.increment("test_event",1,[`name:${o}`,`orgId:${this.orgId}`]),this.metadata.healMetadata={healType:n,healedAt:new Date};}storeTraceAsset(t){this.diskStorage.storeFile({name:`${Wr}/${t.snapshotId}.${t.extension??"jpeg"}`,contents:t.data});}async finishInternal(t){this.finished||(this.finished=true,this.interactionTracer.finish(),await Promise.all(this.children.map(n=>n.finish({status:c5e(t.status),finishedAt:t.finishedAt}))));}recordStepDuration(t,n){if(!Ov(t))return;let o=Pv(t);Tt.distribution("test_step_duration",n,[`type:${o}`,"platform:browser","executor:cli",`orgId:${this.orgId}`]);}async finish(t){!this.finished&&t.resolvedStep!==void 0&&t.durationMs!==void 0&&this.recordStepDuration(t.resolvedStep,t.durationMs),await this.finishInternal(t.step),t.step.trace=this.interactionTracer.getRootSpan();}getResultBuilderForCurrentStep(){let t=this.metadata.step;switch(t.type){case "RESOLVED_MODULE":return n=>({...t,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n,type:"MODULE"});case "CONDITIONAL":return n=>({...t,blocks:t.blocks.map(r=>({assertion:r.assertion,steps:Fd(r.steps)})),elseSteps:t.elseSteps?Fd(t.elseSteps):void 0,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});case "WHILE_LOOP":return n=>({...t,steps:Fd(t.steps),status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});case "AI_ACTION":case "AI_ACTION_DYNAMIC":case "PRESET_ACTION":case "SECTION":return n=>({...t,status:NP(n),startedAt:this.metadata.startedAt,finishedAt:new Date,results:n});default:return tt(t)}}async startSubSteps(){let t=this.getResultBuilderForCurrentStep(),n=new Uh(this.orgId,this.testId,this.testName,this.diskStorage,o=>{let r=t(o);this.parentFlushResults(r);});return this.children.push(n),n}};var LP=class{constructor(t,n,o,r,i,s,a,l){this.orgId=t;this.testId=n;this.testName=o;this.runAttemptId=r;this.metadata=i;this.diskStorage=s;this.recordVideo=a;this.progressHandle=l;this.diskStorage.mkdir(Wr),this.harPagesStream=this.diskStorage.createFileStream(`${Wr}/har-pages.log`),this.inProgressHarEntries={},this.harEntriesStream=this.diskStorage.createFileStream(`${Wr}/har-entries.log`),this.resourceUsageStream=this.diskStorage.createFileStream(`${Wr}/resource-usage.ndjson`),this.resourceUsageSampler=nY({keepSamples:false,onSample:c=>{this.resourceUsageStream.write(`${JSON.stringify(c)}
8899
8899
  `),c.system.cpu&&(this.cpuUsageSum+=c.system.cpu.total,this.cpuSampleCount++);let d=c.system.memory.total-c.system.memory.free;this.memoryUsageSum+=d,this.memorySampleCount++;}});}finished=false;children=[];beforeResults;mainResults=[];afterResults;harPagesStream;inProgressHarEntries;harEntriesStream;resourceUsageStream;resourceUsageSampler;uiStatesStream;previousHtmlByteHash;previousFingerprint;cpuUsageSum=0;cpuSampleCount=0;memoryUsageSum=0;memorySampleCount=0;get loggerBindings(){return {runAttemptId:this.runAttemptId}}getResourceUsageAverages(){return {avgCpuUsage:this.cpuSampleCount>0?this.cpuUsageSum/this.cpuSampleCount:0,avgMemoryUsage:this.memorySampleCount>0?this.memoryUsageSum/this.memorySampleCount:0}}get videoOutputPath(){if(this.recordVideo)return Xn__default.resolve(this.diskStorage.cwd(),Wr)}setActiveVideo(t,n){this.recordVideo&&(this.metadata.activeVideos=this.metadata.activeVideos||[],this.metadata.activeVideos.push({videoName:t,timestamp:n}));}setViewport(t){this.metadata.viewport=t;}onNetworkPage(t){this.finished||this.harPagesStream.write(`${JSON.stringify(t)}
8900
8900
  `);}appendUiState(t){this.finished||(this.uiStatesStream||(this.uiStatesStream=this.diskStorage.createFileStream(Yz)),this.uiStatesStream.write(`${JSON.stringify(t)}
8901
8901
  `));}buildAppGraphSink(){return ({html:t,url:n,stepId:o,parentStepIdChain:r,logger:i})=>{let s=yH(t),a=s===this.previousHtmlByteHash?this.previousFingerprint:void 0;if(!a){try{a=SH({url:n,dom:OH(t)});}catch(l){i.debug({err:l,stepId:o},"Failed to compute app-graph UIState fingerprint");return}this.previousHtmlByteHash=s,this.previousFingerprint=a;}this.appendUiState({stepId:o,parentStepIdChain:r,fingerprintHash:a.fingerprintHash,minhash:Array.from(a.minhash),canonicalUrl:a.canonicalUrl,capturedAt:Date.now()});}}onNetworkLogs(t){if(!this.finished)for(let[n,o]of Object.entries(t))o.response?(delete this.inProgressHarEntries[n],this.harEntriesStream.write(`${JSON.stringify(o)}